Forum: Mikrocontroller und Digitale Elektronik Kleines mega8 Programm auf tiny13 - Frage zu Timern


von Max (Gast)


Lesenswert?

Hallo Gemeinde,

habe ein kleines Fernsteuerprogramm für eine NIKON DSLR geschrieben (ist 
kein RC5 o.ä., siehe http://www.bigmike.it/ircontrol/). Auf dem mega8 
funktioniert das Programm mit Timer0 und Timer1 perfekt.

Will das ganze wegen der Baugröße auf einen Tiny 8-Beinling (habe 13er 
da) portieren und muss bei meinem 13er auf den 16Bit-Timer verzichten.

Die Timer-ISRs haben bei dem mega derzeit folgende Aufgaben:

Timer0 (Modulation): Toggeln von PinA mit der doppelten Frequenz von der 
TSOP-Frequenz (also hier ca. 38000Hz - sollte eigentlich 76000Hz sein, 
aber komischerweise funktioniert 38000Hz wunderbar, also nehme ich die 
niedrigere Frequenz)

Timer1 (Message-Bits): Hochzählen einer Variable in der kleinsten 
"Schalt"-Zeiteinheit (hier ca. alle 400us). Die Variable wird im 
Hauptprogramm über while-Schleifen abgefragt und PinB jeweils nach dem 
Erreichen eines Vielfachen der kleinsten Schalt-Zeiteinheit auf 1 oder 0 
gesetzt.


Schaltplan:


----\
    |
    |PinA ---\
T   |        |
I   |       LED
N   |        |
Y   |        R
1   |        |
3   |PinB ---/
    |
----/


Die Lösung mit den zwei Timern ist sicher nicht das beste, jedoch habe 
ich bis jetzt nichts anderes hinbekommen, was klappte. Ich habe 
versucht, in dem Timer0 über eine Zusatzvariable alle 15 
Timer0-Interrupts die Variable, die in Timer1 hochgezählt wurde zu 
inkrementieren.

38000 Hz / (1 / 400 us) = 15,2

Funktioniert aber scheinbar nicht.

Wer hat eine Idee dazu?

Danke!!

Gruß Max

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.