Wie kann man mit 8 Bit Timer Ein sekunden Takt erzeugen (rechnen)?

4 Antworten

a = a + 1

if (a mod hz) = 0 then sekundentask

// a = zähler

// hz = Hertzzahl des Timers (muss kleiner 256 sein)

// sekundentask ist alles was eben jede sekunde gemacht werden soll

Meinst Du Mikrocontroller wie PIC oder AVR?

Dafür gibt es Webseiten und Apps die Dir das direkt berechnen können.

Zum Beispiel hier:

https://eleccelerator.com/avr-timer-calculator/

Beim Arduino richtet das System direkt einen Timer mit 1ms Interrupt ein. In die ISR kannst Du dann einen Zähler einbauen der das dann noch mal durch 1000 Teilt. Der 1ms Timer wird für die Delay Befehle verwendet und steuert noch einige andere Funktionen wie z.B. USB Kommunikation.

Woher ich das weiß:Berufserfahrung

Senem78965 
Beitragsersteller
 30.05.2021, 14:53

AVR

0
Commodore64  30.05.2021, 14:57
@Senem78965

Gib mal "AVR" in Dein Smartphone im Appstore ein. Da findest Du einige Tools, unter anderem auch Code-Generatoren wo Du den Timertakt eingibst und fertigen Code bekommst.

Für den AVR gibt es auch "RTC" (Real Time Clock) Funktionen die direkt Millisekunden, Sekunden, Stunden, Tage, Wochentage, Monate und Jahre in (globale) Variablen schreiben die man dann in seinem programm beliebig benutzen kann.

Nicht vergessen die globalen Variablen als "volatile" zu kennzeichnen, sonst werden Änderungen durch eine ISR in der Variable nicht berücksichtigt!

0

8 Bit Timer hat 256 Stufen, teilt man 1 Sekunde durch 256 kommt man so auf 0,0039 Sekunden oder anders einen Frequenzgenerator mit 256 Hz

da die 256 Hz durch 256 Takte geteilt werden kommt daraus 1 Sekunde


iqKleinerDrache  30.05.2021, 14:05

ich denke die Timerbausteine haben andere Frequenzen ... das muss dann genommen werden. Früher hatte ich welche die hatten 60Hz ... keine Ahnung was heutige haben. Das müsste der FS dann dazu sagen.

1
newcomer  30.05.2021, 14:07
@iqKleinerDrache

wenn aber 1 Sekunde Puls entstehen soll muss man diesen Frequenzteiler der 256 Schritte hat so einen Takt geben dass er nur 1 mal pro Sekunde was aus gibt sprich wieder 0 erreicht

0
Von Experte Commodore64 bestätigt

Die Frage ist zu ungenau. Bei Mikrocontrollern gibt es z.B. häufig Vorteiler (Prescaler) und Vergleichsregister (Compare). Dadurch ergibt sich eine sehr große Variationsmöglichkeit.

Wenn du nur den reinen Zählteil hast, kannst du mit 8Bit schon mal 8 reine verschiedene Teilerstufen darstellen. Mit ein bisschen Logik auch schon mehr.