Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Прошивка atmega48
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
uuu2
Пытаюсь прошить atmega48. Программатор AVR910.

Нажимаю в Programmer's Notepad менюшку "Program". Появляется ответ:

Цитата
Found programmer: Id = "AVR ISP"; type = S
Software Version = U.2; Hardware Version = 0.2
Programmer supports buffered memory access with buffersize = 128 bytes.

Programmer supports the following devices:
Device code: 0x13 = AT90S1200
Device code: 0x20 = ATtiny84
Device code: 0x28 = AT90S4414
Device code: 0x30 = AT90S4433
Device code: 0x34 = AT90S2333
Device code: 0x38 = AT90S8515
Device code: 0x48 = (unknown)
Device code: 0x4c = AT90S2343
Device code: 0x51 = (unknown)
Device code: 0x55 = ATtiny12
Device code: 0x56 = ATtiny15
Device code: 0x68 = AT90S8535
Device code: 0x6c = AT90S4434
Device code: 0xffffff86 = (unknown)
Device code: 0xffffff87 = (unknown)
Device code: 0x3a = ATMEGA8515
Device code: 0x41 = ATMEGA103
Device code: 0x43 = ATMEGA128
Device code: 0x45 = ATMEGA64
Device code: 0x5e = ATtiny2313
Device code: 0x60 = ATMEGA161
Device code: 0x62 = (unknown)
Device code: 0x64 = ATMEGA163
Device code: 0x69 = ATMEGA8535
Device code: 0x72 = ATMEGA32
Device code: 0x74 = ATMEGA6450
Device code: 0x76 = ATMEGA8
Device code: 0x78 = ATMEGA169

avrdude: error: selected device is not supported by programmer: m48
make.exe: *** [program] Error 1


Но в инструкции к программатору указано, что atmega48 поддерживается!
Или инструкция врёт? Или я что-то делаю не правильно?

И что это за устройства с названиями "(unknown)"? Среди них случайно не затесалась atmega48?
DpInRock
http://attiny.netfirms.com/avr910.html
uuu2
Попытался прошить МК с помощью мастер-китовской утилиты. Вместо ATMEGA48 (которой в списке не было) указал АТMEGA8. В итоге МК прошился, и светодиоды замигали. Но! Светодиоды мигали вне зависимости от того, подключён ли к МК программатор. Т.е. прошивка закончилась, программатор я ещё не отключал, а лампочки мигали (хотя, вроде бы, МК должен находиться в режиме программирования).

При повторной прошивке (в код было внесено единственное изменение: пауза между миганиями увеличена с 500 мс до 2000 мс) утилита сообщила об успехе, но светодиоды уже не мигали. При этом, код записывался и считывался из памятм МК нормально. Ещё через 10-15 минут МК перестал программироваться, появилось сообщение "enter prog mode". В схеме ничего не менялось.

После проверки схемы мультиметром выяснилось, что на ноге #RESET постоянно висит высокий уровень напряжения. Нога подключена к программатору через подтягивающий резистор 10K на VCC. Если подключить программтор к порту USB и измерить напряжение между выходами RESET и GND, то получится ~ 1.4 В. Между VCC и GND тоже ~ 1.4 В. Однако в инструкции указано, что на выход VCC программатора поступает +5 В от шины USB. А реально выходит +1.4 В. Почему?
DpInRock
Понятия не имею. Мультиметр у вас.
uuu2
Та-ак. Основная ошибка исчезла после более тщательного пролуживания ножек МК. Теперь МК виден, читается сигнатура, память, fuse bits и т.п. Так что проблема оказалась в кривых руках. smile.gif

Однако теперь появился другой глюк. МК прошивается, то только один раз! После первой прошивки МК становится не виден и не читается (даже сигнатура). Загублено два МК.

Во флэш-память прошивалась элементарная программа (компилировалась WinAvr).
Код
#include <avr/io.h>
#include <avr/delay.h>
#define F_CPU 8000000UL  // 8 MHz
  
int main(void)      
{
   DDRD |= 1<<3; // - PD3 на выход
   while (1) {              
     PORTD |= 1<<3;  // "1" в PD3
     _delay_ms(500);  // 0.5 сек.
     PORTD &= ~(1<<3);  // "0" в PD3
     _delay_ms(500);   // 0.5 сек.
   }
}


Пин PD3 в документации к atmega48 обозначен как "PCINT19/OC2B/INT1" т.е. на программирование никак влиять не должен. Fuse bits не менялись - отключить RESET я не мог. Lock bits также не менялись.

В чём тут может быть дело?

И ещё пара вопросов:
- что будет, если настройки тактового генератора в fuse bits отличаются от значения F_CPU? Вроде бы у меня всё настроено правильно, но всё-таки? Что будет? Изменятся интервала времени т.е. вместо 0.5 сек задержка станет длиннее/короче? Или МК может вообще сломаться?
- что будет, если прошить из AVRProg МК, которого нет в списке? Вот у меня atmega48, но в AVRProg такого нет. Я выбрал atmega8 - там объем флеш памяти меньше т.е. "переполнения" при прошивке быть не может. Тем не менее, из-за этого может ломаться МК? Т.е. повторно не прошиваться и даже не входить в режим программирования?
ReAl
Цитата(uuu2 @ May 13 2009, 19:18) *
- что будет, если настройки тактового генератора в fuse bits отличаются от значения F_CPU? Вроде бы у меня всё настроено правильно, но всё-таки? Что будет? Изменятся интервала времени т.е. вместо 0.5 сек задержка станет длиннее/короче? Или МК может вообще сломаться?
F_CPU влияет в данном случае только на число циклов, выполнняемое в _delay_ms, т.е. при несовпадении F_CPU срелаьностью просто поежут времена. Работать всё будет.

Цитата(uuu2 @ May 13 2009, 19:18) *
- что будет, если прошить из AVRProg МК, которого нет в списке? Вот у меня atmega48, но в AVRProg такого нет. Я выбрал atmega8 - там объем флеш памяти меньше т.е. "переполнения" при прошивке быть не может. Тем не менее, из-за этого может ломаться МК? Т.е. повторно не прошиваться и даже не входить в режим программирования?
fuses у mega48 и mega8 разные, надо смотреть и сравнивать. Вполне могло оказаться, что в 48-ю зашилось что-то несовместимое с платой - т.е. зашились "внешний clk" или кварц, а рассчитывалось, что будет внутренний RC, зашилось включение BOD на 4,3В а питание на плате 3,3В и т.п. Сравнивайте документацию и думайте, что могло случиться.
Проблемы с CKSEL как обычно решаются внешним генератором.
uuu2
Ура! Лампочки мигают! Всё прошивается и перепрошивается! (прошил через ChipBlasterAVR).

Единственная странность - лампочки мигают в т.ч. тогда, когда подключён программатор. Т.е. по идее МК должен находиться в режиме программирования. И прошитый код выполняться не должен. Или всё-таки должен?
mempfis_
Цитата(uuu2 @ May 13 2009, 20:39) *
Ура! Лампочки мигают! Всё прошивается и перепрошивается! (прошил через ChipBlasterAVR).

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


Если в вашем программаторе стоит микросхема типа 74hc244 (т.е. программатор не просто 5 проводков) то вероятно все её выводы переводятся в третье состояние что позволяет МК стартовать и выполнять зашитую программу. МК находится в режиме программирования не постоянно а только когда в него идёт заливка программы.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.