Главная » Статьи » Cтатьи |
Основная особенность, которая объединяет все модели микроконтроллеров AVR – это общее ядро. Это означает, что, написав программу для одной модели, можно с небольшой переделкой адаптировать ее под другую. а операционное устройство (АЛУ) отвечает за выполнение арифметических и логических операций; интерфейс ввода\вывода позволяет обмениваться с внешними периферийными устройствами. Суть программирования состоит в том, чтобы заставить микроконтроллер производить работу по перемещению чисел и операций над ними. Значит, микроконтроллеру для функционирования требуется управляющая программа. Без программы микроконтроллер, по сути, кусок пластмассового корпуса с выводами и фирменной маркировкой названия типа. Запрограммированный микроконтроллер имеет широкие функциональные возможности:
В этой статье выясним, как начать работать с микроконтроллером, как его запрограммировать, одним словом заставить этот кусок фирменного пластмасса работать на нас. Для примера возьмем всеми известный микроконтроллер Atmega8535. По-крайней мере я эту микросхему мучаю уже давно ( пару лет ). Микроконтроллер имеет 32 линии ввода\вывода, при том, что 80% выводов имеют функциональный характер, т.е. соединены с внутренней периферией ( АЦП, приемо-передатчик и т.д. ) Микроконтроллер Atmega8535 существует в нескольких корпусных исполнениях – DIP40, PLCC44, TQFP44. Какой тип корпуса использовать, зависит от конструктивно-топологического решения. Микроконтроллер, являющийся многофункциональной, вычислительной микросхемой (микро-ЭВМ), не обходится без внешней, электронной «обвязки». Для того, чтобы начать работать с микроконтроллером, к нему необходимо подключить кварцевый резонатор к выводам XTAL1, XTAL2, RC-цепь сброса к выводу RESET, 5в стабилизированного питания к выводам VCC, GND, разъем для программирования по каналу SPI к выводам SS, MOSI, MISO, SCK, RESET и плюс к этому всему макетная плата с контактными площадками для распайки деталей. Это только минимум, для того, чтобы «запустить» микросхему. Далее, подключение светодиодных индикаторов, кнопок, микросхемы интерфейса COM( MAX232 ), USB и ЖК-дисплея к портам ввода\вывода. Как видно из схемы, разъем Х1 используется для программирования микроконтроллера через интерфейс SPI. Резистор R1 и конденсатор C1 образуют цепь сброса микроконтроллера – это важный этап первоначального запуска. К выводам 12, 13 подключен кварцевый резонатор Q1 с подтянутыми к его выводам конденсаторами C2 и C3, посаженными на корпус. В только, что купленном микроконтроллере конфигурационные ячейки установлены для работы от внутреннего генератора с RC – цепочкой( по-крайней мере я с этим столкнулся в Atmegа8535 ). Для "прошивания" микроконтроллера, я использовал программатор, сделанный прямо в корпусе DP-25C с разъемом DB-25M ( LPT ) на микросхеме 74HC244. Схема очень простая и найти её в инет сети очень легко. Вот внешний вид программатора: Корявая надпись на корпусе программатора совершенно не влияет на процесс оживления микроконтроллеров и они работают четко, и исправно... Что касается софта, то программировать можно прямо из среды CodeVisionAVR. Выбираем Settings -> Programmer: появляется окно Programmer settings в котором из перечня списка AVR Chip Programmer Type выбираем тип Kanda Systems STK200+\300 и порт LPT1 ( смотря к какому подключён программатор ): Жмём OK и в тулбаре среды щелкаем по значку , потом в появившемся окне кнопочку и на наблюдаем результат в виде работающего микроконтроллера, так как было задумано. . . Вообще это староватый на сегодняший день способ "прошивания" микроконтроллеров, т.к. уже современные компьютеры не имеют данного порта ( это касается и COM портов ). Поэтому желательно и даже нужно осваивать "прошивание" микроконтроллеров используя USB порт. Неотъемлемой частью любого микроконтроллера ( хоть PIC фирмы Microchip, хоть Z8 фирмы Zilog, хоть другие ) являются порты ввода\вывода. Посредством портов, архитектура микроконтроллера имеет возможность взаимодействовать с внешним "миром" периферии, системной шиной, линиями обмена c ЭВМ и другими устройствами. Порты микроконтроллера являются, помимо логическими линиями ввода\вывода, но и еще функциональными выводами. Какой именно вывод микроконтроллера будет являться линией I\0 или функциональным значением, зависит от программного решения. PORTn=0x00. . .0xff; ( 0. . .255 ). DDRD=0xf0; Первые четыре старших разряда PD7, PD6, PD5, PD4 определены как выходы с подключенными, подтягивающими резисторами. Четыре младших разряда PD3, PD2, PD1, PD0 определены как входы с подключенными, подтягивающими резисторами. /* инициализация вывода PD0 порта D на вход с подтяжкой */ Если линии порта нужно определить как функциональные, то это выполняется во время инициализации. PORTD с выводами PD0 и PD1 являются, как линиями ввода\вывода, так и линиями RXD ( прием данных ) и TXD ( передача данных ) приемо-передатчика USART. При инициализации приемо-передатчика, т.е. как только разрешили работу приемника UCSRB=( 1<<RXEN ); или/и передатчика UCSRB=( 1<<TXEN ); USART, то линия приемо-передатчика подключается к выводам PD0, PD1. Любая инициализация порта (ввод или вывод), касательно выводов PD0, PD1 результата не даст. Если это изобразить ввиде схематического рисунка, то примерно выглядит так: Таким же не "хитрым" способом происходит и инициализация других выводов разных портов в функциональные значения: interrupt [EXT_INT0] void ext_int0_isr( void ) } { // Инициализация линии внешнего прерывания // INT0: линия активна. Вывод PD2 // Режим Any change: Любое изменение GICR|=0b01000000; MCUCR=0b00000001; MCUCSR=0x00; GIFR=0b01000000; // Разрешение глобального прерываниия #asm( "sei" ) While( 1 ); }
| |
Просмотров: 35229 | Комментарии: 2 | | |
Всего комментариев: 2 | |||
| |||