Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #93, СЕНТЯБРЬ 2006 г.

Кодим жесть

Долин Сергей

Хакер, номер #093, стр. 093-024-4


Итого

Теперь ты можешь сделать на базе этого устройства, например, переключалку елочных гирлянд, просто добавив одну микросхему (например, ULN2003A) и повесив на нее реле.

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

WWW

Об особенностях архитектуры различных контроллеров можно глянуть тут: http://www.atmel.ru/Articles/Atmel18.htm

Рекомендую начать изучение контроллеров AVR с этих сайтов: http://avr.nikolaew.org/

http://atmel.com/products/avr/

INFO

Резистор, используемый в схеме, зависит от типов светодиодов. Может быть, от 300 Ом до 1,5 кОм. Ставь 470 Ом – не прогадаешь.

DVD

Мануалы по микроконтроллерам, упоминаемым в статье, можно найти на диске. Также там содержатся программы UniProg, AVR Studio и прошивка для МК.

Пара слов об архитектуре AVR.

AVR – это 8-разрядный RISC-микроконтроллер, имеющий быстрое ядро, Flash-память программ ROM, память данных SRAM, порты ввода/вывода и интерфейсные схемы. Гарвардская архитектура разделяет адресное пространство процессора на память данных и память программ в микроконтроллерах AVR. AVR на своем борту имеет 32 байтовых регистров общего назначения (от R0 до R31). Шесть регистров могут использоваться как три 16-разрядных указателя адреса при косвенной адресации данных (X = R26:R27, Y = R28:R29 и Z = R30:R31). У AVR есть энергонезависимая память EEPROM, предназначенная только для данных и доступная программным путем, из микроконтроллера. Частоту работы микроконтроллера можно задавать внутренним таймером, внешним кварцем или RC-цепочкой. У контроллера достаточно стандартный набор команд, таких как MOV, IN,OUT, INC, DEC и т.п. Но есть и свои особенности. К примеру, загрузить в регистр число-константу можно только командой LDI. Например: LDI R16,0xFA — загрузить в регистр R16 значение FAh.

Существует замечательная команда, отражающая прелесть и недостаток CISC-архитектуры. Это — код для АТ89С51.

DJNC R0,Label

Команда уменьшает регистр R0 на единицу и переходит на метку Label, если R0 не равен нулю. Аналогичный код на AVR будет таким

DEC R16 ;Уменьшаем R16 на еденицу.

BRNE Label ;Переход, если не равно нулю.

Правда, для АТ89С51 команда будет выполняться за машинный цикл, равный 12 тактам, а для AVR — всего три такта.

Назад на стр. 093-024-3  Содержание