Я работаю над очень важным школьным проектом, который является MP3-плеером с веб-интерфейсом и веб-сервером с использованием мега-ардуинов. , когда я хочу использовать любую функцию ethernet lib, я должен приостановить музыку, потому что экран ethernet и экран mp3-плеера используют одну и ту же шину spi. Но когда я меняю громкость, это вызывает замораживание музыки в 1 секунду. чтобы избежать того, что я создал новые функции, которые приостанавливают музыку, вызовите функцию ethernet lib и резюме.Arduino сбой и перезагрузка в «случайных точках»
bool clientAvailable(EthernetClient &client){
MP3player.pauseDataStream();
bool a = client.connected();
MP3player.resumeDataStream();
return a;
}
int clientConnected(EthernetClient &client){
MP3player.pauseDataStream();
int a = client.available();
MP3player.resumeDataStream();
return a;
}
void stopClient(EthernetClient &client){
MP3player.pauseDataStream();
client.stop();
MP3player.resumeDataStream();
}
void checkForClient(int loading){
String firstLine;
MP3player.pauseDataStream();
EthernetClient client = server.available();
MP3player.resumeDataStream();
if (client) {
if(!loading){
Serial.println(F("new client")); // CRASH HERE
bool endLn(false);
char chr;
int i(0);
while (clientConnected(client)) {
char received[clientAvailable(client)+2];
while (clientAvailable(client)) {
MP3player.pauseDataStream();
char c = client.read();
MP3player.resumeDataStream();
received[i] = c;
Serial.print(c); // OR HERE
if(!endLn){
firstLine += c;
if (c == '\n'){
endLn = true;
}
}
++i;
}
received[i+1] = '\0';
i = 0;
if(endLn){
Serial.println();
endLn = false;
Serial.print(F("first line : "));
Serial.println(firstLine);
}
что я получаю на выходе:
new û192.168.0.123
есть IP в конце, потому что это где Arduino перезагрузка, и это первая вещь, которую я показываю. Если я удалю строку client.println (F («новый клиент»), ошибка будет происходить на линии client.print (c) (после отображения 3 или 4 символа). Если я удалю этот, будет врезаться куда-нибудь, но я не знаю, где.
Я проверил память, я как 600 байт, оставшихся в этой точке программы.
Любые идеи?
Спасибо.
Как настроен ваш сторожевой таймер? Это отключено? Если нет, то где код, обслуживающий сторожевой таймер? – Lundin
Я не знаю о коде, но просто чтение текста вопроса наполняет меня глубоким чувством беспокойства и предчувствия ... Похоже, вы посещаете пациента с множественной травмой и спрашиваете, как применять бандажную помощь :(Надеюсь, я ошибаюсь, но я думаю, что ваш дизайн истекает кровью. –
@ Lundin это было не так, я пытался отключить его, но ничего не изменилось, если бы я включил его и настроил вместо него? – RedSkidy