Микроконтроллер ATmega169 и кит AVR-Baterfly
В ноябре 2002 года к столь полюбившемуся многим разработчикам семейству AVR низкопотребляющих 8- битных Flash микроконтроллеров корпорации Atmel добавился новый микроконтроллер ATmega169, предназначенный для работы в портативном оборудовании с автономным питанием.
В 1997 году корпорация Atmel, один из мировых лидеров в производстве полупроводниковых приборов, таких как различные логические, смешанно-сигнальные и радиочастотные микросхемы, а так же различные приборы с энергонезависимой памятью, начала выпуск 8- битных микропроцессоров с Flash памятью своего нового семейства AVR. Корпорация Atmel является признанным лидером в технологии производства приборов с Flash памятью, что позволяет ей выпускать Flash микроконтроллеры, которые по цене сравнимы, а порой имеют и более низкую цену, чем аналогичные микроконтроллеры других производителей с ОТР памятью.
Микропроцессоры семейства AVR содержат высокоскоростное вычислительное ядро RISC архитектуры, развитую периферию и функцию внутрисистемного программирования. Кроме того, микропроцессоры этого семейства имеют производительность 1 MIPS при тактовой частоте 1 МГц, т.е. выполняют большинство команд за 1 цикл.
Микропроцессор ATmega169 является первым низкопотребляющим членом семейства AVR, который содержит встроенный контроллер ЖКИ. AVR ядро объединяет богатый набор команд и 32 рабочих регистра, которые могут быть напрямую подключены к АЛУ, что позволяет выполнять действия с двумя регистрами одновременно одной командой. Вычислительное ядро построено по Гарвардской архитектуре с разделенными памятью и шинами программы и данных. Процессор имеет одноуровневый конвейер, позволяющий при выполнении команды выбирать следующую. Такая архитектура вычислительного ядра позволяет выполнять команды в каждом цикле. Архитектура вычислительного ядра микропроцессора приведена на рисунке 1.
Архитектура вычислительного ядра микропроцессора ATmega169. Рисунок 1.
Микропроцессор содержит 16 кбайт программной Flash памяти, 512 байт EEPROM памяти, 1 кбайт SRAM, 53 линии портов ввода-вывода общего назначения, 32 рабочих регистра общего назначения, JTAG интерфейс, встроенные автоматы отладки и программирования, законченный контроллер ЖКИ с преобразователем напряжения, три гибких независимых таймера/счетчика, внешние и внутренние источники прерывания, последовательный программируемый USART, универсальный последовательный интерфейс с детектором стартового состояния, 8- канальный 10- битный АЦП, программируемый сторожевой таймер со встроенным генератором и последовательный SPI порт.
Предназначенный для использования в аппаратуре с автономным питанием, микропроцессор имеет превосходные мощностные характеристики. Во-первых, он выпускается в трех модификациях с различными диапазонами напряжения питания: ATmega169 имеет диапазон напряжения питания от 4,5 до 5,5 В, ATmega169L – от 2,7 до 5,5 В, а ATmega169V – от 1,8 до 5,5 В. При этом модификации имеют различные диапазоны рабочих частот тактового генератора: ATmega169 – от 0 до 16 МГц, ATmega169L – от 0 до 8 МГц, а ATmega169V – от 0 до 1 МГц. При работе на частоте 1 МГц, т.е. с производительностью 1 MIPS, микропроцессор потребляет всего 400 мкА при 1,8 В питании! Во-вторых, имеется возможность программного изменения частоты работы вычислительного ядра. Для выполнения сложных вычислительных функций или других действий, требующих высокого быстродействия вычислительного ядра, разработчик может установить высокую тактовую частоты, а при выполнении простых управляющих функций тактовая частота вычислительного ядра может быть существенно снижена. При работе с частотой 32 кГц микропроцессор потребляет всего 20 мкА (40 мкА при активизированном драйвере ЖКИ). В-третьих, микропроцессор имеет пять программно инициализируемых режимов пониженного потребления: Idle, Power-down, Power-save, ADC Noise Reduction и Standby.
В режиме Idle останавливается ядро, а SRAM, таймеры/счетчики, SPI порт и система прерываний продолжают функционировать. При этом микропроцессор потребляет не более 0,25 мА при 2 В питании и частоте тактовых импульсов 1 МГц. В Power-down режиме содержимое регистров сохраняется, но останавливается задающий генератор и отключаются все внутренние функции микропроцессора до тех пор, пока не произойдет прерывание или не произойдет аппаратный сброс. При этом типовой ток потребления микропроцессора при отключенном сторожевом таймере и 3 В питании равняется 1 мкА. В режиме Power-save асинхронные таймеры и контроллер ЖКИ продолжают функционировать, позволяя ЖКИ работать в то время, когда микропроцессор находится в режиме сна. В режиме ADC Noise Reduction останавливается вычислительное ядро и все модули ввода-вывода, за исключением асинхронного таймера, контроллера ЖКИ и самого АЦП, что позволяет минимизировать шумы в течение выполнения аналого-цифрового преобразования. В Standby режиме задающий генератор работает, в то время как остальная часть прибора бездействует.
Кроме сказанного выше, для снижения потребления в рабочем режиме можно отключить незадействованные периферийные модули. Также следует иметь в виду, что многие модули остаются активными даже при инициализации режимов пониженного потребления. Например, если АЦП был включен в активном режиме, то он остается активным во всех режимах. Аналоговый компаратор остается активным только в режимах Idle и ADC Noise Reduction, в остальных режимах сна он автоматически отключается.
При правильном использовании микропроцессор ATmega169 способен управлять работой ЖКИ в течение 10 лет, питаясь только от двух батареек типа АА!
Для обеспечения этого к описанным выше режимам и способам снижения потребления микропроцессор содержит встроенный драйвер ЖКИ. Встроенный контроллер/драйвер ЖКИ способен обслуживать индикаторы 25х4. Структурная схема модуля ЖКИ приведена на рисунке 2.
Структурная схема модуля ЖКИ. Рисунок 2.
Контроллер модуля ЖКИ может тактироваться как от внутреннего, так и от внешнего источника тактовых импульсов. Для модуля ЖКИ оба эти источника идентичны. Опорные синхроимпульсы поступают на 12- битный циклический счетчик, имеющий отводы от старших восьми разрядов, что позволяет поделить частоту опорных тактовых импульсов на 16, 64, 128, 256, 512, 1024, 2048 или 4096. Полученные после деления синхро импульсы используются в качестве опорных для тактирования ЖКИ.
Информация, которую необходимо отобразить на индикаторе, заносится в регистры LCDDR0-LCDDR19 (при этом регистры LCDDR4, LCDDR9, LCDDR14 и LCDDR19 не используются). Если сегмент ЖКИ должен быть запитан (т.е. он должен быть виден), то соответствующий бит регистра памяти ЖКИ должен быть установлен в 1, а если записать в него 0, то он виден на индикаторе не будет. Соответствие содержимого регистров памяти ЖКИ и соответствующих сегментов индикатора приведено в таблице 1.
Таблица 1. Таблица соответствия содержимого регистров памяти ЖКИ и соответствующих сегментов
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Регистр |
Группа |
– |
– |
– |
– |
– |
– |
– |
– |
LCDDR19 |
COM3 |
– |
– |
– |
– |
– |
– |
– |
SEG324 |
LCDDR18 |
COM3 |
SEG323 |
SEG322 |
SEG321 |
SEG320 |
SEG319 |
SEG318 |
SEG317 |
SEG316 |
LCDDR17 |
COM3 |
SEG315 |
SEG314 |
SEG313 |
SEG312 |
SEG311 |
SEG310 |
SEG309 |
SEG308 |
LCDDR16 |
COM3 |
SEG307 |
SEG306 |
SEG305 |
SEG304 |
SEG303 |
SEG302 |
SEG301 |
SEG300 |
LCDDR15 |
– |
– |
– |
– |
– |
– |
– |
– |
– |
LCDDR14 |
COM2 |
– |
– |
– |
– |
– |
– |
– |
SEG224 |
LCDDR13 |
COM2 |
SEG223 |
SEG222 |
SEG221 |
SEG220 |
SEG219 |
SEG218 |
SEG217 |
SEG216 |
LCDDR12 |
COM2 |
SEG215 |
SEG214 |
SEG213 |
SEG212 |
SEG211 |
SEG210 |
SEG209 |
SEG208 |
LCDDR11 |
COM2 |
SEG207 |
SEG206 |
SEG205 |
SEG204 |
SEG203 |
SEG202 |
SEG201 |
SEG200 |
LCDDR10 |
– |
– |
– |
– |
– |
– |
– |
– |
– |
LCDDR9 |
COM1 |
– |
– |
– |
– |
– |
– |
– |
SEG124 |
LCDDR8 |
COM1 |
SEG123 |
SEG122 |
SEG121 |
SEG120 |
SEG119 |
SEG118 |
SEG117 |
SEG116 |
LCDDR7 |
COM1 |
SEG115 |
SEG114 |
SEG113 |
SEG112 |
SEG111 |
SEG110 |
SEG109 |
SEG108 |
LCDDR6 |
COM1 |
SEG107 |
SEG106 |
SEG105 |
SEG104 |
SEG103 |
SEG102 |
SEG101 |
SEG100 |
LCDDR5 |
– |
– |
– |
– |
– |
– |
– |
– |
– |
LCDDR4 |
COM0 |
– |
– |
– |
– |
– |
– |
– |
SEG024 |
LCDDR3 |
COM0 |
SEG023 |
SEG022 |
SEG021 |
SEG020 |
SEG019 |
SEG018 |
SEG017 |
SEG016 |
LCDDR2 |
COM0 |
SEG015 |
SEG014 |
SEG013 |
SEG012 |
SEG011 |
SEG010 |
SEG009 |
SEG008 |
LCDDR1 |
COM0 |
SEG007 |
SEG006 |
SEG005 |
SEG004 |
SEG003 |
SEG002 |
SEG001 |
SEG000 |
LCDDR0 |
Для того, чтобы сегмент стал виден на него надо подать разность потенциалов, превышающую пороговое значение. Это обеспечивается подачей на соответствующие выводы SEG и COM противофазных напряжений. Для отображения информации на ЖКИ, имеющем несколько групп сегментов с одним общим выводом, требуется обеспечить на управляющих выходах не только уровни 0 В и VLCD (напряжение питания ЖКИ), но и дополнительный уровень, равный 1/2 VLCD, или два уровня, равных 1/3 VLCD и 2/3 VLCD. В противном случае сегменты, которые должны быть видны в одной группе, могут быть видны и в другой группе символов индикатора. Контроллер способен обслуживать ЖКИ, содержащие от 1 до 4 групп, которые в совою очередь могут содержать до 24 сегментов.
Как было сказано выше для того, чтобы сегмент стал виден, на него надо подать разность потенциалов. Величина этой разности потенциалов (VLCD) будет определять контрастность отображения информации. Микроконтроллер ATmega169 имеет функцию программной регулировки напряжения питания ЖКИ в пределах от 2,6 до 3,35 В. Это обеспечивается за счет встроенного источника питания, напряжение на выходе которого не зависит от напряжения питания самого микроконтроллера. Этому источнику для работы требуется всего один внешний конденсатор, имеющий величину не менее 0,47 мкФ.
Количество необходимых уровней напряжения, количество обслуживаемых групп сегментов, разрешение прерывания от контроллера ЖКИ, источник опорного тактового сигнала, коэффициент его деления и гашение индикатора после окончания формирования кадра задается в управляющих работой контроллера ЖКИ регистрах. Таким образом, задача обслуживания ЖКИ сводится к простейшим операциям: в управляющие регистры записывается информация, определяющая источник тактовых импульсов, частоту обновления индикатора, необходимое количество уровней в формируемых сигналах, количество групп и напряжение питания ЖКИ (контрастность). После чего драйвер активизируется установкой бита LCDEN регистра LCDCRA. Управляющей программе не нужно будет отвлекаться на обслуживание динамической индикации ЖКИ, а только при смене индицируемой информации заносить новые данные в регистры памяти ЖКИ.
Для снижения потребляемой мощности можно выбрать режим маломощных сигналов (Low Power Waveform). Но при этом, для обеспечения нулевой постоянной составляющей тока через сегменты ЖКИ, длительность обновления его возрастет в два раза. Эпюры сигналов нормального и Low Power Waveform режимов работы при обслуживании трех групп сегментов и формировании уровней напряжений, кратных 1/3VLCD, приведены на рисунке 3.
Эпюры сигналов нормального и Low Power Waveform режимов работы при обслуживании трех групп сегментов и формировании уровней напряжений, кратных 1/3VLCD. Рисунок 3.
Важно заметить, что контроллер ЖКИ продолжает работать и в режимах сна. При синхронном тактировании драйвер ЖКИ будет работать в Idle и Power-save режимах при любом источнике опорного сигнала. При асинхронном тактировании от TOSC1, работающего от встроенного RC генератора, драйвер ЖКИ будет работать в Idle, ADC Noise Reduction и Power-save режимах сна. В асинхронном режиме работы в качестве опорных синхроимпульсов можно использовать сигнал, поданный на вход TOSC1 от внешнего источника.
Если для управления работой ЖКИ используются не все выводы модуля, то эти незадействованные выводы могут использоваться в качестве линий портов ввода-вывода общего назначения.
Встроенный автомат внутрисистемного программирования позволяет перепрограммировать программную память через последовательный ISP интерфейс при помощи энергонезависимого программатора памяти или встроенной программой-загрузчиком, выполняющейся в AVR ядре. Программа-загрузчик может использовать любой интерфейс для записи программы в прикладную Flash память. Программа из загрузочной секции Flash памяти продолжает выполняться даже при загрузке прикладной секции Flash памяти, реально обеспечивая Read-While-Write (чтение при записи) режим работы. Объединяя в себе 8-битное RISC ядро и внутри системно само программируемую Flash память в одном корпусе, микропроцессор ATmega169 является мощным прибором, который даст Вашим устройствам более высокие гибкость и стоимостную эффективность.
Микропроцессор ATmega169 AVR поддерживается различными программными и системными средствами разработки, такими как С- компиляторы, макроассемблеры, отладчиком/симулятором (AVR Studio версий 3.5 и 4.0), внутрисхемными эмуляторами (ATICE50 и AVR JTAG ICE) и внутрисистемным программатором AVR ISP. Для ускорения разработки новых устройств на базе микропроцессора ATmega169 и снижения затрат на разработку выпущены отладочная плата STK502 и демонстрационный набор AVR Batterfly.
Отладочная плата STK502 (рис. 4) представляет переходную плату, позволяющую подключить микропроцессор ATmega169 к отладочному комплекту STK500. В его состав входят все соединители и разъемы, необходимые для ее подключения, а кроме того два примера применения: в качестве системы слежения за температурой с выходом на ЖКИ и в качестве драйвера ЖКИ. Плата содержит ZIF колодку, предназначенную для установки в нее микропроцессора ATmega169.
Отладочная плата STK502. Рисунок 4.
Демонстрационный набор AVR Batterfly предназначен для демонстрации возможностей встроенного драйвера ЖКИ микроконтроллера ATmega169. Однако он позволяет не только управлять работой и контрастностью ЖКИ, но подключать при помощи дополнительных соединителей светодиоды, коммутаторы и различные периферийные устройства для исследования AVR архитектуры микропроцессора. Демонстрационная плата набора AVR Batterfly содержит микропроцессор Atmeg169 в MFL корпусе, 120 сегментный ЖКИ, четырехпозиционный джойстик для ввода информации, пьезо излучатель, 32 кГц кварцевый резонатор для обеспечения работы часов реального времени, 4 мегабитную память DataFlash производства корпорации Atmel для хранения данных, RS-232 преобразователь уровней для обеспечения обмена данными с внешними устройствами, NTC термистор для измерения температуры и оптический датчик для измерения интенсивности светового излучения. Для питания платы используется 3 В батарейка, устанавливаемая в специальный держатель. От батарейки, имеющей емкость 600 mAh, плата способна работать в течение семи лет!
Демонстрационный набор AVR Batterfly. Вид с верху. Рисунок 5.
Демонстрационный набор AVR Batterfly. Вид со стороны монтажа. Рисунок 6.
Набор представляет собой перепрограммируемое устройство, в которое пользователь может зашить свою прикладную или входящую в комплект фирменную программу, которая позволяет хранить идентификационную информацию, измерять температуру, интенсивность светового освещения и напряжение (в диапазоне от 0 до 5В), проигрывать мелодии, регулировать контрастность ЖКИ и инициализировать режим пониженного потребления микропроцессора. Кроме того, программа выполняет функции часов - календаря, работающих в реальном времени. Выбор режимов работы осуществляется при помощи джойстика, расположенного на лицевой стороне платы.
Для программирования демонстрационной платы не требуется никакого внешнего оборудования. Встроенный загрузчик позволяет подключить плату непосредственно к последовательному порту ПК и программировать микроконтроллер прямо из отладочной среды AVRStudio4. Также можно перепрограммировать установленный на плате микропроцессор при помощи ISP, высоковольтного параллельного или JTAG интерфейсов, которые, как и порты B и D, выведены на лицевую сторону платы.
Перечисленные выше отладочные и ознакомительные аппаратно-программные средства позволят Вам легко освоить новый мощный низкопотребляющий микропроцессор ATmega169 корпорации Atmel и использовать его в своих новых разработках. Микропроцессор доступен со склада компании Ineltek по цене $7.5, а демонстрационный набор AVR Batterfly - по цене $25.
|