Forum: Mikrocontroller und Digitale Elektronik 8 Bit Timer/Counter


von Alex (Gast)


Lesenswert?

Hallo...
Gibt es eine Möglichkeit meine 16 Bit große "Verzögerung" in einen
8Bit Timer/Counter zu laden? Mittels Z-Pointer oder so? Da ich meinen
16Bit Counter schon für andere Aufgaben verwende und ich nun nur noch
einen mit 8Bit zur Verfügung habe wäre das sehr interessant zu
wissen....
Danke Alex

von Dieter (Gast)


Lesenswert?

Hallo Alex

Lass doch mit dem 8 Bit Timer eine Variable hochzählen. Die brauchst du
doch dann doch nur noch abzufragen, ob es schon so weit ist.

MFG
Dieter

von Frank Linde (Gast)


Lesenswert?

Hallo Alex,

Du kannst den 8-Bit-Timer nicht zu einem 16-Bit-Timer umfunktionieren.
Wenn das ginge, hätten es die Marketing-Strategen von ATMEL sicherlich
schon ganz fett vorne auf's Datenblatt gedruckt. ;-)

Aber der Vorschlag von Dieter ist eine gute Möglichkeit, Dein Ziel zu
erreichen.

Gruß, Frank

von Hannes Lux (Gast)


Lesenswert?

Hallo...

Runterzählen ist auch nicht schlecht, dann kann die Timer0-OVF-ISR
gleich die Schalthandlung ausführen...

Bei 16-Bit-Zählvariablen lohnt sich auch Hochzählen bis zum Überlauf,
da ist die Bedingungsabfrage einfacher...

Bit- & Bytebruch... - ...HanneS...

von BernhardT (Gast)


Lesenswert?

16 Bit große "Verzögerung"  ? finde ich etwas ungenau.
Mit 8 Bit Vorteiler ( gibt es z.B. beim AVR) kann ein 8 Bit counter
solange Zählen wie ein 16 Bit counter ohne  Vorteiler (aber nicht so
genau).
Ich weis aber nicht ob du das meinst.
Gruß Bernhard

von Hannes Lux (Gast)


Lesenswert?

Hallo Bernhard...

Nein, das meinte ich nicht...

Ich meinte, dass Timer0 per Interrupt ein "Zeitnormal" liefert, das
für mehrere Dinge genutzt werden kann, da die ISR auch mehrere
Variablen hoch- oder runterzählen kann.


So lasse ich z.B. bei einer sechsfach-PWM den PWM-Treppenzähler (ein
Register) in der Timer0-ISR hochzählen und mit den Tempowerten aller
Kanäle vergleichen und bei Gleichheit den betreffenden Port
ausschalten.


In einer anderen Anwendung (Modellbau-Fernsteuer-Encoder mit 4433)
erzeugt Timer0 ein 0,01ms Zeitnormal, mit dem ich  die
Sendertastimpulsbreite, den Impulsabstand (Kanalimpulsbreite), aber
auch die 20ms-Impulspause steuere, was einen 16-Bit Zähler erfordert.

Timer1 möchte ich vorerst frei halten, wenn ich etwas sattelfest bin
(auch ich bin MC-Neuling) möchte ich Experimente mit Soundausgabe via
Timer1-PWM machen (nur Geräusche, kein Multimedia).


In der Schaltung eines Fernsteuer-Schaltdecoders mit 1200 werden für 10
Schaltausgänge Ausschaltverzögerungen gebraucht. Also lasse ich in
Timer0-ISR neben dem Zähler für die Impulsbreitenmessung noch 10 untere
Register runterzählen und bei 0 den Ausgang ausschalten.


So in etwa meinte ich das...

Mit besten Grüßen,
Bit- & Bytebruch... - ...HanneS...

von Peter D. (peda)


Lesenswert?

10 Leute betreten zu verschiedenen Zeiten einen Raum und sollen ihn zu
bestimmten anderen Zeiten wieder verlassen.

Jetzt könnte man 10 Stopuhren verteilen, eine für jeden, man hat aber
nicht soviele.

Lösung:

Man hängt nur eine einzige Uhr im Raum auf, die jeder sehen kann. Und
jeder merkt sich die Zeit, wann er gekommen ist und addiert die Zeit
dazu, die er im Raum bleiben soll.

Deshalb reicht auch bei einem MC ein einziger Timer aus, um beliebig
viele Zeitverzögerungen zu realisieren.


Peter

von Hannes Lux (Gast)


Lesenswert?

Stimmt...

Danke, Peter...

Manchmal denkt man eben um die Ecke, besonders als Anfänger...

Bit- & Bytebruch... - ...HanneS...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.