Innehållsförteckning:
- Steg 1: Avbryt hanterare
- Steg 2: Ange periodiskt tidsintervall
- Steg 3: Avbryt initiering
- Steg 4: Var du ska lägga till din kod
Video: Arduino - Periodiskt avbrott: 4 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
This Instructable handlar om att använda ett periodiskt avbrott för timing i Arduino -program. Detta är ett steg för en spirande Arduino -programmerare som vet att Arduino kan mer, men inte riktigt vet hur man gör det.
Om det finns ett prestandaproblem antar jag att du använder en eller flera fördröjning () -funktioner. Tricket är att bli av med funktionen fördröjning () och ersätta ett avbrott. Funktionen fördröjning () tvingar Arduino att inte göra någonting i väntan på att fördröjningen () ska slutföras. Genom att använda ett avbrott kan ditt program göra andra saker i väntan på att fördröjningen är slut. Det finns vanligtvis en enorm mängd oanvänd dödtid som kan användas till andra saker när du använder fördröjning (). Att använda ett avbrott löser detta problem.
Steg 1: Avbryt hanterare
1. Lägg till avbrottshanteraren till ditt program. Kopiera och klistra in någonstans ovanför setup ();
const osignerad lång TIMER0_COUNT = 500; // 500 msek timerintervall
// TIMER0 interrupt handler volatile bool time = false; ISR (TIMER0_COMPA_vect) {statiskt osignerat långt antal = 0; if (++ count> TIMER0_COUNT) {count = 0; tid = sant; // tiden är inställd på true var TIMER0_COUNT ms} // (tiden måste rensas i huvudrutinen)}
Steg 2: Ange periodiskt tidsintervall
2. Ställ in tidsintervallet. Den här rutinmässiga spargrisen backar sig på TIMER0 -avbrottet, som ska avfyras var ~ 1 msek.
Ditt "intervall" är antalet TIMER0 -avbrott som ska bearbetas. Varje intervall är ~ 1 msek, så du ställer verkligen in hur många TIMER0 -avbrott som ska räknas innan du aktiverar ditt intervall. IOW, ställ in variabeln TIMER0_COUNT till hur många millisekunder du vill vänta. Till exempel, använd 500 i en halv sekund. Använd 3000 i 3 sekunder.
Steg 3: Avbryt initiering
3. Lägg till "TIMER0 initialisering" -koden i din setup () -metod. Återigen, bara kopiera och klistra in i setup ().
// *** TIMER0 initialisering ***
cli (); // stäng av alla avbrott TIMSK0 = 0; // stäng av timer0 för lägre jitter OCR0A = 0xBB; // godtyckligt avbrottsantal TIMSK0 | = _BV (OCIE0A); // piggy back to interrupt sei (); // slå på avbrotten igen
Steg 4: Var du ska lägga till din kod
4. Lägg till "tidskontroll" -koden i din loop () -metod. Kopiera och klistra in i loop ().
om (tid) {
tid = falskt; // gör något här}
"Time = false;" linje är viktigt. Utan denna rad skulle "gör något här" -rad (erna) köras varje gång programmet kör loop ().
Naturligtvis ersätter du dina egna aktiviteter i raden "gör något här". Börja med att skriva ut text eller blinka lysdioden.
Du är klar!
Rekommenderad:
Arduino Car Reverse Parking Alert System - Steg för steg: 4 steg
Arduino Car Reverse Parking Alert System | Steg för steg: I det här projektet kommer jag att utforma en enkel Arduino Car Reverse Parking Sensor Circuit med Arduino UNO och HC-SR04 Ultrasonic Sensor. Detta Arduino -baserade bilomvändningsvarningssystem kan användas för autonom navigering, robotavstånd och andra
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)
STM32CubeMX -knappen avbryter med avbrott: 5 steg
STM32CubeMX Button Debounce With Interrupt: Hej, i den här självstudien kommer jag att försöka ge min enkla lösning för att förhindra knappstopp vilket är en mycket allvarlig fråga. På internet finns det många videor att erbjuda lösning på detta problem, men inga av dem för externt avbrott. Knappen i alla dessa videor
Arduino Hall Effect Sensor med avbrott: 4 steg
Arduino Hall Effect Sensor With Interrupts: Hej alla, Idag ska jag visa dig hur du kan ansluta en hall effect sensor till en Arduino och använda den med ett avbrott. Verktyg och material som används i videon (Affiliate länkar): Arduino Uno: http : //s.click.aliexpress.com/e/biNyW0zKHalleffektgivare: h
Arduino tongenerator utan bibliotek eller seriella funktioner (med avbrott): 10 steg
Arduino Tone Generator With No Library or Serial Functions (With Interrupts): Det här är inte något jag normalt skulle göra instruktioner om, jag föredrar mitt metallarbete, men eftersom jag är elingenjör och måste gå en klass om mikrokontroller ( Embedded Systems Design), jag trodde att jag skulle göra en instruerbar på en av mina sidor