Самопроизвольная перезагрузка Nano
- Войдите на сайт для отправки комментариев
Пт, 04/09/2015 - 18:22
Программа работает корректно: принимает и отсылает данные в COM. Все считается как и должно. Добавляю на исполнение по приему 9 и Arduino начинает циклически перезагружаться.
if (Serial.available() > 0) { incomingByte = Serial.read(); switch (incomingByte) { case 49: {} break; case 57: { // 9 в коде ANSII Serial.println(" press 9"); for (int i=0; i<33; i=i+1){ for (int j=0; j<15; j=j+1){Serial.print( LetterArray[i][j]);Serial.print(" | ");} Serial.println(" ");} } break; default:{Serial.println(incomingByte, DEC);} } }
Причем эта часть кода должна исполняться только когда приходит "9" из COM, перезагрузки происходят при входе в цикл Loop. Плата Nano328. Создал отдельный скетч только с этим кодом- работает все. Подскажите в чем может быть проблема.
Так если "только с этим кодом работает", зачем Вы нам его выложили?
Неработающий скетч можете выложить?
А то у Вас получается: мужики, у меня тут есть скетч, который перегружает нанку, я Вам его не покажу, а Вы догадайтесь в чём там дело.
Предположить я, конечно могу - проблема с "распашкой" стека - в том месте, где должен быть адрес некой функции оказывается ноль, а переход по нулевому адресу и есть перезагрузка. Причин распашки стека может быть много: выход за границы массива, нехватка памяти и т.п. Большего, не видя, программы сказать не могу.
Я тоже думал про нехватку памяти, но массив задан глобальный и сразу в нем указаны значения и без того куска кода,что я процитировал все работает.
Про срыв стека тоже думал, но ведь он должен происходить при выполнении кода, а этот кусок выполняется только по приходу 9 в com,до чего дело не доходит.
Полный скетч если не разберусь выложу в понедельник, а то он на работе остался.
дополнил скетч кодом
результат в -94 говорит сам за себя.
Стэк залез на кучу. Забавно.
Именно сам и говорит- используйте F для вывода констант:
Serial.println ( F ( " press 9 " ) );
Serial.print ( F ( "\n[memCheck]" ) );