Bonjour, y-a-t'il une fonction logiciel qui permette de relancer l'arduino sans appuyer sur le bouton Reset?
j'ai essayé après avoir regarder sur internet :
asm volatile (" jmp 0");
Mais elle ne compile pas^^'. En gros le but serait de redémarrer l'arduino en appuyant sur un bouton du joystick/ une appli mobile.
Provoquer un Reset logiciel sur un UNO fonctionne si tu exécutes le code:
__asm__ __volatile__ ("jmp 0");
Donc on peut imaginer qu'une fonction contenant cette ligne de code soit appelée si une broche du uc passe à l'état haut et est câblée à cette fonction par un attachinterrupt(). Sauf qu'un Reset est généralement provoqué pour sortir d'un état de plantage du uc, et si tel est le cas, il est très probable que le code ne renverra pas vers la fonction sensée générer le Reset.
Donc si c'est pour sortir d'un état de plantage, il faut plutôt utiliser le watchdog.
Effectivement, la solution qui passe pour être la plus propre consiste à utiliser le watchdog
Mais même pour la solution "crade" il n'est pas nécessaire de descendre dans le barbarisme de l'assembleur. La même chose peut être codée en C standard
void(* reboot) (void) = 0;//déclarer une fonction reboot qui pointe vers l'adresse 0 de la flash
...
//plus loin dans le code
reboot();
Je vais être plus clair car je ne savais pas que c'était important, mais j'utilise une Arduino Due, et l'instruction que tu m'as donné ne compile pas ( c'est lié je suppose).
Alors dans les fait le but est de revenir à l'état de base de l'arduino, donc que je remette toutes mes variables à leur état d'origine, que je retourne dans la fonction de base, et c'est juste que actuellement le moyen le plus pratique (même si bourrin) de le faire c'est de reboot l'arduino. Donc si j'utilise un watchdog ça ne va pas marcher, la fonction ne plante pas, et ne reste que le temps d'activer le reboot.
Pour l'application mobile merci mais ne vous inquiétez pas elle est déjà faite, j'aimerais juste rajouter cette option, et pour ça je dois savoir la faire en c. Aussi le lien que tu as envoyé je n'arrive pas à voir le rapport, j'ai mal lu?^^'
Pareil pour le reboot, il me dis que la fonction reboot n'existe pas et ne compile pas^^'.