Indholdsfortegnelse:
- Trin 1: Afbryd håndterer
- Trin 2: Indstil periodisk tidsinterval
- Trin 3: Afbryd initialisering
- Trin 4: Hvor skal du tilføje din kode
Video: Arduino - Periodisk afbrydelse: 4 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
Denne instruktør handler om at bruge en periodisk afbrydelse til timing i Arduino -programmer. Dette er et skridt for en spirende Arduino -programmør, der ved, at Arduino kan mere, men ikke helt ved, hvordan det skal ske.
Hvis der er et ydelsesproblem, antager jeg, at du bruger en eller flere delay () -funktioner. Tricket er at slippe af med forsinkelse () funktion (erne) og erstatte en afbrydelse. Funktionen forsinkelse () tvinger Arduino til ikke at gøre noget, mens de venter på, at forsinkelsen () er fuldført. Ved hjælp af en afbrydelse tillader dit program at gøre andre ting, mens du venter på, at forsinkelsen er slut. Der er normalt en enorm mængde ubrugt dødtid, der kan bruges til andre ting, når du bruger forsinkelse (). Brug af en afbrydelse løser dette problem.
Trin 1: Afbryd håndterer
1. Føj afbryderbehandleren til dit program. Bare kopier og indsæt et sted over setup ();
const usigneret lang TIMER0_COUNT = 500; // 500 msek timerinterval
// TIMER0 interrupt handler volatile bool time = false; ISR (TIMER0_COMPA_vect) {statisk unsigned long count = 0; hvis (++ count> TIMER0_COUNT) {count = 0; tid = sandt; // tid er indstillet til sand hver TIMER0_COUNT ms} // (tiden skal ryddes i hovedrutinen)}
Trin 2: Indstil periodisk tidsinterval
2. Indstil tidsintervallet. Denne rutine piggybacks sig selv på TIMER0 interrupt, som er indstillet til at affyre hver ~ 1 ms.
Dit "interval" er antallet af TIMER0 -afbrydelser, der skal behandles. Hvert interval er ~ 1 msek, så du indstiller virkelig, hvor mange TIMER0 -afbrydelser, der skal tælles, før du aktiverer dit interval. IOW, indstil variablen TIMER0_COUNT til hvor mange millisekunder du vil vente. Brug f.eks. 500 i et halvt sekund. Brug 3000 i 3 sekunder.
Trin 3: Afbryd initialisering
3. Tilføj "TIMER0 initialisering" -koden til din setup () metode. Igen, bare kopier og indsæt i setup ().
// *** TIMER0 initialisering ***
cli (); // sluk for alle afbrydelser TIMSK0 = 0; // sluk timer0 for lavere jitter OCR0A = 0xBB; // vilkårlig afbrydelse tæller TIMSK0 | = _BV (OCIE0A); // piggy tilbage på interrupt sei (); // tænde afbrydelser igen
Trin 4: Hvor skal du tilføje din kode
4. Tilføj "tidskontrol" -koden til din loop () -metode. Kopier og indsæt i loop ().
hvis (tid) {
tid = falsk; // gør noget her}
"Time = false;" linje er vigtig. Uden denne linje ville "gør noget her" linje (r) blive udført hver gang programmet udfører loop ().
Selvfølgelig erstatter du dine egne aktiviteter i linjen "gør noget her". Start med at udskrive noget tekst eller blinke med LED'en.
Du er færdig!
Anbefalede:
Arduino bil omvendt parkering alarmsystem - Trin for trin: 4 trin
Arduino bil omvendt parkering alarmsystem. Trin for trin: I dette projekt vil jeg designe en simpel Arduino bil omvendt parkeringssensorkreds ved hjælp af Arduino UNO og HC-SR04 ultralydssensor. Dette Arduino -baserede bilomvendt alarmsystem kan bruges til en autonom navigation, robotafstand og andre rækkevidde
Akustisk levitation med Arduino Uno trin for trin (8 trin): 8 trin
Akustisk levitation med Arduino Uno Step-by Step (8-trin): ultralyds lydtransducere L298N Dc kvindelig adapter strømforsyning med en han-DC-pin Arduino UNOBreadboard Sådan fungerer det: Først uploader du kode til Arduino Uno (det er en mikrokontroller udstyret med digital og analoge porte til konvertering af kode (C ++)
RC -sporet robot ved hjælp af Arduino - Trin for trin: 3 trin
RC Tracked Robot Using Arduino - Step by Step: Hey guys, I are back with another cool Robot chassis from BangGood. Håber du har gennemgået vores tidligere projekter - Spinel Crux V1 - Gesture Controlled Robot, Spinel Crux L2 - Arduino Pick and Place Robot med Robotic Arms og The Badland Braw
STM32CubeMX -knappen afbrydes med afbrydelse: 5 trin
STM32CubeMX -knappen afbryder med afbrydelse: Hej, i denne vejledning vil jeg prøve at give min enkle løsning for at forhindre knapstopp, hvilket er et meget alvorligt problem. På internettet er der mange videoer til løsning af dette problem, men ikke dem til ekstern afbrydelse. I alle disse videoer knap
DIY batteriniveauindikator/automatisk afbrydelse til 12v batteri: 5 trin (med billeder)
DIY -batteriniveauindikator/automatisk afbrydelse til 12v batteri: DIYere … Vi har alle været igennem situationen, da vores high -end -opladere har travlt med at oplade disse lithiumpolymerbatterier, men du skal stadig oplade det 12v blybatteri og den eneste oplader, du got er en blind …. Ja en blind sådan