Digispark ATtiny 85 стирает флэш после отключения питания

У меня есть некоторые проблемы с моей платой Digispark ATtiny85. Например, если я загружаю скетч мигания, светодиод начинает мигать, и все выглядит нормально. Но как только я отсоединяю Digispark от USB-порта и подключаю его обратно, ничего не происходит. Я знаю, что программа запускается с задержкой в 5 секунд, поэтому программирование через USB становится возможным, но все равно ничего. Похоже, что флэш-память (где хранится программа) ATtiny 85 пуста.

Вот пример скетча мигания:

// процедура настройки запускается один раз, когда вы нажимаете reset:
void setup() {                
  // инициализируйте цифровой вывод в качестве выходного сигнала.
  pinMode(0, OUTPUT); // СВЕТОДИОД на модели B
  pinMode(1, OUTPUT); // Светодиод на модели A   
}

// процедура цикла выполняется снова и снова вечно:
void loop() {
  digitalWrite(0, HIGH);   // включите светодиод (ВЫСОКИЙ - это уровень напряжения)
  digitalWrite(1, HIGH);
  delay(1000);               // дождитесь второй
  digitalWrite(0, LOW);    // выключите светодиод, установив НИЗКОЕ напряжение
  digitalWrite(1, LOW); 
  delay(1000);               // подождите секунду
}

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

Я использую Linux Mint и Arduino IDE 1.8.10.

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

, 👍2

Обсуждение

Как используется eeprom? Или вы путаете программную память (flash) с eeprom? Выбор программатора предназначен для прошивки кода (или загрузчика по следующему пункту меню) в него через интернет-соединение с помощью какого-либо программатора., @KIIV

Код сохраняется во флэш-памяти, а не в EEPROM. Скетч мигания не использует EEPROM. Итак, реальная проблема такова: у вас запущен blink sketch, но если вы отключите digispark и снова подключите его, blink sketch больше не будет запущен?, @chrisl

`Или причиной такого поведения может быть плавающий вывод сброса?" официальный digispark отключил вывод сброса, поэтому вы получаете дополнительный вывод GPIO. Так что это не может быть плавающий контакт сброса., @Gerben

Ладно, я перепутал flash с EEPROM. Спасибо, что указали на это, я изменю это в вопросе. @chrisl Да, это моя проблема, @leonardo

Я нашел это на форуме digistump: "Я получаю такое же поведение, за исключением Arduino 1.6.5-r5. 5 все платы демонстрируют одинаковое поведение. На них не написано "Digispark", просто "ATttiny" (85"https://digistump.com/board/index.php?topic=3161.0 ) Может ли эта проблема быть связана с arduino IDE?, @leonardo

У меня такая же проблема, только на двух платах. Вероятно, попытаются записать загрузчик с помощью usbasp, возможно, они сожгли неправильный загрузчик еще в Китае., @Lucas


1 ответ


2

У меня такая же проблема, только на двух платах. Вероятно, попытаются записать загрузчик с помощью usbasp, возможно, они сожгли неправильный загрузчик еще в Китае.

РЕДАКТИРОВАТЬ:

Как и ожидалось, прошивка загрузчика micronucleus с использованием USBasp решила проблему на обеих платах. Я использовал burn-o-mat, так как arduino не видел программатора.

Просто загрузите прошивку с github (я использовал это: https://github.com/f4goh/micronucleus/archive/master.zip )

и подключитесь вот так (здесь парень использует arduino uno, не имеет значения): https://hamprojects.wordpress.com/2018/12/27/digispark-microcontrollers-implementation /

,