Re: Blandat Arduino-skoj
Postat: 18 augusti 2023, 14:28:51
När man skapar en ny "skiss" i Arduino så ser den ut så här.
Tanken är väl att engångskod/initialisering ska ligga i setup(). Den koden exekveras när man startar och när man startar om. En gång.
loop() är en oändlig loop. Den koden upprepas.
Procedurer eller funktioner utanför setup() och loop() kan anropas från båda.
Med interrupt blir det lite annorlunda.
Typiskt tror jag att det ser ut ungefär så här.
Man definierar vilka interrupt man ska använda i setup().
Interrupthanteringen sker i Interrupt service routine (ISR).
Som jag ser det öppnar interrupt möjligheter som kan vara svåra att uppnå utan interrupt.
Här är några exempel.
1. Man kan låta en inbyggd timer orsaka interrupt.
2. Man kan låta en yttre enhet orsaka interrupt.
3. Man kan ha givare som ska hanteras med avläsning t.ex. 0,5 sekunder efter att dom adresseras.
4. Man kan ha flera givare som ska avläsas med vissa, men olika, tidsintervall.
5. Man har något som ska styras på ett sätt som beror av t.ex. förlöpt tid.
6. Man har en process som ska styras, beroende på givarsignaler och passerad tid.
Det är när man börjar kombinare flera av alternativen ovan som det börjar bli intressant, IMO.
Jag ser en tidsstyrd mini-scheduler, som i exemplet ovan, som en byggsten som man kan använda för att göra något "större".
/Pi
Kod: Markera allt
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
Tanken är väl att engångskod/initialisering ska ligga i setup(). Den koden exekveras när man startar och när man startar om. En gång.
loop() är en oändlig loop. Den koden upprepas.
Procedurer eller funktioner utanför setup() och loop() kan anropas från båda.
Med interrupt blir det lite annorlunda.
Typiskt tror jag att det ser ut ungefär så här.
Man definierar vilka interrupt man ska använda i setup().
Interrupthanteringen sker i Interrupt service routine (ISR).
Som jag ser det öppnar interrupt möjligheter som kan vara svåra att uppnå utan interrupt.
Här är några exempel.
1. Man kan låta en inbyggd timer orsaka interrupt.
2. Man kan låta en yttre enhet orsaka interrupt.
3. Man kan ha givare som ska hanteras med avläsning t.ex. 0,5 sekunder efter att dom adresseras.
4. Man kan ha flera givare som ska avläsas med vissa, men olika, tidsintervall.
5. Man har något som ska styras på ett sätt som beror av t.ex. förlöpt tid.
6. Man har en process som ska styras, beroende på givarsignaler och passerad tid.
Det är när man börjar kombinare flera av alternativen ovan som det börjar bli intressant, IMO.
Jag ser en tidsstyrd mini-scheduler, som i exemplet ovan, som en byggsten som man kan använda för att göra något "större".
/Pi