В интернет много информации про микроконтроллеры. Какой выбрать? С чего начать?...
Я расскажу про микроконтроллеры фирмы Atmel, семейства ATMega. Эти микроконтроллеры имеют много встроенных модулей, таких как (АЦП, ШИМ, UART, SPI, TWI...)
Изучение программирования лучше всего изучать с ассемблера. Для этого качаем AvrStudio и устанавливаем. Создадим новый проект:
Написание программ на ассемблере довольно сложен, но объем этих программ, как правило, меньше, чем программ написанных на языке Си. Главным достоинством ассемблера являеться понимание архитиктуры процессора и перефирийных модулей. Я считаю, что первую программу для микропроцессоров нужно писать именно на ассемблере. Написание программы на ассемблеры позволит разобраться в распределении памяти микроконтроллера и сформирует понятие о регистрах.
Следующий компилятор, про который я хочу написать - CodeVisionAVR. Огромным достоинством этой программы являеться CodeWizardAVR. При создании проекта эта функция автоматически запустится:
В данном окне можно сконфигурировать микроконтролер. Конфигурация заключаеться в конфигурации чипа, частоты (для расчета времени при настройки таймера), таймеров и перефирийных модулей, так же поддерживает подключение LCD. Для нчинающего програмиста эта функция значительно упростит настройку.
Компилятор WinAvr один из самых популярных компиляторов для ATMega и он еще и бесплатный. Очень много информации по работе с ним приведено на сайтеhttp://www.scribd.com/doc/26421306/AVR-Programming-by-WinAVR-and-VMLab. На этом сайте есть подробное описание пакета и уроки по работе с ним:
создание MakeFile - файл настройки компилятора
создание собственных библиотке (*.h)
работа с отдельными битами
Если не получилось создать MakeFile, то Вы можете скачать пример отсюда
При работе с битами досточно запомнить:
Синтаксис WinAvr | Пояснение |
port|= _BV(bit); | port.bit=1 |
port&= ~(_BV(bit)); | port.bit=0 |
При программировании микропроцесорных систем все вычесления и обработки лучше всего делать через прерывания, а не в основном цикле. При написании программ сталкнулся с трудностями при описании подпрограммы прерывания. Для себя нашел хороший источник информации по объявлению прерывание и описания всех библиотек: http://avr-libc.narod.ru/modules.html
Очень полезная литература:
1. Евстифеев А.В. Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL