Форум myROBOT.ru » Шаг за шагом » Программирование микроконтроллеров » фьюзы в меге128

Страниц (1): [1]
 

1. Predator - 18 Сентября, 2013 - 21:37:26 - перейти к сообщению
предистория: снова столкнула меня судьба с Атмеловскими контроллерами, в этот раз на
новой работе насунули железку оживлять...

техническая база: плата с контроллером ATmega128A, JTAGICE3, AVRstudio5.

проблема 1: после вызова функции config_io, с соответствующим наполнением, контроллер
возвращается куда угодно, только не в вызвавшую функцию.... эта проблема
решилась сбросом фьюза о совместимости с мегой 103, это правильно?

проблема 2: как запхать фьюзы (особенно этот злой) в *.hex файл?
Это нужно, чтобы можно было отдавать темным людям без дополнительных
инструкций (и контролера за исполнением с дубиной). да и самому потом (лет
через 5) вспомнить напряжно будет.
2. Роботов - 19 Сентября, 2013 - 23:52:25 - перейти к сообщению
А вообще, фьюзы разве можно программно изменять? Я всегда считал что только через программатор...
3. Predator - 20 Сентября, 2013 - 16:51:09 - перейти к сообщению
ну у ПИКов я изначально фьюзы в коде прописывал, решил что и у АВРов можно.
оказалось можно, примерно так:
CODE:

FUSES =
{
.low = (FUSE_CKSEL0 & FUSE_CKSEL1 & FUSE_CKSEL3 & FUSE_SUT0),
.high = HFUSE_DEFAULT,
.extended = EFUSE_DEFAULT,
};

ато запустят железку в серию и будут рассказывать, что не работает. А возле каждого настройщика контролёра с дубиной не поставишь....
4. Predator - 11 Ноября, 2017 - 12:43:25 - перейти к сообщению
а вот в 7 атмелстудии примерно так пришлось:
CODE:
const uint8_t fusedata[] __attribute__ ((section (".fuse"))) =
{0xA2, 0x00, 0xFF, 0xFF, 0xFF, 0xF5};
const uint8_t lockbits[] __attribute__ ((section (".lockbits"))) =
{0xFC};
const char userdata[] __attribute__ ((section (".user_signatures"))) =
"Hello User Signatures";
5. killgur - 11 Ноября, 2017 - 19:40:04 - перейти к сообщению
ATMEL даже сделала описание на такой заход по фузам

AVR Libc Reference Manual Modules

<avr/fuse.h>: Fuse Support

http://www.atmel.com/webdoc/avrl...__avr__fuse.html