Forum: Mikrocontroller und Digitale Elektronik Timer - Tiny45 Probleme


von Neuer (Gast)


Lesenswert?

Hallo ich bin recht neu in diesem Breich und habe bisher nur nur 
Erfahrungen im bereich Hardware.
Ich fummel jezt einige Wochen mit Mikrokontrollern und habe bisher auch 
keine großen Schwierigkeiten gehabt meine Vorstellungen zu 
verwirklichen.
Jetzt jedoch hänge ich fest und bitte um ein wenig Hilfe.

Also ich programmiere in C und versuche bei einem Tiny45 den Timer0 zu 
configurieren. Ziel soll es sein erst mal ein einfaches 100kHz 
Rechtecksignal zu erzeugen.

Ich configuriere den Timer wie folgt:
//Timer0 Config
TCCR0A |= (1 << WGM01);   // Timer0 in CTC Mode
TCCR0B |=  (1 << CS00);    // Timertakt = FCPU
OCR0A  = 20;      // CTC-Wert auf 20 - 4MHz/20=200kHz
TIMSK |= (1 << OCIE0A);   // Enable CTC interrupt
TCCR0A |=  (1 << COM0A0);  // Toggle OC0A on Compare Match

In der main folgt dann das sei() zum aktivieren der Interupts.

Nach reichlicher Recherche im Datenblatt hänge ich hier nun fest und an 
den Ausgängen tut sich nichts.

von Peter D. (peda)


Lesenswert?

Mein Glaskugel sagt, der Fehler steckt in dem, was Du nicht gepostet 
hast.

Was ist denn daran so schwer, nen compilierbaren Code zu posten (aber 
als Anhang!!!!!).


Peter

von crazy horse (Gast)


Lesenswert?

COM00/COM01-Bits?
PB1 muss auserdem als Ausgang gesetzt werden.

von Neuer (Gast)


Angehängte Dateien:

Lesenswert?

Sry hier die .c.
Ist jedoch nicht viel mehr drin als die Konfiguration des Timers.

Hatte obwohl im Datenblattes Seite 80 unter
"Compare Match Output A Mode" steht das
"the OC0A output overrides the normal port functionality of the I/O pin 
it is connected to"
mal den Pin manuel als Ausgang definiert nur bring leider auch nichts.

von Hubert G. (hubertg)


Lesenswert?

Was machst du in der Interruptroutine?

von Neuer (Gast)


Lesenswert?

Nichts.
Dachte mir der macht das dann alles mit der Hardware.

Später soll noch mehr auf den µC aber erwst mal wollte ich für den rest 
der Schaltung nur 100kHz zur verfügung stellen und am besten so das 
nicht viel Rechenleistung gebraucht wird.

von Hubert G. (hubertg)


Lesenswert?

Dann nimm mal diese Zeile raus:
TIMSK |= (1 << OCIE0A);     // Enable CTC interrupt

von Neuer (Gast)


Lesenswert?

macht leider auch keinen Unterschied wenn ich
TIMSK |= (1 << OCIE0A);     // Enable CTC interrupt
rausnehme

von Hubert G. (hubertg)


Lesenswert?

Habe leider keinen Tiny45 zum probieren, aber in der Simulation 
funktioniert es. Das DDRB noch auf Ausgang setzen.

von Neuer (Gast)


Lesenswert?

mmh keine Ahnung warum aber aufm Desktoprechner Läuft das ganze in der 
Simulation und auch dann im µC.
hatte das ganze vorher aufm Laptop gemacht und selbes stk500 usw. dran 
und es ging nichts.
Werd nachher noch mal die Win AVR und AVR Studio Versionen vergleichen

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.