Timer Clock alternativ schalten

Gast #4063591
Lesenswert?
• ▲
▼
Konstellation:

- Tiny84
- Timer 0 (8 Bit)
- Timer Clock Frequenz variabel bis 10 KHz

Ich möchte gerne einen externen Clock auf den Timer0 wirken
lassen, und alternativ dazu diesen (externen) Clock auch
unverändert auf einen Controller Pin ausgeben, sozusagen
umschaltbar at runtime.

Mir fehlt noch etwas die Vorstellungskraft, und bevor ich es
selbst aufbaue und ausprobiere, möchte ich in die Runde Fragen
ob das funktioniert - vielleicht weiss es jemand auf Anhieb:

Ich setze das Output Compare Register des Timer0 auf null und
leite das Output Compare Ergebnis auf den zugehörigen Pin OC0A.

Erzeuge nun ich damit die Originalfrequenz oder erreiche ich nur
ein Toggle, also eine Frequenz / 2.

Alternative wäre: für jeden Clock einen IRQ zu erzeugen und
per ISR einen Clock auszugeben .....  ist bei 10 KHz sicher
machbar .... aber ich wollte es eben in Hardware machen.

Oder anders ausgedrückt:
Gretchenfrage was passiert eigentlich wenn die Timer Logik
dauernd mit ((TIMER==0) == true) zu tun hat?
Gast #4063711
Lesenswert?
• ▲
▼
Antwort schrieb:
> Spiele doch deine Gedanken im Simulator durch, dort kannst du alles
> sehen und schaue ins Datenblatt

Ich weiss wie ich zu einem Ergebnis komme, dazu brauche ich
deine weisen Ratschläge nicht.

Offensichtlich hast du meinen Text nicht ganz gelesen und/oder
verstanden.

Tiny_user schrieb:
> ..... und bevor ich es
> selbst aufbaue und ausprobiere, möchte ich in die Runde Fragen
> ob das funktioniert - vielleicht weiss es jemand auf Anhieb:
#4063794
Lesenswert?
• ▲
▼
Tiny_user schrieb:
> Weiss jemand noch einen anderen Weg einen eingespeisten Clock
> auf einen anderen Pin weiterzuleiten (der Weg über den IRQ
> ist mir geläufig)?

Das kommt darauf an, was der Controller sonst noch machen soll. Du 
kannst das auch in der Hauptschleife pollen:
1
 if(PINX & (1 << Px)) PORTX |= (1 << Py); else PORTX &= ~(1 << Py);

Solange das häufig genug passiert und keine Takte verschluckt werden, 
ist das völlig in Ordnung. Dem Controller ist das vollkommen egal. 
Meistens tritt er sowieso nur auf der Stelle. Und der Port verschleisst 
auch nicht, wenn man ihn eine Million Mal in der Sekunde anspricht.

mfg.
Gast #4063805
Lesenswert?
• ▲
▼
Thomas Eckmann schrieb:
> Du kannst das auch in der Hauptschleife pollen:

Ja klar, das läuft für meine Sichtweise wie unter IRQ ausgeben
ab. Man würde sich allerdings die Push/Pop-Orgie in der ISR
ersparen.

Ich dachte es gäbe vielleicht noch einen "Schleichweg" in der
Hardware den ich im Datenblatt-Dschungel noch nicht erkannt habe.
Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.