====== AVR ====== ===== Семейство микроконтроллеров AVR ===== Архитектура 8-ми разрядных микроконтроллеров [[http://atmel.com/products/AVR/|AVR]] это оригинальная разработка компании [[http://atmel.com/|Atmel]]. Как и во многих других микроконтроллерных архитектурах память программ и память данных здесь разделена. Адресное пространство преферийных устройств совмещено с адресным пространством памяти данных. С одной стороны это плохо. При использовании внешней памяти данных (в старших моделях контроллеров), без испольльзования трюков (страничная организация памяти), не получится использовать полностью все 64 Кб допустимых шестнадцатиразрядной шиной адреса. С другой стороны, это упрощает систему команд. Ядро и система команд микроконтроллеров AVR соответствует RISC архитектуре, то есть число различных команд относительно не большое, но выполняются они максимально быстро. Большинство команд AVR выполняется за один такт, задающего генератора. Если мы используем генератор на частоту 1 Мгц (например встроенный RC или с внешним кварцевым резонатором), то за 1 секунду будет выполнено миллион элементарных команд. Шина команд в AVR шеснадцати разрядная. Благодаря этому в число элементарных однотактовых команд попадают команды загрузки констант в регистр, арифметических и логических операций между регистром и константой. AVR имеет 32 регистра общего назначения, которые могут выступать в роли аккумуляторов. Но только 16 старших регистров могут участвовать в командах с константами. Система команд AVR разрабатывалась с рассчётом на применение компиляторов с языков высокого уровня (в первую очередь конечно **C**). Я, в своей практике, использую GCC. Не буду спорить с апологетами специально разработанных под AVR компиляторов. Мне удобнее использовать единый инструмент и для разработки встраиваемых приложений и для приложений для ПК. К тому же, при правильном использовании GCC даёт достаточно оптимальный и небольшой машинный код. ===== Программаторы ===== * [[http://www.cip.physik.uni-muenchen.de/~wwieser/elec/avr/usb/|USB-based Atmel/AVR Programmer]] - SPI/JTAG((не уверен на счёт JTAG)) программатор AVR. Позволяет так же программировать [[Xilinx]] через JTAG. * [[http://www.klaus-leidinger.de/mp/Mikrocontroller/AVR-Prog/AVR-Programmer.html|AVR910 - Programmer für AVR-Prog und avrdude]] (Deutsch) - программатор совместимый с простейшим от Atmel. Работает с оригинальными Atmel'овскими приложениями и AVRDUDE. :!: При работе через [[soft:AVRDUDE]] следует при программировании flash использовать тип программатора ''butterfly'', а при программировании конфигурационный бит (FUSE) тип программатора ''avr910''. ==== Soft ==== Все представленные программаторы кросплатформенные. * [[http://savannah.nongnu.org/projects/avrdude/|AvrDuDe]] (console) * [[http://www.ln.ua/~real/avreal/index.html|AVReAL]] (console) * [[http://www.lancos.com/prog.html|PonyProg]] (GUI) ===== Отладка ===== * [[http://avarice.sourceforge.net/|AVaRICE]] - отладчик "железа". * [[http://www.oshec.org/articles/otladka-avr-pod-linuh/otladka-avr-pod-linuh/|Отладка AVR под Линух]]. ({{el:avr-debug-on-linux.tar.gz|Копия}}) ===== OS ===== * [[http://scmrtos.sourceforge.net/|scmRTOS]] Single-Chip Microcontroller Real-Time Operating System. Оська для однокристаллок написанная на C++. [[http://groups.google.com/group/scmrtos-ru|Группа рассылки]]. * [[http://www.micrium.com/atmel/AVR.html|µC/OS-II ports for AVR MCU]] - операционная система реального времени для встраиваемых устройств. ===== Утилиты ===== * [[http://palmavr.sourceforge.net/cgi-bin/fc.cgi|AVR fuse calculator]] - рассчёт значений конфигурационных байт. Полезно при программировании через AVRDUDE. ===== Ссылки по теме ===== * [[http://palmavr.sourceforge.net/cgi-bin/fc.cgi|AVR FUSE calculator]] * [[http://elm-chan.org/works/mxb/report_e.html|Wavetable Melody Generator]] * [[http://www.obdev.at/products/avrusb/index.html|AVR-USB]] * [[http://tuxgraphics.com/electronics/|Tuxgraphics avr microcontroller electronics]] * [[http://www.jcwolfram.de/projekte/avr/chipbasic32/main.php|AVR-ChipBASIC: Ein BASIC-programmierbarer Einchip-Computer]] * [[http://www.mikrocontroller.com/eng/avr_webserver.php|ISA-Ctrl AVR-Webserver]] {{tag>avr electronic embedded}} ~~LINKBACK~~ ~~DISCUSSION~~