Arduino зависает через некоторое время

Я использую Atmega328p с питанием 5 В, Через некоторое время мой Arduino зависает [или автоматически перезагружается].

Я использую библиотеки:

  • Wire.h
  • CRC32.h
  • EEPROM.h
  • Arduino.h
  • TimerOne.h
  • RtcDS3231.h
  • SoftwareSerial.h
  • Adafruit_NeoPixel.h
  • avr/wdt.h

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

, 👍0

Обсуждение

возможно, это ошибка в *вашем* коде, @Jaromanda X

Это мой код, можете ли вы мне подсказать... https://github.com/savaliyadnk/arduinoswitch, @Dharmendra Savaliya

не используйте строку. используйте строки C (массив символов с нулевым завершением) https://majko.co.uk/blog/evils-arduino-strings, @Juraj

Теоретически это только минимальная схема. Можете ли вы показать нам фотографию? Нам хотелось бы посмотреть, где находятся развязывающие конденсаторы и насколько близко расположен кристалл с конденсаторами емкостью 22 пФ к atmega328p., @Jot

У вас есть 100nF, подключенный к aref и vcc? Это должно быть заземление. Все GND и все VCC должны быть подключены к питанию. Все они. У вас нет развязывающих конденсаторов. Согласно информации на этой странице, они **не** являются дополнительными опциями: http://www.gammon.com.au/bootloader., @Jot


1 ответ


3

Не уверен, что это решит вашу проблему, но это серьезная ошибка:

  char buf1[8], buf2[6];
  sprintf(buf1, "%08lu", myvote.mydate);
  sprintf(buf2, "%06lu", myvote.mytime);

Ознакомьтесь с справкой по функциям sprintf

Завершающий нулевой символ автоматически добавляется после содержимого.

Итак, текстовые буферы слишком малы. Должно быть как минимум:

char buf1[9], buf2[7];
,