Tag Archives: Демоплата

ARM. Учебный Курс. Подключение контроллера и демоплата

Выбор контроллера
Контроллеров на ядре ARM Cortex множество. И мне пришлось поломать голову чтобы выбрать и взять за основу. В народ уверенно идут две линейки это LPC1xxx от NXP и STM32 от ST. Остальные дорогие и/или труднодоставаемые, либо в неадекватных для домашнего применения корпусах. Решил если брать, то из этой серии. Но какую именно? В результате поковырял и те и другие.
 

И вот мои соображения:
 

NXP
Берут низкой ценой. Реально многие из них продаются рублей по 50-80р за микруху. И это в розницу! Может это, конечно, маркетинговая акция и скоро все изменится. Но ситуация такая есть. С другой стороны, у NXP три линейки процов. LPC1000, LPC1300, LPC1700 (про LPC2xxx речь не идет, там ARM7 TDMI ядро).
 

  • LPC1000 закастрированные донельзя (но дешевые). Там от всех вкусняшек ARM ядра только таймер да 32 разряда. Корпуса от 33 до 48 выводов. Есть даже PLCC, но обычно LQFP.
  • LPC1300 уже интересней, но тоже нет ряда полезных фич вроде DMA или быстрого доступа к портам. Корпус от также от 33 до 48 выводов. Самый адекватный LQFP.
  • LPC1700 уже как в лучших домах — есть полный фарш, но камни там с 80ю и более ногами. И куда их такие здоровые?

 

Причем все три линейки весьма сильно отличаются друг от друга. Т.е. код с LPC1300 копипастой хрен перетащишь на LPC1700. Будут отличаться и имена регистров, и способы доступа к периферии. По разному будет выполняться конфигурация портов. В общем, хочешь перелезть на линейку послабже — изучай даташит с нуля. Конечно библиотека CMSIS сильно все сглаживает, но тем не менее от лишнего чтения доков не избавляет. Ну и документация у NXP тот еще аббадон. Давно я такой каши не видел. Бррр…
 

STM
Стоят дороже. Пока самый дешевый STM32F103C8T6 видел за 150р штука. Где найдете дешевле свистните. Но зато у них одна линейка F10x и один даташит на всех. Более того, ходят слухи, что периферия очень похожа и на STM8, так что при случае параллельно раскурим и эти камни :)
 

Процессоры в линейке отличаются только количеством ног и наличием на борту тяжелой периферии вроде USB/Ethernet/CAN. Причем в том же STM32F103C8T6 есть уже и DMA и полноценный BitBanding и все это в корпусе LQFP48 т.е. вполне компактный и паяемый в домашних условиях. Сами камни внутри выглядят более продумаными чтоль. Нет зоопарка периферии на разных линейках. Хорошо расписанные библиотеки CMSIS (о том что это такое расскажу попозже). Т.е. изучил его один раз и можешь уже смело программировать хоть 36 ногих козявок, хоть 100 выводных монстров. Плюс очень многие выводы у STM32F103 имеют 5V Tollerance т.е. их можно смело заводить на пятивольтовую периферию.
 

В общем, мне STM32 понравился больше. Хотя от применения LPC я не отказываюсь, но подробно на них останавливаться не буду, в лучшем случае вскользь упоминать.
 

(далее…)

Read More »

AVR. Учебный Курс. Отладка программ. Часть 4

Продолжаем трактат об отладке программ. На этот раз в бой идут одни старики.
 

Осциллограф
Очень часто хочется в динамике поглядеть как работает программа. Особенно если ее структура сложней чем просто суперцикл. Если там конечные автоматы на прерываниях или разделение задач на флаговом автомате/очередном диспетчере, то аналитическое тупление в код и прогоны в отладчике мало что дадут — наслоение прерываний, процессов в очереди, стадии и взаимодействие разных конечных автоматов взорвут мозг кому угодно. А если еще программа не написана с нуля, а собрана из кучи чужих исходников, да даже если из своих, но древних и уже забытых.
 

Тут очень хорошо помогает осциллограф. Но сначала надо как то вывести сигнал на него. Для этого подойдет любая ножка которой мы можем дрыгать. Обычно для отладки оставляю парочку. На худой конец, можно на время отладки переназначить какой-либо вывод и использовать его.
 

Для примера возьму ту программу, что идет в доке к демоплате Pinboard. Там стоит мой диспетчер очереди, а также немного автоматики на прерываниях. Плюс старая библиотека для HD44780
 

В принципе все с виду работает пучком и никаких косяков. Но одолели меня сомнения, так ли это? Если двигатель вращается, то это еще не значит, что он работает хорошо и без ошибок. Так и у нас, надо проверить, все ли в порядке. Слушать мы будем осциллографом «механику» тиканья службы таймера. Почему его? Ну так вокруг него вся логика программы построена.
 
(далее…)

Read More »