Hallo liebe uC-Fans Bisher konnte ich meine Mikrocontroller-Probleme immer über die Suche oder Datenblätter erklären, daher hier mein erster Post im Forum... aber nun habe ich ein (bestimmt simples) Problem und komme nicht weiter. Ich versuche ein simples Blinklicht an einem ATtiny13V zum Laufen zu bringen und zwar mit Hilfe des Timer Overflow Interrups. Das Programm siehe Anhang Die LED bleibt aber leider aus. Die Schaltung+LED ist auch getestet und funktioniert mit z.B. einer simplen _delay_ms-Schleife. Ich habe jedes Register 5mal im Datenblatt geprüft. Ich habe auch in die ISR einfach mal nur ein "PORTB |= (1<<PB3);" gesetzt um zu prüfen ob er überhaupt in die ISR kommt, dies war nicht der Fall, auch hier blieb die LED aus. Ich weiß nun leider nicht was ich noch vergessen habe. Über Hilfe würde ich mich freuen. Danke schonmal. Nachtrag1: im Code steht noch IST(...) anstelle von ISR, war eben ein TIppfehler als ich nochmalalles auf Vordemann gebrahct habe. Auch mit ISR(..) geht es nicht ;) Nachtrag2: ATtiny ist frisch vom Werk, also läuft mit 9,6Mhz, CKDIV8=1 etc. nichts verändert
Timer Start Bit vergessen. Damit der Timer auch startet. (verodern im Timer-Controll-Register) Gruss Holger.
jetzt hab ich grad nochmal alle Register gecheckt im Datenblatt unter Timer, in TCNT0 kann ich den Zähler ja auslesen (und schreiben). Dass ich das aber "manuell" mit initialisieren muss wäre mir neu, da ähnliche Programme auf einem Atmega16 funktionierten (da aber anderer Interrupt-Vektor). Habe aber mal testweise eben mal TCNT0 auf 0x00 gesetzt aber brachte auch keine Änderung Kannst du mir sagen welches Register/Bit du meinst ? Timer-Control-Register konnte ich nicht im Datenblatt finden beim atttiny Danke für die Hilfe. bin echt kurz vorm Zusammenbruch, da ich schon seit 2-3h hier an der Fehlersuche bin. EDIT: Habe das Register GTCCR gefunden ("General Timer/Counter Control Register) aber laut Datenblatt sollten beide 0 sein für meinen Test
TCCR0 gibt es nicht, der Prescaler liegt in TCCR0B. TIMSK gibt es auch nicht, das heißt TIMSK0. void ioinit() { DDRB |= (1<<PB3); PORTB &= ~(1<<PB3); TCCR0B |= (1<<CS02) | (1<<CS00); //Prescaler = 1024 TIMSK0 |= (1<<TOIE0); //Timer0 Overflow Interrupt Enable } Datenblatt lesen hilft manchmal... Die Fehlermeldungen vom Compiler sollten doch darauf bereits hingewiesen haben. Grüße, Peter
Hatte das mit TCCR0B und TIMSK0 auch gesehen und versucht, bei beiden meldet mein Compiler aber Fehler (undeclared, first use in this function). Fehlt mir dazu dann evtl. irgendein header-file? In unserer Vorlesung/Praktikum hatten wir auch jeweils TCCR0 und TIMSK, war da aber ein Atmega16. Wenn ich das richtig in Erinnerung habe, spreche ich mit zB "TCCR0" sowohl TCCR0A und TCCR0B an. Ohne nun den exakten technischen Hintergrund wiederholen zu können. Also TCCR0B und TIMSK0 funzen auch nicht, wegen Compiler Fehler. :/
>Also TCCR0B und TIMSK0 funzen auch nicht, wegen Compiler Fehler. :/ Dann hast du im AVR-Studio den falschen Prozessor eingestellt. Project->Configuration Options: Device richtig einstellen. >Wenn ich das richtig in Erinnerung habe, >spreche ich mit zB "TCCR0" sowohl TCCR0A und TCCR0B an. Ohne nun den >exakten technischen Hintergrund wiederholen zu können. Das ist vollkommen falsch. Das Header-File, dass alle Register definiert, ist io.h. Von dort aus wird mittels dem Typ der CPU entschieden, was eingebunden wird. Der Typ der CPU wird vom AVR-Studio dem Compiler übergeben, das stellt man wie oben gezeigt ein. Grüße, Peter
Ah daran lag es, nun gibts keine Fehler mehr bei TCCR0B und TIMSK0 und meine LED blink periodisch =) Das mit den "zusammen ansprechen" hab ich dann wohl verwechselt mit irgendwas, was wir mal beim Atmega16 hatten. Vllt Sowas Wie zB "OCRn1H (High) und OCRn1L (Low) = OCRn1 oder so ? Naja, gefährliches Halbwissen gerade von mir ;) Danke Peter und allen Lesern erst mal einen guten Rutsch
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.