Inhoudsopgave:
- Stap 1: handler onderbreken
- Stap 2: Stel het periodieke tijdsinterval in
- Stap 3: Initialisatie onderbreken
- Stap 4: Waar u uw code kunt toevoegen
Video: Arduino - Periodieke onderbreking: 4 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
Deze Instructable gaat over het gebruik van een periodieke interrupt voor timing in Arduino-programma's. Dit is een stap voor een ontluikende Arduino-programmeur die weet dat de Arduino meer kan, maar niet helemaal weet hoe hij dat moet laten gebeuren.
Als er een prestatieprobleem is, neem ik aan dat je een of meer delay()-functies gebruikt. De truc is om de delay() functie(s) te verwijderen en een interrupt te vervangen. De functie delay() dwingt de Arduino niets te doen terwijl hij wacht tot de delay() is voltooid. Door een interrupt te gebruiken, kan uw programma andere dingen doen terwijl u wacht op het einde van de vertraging. Er is meestal een enorme hoeveelheid ongebruikte dode tijd die voor andere dingen kan worden gebruikt bij het gebruik van delay(). Het gebruik van een interrupt lost dit probleem op.
Stap 1: handler onderbreken
1. Voeg de interrupt-handler toe aan je programma. Kopieer en plak ergens boven setup();
const unsigned lang TIMER0_COUNT = 500; // 500 msec timerinterval
// TIMER0 interrupt handler vluchtige bool tijd = false; ISR (TIMER0_COMPA_vect) { statische niet-ondertekende lange telling = 0; if (++ count > TIMER0_COUNT) { count = 0; tijd = waar; // tijd is ingesteld op waar elke TIMER0_COUNT ms } // (tijd moet worden gewist in de hoofdroutine)}
Stap 2: Stel het periodieke tijdsinterval in
2. Stel het tijdsinterval in. Deze routine lift zichzelf mee op de TIMER0-interrupt, die is ingesteld om elke ~ 1 msec af te vuren.
Uw "interval" is het aantal TIMER0-interrupts dat moet worden verwerkt. Elk interval is ~ 1 msec, dus je stelt echt in hoeveel TIMER0-interrupts je moet tellen voordat je je interval activeert. IOW, stel de variabele TIMER0_COUNT in op het aantal milliseconden dat u wilt wachten. Gebruik bijvoorbeeld 500 voor een halve seconde. Gebruik 3000 gedurende 3 seconden.
Stap 3: Initialisatie onderbreken
3. Voeg de "TIMER0 initialisatie" code toe aan uw setup() methode. Nogmaals, kopieer en plak gewoon in setup().
// *** TIMER0 initialisatie ***
cli(); // schakel alle interrupts uit TIMSK0 = 0; // schakel timer0 uit voor lagere jitter OCR0A = 0xBB; // willekeurig aantal onderbrekingen TIMSK0 |= _BV (OCIE0A); // meeliften op interrupt sei(); // zet interrupts weer aan
Stap 4: Waar u uw code kunt toevoegen
4. Voeg de code "time check" toe aan uw loop()-methode. Kopieer en plak in loop().
als (tijd) {
tijd = onwaar; // doe hier iets }
De "tijd = onwaar;" lijn is belangrijk. Zonder deze regel zouden de regel(s) "doe hier iets" elke keer dat het programma loop() uitvoert, worden uitgevoerd.
Natuurlijk vervangt u uw eigen activiteiten in de regel "doe hier iets". Begin met het afdrukken van wat tekst of het knipperen van de LED.
U bent klaar!
Aanbevolen:
Game Design in Flick in 5 stappen: 5 stappen
Game-ontwerp in Flick in 5 stappen: Flick is een heel eenvoudige manier om een game te maken, vooral zoiets als een puzzel, visuele roman of avonturengame
Gezichtsdetectie op Raspberry Pi 4B in 3 stappen: 3 stappen
Gezichtsdetectie op Raspberry Pi 4B in 3 stappen: In deze Instructable gaan we gezichtsdetectie uitvoeren op Raspberry Pi 4 met Shunya O/S met behulp van de Shunyaface-bibliotheek. Shunyaface is een bibliotheek voor gezichtsherkenning/detectie. Het project streeft naar de hoogste detectie- en herkenningssnelheid met
Doe-het-zelfspiegel in eenvoudige stappen (met LED-stripverlichting): 4 stappen
DIY make-upspiegel in eenvoudige stappen (met behulp van LED-stripverlichting): In dit bericht heb ik een doe-het-zelfspiegel gemaakt met behulp van de LED-strips. Het is echt gaaf en je moet ze ook proberen
Akoestische levitatie met Arduino Uno stap voor stap (8 stappen): 8 stappen
Akoestische levitatie met Arduino Uno Stap voor stap (8-stappen): ultrasone geluidstransducers L298N Vrouwelijke DC-adapter voeding met een mannelijke DC-pin Arduino UNOBreadboardHoe dit werkt: eerst upload je code naar Arduino Uno (het is een microcontroller uitgerust met digitale en analoge poorten om code te converteren (C++)
STM32CubeMX-knop debounce met onderbreking - Ajarnpa
STM32CubeMX Button Debounce With Interrupt: Hallo, in deze tutorial zal ik proberen mijn eenvoudige oplossing te geven om het stuiteren van de knop te voorkomen, wat een zeer serieus probleem is. Op internet zijn er veel video's die een oplossing voor dit probleem bieden, maar geen enkele voor externe onderbreking. In al deze video's knop