Ответы пользователя по тегу Микроконтроллеры
  • На каком микроконтроллере делают говорящие азбуки типа знаток?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Подойдет любой микроконтроллер с DAC на 16-20 килогерц (частота звука) и парой-тройкой свободных GPIO для подключения какого нибудь PCF8574, если выводов не достаточно. Про сжатие звука Вам уже написали, но можно почитать и тут we.easyelectronics.ru/Soft/szhatie-zvuka-v-ima-adp...
    Ответ написан
    Комментировать
  • Где в Ubuntu на SBC можно посмотреть текущее разрешение?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    xrandr вас спасет
    Ответ написан
    Комментировать
  • С чего начать изучать программирование микроконтроллера STM32F401RET6?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Вот прямо отсюда начать - https://habr.com/ru/company/ruvds/blog/529832/
    Ответ написан
    Комментировать
  • Как реализовать мультиплексирование двух потоков данных между двумя микроконтроллерами?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Вариант первый:
    Сделайте один из сигналов CS (Chip Select).
    Взводите его для одного контроллера, опускайте - для второго.
    Взвели - передачу принимает первый. Опущен - второй.
    В теории, CS сигналы могут коммутировать друг-друга или выбирать конкретного приемника.

    Вариант второй:
    Чисто программный. Использовать сигнал CD (Carier Detect), его поднимает передающая сторона, все остальные слушают посылку. Никто не может отправлять, пока поднят CD. В посылке первый байт - номер приемника. Чтобы не было коллизий, желательно определить длительность или максимальный размер передачи.
    В этом верианте еще можно использовать дополнительную сигнальную линию INT (Interrupt). Ее поднимает, тот, кто хочет сделать срочную передачу, при поднятом CD.
    Никто не поднимает CD, Пока не снят INT.
    CD поднят, идет посылка
    Кто-то поднял INT, Прошла предыдущая посылка, но никто не захватывает линию через CD.
    Тот, кто поднял INT, ждет освобождения CD, сам поднимает CD, снимает INT, н7ачинает передачу.
    Если линии INT и CD свободны, любой может поднять CD и начать передачу.

    Литература: сети I2C, CAN, RS-485 + modbus, SPI, FrameRelay....
    Ответ написан
    Комментировать
  • Какие технологии повышенной надёжности нынче используют в оборонных/промышленных предприятиях?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    За оборонные не скажу, не знаю. А на промышленных предприятиях все очень просто. В мире контроллеров доминирует только один язык программирования - С!
    Что касается роботов и систем промышленной автоматизации, то очень часто используется блочное программирование на одном из языков МЭК/IEC типа 61131, 61499 и тэдэ. Все это интерпретируется в интерпретаторах на стороне контроллера и разрабатывается в каком нибудь SCADA. Интерпретаторы часто пишутся тоже на С, иногда C++ :)
    Все встроенные операционные системы и системы реального времени тоже написаны на С, изредка на С++.
    А чтобы все работало надежно, желательно, чтобы компания сертифицировалась на CMMI или ISO 11540 или ISO 33001 - https://ru.wikipedia.org/wiki/ISO/IEC_15504
    Часто, если системе позволяют ресурсы, разрабатывают на Java или Net. Иногда всякие разновидности паскаля, но это очень очень редко.

    Специальных языков типа forth, я вообще не встречал, ибо просто нет специалистов!
    Также не разрабатывают на на lisp, ибо та же беда - специалисты!

    Все знают С - с ним и колупаются. Даже C++ редко используют!
    Ответ написан
    4 комментария
  • Можно ли запрограммировать самодельное устройство счетчика денег?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Очень странно, есть такое понятие, как бухгалтерская книга, двойная запись, приход-расход, остаток и поступление, снятие «кассы» и отчет.. С древних времен, и без кассы, все считалось на бумаге и счетах. А с приходом кассы, осталось все тоже самое!
    https://ru.m.wikipedia.org/wiki/Двойная_запись
    Ответ написан
    Комментировать
  • Стоит ли начинать с Ардуино, если хочешь познать мир микроконтроллеров на хорошем уровне?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Берите STM32, причем любой. Это достаточно современное семейство процессоров, с хорошими возможностями, как по энергопотреблению, так и по периферии. Обучающих материалов масса, но нужно прикладывать руки. Можно даже на нем запустить какую нибудь RTOS.
    Ответ написан
    Комментировать
  • Как происходит адресация в памяти?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    1) это нулевые адреса. Нужно смотреть, что у вас в документации по этим адресам. Возможно, таблица прерываний
    2) ваша формула смещает адреса по 64 байта, начиная с нулевого. Шестьнадцатеричное 0x40 = 64 десятичному!
    3) в зависимости от контроллера, может быть адресация прямая, а может быть и через трансляцию через блок MMU, тогда нужно смотреть, в какой момент и с какими настройками трансляции адресов работает MMU
    4) всегда нужно помнить о типе разрядности обращения. В классическом случае обращение *unsigned char и *unsigned int или *unsigned short могут иметь совершенно разные эффекты. Смотреть документацию, обычно пишут тип регистра и его разрядность!
    5) некоторые контроллеры имеют как полноценные битовые регистры, так и битовые поля, отмапированные, для удобства программиста на адреса. Например 32-х разрядный регистр может иметь в памяти 32 8-битных регистра мапированные на биты основного регистра.

    В общем, в любом случае курить документацию.
    Ответ написан
    4 комментария
  • Какой выбрать самый быстрый микроконтроллер для создания игровой клавиатуры (PS/2)?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Вообще-то USB, даже версии 1.0, гораздо быстрее, чем PS/2. 1.5 мегабита против 300 килобит. Так что какой контроллер ни возьми, вы просто упретесь в скорость передачи.

    PS. В тему - https://habr.com/post/345776/ измерение latency клавиатур.
    Ответ написан
  • На каком контроллере можно реализовать HID устройство (при нулевом опыте общения с аппаратной частью:)?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Например на STM32. Практически любая отладочная плата подойдет, например STM32F4DISCOVERY. Кстати, там демо-прошивка как раз этулирует компьютерную мышку и мыргает диодиками.
    www.st.com/en/evaluation-tools/stm32f4discovery.html
    Ответ написан
    Комментировать
  • Перспективы embedded разработки?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Но многие говорят, что время низкоуровневого программирования прошло, сейчас только веб, C#, Java и т.д.

    Весь вопрос не в том, что время прошло, а в том, где больше всего железок выпускают и строят фабрики/заводы с автоматизацией.
    Что касается низкоуровнего программирования, то время совсем не прошло и специалисты требуются постоянно. Вопрос в другом, что эти специалисты практически не нужны (увы) на наших просторах. Я знаю десяток фирм, в которых есть отделы разработок (сам когда-то возглавлял такой), там специалисты нужны постоянно. Еще знаю с десяток предприятий, которые делают свои железки, там тоже нужны программисты. И всё! Если вы живете в городе-миллионнике, то работу по программированию железок вы найдете в легкую, и очень хорошо оплачиваемую, и интересную (что не всегда)!
    Но если вы родились в городе с меньшим населением, задумайтесь о переезде, возможно и совсем туда.
    Ну и еще немного сменились акценты, если раньше все пытались разработать свою железку, и написать под нее ПО, то теперь для подавляющего числа задач можно взять любой ПЛK и просто посадить инженегра, который на языках МЭК составит вам блок-программу.
    Но тем не менее, область низкоуровневого программирования цветет и пышет.
    Возможно, с выпуском отечественных CPU/SOC и нацеленностью на это нашего законодательства, ситуация как-то и будет меняться в лучшую сторону.
    Ну а пока, в основном хорошо живут те, кто занимается аутсорсом ПО на чужие железки (в основном забугорные).
    Ответ написан
    2 комментария
  • Изучение С для программирования микроконтроллеров?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Не очень различаются, для введения в язык С начните с книжки Керниган и Ритчи, диалект языка конечно немного устарел, но все основы представлены.
    Основной упор делайте на работу с указателями, структурами и битовыми операциями.
    Для обращения к регистрам устройства (процессора и периферии), обычно используется следующая конструкция:
    ....
    volatile u_int32 *my_cool_register = 0xFFFEBEEF; /* адрес 32-разрядного регистра, ключевое слово volatile */
    my_cool_register  |= 0x2; /* взвести второй бит */ 
    ....

    Ну и у Cortex-M3 есть адресное пространство, где все БИТЫ доступны по отдельным адресам, часто это очень удобно.

    PS. Да, используйте библиотеки от поставщика, там много уже сделано в виде макросов (про это в книжке) и библиотек.
    Ответ написан
    Комментировать
  • Какие преимущества CISC архитектуры перед RISC?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Вкратце, CISC себя изжил. RISC проще, легче оптимизируется, соответственно быстрее, меньше потребление, простота наращивания и отладки, инструкции фиксированной длины, не нужно делать выравнивание, проще работа с памятью, более богатая регистровая архитектура, легче делать 32/64/128 разрядов (далее везде)...
    CISC был хорош для ассемблерных программистов, писать на егойном ассемблере, почти как на C.
    На RISС-ассемблере голову сломать можно, да и не нужно оно, компиляторов полно, максимум - загрузка регистров, да и то специальных.

    Ах, ну, да... CISC-инструкции могут работать сразу с памятью, RISC - только с регистрами! + в RISC есть специальный набор инструкций загрузить/выгрузить группу регистров в/из памяти. Этим как раз и достигается скорость обработки и транслятора команд - не делаем лишних действий и ветвлений.

    PS. На аглицком кратко на бумажке отличия - https://www.youtube.com/watch?v=mDrUkjOVtAU
    Ответ написан
    4 комментария
  • С чего начать в unit-тестировании для микроконтроллера и стоит ли?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Собственно ничего сложного нет. Пишем такие же unit-тесты, а результаты assert-ов складываем в отдельную область памяти. Её потом легко просматривать на наличие единиц (можно сделать даже битовым сдвигом). Другими словами, нам нужно только написать функцию assert, которая сравнивает два своих аргумента и результат заносит в следующий бит (или байт) в выделенной области памяти (0 - хорошо, 1 - плохо). По позиции в памяти вычисляем сбойный ассерт. Если памяти много, то можно еще добавить аргумент с номером теста к ассерту, тогда у нас будет один байт номер теста, второй - результат.
    Ну, кстати, так и логиваться можно прямо в режиме работы, только нужно в ассерте еще и циклический буфер сделать и указатель на текущий элемент.
    А собственно, я в свое время так и отлаживался. Подходит для отладки очень быстрых процессов!!!!
    Ответ написан
    6 комментариев
  • Как реализовать защиту/верификацию флешь памяти микроконтроллера при включении?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    А в чем сложность? Проходим всё адресное пространство flash и кладем её CRC-сумму в самый конец. Если это делать при прошивке, то можно на этапе сборки делать в каком нибудь блоке, например сразу за таблицей прерываний. Если это делается внутри контроллера, то CRC лучше класть отдельно в EEPROM и защитить от изменения хешем самого CRC. Если флеш разбита на блоки, которые например прошиваются на лету по время работы (обновление чего-нибудь), то опять же храним CRC блока и защищаем его хешем. Хеш нужен, если вдруг кто-то сменил блок и CRC.
    Ответ написан
  • Библиотека реализующая вывод по VT100 для DOS?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Вообще-то termcap была портирована под DOS, кажется вместе с Emacs. Но я не о том, установите MSDOS-Kermit. В нем есть и поддержка VT100, и не только - www.columbia.edu/kermit

    Да, также он есть в виде библиотеки, которую можно применить в своих программах.
    Также, в свое время, была очень популярна библиотека TurboVision https://ru.wikipedia.org/wiki/Turbo_Vision - это как замена curses для DOS.

    Соответственно kermit + turbovision можно заменить всё что угодно.
    PS. Я один такой некромант?

    Ну а для многозадачности установите полуось вместо дос...
    Ответ написан
  • Буквально сегодня начал знакомиться с микроконтроллерами, но не до конца понял суть, расскажите?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Нет, не совсем. Микроконтроллер = микропроцессор с периферией. Все (или почти все) на одном кристалле, например ram и flash память, порты ввода/вывода, коммуникационные устройства и порты типа ethernet, usb, serial и т.д. Но, дело в том, что еще обычно нужна обвязка из разных драйверов (это тип микросхем такой), подтяжек, согласователей, кварцев и т.д., так как выходы контроллера обычно имеют ttl уровни и не предназначены для прямой работы с внешним миром.

    Для того чтобы начать - возьмите любую отладочную плату с коннектом по usb , например arduino или stm32 discovery (рекомендую!!!). Далее установите среду разработки, поморгайте диодами, ну а потом поработайте с spi и внешними модулями или контроллерами типа датчиков температуры, ускорения, ориентации. Соберите простую светодиодную гирлянду, подключите моторчик, wifi и что там еще вам нравится.

    И да, это несложно, если есть знания C в рамках института, а с ардуино так вполне подойдет и базовый уровень.

    PS. По просьбе вынес наверх из комментариев:

    Так вроде бы ответил практически на все вопросы, не нравится ардуино (мне тоже), возьмите любой микроконтроллер любого производителя, хоть PIC, хоть STLabs, хоть Motorola (ах, да Freescale), хоть NXP, Intel, Samsung... Берите описание чипа, там есть и схемы подключения, питания и прошивки. Разводите платку, паяете, исправляете ошибки, Покупаете JTAG, подключаете, прошиваете.
    ИЛИ, покупаете девелопмент борду с нужным чипом от тех же самых производителей, в комплекте часто и набор софта и JTAG. Разрабатываете софт, а параллельно, по схеме борды, разводите свою фитюльку. Через месяца 3-4 у вас и софт и фитюлька готовы.
    Вот по второму пути я и предлагаю пойти - купите себе за ~1500-3000 рублей демо-плату STM32 и разрабатывайте!

    А некоторые и на демоплатах останавливаются, благо некоторые дешевле грязи и негабаритные и для 3-5 штук свое производство иногда накладно... Как раз по этому пути идут STlabs и NXP... У моторолы обычно дороговато выходит (хотя все относительно)...
    Ответ написан
    5 комментариев
  • Есть ли будущее у программиста микроконтроллеров?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Конечно есть! Куча вакансий на эмбеддер-девелоперов, начиная от совсем простых пиков и заканчивая sparc/mips/arm. А если будете знать что-то из мира RTOS типа VxWorks, QNX и компанию - работу найдете всегда.
    Куча железа делается, на которое портируется как существующее ПО/ОС, так и пишется много нового, от чайников/кофеварок до автомотива/аэро.
    Только у нас в бизнесцентре компаний 5 лично знаю, свои разработки и ПО.
    И это не считая ВПК (и около), который тоже лично знаю где и что.
    Зарплаты везде разные (и очень высокие и средние и низкие) и всё зависит как от квалификации, так и от фирмы.
    Ответ написан
    Комментировать
  • Есть ли более дешевые альтернативы Raspberry Pi?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Посмотрите на stm32-discovery, они от 300 рублей, но там линукса не будет, зато для поделок самое оно, и дешево и куча разных плат с разной периферией, даже с lcd есть www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN...
    Ответ написан
    Комментировать
  • Как заработать новичку на низкоуровневом программировании?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    На системном программировании можно не только копейки зарабатывать. Вариантов несколько: начать самостоятельно с простых контроллеров типа stm32 или rasberrypi; устроиться на оборонку или в фирму, которая делает разработки на мк; пойти на практику в одну из таких фирм.
    Например обратитесь в ртсофт в центр разработок или в центр системного ПО.
    Ответ написан