Na software interrupt spring naar loop()
5 berichten
• Pagina 1 van 1
Na software interrupt spring naar loop()
Hallo,
Ik wil terug springen naar het begin van het programma ( loop() ) na een software interrupt zodat het programma start vanaf het begin.
Het betreft een( Arduino DUE )
Ik heb een klein programma toegevoegd om te testen of het werkt, tevens heb ik al meerdere voorbeelden getest maar tot heden werkt het niet goed.
Graag een tip hoe dit op te lossen.
Bij voorbaat bedankt,
Leen
#include <DueTimer.h>
volatile byte state = LOW;
int LED_1 = 41;
int LED_2 = 53;
void setup() {
pinMode(LED_1,OUTPUT);
pinMode(LED_2,OUTPUT);
Timer3.attachInterrupt(MSec).start(1000); // Every ms
}
void(* resetFunc) (void) = 0; // Declare reset function @ address 0
void loop() {
digitalWrite(LED_2, HIGH); // Short pulse
while (1){
digitalWrite(LED_2, LOW); // Reset pulse
}
}
void MSec(){
state = !state;
digitalWrite(LED_1, state);
resetFunc(); // Return to loop
}
Ik wil terug springen naar het begin van het programma ( loop() ) na een software interrupt zodat het programma start vanaf het begin.
Het betreft een( Arduino DUE )
Ik heb een klein programma toegevoegd om te testen of het werkt, tevens heb ik al meerdere voorbeelden getest maar tot heden werkt het niet goed.
Graag een tip hoe dit op te lossen.
Bij voorbaat bedankt,
Leen
#include <DueTimer.h>
volatile byte state = LOW;
int LED_1 = 41;
int LED_2 = 53;
void setup() {
pinMode(LED_1,OUTPUT);
pinMode(LED_2,OUTPUT);
Timer3.attachInterrupt(MSec).start(1000); // Every ms
}
void(* resetFunc) (void) = 0; // Declare reset function @ address 0
void loop() {
digitalWrite(LED_2, HIGH); // Short pulse
while (1){
digitalWrite(LED_2, LOW); // Reset pulse
}
}
void MSec(){
state = !state;
digitalWrite(LED_1, state);
resetFunc(); // Return to loop
}
Advertisement
Re: Na software interrupt spring naar loop()
Het lijkt er op dat je een verkeerde oplossing probeert te vinden voor het verkeerde probleem.
Ken je deze website: http://xyproblem.info/.
Kun je vertellen wat je project is ?
Waarschijnlijk is het met normale code of met millis() te maken.
Vanzelfsprekend krijg je dezelfde soort antwoorden hier: https://forum.arduino.cc/index.php?topic=630655.0.
Ken je deze website: http://xyproblem.info/.
Kun je vertellen wat je project is ?
Waarschijnlijk is het met normale code of met millis() te maken.
Vanzelfsprekend krijg je dezelfde soort antwoorden hier: https://forum.arduino.cc/index.php?topic=630655.0.
Re: Na software interrupt spring naar loop()
Hallo,
Als ik de resetFunc(); verwijderd werkt msec timer interrupt goed maar springt terug naar de while loop ( ok dat is normaal )
Maar de vraag is of het mogelijk is om terug te springen naar het begin van het programma.
Leen
Als ik de resetFunc(); verwijderd werkt msec timer interrupt goed maar springt terug naar de while loop ( ok dat is normaal )
Maar de vraag is of het mogelijk is om terug te springen naar het begin van het programma.
Leen
Re: Na software interrupt spring naar loop()
allereerst zoek eens uit hoe een interrupt werkt.
Stel even dat je aan het rijden ben met de auto,
je krijgt dan een interupt waarin je de radio wat harder zet.
maar jij wilt dan het programma herstarten en dus de versnelling in zijn 1 zetten en de koppeling laat opkomen.
en dat terwijl je dus 120 rijd. dat wordt lachen.
een interupt is een subprogramma dat even werkt en daarna weer teruggaat naar zijn originele programma.
wat je wel kan doen is een vlag aanzetten(in die interupt), en dan in je hoofdprogramma op die vlag testen.
Stel even dat je aan het rijden ben met de auto,
je krijgt dan een interupt waarin je de radio wat harder zet.
maar jij wilt dan het programma herstarten en dus de versnelling in zijn 1 zetten en de koppeling laat opkomen.
en dat terwijl je dus 120 rijd. dat wordt lachen.
een interupt is een subprogramma dat even werkt en daarna weer teruggaat naar zijn originele programma.
wat je wel kan doen is een vlag aanzetten(in die interupt), en dan in je hoofdprogramma op die vlag testen.
paul deelen
shooter@home.nl
shooter@home.nl
Re: Na software interrupt spring naar loop()
Omdat je aan het begin wil beginnen kun je ook de reset gebruiken. dan start het helemaal opnieuw op, voor nog meer zekerheid. die reset gaat vanzelf weer uit als je reset.
paul deelen
shooter@home.nl
shooter@home.nl
5 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: uggosaw en 8 gasten