La oss bryte ned tidtakere i sammenheng med mikroprosessorer:
Hva er en tidtaker?
En tidtaker er en spesialisert maskinvarekomponent i en mikroprosessor (eller ofte en perifer brikke koblet til mikroprosessoren) som gir en måte å måle tidsintervaller eller triggerhendelser med spesifikke intervaller. I hovedsak er det som et digitalt stoppeklokke som du kan programmere for å telle ned eller opp.
Nøkkelkonsepter:
* teller: Kjernen i en tidtaker er en teller som øker (eller reduksjoner) med en spesifikk hastighet. Denne hastigheten bestemmes vanligvis av en krystalloscillator, som gir et høyfrekvent klokkesignal.
* Prescaler: Noen tidtakere inkluderer en prescaler, som deler frekvensen av oscillatoren før den når disken. Dette lar deg justere tidtakerens oppløsning (hvor fin den kan måle tid).
* driftsmåter: Tidtakere tilbyr ofte forskjellige driftsmåter, for eksempel:
* Interval Timer: Måler en spesifikk varighet.
* pulsbreddimer: Måler varigheten av en puls.
* Event Counter: Teller eksterne hendelser (som knappetrykk).
* avbryter: Mange tidtakere kan generere avbrudd når telleren når en forhåndsdefinert verdi. Dette gjør at mikroprosessoren kan bli varslet når et spesifikt tidsintervall er gått.
hvordan tidtakere fungerer:
1. Initialisering: Du programmerer tidtakeren ved å sette dens opprinnelige verdi (starttallet) og driftsmåten (intervall, pulsbredde, etc.).
2. telling: Telleren begynner å telle ned (eller opp) med en hastighet bestemt av klokkefrekvensen og eventuelle prescalerinnstillinger.
3. Utløsing: Når telleren når en spesifikk verdi (tidtakers "mål"), utløser den en spesifikk handling:
* avbrudd: Timeren avbryter mikroprosessoren, og signaliserer at tidsintervallet har gått.
* Utgangssignal: Timeren genererer et puls eller annet utgangssignal.
4. Reset/Reload: Telleren kan tilbakestilles (settes tilbake til dens opprinnelige verdi) eller lastes på nytt med en ny verdi for å starte en annen tidssyklus.
Applikasjoner av tidtakere i mikroprosessorer:
Tidtakere er grunnleggende byggesteiner i innebygde systemer og har mange applikasjoner:
* forsinkelsesgenerering: Å skape nøyaktige tidsforsinkelser for oppgaver som programvare som avgir programvare, kontrollerer LED -blinking og planlegging av hendelser.
* sanntidsklokker (RTC): Holde oversikt over tid og dato.
* pulsbreddemodulasjon (PWM): Kontrollerer signalens pliktsyklus, brukt til motorisk kontroll, dimme lysdioder og generering av lydbølgeformer.
* hendelsestelling: Måling av frekvensen av eksterne hendelser som knappetrykk, sensoravlesninger eller kommunikasjonssignaler.
* Systemtiming: Sikre oppgaver blir utført innen spesifikke tidsintervaller i sanntidssystemer.
Eksempel:Bruke en tidtaker for en forsinkelse:
`` `
// Initialiser tidtakeren for å telle ned fra 1000
Timer_init (1000);
// Start tidtakeren
Timer_Start ();
// Vent til tidtakeren når null
mens (TIMER_IS_RUNNING ()) {
// gjør ingenting, vent til tidtakeren går ut
}
// Timeren har gått ut, så nå kan vi gjøre noe annet
`` `
Gi meg beskjed hvis du vil ha flere detaljer om en bestemt timermodus, avbruddshåndtering eller en bestemt applikasjon!