Timer interrupts kunnen u een taak met zeer specifiek bepaalde tussenpozen ongeacht wat is in uw code gaande er. In dit instructable ik zal uitleggen hoe te installeren en uitvoeren van een interrupt in duidelijke Timer op vergelijk Match of CTC modus. Spring direct naar stap 2 als u op zoek bent voor voorbeeldcode.
Normaal wanneer u een schets van de Arduino dat Arduino voert alle opdrachten ingekapseld in de functie {} loop in de volgorde waarin ze zijn geschreven schrijft, is het echter moeilijk op tijd gebeurtenissen in de loop. Sommige opdrachten langer duren dan anderen om uit te voeren, sommige afhankelijk van voorwaardelijke instructies (indien, terwijl...) en sommige Arduino library functies (zoals digitalWrite of analogRead) zijn opgebouwd uit vele opdrachten. Arduino timer interrupts kunnen u tijdelijk onderbreken van de normale opeenvolging van gebeurtenissen die plaatsvinden in de loop functie precies getimede intervallen, terwijl u een afzonderlijke set van commando's uitvoeren. Zodra deze opdrachten wordt gedaan pakt de Arduino weer waar het was in de loop.
Interrupts zijn nuttig voor:
Meten van een inkomend signaal even verdeelde tussenpozen (constante sampling-frequentie)
Berekening van de tijd tussen twee gebeurtenissen
Een signaal van een specifieke frequentie
Periodiek controleren voor binnenkomende seriële gegevens
nog veel meer...
Er zijn een paar manieren om te doen van interrupts, voor nu ik me op het type concentreren zal dat ik de meest nuttige/flexibele, genaamd duidelijk Timer op vergelijk Match of CTC modus vinden. Bovendien in dit instructable ik zal schrijven specifiek over de timers voor de Arduino Uno (en eventuele andere Arduino met ATMEL 328/168... Lilypad, Nano Duemilanove, Diecimila,...). De belangrijkste ideeën die hier van toepassing op Mega en oudere borden zo goed, maar de opstelling is een beetje anders en de tabel hieronder is specifieke aan ATMEL 328/168.