-

Осваиваем AVR!

новости  | с чего начать? | ссылки | учебник | примеры | программатор | отладчик | осциллограф | давно это было | download | сотрудничество | пишите мне

Введение  | Периферия | Система команд | Система команд(продолжение) | Система команд(Mega) | FAQ

Время летит быстро - не успел оглянуться, как classic AVR уже устарели, и им на смену пришли Mega и Tiny... И при всех своих преимуществах еще и стоят дешевле :-)

Итак, какие же основные отличия их от classic? Опять же сразу оговорюсь - я вряд ли смогу на этой страничке ухватить все... Но с чем сам работал - постараюсь не забыть. 

Итак, начнем с системы команд. Тут тоже надо оговориться - не все команды присутствуют во всех новых МК. 

MUL Rd,Rr

Беззнаковое умножение байта на байт. Регистры Rd,Rr - любые, результат всегда в R1:R0. Есть еще аналогичные команды умножения - знаковое MULS, знаковое на беззнаковое MULSU, и аналоги всех вышеперечисленных - со сдвигом результата ( FMUL, FMULS и FMULSU ). Параметры те же.  Я из всех этиз команд использовал только обычное беззнаковое - когда делал умножение "в столбик", полезность остальных оценить не могу :-)

JMP

Аналогична  RJMP, но может адресовать до 4M слов, соответственно занимает 2 слова памяти команд. В МК с большой памятью команд именно она, а не RJMP,  должна стоять в области векторов!

CALL

Аналогична RCALL, но может адресовать до 4M слов, соответственно занимает 2 слова памяти команд. 

MOVW Rd,Rr

Аналогична MOV, но копируется пара регистров. Rd, Rr - должны быть четными (0,2,4...). Время - 1 такт! то есть использование ее выгодно во всех отношениях.

LPM

Аналогична LPM у classic, но усовершенствована - можно указать регистр результата (у classic был жестко определенный R0), кроме того, можно автоинкрементировать Z. По сути получаем три разные команды - LPM, LPM Rd,Z и LPM Rd,Z+

SPM

 Запись слова программной памяти. Адрес слова в Z, само слово в R1:R0. Тонкости выполнения команды, думаю, надо смотреть в даташите, сам я никогда не применял.
 

Основное отличие архитектуры - настраиваемый тактовый генератор. Точное описание надо смотреть в даташите на конкретный МК, поскольку возможности и "умолчание" могут сильно отличаться, но основные отличия от classic таковы:

Тактовый генератор может работать не только от внешнего кварца, но и от внешнего генератора и - самое главное - от встроенного RC генератора. Последний режим - по умолчанию, кроме того, частота этого  RC генератора может выбираться установкой fuse-бит. У большинства МК по умолчанию - 1 МГц встроенный RC по умолчанию. Но, например, у Tiny2313 по другому!

Сразу хочу предупредить - с установкой fuse надо быть осторожным, помнить о том, что "галочка" или "1" - это состояние НЕЗАПРОГРАММИРОВАНО! Многие на этом обламывались :-) да и я сам. Помните о том, что неверная комбинация fuse бит может привести к неработоспособности МК!

 


Rekl:Наружная и внутренняя Обшивка балконов киев

(с)nml 11-Jul-2009