Bonjour à tous.
J'ai l'habitude d'utiliser un Soft Reset sur Uno R3 et Nano, voir code. Cela fonctionne très bien.
Malheureusement, cela ne fonctionne pas sur le Uno R4. Je suppose que cela est dû à la différence de microprocesseur.
Merci par avance pour une éventuelle solution.
Mon code.
//
void(* resetFunc) (void) = 0; // soft reset function
int pb=0; // start/stop/reset button
void setup() {
delay(400); // for reset consideration
Serial.begin(9600);
pinMode(pb,INPUT_PULLUP); // start/stop/reset button attachment
Serial.print("\n\n\t To start, click on the Start button");
while( digitalRead(pb) ); delay(400);
Serial.print("\n\t Started");
}
void loop() {
if (! digitalRead(pb)){
Serial.print("\n\t Soft reset"); delay(400);
resetFunc();
}
}
vous êtes déjà dans le futur là... on n'en est qu'au UNO R4 non ?
sur ce genre d'architecture c'est plus complexe qu'un jump à l'adresse 0.
la doc dit qu'un software reset se fait comme cela
5.3.6 Software Reset
The software reset is an internal reset generated by a software setting of the SYSRESETREQ bit in the AIRCR register in the Arm core. When the SYSRESETREQ bit is set to 1, a software reset is generated. When the internal reset time (tRESW2) elapses after the software reset is generated, the internal reset is canceled and the CPU starts the reset exception handling.
For details on the SYSRESETREQ bit, see the ARM® Cortex®-M4 Technical Reference Manual.