реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Fuse и ISP
Qwertty
сообщение Jan 16 2007, 17:24
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Стоит простая задача - изменение фьюзов в условиях производства. Каждый раз подключать программатор не хочется. Попытался сделать "недопрограмматор", но чего-то фьюзы не программируются. 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.

Сообщение отредактировал Qwertty - Jan 16 2007, 17:26
Go to the top of the page
 
+Quote Post
GDI
сообщение Jan 16 2007, 19:29
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



В программаторах я профан, но рискну предположить, что отсутствует пауза в 4.5 мс (минимум) между записью старшего и младшего байтов фьюзов, да и 20мс после ресета.... а если кварц будет чуть быстрее... может сделать 25мс хотя бы..


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Jan 16 2007, 20:24
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Пауза после ресета - ровно 20мс, как указано в доке от Атмела. Видимо рассчитывается она исходя из максимальной частоты кварца, хотя нигде это не указано. Между записью старшего и младшего паузы действительно нет, завтра добавлю, спасибо.

Сообщение отредактировал Qwertty - Jan 16 2007, 20:26
Go to the top of the page
 
+Quote Post
viakon
сообщение Jan 17 2007, 07:56
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 290
Регистрация: 9-12-05
Из: г. Пермь
Пользователь №: 12 002



Lock биты случаем не установлены?
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Jan 17 2007, 08:12
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Нет, контроллер не залочен. Я проверяю вообще на чистом кристалле.
Go to the top of the page
 
+Quote Post
satellite-plus
сообщение Jan 17 2007, 09:59
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 8-01-07
Из: Одесса
Пользователь №: 24 196



Цитата(Qwertty @ Jan 17 2007, 07:12) *
Нет, контроллер не залочен. Я проверяю вообще на чистом кристалле.


А частота программатора и меги32 какова?


--------------------
Опыт - это та чудесная штука, которая позволяет вам узнать ошибку, когда вы ее повторите.
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Jan 17 2007, 10:13
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Частота SPI 62500, у 32 Меги - по умолчанию внутренний RC на 1МГц
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Jan 17 2007, 10:30
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



GDI СПАСИБО!! Задержка после записи на 6мс помогла.
Go to the top of the page
 
+Quote Post
satellite-plus
сообщение Jan 17 2007, 10:36
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 51
Регистрация: 8-01-07
Из: Одесса
Пользователь №: 24 196



Цитата(Qwertty @ Jan 17 2007, 09:30) *
GDI СПАСИБО!! Задержка после записи на 6мс помогла.


Все правильно. Можно и 4 мс. Я шью байты фузов отдельно каждый раз передергивая ресет и проверяя результат.


--------------------
Опыт - это та чудесная штука, которая позволяет вам узнать ошибку, когда вы ее повторите.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 23:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01492 секунд с 7
ELECTRONIX ©2004-2016