Digispark - Загрузчик застрял

У меня есть digispark, который я хочу перепрограммировать, запаянный в схему. Я сжег прошивку по умолчанию t85 micronucleus.

Это команда, которую я использовал:

"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude" -C "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf" -v -pattiny85 -cstk500v1 -PCOM4 -b19200 -Uflash:w:D:\Documents\micronucleus-master\firmware\releases\t85_default.hex:i

avrdude: Version 6.3, compiled on Sep 12 2016 at 17:24:16
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"

         Using Port                    : COM4
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
         AVR Part                      : ATtiny85
         Chip Erase delay              : 400000 us
         PAGEL                         : P00
         BS2                           : P00
         RESET disposition             : possible i/o
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    12     4    0 no        512    4      0  4000  4500 0xff 0xff
           flash         65     6    32    0 yes      8192   64    128 30000 30000 0xff 0xff
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00

         Programmer Type : STK500
         Description     : Atmel STK500 Version 1.x firmware
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.03s

avrdude: Device signature = 0x1e930b (probably t85)
avrdude: safemode: hfuse reads as D7
avrdude: safemode: efuse reads as FF
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "D:\Documents\micronucleus-master\firmware\releases\t85_default.hex"
avrdude: writing flash (8116 bytes):

Writing | ################################################## | 100% 0.07s

avrdude: 8116 bytes of flash written
avrdude: verifying flash memory against D:\Documents\micronucleus-master\firmware\releases\t85_default.hex:
avrdude: load data flash data from input file D:\Documents\micronucleus-master\firmware\releases\t85_default.hex:
avrdude: input file D:\Documents\micronucleus-master\firmware\releases\t85_default.hex contains 8116 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.07s

avrdude: verifying ...
avrdude: 8116 bytes of flash verified

avrdude: safemode: hfuse reads as D7
avrdude: safemode: efuse reads as FF
avrdude: safemode: Fuses OK (E:FF, H:D7, L:F1)

avrdude done.  Thank you.

Я не установил никаких предохранителей (надеюсь, частота правильная).

Плата распознается моим компьютером, и я могу запрограммировать на нее скетч с помощью Arduino IDE. Несмотря на все это, программа, которую я в него запалил, не запускается. Похоже, он застрял в секции загрузчика.

Скетч:

void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(0, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(0, HIGH); 
}

Контакт PB0 никогда не имеет напряжения больше 1,7 В(шумовое или плавающее). Все контакты имеют одинаковое напряжение (за исключением PB3,PB4, которые вытянуты вверх или высоко).

Схема:

Схема работает. Я протестировал оба дисплея ранее с atiny, который я непосредственно запрограммировал с Uno. Верхний правый разъем напрямую подключен к digispark с помощью следующих контактов: VIN,GND,5V. Средний разъем также подключен к digispark.

Я попробовал:

  • Питание от USB: Я боюсь, что это будет обнаружено загрузчиком и войти в состояние программирования, таким образом, никогда не работает схема(не должно произойти, но вы никогда не знаете...)
  • Питание от VIN с батареей 9V. Ничего. Все напряжения находятся под контролем (5V pin имеет 5v на нем. Все остальные контакты плавают)
  • Питание осуществляется от контакта 5 В с использованием Arduino UNO в качестве источника. Ничего. Во всех случаях напряжение на PB0 остается неизменным. Он колеблется от 0,6 В до 1,6 В.

В Arduino IDE:

  • Пробовал Digispark 16,5 Мгц
  • Digispark Pro 16 МГц
  • Digispark(Без Usb) 16 МГц

Всегда успешная загрузка.

Примечания:

  • После загрузки в Arduino этот текст появляется:

    Запуск приложения пользователя ... запуск: 100% полный

    Таким образом, предполагается запустить программу, но плата на самом деле сбрасывается, потому что она перенумеруется Windows.

  • Не совсем возможно де-припаять его и запрограммировать скетч непосредственно с помощью Arduino as ISP

  • Я использую Windows 10
  • Предохранители, использованные при сжигании микроядра L:F1 H:D7 E:FF. Это "безопасные" значения по умолчанию. Фактические предохранители, необходимые для прошивки, следующие:L: E1 H:DD E:FE.
  • Разница в расширенном предохранителе: Самопрограммирование временно отключено...Неужели это и есть преступник?
  • Мне удалось отпаять PB0,PB1 и PB2 с задней стороны печатной платы. Теперь я не могу запрограммировать его непосредственно с помощью Arduino в качестве ISP. Та установка, которая у меня есть, должна работать, потому что я легко могу запрограммировать т45. Значит, это как-то связано с дигиспарком. Проверил соединение между контактами и самим микроконтроллером. Ошибка, которую я получаю, - это Фу... и иногда он находит 0x00ff00 или другой ненужный идентификатор платы, но, вероятно, это происходит из-за неправильного подключения.

Вопрос № 2:

В текущей конфигурации(припаянной) можно ли было бы снова использовать Arduino в качестве ISP для его программирования? PB0,PB1,PB2 подключены к последовательным часам,последовательным данным и последовательным часам хранения соответственно. Прямо сейчас я пытаюсь установить правильные предохранители, но каждый раз получаю вот что:

avrdude -C "C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf" -c stk500v1 -p attiny85  -U lfuse:w:0xe1:m -U hfuse:w:0xdd:m -U efuse:w:0xfe:m -B 20 -b19200 -P COM7

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.06s

avrdude: Device signature = 0x000000 (retrying)

Reading | ################################################## | 100% 0.05s

avrdude: Device signature = 0x000000 (retrying)

Reading | ################################################## | 100% 0.05s

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.

make: *** [fuse] Error 1

, 👍0

Обсуждение

Ваша схема нуждается в некоторой работе. Например, разъем(?) в правом верхнем углу, я не могу сказать, в каком порядке находятся контакты. Я не могу сказать, как называются резисторы (потому что они накладываются друг на друга). Там болтаются провода (огрызки), и это похоже на кучу спагетти. Конденсаторов нигде нет, так что это может быть проблемой., @Ron Beyer

Верхний разъем предназначен для питания. Он сразу же втягивается в digispark. Как и средний разъем. Digispark уже предоставляет конденсаторы для питания. И да..Для этого все еще требуется много работы. НО схема работает. Протестировал оба экрана с цифрами, непосредственно запрограммировав attiny., @sergiu reznicencu

Это сводит меня с ума. С тех пор как я запрограммировал этот загрузчик, ничего не работает. Я думаю, что это связано с программным обеспечением, потому что плата works..in его путь. Он распознается ПК, я могу его запрограммировать ... но он не выполняет ничего, что должен был бы выполнять., @sergiu reznicencu

вы это читали? https://digistump.com/wiki/digispark/tutorials/connecting, @jsotola

Я уже сто раз программировал digisprk. Это всегда срабатывало., @sergiu reznicencu


1 ответ


Лучший ответ:

1

Решил эту проблему! Я не знаю, в чем была настоящая проблема, но я сконструировал высоковольтный программатор и просто взорвал digispark новыми и надлежащими предохранителями. Теперь это работает так, как должно работать.

,