Фьюз бит доктор на ардуино не пишет hfuse

Обсуждаем контроллеры компании Atmel.
Ответить
Встал на лапы
Сообщения: 80
Зарегистрирован: Вс фев 21, 2021 13:01:40
Откуда: Прокопьевск

Сообщение Михаил_avr »

Здравствуйте собрал по схеме из этой статьи фьюз доктор, вылечил одну 328 мегу, но потом решил дописать программу получше, но в итоге опять её залочил, взял другую и заметил что hfuse не пишется. А разлочить atmega328p надо. Пробовал другие прошивки, но везде не помогает.

Добавлено after 48 seconds:
http://forum.amperka.ru/threads/hv-fuse ... -avr.6338/

Добавлено after 41 second:
https://www.avrfreaks.net/forum/hvpp-hi ... rogramming

Добавлено after 51 second:
http://mightyohm.com/blog/2008/09/ardui ... rogrammer/

Добавлено after 3 minutes 46 seconds:
Вот моя печатная плата(если надо)
https://img.radiokot.ru/files/143954/2igunc65ju.jpg
https://img.radiokot.ru/files/143954/2iguofezio.jpg

Код: Выделить всё

// Желаемая конфигурация предохранителя
//Фьюзбит доктор для Меги 8/48/88/168/328
//После лечения чип снова виден для ISP программатора
//нужные фьюзы раскоментировать ненужные закоментировать
//#define  HFUSE  0xD9  // дефолтные фьюзы для ATmega 8
//#define  LFUSE  0xE1  // дефолтные фьюзы для ATmega 8
//#define  HFUSE  0xDF  // дефолтные фьюзы для ATmega 168
//#define  LFUSE  0x62  // дефолтные фьюзы для ATmega 168
#define  HFUSE  0xD9  // дефолтные фьюзы для ATmega 328
#define  LFUSE  0x62  // дефолтные фьюзы для ATmega 328
/*  
 HVFuse - Use High Voltage Programming Mode to Set Fuses on ATmega48/88/168
 09/23/08  Jeff Keyzer  http://mightyohm.com                
 The HV programming routines are based on those described in the
 ATmega48/88/168 datasheet 2545M-AVR-09/07, pg. 290-297
 This program should work for other members of the AVR family, but has only
 been verified to work with the ATmega168.  If it works for you, please
 let me know!  http://mightyohm.com/blog/contact/
 */

// Desired fuse configuration
#define  HFUSE  0xDF   // Default for ATmega48/88/168, for others see
#define  LFUSE  0x62   // http://www.engbedded.com/cgi-bin/fc.cgi

// Pin Assignments
#define  DATA    PORTD // PORTD = Arduino Digital pins 0-7
#define  DATAD   DDRD  // Data direction register for DATA port
#define  VCC     8
#define  RDY     12     // RDY/!BSY signal from target
#define  OE      11
#define  WR      10
#define  BS1     9
#define  XA0     13
#define  XA1     18    // Analog inputs 0-5 can be addressed as
#define  PAGEL   19    // digital outputs 14-19
#define  RST     14    // Output to level shifter for !RESET
#define  BS2     16
#define  XTAL1   17

#define  BUTTON  15    // Run button

void setup()  // run once, when the sketch starts
{
  // Set up control lines for HV parallel programming
  DATA = 0x00;  // Clear digital pins 0-7
  DATAD = 0xFF; // set digital pins 0-7 as outputs
  pinMode(VCC, OUTPUT);
  pinMode(RDY, INPUT);
  pinMode(OE, OUTPUT);
  pinMode(WR, OUTPUT);
  pinMode(BS1, OUTPUT);
  pinMode(XA0, OUTPUT);
  pinMode(XA1, OUTPUT);
  pinMode(PAGEL, OUTPUT);
  pinMode(RST, OUTPUT);  // signal to level shifter for +12V !RESET
  pinMode(BS2, OUTPUT);
  pinMode(XTAL1, OUTPUT);

  pinMode(BUTTON, INPUT);
  digitalWrite(BUTTON, HIGH);  // turn on pullup resistor

  // Initialize output pins as needed
  digitalWrite(RST, 1);  // Level shifter is inverting, this shuts off 12V
}

void loop()  // run over and over again
{
  while(digitalRead(BUTTON) == HIGH) {  // wait until button is pressed
  }
  // Initialize pins to enter programming mode
  digitalWrite(PAGEL, LOW);
  digitalWrite(XA1, LOW);
  digitalWrite(XA0, LOW);
  digitalWrite(BS1, LOW);
  digitalWrite(BS2, LOW);
  // Enter programming mode
  digitalWrite(VCC, HIGH);  // Apply VCC to start programming process
  digitalWrite(WR, HIGH);  // Now we can assert !OE and !WR
  digitalWrite(OE, HIGH);
  delay(1);
 //chip erase
   digitalWrite(RST, 0); 
   digitalWrite(XA1, 1);
   digitalWrite(XA0, 0);
   digitalWrite(BS1, 0);
   sendcmd(B10000000);
   delay(1);
  digitalWrite(XTAL1, HIGH);
  digitalWrite(WR, 0);
  delay(100);
//chip erase
 
  
  
  sendcmd(B01000000);  // Send command to enable fuse programming mode
  writefuse(HFUSE, true);

  // Now we program LFUSE
  sendcmd(B01000000);
  writefuse(LFUSE, false);

  delay(1000);  // wait a while to allow button to be released

  // Exit programming mode
  digitalWrite(RST, 1);

  // Turn off all outputs
  DATA = 0x00;
  digitalWrite(OE, LOW);
  digitalWrite(WR, LOW);
  digitalWrite(PAGEL, LOW);
  digitalWrite(XA1, LOW);
  digitalWrite(XA0, LOW);
  digitalWrite(BS1, LOW);
  digitalWrite(BS2, LOW);
  digitalWrite(VCC, LOW);
}










void sendcmd(byte command)  // Send command to target AVR
{
  // Set controls for command mode
  digitalWrite(XA1, HIGH);
  digitalWrite(XA0, LOW);
  digitalWrite(BS1, LOW);
  //DATA = B01000000;  // Command to load fuse bits
  DATA = command;
  digitalWrite(XTAL1, HIGH);  // pulse XTAL to send command to target
  delay(1);
  digitalWrite(XTAL1, LOW);
  //delay(1);
}

void writefuse(byte fuse, boolean highbyte)  // write high or low fuse to AVR
{
  // if highbyte = true, then we program HFUSE, otherwise LFUSE
  
  // Enable data loading
  digitalWrite(XA1, LOW);
  digitalWrite(XA0, HIGH);
  delay(1);
  // Write fuse
  DATA = fuse;  // set desired fuse value
  digitalWrite(XTAL1, HIGH);
  delay(1);
  digitalWrite(XTAL1, LOW);
  if(highbyte == true)
    digitalWrite(BS1, HIGH);  // program HFUSE
  else
    digitalWrite(BS1, LOW);
     digitalWrite(BS2, LOW);
  digitalWrite(WR, LOW);
  delay(1);
  digitalWrite(WR, HIGH);
  delay(100);
}
 
Последний раз редактировалось Михаил_avr Вт май 11, 2021 15:33:33, всего редактировалось 1 раз.
Реклама
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

Сообщение parovoZZ »

но потом решил дописать программу получше, но в итоге опять её залочил
из программы аврки не лочатся.
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2314
Зарегистрирован: Вт янв 26, 2021 22:33:21

Сообщение Alex_641 »

Решил дописать программу , и всё ! Может быть не нужно было дописывать ?
Не спрашивай по ком звонит колокол, он звонит по тебе !
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Чт апр 29, 2021 16:01:55

Сообщение 1en2-1 »

parovoZZ писал(а):из программы аврки не лочатся.
так программа-то для доктора....))))...сам доктор жив, а его пациент - нет...)))
Реклама
Эиком - электронные компоненты и радиодетали
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

Сообщение parovoZZ »

Семён Семёныч))))
Это печально.
Реклама
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср дек 01, 2010 00:38:15
Откуда: Харьков

Сообщение slav0n »

[uquote="parovoZZ",url="/forum/viewtopic.php?p=4029659#p4029659"]из программы аврки не лочатся.[/uquote]
изи

Код: Выделить всё

#define  HFUSE  0xFF
ohmycode!
primuss3.com
Контактная информация:
Реклама
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

После праздников еще не отошли что-ли? Очевидно же, что ТС прогу писал для целевого МК, зашивал отдельно фьюзы нужные для проги и тем самым лочил его. Теперь не может разлочить его через доктора. Только предлагает теперь понять почему это не происходит путем гадания на кофейной гуще.

Михаил_avr, подключайтесь по терминалу (UART) к доктору и смотрите вывод. Без диагностической информации гадать можно долго. Ну и с чего вы соб-но вообще взяли что именно HFUSE не пишется, а не в принципе все?

slav0n, это бред. Это не из программы. Из программы невозможно поменять фьюзы.
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср дек 01, 2010 00:38:15
Откуда: Харьков

Сообщение slav0n »

NStorm писал(а):slav0n, это бред. Это не из программы. Из программы невозможно поменять фьюзы.
а листинг выше это что?
ohmycode!
primuss3.com
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Сообщение Ivanoff-iv »

Это только объявление константы "HFUSE" равной 0xFF для использования в коде и всё.
Ниекакого отношения к изменению фьюзов эта константа не имеет, мало того она даже до МК не дойдёт, а будет заменена препроцессором если гдето в коде встретится на 0xFF ещё до компиляции.
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср дек 01, 2010 00:38:15
Откуда: Харьков

Сообщение slav0n »

а это что?!!

Код: Выделить всё

writefuse(HFUSE, true);
"спецы" заполонили все вокруг...

топик стартеру,
ты просто забыл закомментить одну строчку:

Код: Выделить всё

#define  HFUSE  0xDF   // Default for ATmega48/88/168, for others see
поэтому тебе кажется, что хайфуз для 328 не пишется.
ohmycode!
primuss3.com
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Сообщение Ivanoff-iv »

всё, я затупил :facepalm: :oops: это свои фьюзы не меняются из программы
А это программа для доктора, а установка фьюзов происходит на пациенте...
прошу пардону...
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

[uquote="slav0n",url="/forum/viewtopic.php?p=4029813#p4029813"]а листинг выше это что?[/uquote]
Из программы самому себе нельзя поменять фьюзы. А выше типа меняются фьюзы другому МК в HVPP режиме через какую-то убогую ардуиновкую прошивку а-ля доктор. Так и надо сразу говорить.
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср дек 01, 2010 00:38:15
Откуда: Харьков

Сообщение slav0n »

[uquote="NStorm",url="/forum/viewtopic.php?p=4029886#p4029886"][uquote="slav0n",url="/forum/viewtopic.php?p=4029813#p4029813"]а листинг выше это что?[/uquote]
Из программы самому себе нельзя поменять фьюзы. А выше типа меняются фьюзы другому МК в HVPP режиме через какую-то убогую ардуиновкую прошивку а-ля доктор. Так и надо сразу говорить.[/uquote]
выкаблучивание не засчитано
ohmycode!
primuss3.com
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Сообщение NStorm »

Да ни один нормальный человек ваши выкаблучивания не поймет. Для всех нормальных людей "из программы аврки не лочатся" вполне понятная фраза о другом.
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

Сообщение parovoZZ »

Михаил_avr, подключайтесь по терминалу (UART) к доктору и смотрите вывод.
Все глаза сломал...А где в листинге вывод в терминал? Он даже сигнатуру не читает.
Это, вообще, настоящий доктор?
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср дек 01, 2010 00:38:15
Откуда: Харьков

Сообщение slav0n »

[uquote="NStorm",url="/forum/viewtopic.php?p=4029910#p4029910"]Да ни один нормальный человек ваши выкаблучивания не поймет. Для всех нормальных людей "из программы аврки не лочатся" вполне понятная фраза о другом.[/uquote]
ни один нормальный программист не будет читать домыслы "специалистов", он прежде всего посмотрит в код
ohmycode!
primuss3.com
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Сообщение Ivanoff-iv »

[uquote="parovoZZ",url="/forum/viewtopic.php?p=4029659#p4029659"]
но потом решил дописать программу получше, но в итоге опять её залочил
из программы аврки не лочатся.[/uquote]
непонимание пошло отсюда - кого её?
А так - да, из программы аврки не лочатся. и эту фразу можно трактовать только о самоблокировке, потому-что аврки лочатся программатором (а то, что в нём тоже программа и в компе программа - так аврке на это глубоко пофиг, залочить её можно и прицепив тумблеровы на входы ресет, клок и моси)
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср дек 01, 2010 00:38:15
Откуда: Харьков

Сообщение slav0n »

а я хотел тебя похвалить...
ohmycode!
primuss3.com
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Сообщение Ivanoff-iv »

а чего меня за невнимательность хвалить?
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср дек 01, 2010 00:38:15
Откуда: Харьков

Сообщение slav0n »

навпаки, за внимательность
ohmycode!
primuss3.com
Контактная информация:
Ответить

Вернуться в «AVR»