Innholdsfortegnelse:
- Trinn 1: Avbryt håndterer
- Trinn 2: Angi periodisk tidsintervall
- Trinn 3: Avbryt initialisering
- Trinn 4: Hvor du skal legge til koden din
Video: Arduino - Periodisk avbrudd: 4 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
Denne instruksen handler om å bruke et periodisk avbrudd for timing i Arduino -programmer. Dette er et skritt for en spirende Arduino -programmerer som vet at Arduino kan gjøre mer, men ikke helt vet hvordan det skal skje.
Hvis det er et ytelsesproblem, antar jeg at du bruker en eller flere forsinkelsesfunksjoner (). Trikset er å kvitte seg med forsinkelsen () -funksjonene og erstatte et avbrudd. Forsinkelsen () -funksjonen tvinger Arduino til å gjøre ingenting mens du venter på at forsinkelsen () skal fullføres. Ved å bruke et avbrudd kan programmet gjøre andre ting mens du venter på slutten av forsinkelsen. Det er vanligvis en enorm mengde ubrukt dødtid som kan brukes til andre ting når du bruker forsinkelse (). Å bruke et interrupt løser dette problemet.
Trinn 1: Avbryt håndterer
1. Legg til avbryterbehandleren i programmet. Bare kopier og lim inn et sted over oppsettet ();
const usignert lang TIMER0_COUNT = 500; // 500 msek timerintervall
// TIMER0 interrupt handler volatile bool time = false; ISR (TIMER0_COMPA_vect) {statisk usignert langtelling = 0; if (++ count> TIMER0_COUNT) {count = 0; tid = sant; // tiden er satt til sann hver TIMER0_COUNT ms} // (tiden må slettes i hovedrutinen)}
Trinn 2: Angi periodisk tidsintervall
2. Still inn tidsintervallet. Denne rutinemessige sparegrisen går tilbake til TIMER0 -avbruddet, som skal utløses hver ~ 1 msek.
Intervallet ditt er antallet TIMER0 -avbrudd som skal behandles. Hvert intervall er ~ 1 msek, så du angir virkelig hvor mange TIMER0 -avbrudd som skal telles før du aktiverer intervallet. IOW, sett variabelen TIMER0_COUNT til hvor mange millisekunder du vil vente. Bruk for eksempel 500 i et halvt sekund. Bruk 3000 i 3 sekunder.
Trinn 3: Avbryt initialisering
3. Legg til "TIMER0 initialisering" -koden i setup () metoden. Igjen, bare kopier og lim inn i oppsett ().
// *** TIMER0 initialisering ***
cli (); // slå av alle avbrudd TIMSK0 = 0; // slå av timer0 for lavere jitter OCR0A = 0xBB; // vilkårlig avbruddstelling TIMSK0 | = _BV (OCIE0A); // piggy back into interrupt sei (); // slå avbrudd på igjen
Trinn 4: Hvor du skal legge til koden din
4. Legg til "tidskontroll" -koden i loop () -metoden. Kopier og lim inn i loop ().
hvis (tid) {
time = false; // gjør noe her}
"Time = false;" linje er viktig. Uten denne linjen ville "gjør noe her" -linjen (e) bli utført hver gang programmet kjører loop ().
Selvfølgelig erstatter du dine egne aktiviteter i linjen "gjør noe her". Start med å skrive ut tekst eller blinke med LED -lampen.
Du er ferdig!
Anbefalt:
Arduino bilvarslingssystem for omvendt parkering - Trinn for trinn: 4 trinn
Arduino Car Reverse Parking Alert System | Trinn for trinn: I dette prosjektet skal jeg designe en enkel Arduino Car Reverse Parking Sensor Circuit ved hjelp av Arduino UNO og HC-SR04 Ultrasonic Sensor. Dette Arduino -baserte bilreverseringssystemet kan brukes til autonom navigasjon, robotavstand og andre områder
STM32CubeMX -knappen avsluttes med avbrudd: 5 trinn
STM32CubeMX Button Debounce With Interrupt: Hei, i denne opplæringen vil jeg prøve å gi min enkle løsning for å forhindre knappestopp som er et veldig alvorlig problem. På internett er det mange videoer som tilbyr løsning på dette problemet, men ikke noen av dem for ekstern avbrudd. I alle disse videoene knappen
Arduino Hall -effektsensor med avbrudd: 4 trinn
Arduino Hall Effect Sensor With Interrupts: Hei alle sammen, I dag skal jeg vise deg hvordan du kan koble en hall effect sensor til en Arduino og bruke den med en interrupt. Verktøy og materialer som brukes i videoen (tilknyttede lenker): Arduino Uno: http : //s.click.aliexpress.com/e/biNyW0zKHall -effekt sensorer: h
DIY batterinivåindikator/automatisk avbrudd for 12v batteri: 5 trinn (med bilder)
DIY batterinivåindikator/automatisk avbrudd for 12v batteri: DIYere … Vi har alle vært igjennom situasjonen da våre high end -ladere er opptatt med å lade de litiumpolymerbatteriene, men du må fortsatt lade det 12v blybatteriet og den eneste laderen du got er en blind …. Ja en blind som det
Arduino tonegenerator uten bibliotek eller serielle funksjoner (med avbrudd): 10 trinn
Arduino Tone Generator With No Library or Serial Functions (With Interrupts): Dette er ikke noe jeg normalt vil lære om, jeg foretrekker metallarbeidet mitt, men ettersom jeg er elektroteknikkstudent og må ta en klasse på mikrokontrollere ( Embedded Systems Design), jeg tenkte jeg skulle lage en instruks på en av mine sider