Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Fuse и ISP
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Qwertty
Стоит простая задача - изменение фьюзов в условиях производства. Каждый раз подключать программатор не хочется. Попытался сделать "недопрограмматор", но чего-то фьюзы не программируются. sad.gif В режим программирования входит - возвращает 0x53. Дальше пытаюсь изменить фьюзы, вроде все проходит, но они не меняются. Про перезапуск перед проверкой знаю.
Вот упрощенный исходник:

unsigned char tmp;

SPCR=0x51;
SPSR=0x00;
// вход в режим программирования
while(1)
{
RESET=1;
delay_us(1000);
RESET=0;
delay_us(20000);
tmp=0;
SPDR=0b10101100;
while(SPSR.SPIF!=1);
SPDR=0b01010011;
while(SPSR.SPIF!=1);
SPDR=0xFF;
while(SPSR.SPIF!=1);
tmp=SPDR;
SPDR=0xFF;
while(SPSR.SPIF!=1);
if(tmp==0b01010011) break;
}

// старший байт фьюзов
SPDR=0xAC;
while(SPSR.SPIF!=1);
SPDR=0xA8;
while(SPSR.SPIF!=1);
SPDR=0xFF;
while(SPSR.SPIF!=1);
SPDR=0b11000111;
while(SPSR.SPIF!=1);

// младший байт фьюзов
SPDR=0b10101100;
while(SPSR.SPIF!=1);
SPDR=0xA0;
while(SPSR.SPIF!=1);
SPDR=0xFF;
while(SPSR.SPIF!=1);
SPDR=0b00101111;
while(SPSR.SPIF!=1);

RESET=1;
while (1);

Где трабл не пойму. Подскажите плиз!
Контроллер в программаторе мега8, менять фьюзы еадо в меге32.
GDI
В программаторах я профан, но рискну предположить, что отсутствует пауза в 4.5 мс (минимум) между записью старшего и младшего байтов фьюзов, да и 20мс после ресета.... а если кварц будет чуть быстрее... может сделать 25мс хотя бы..
Qwertty
Пауза после ресета - ровно 20мс, как указано в доке от Атмела. Видимо рассчитывается она исходя из максимальной частоты кварца, хотя нигде это не указано. Между записью старшего и младшего паузы действительно нет, завтра добавлю, спасибо.
viakon
Lock биты случаем не установлены?
Qwertty
Нет, контроллер не залочен. Я проверяю вообще на чистом кристалле.
satellite-plus
Цитата(Qwertty @ Jan 17 2007, 07:12) *
Нет, контроллер не залочен. Я проверяю вообще на чистом кристалле.


А частота программатора и меги32 какова?
Qwertty
Частота SPI 62500, у 32 Меги - по умолчанию внутренний RC на 1МГц
Qwertty
GDI СПАСИБО!! Задержка после записи на 6мс помогла.
satellite-plus
Цитата(Qwertty @ Jan 17 2007, 09:30) *
GDI СПАСИБО!! Задержка после записи на 6мс помогла.


Все правильно. Можно и 4 мс. Я шью байты фузов отдельно каждый раз передергивая ресет и проверяя результат.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.