hab ich was übersehen? // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 1000,000 kHz // Mode: CTC top=OCR1C // OC1A output: Disconnected // OC1B output: Disconnected // Timer1 Overflow Interrupt: On // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off PLLCSR=0x00; TCCR1=(1<<CTC1)|(1<<CS12); //CTC_Mode, clk/8 GTCCR=0x00; TCNT1=0x00; OCR1A=0x00; OCR1B=0x00; OCR1C=0x63; //10kHz/100µS Der Timer bewegt sich weder in der Simulation noch in echt...
Moinsen, nach Datenblatt müsste das tun, so wie ich das sehe. Wenn ich alle Register in Bascom so setze klappert da auch nix im Simulator. Hab ich wohl das selbe übersehen oder das ist ein Bug im Tiny25. Der Simulator von Bascom ist bei sowas allerdings auch mit Vorsicht zu geniessen... Gruß, Norbert
Auch moin :-) An einen Bug im Chip glaube ich nicht, das wäre schon bekannt. AVR-Studio schon eher - aber er tut es ja auch in echt nicht.
um mich mal ähnlich freundlich und ausführlich zu halten: fuses -> tiny15 compatibillity mode -> OCR1A statt OCR1C wird als COM Register genutzt -> OCR1A ist = 0 -> TCNT1 läuft nicht hoch
Hm, das könnte gut möglich sein (habe mit dem Tiny25 noch nie was gemacht). Jetzt habe ich meinen verstaubten Dragon rausgekramt, um mal mit debugwire reinzuschauen (fuse gelöscht)- muss erst mal sehen, wie ich den Tiny25 wiederbelebe :-)
H.joachim Seifert schrieb: > muss erst mal sehen, wie ich > den Tiny25 wiederbelebe :-) Bei aktivem Debugger über das Menü den Punkt zum Beenden des DW-Modus anklicken. Zum Timer-Problem fällt mir auch nix ein, Timer1 nutze ich (im Tiny85) meist mit PLL als DAC, Timer0 läuft frei durch mit beiden Compare-Interrupts. ...
Chip lebt wieder, Timer0 läuft auch problemlos. Aber der Timer1 ist durch nichts zum Leben zu erwecken, rührt sich kein Stück. Mehrere prescaler ausprobiert - nichts. CTC-Modus rausgenommen - nichts. Tiny15-Kompatibiltät ist es auch nicht, gestern dachte ich noch, das wäre eine extra-fuse. Ist es ja aber gar nicht. Clk stand und steht auf int. 8MHz. Endlosschleife ist natürlich auch drin. Das gibts doch gar nicht, TCNT1 bleibt stur auf 0.
Vielleicht habe ich das Problem nicht verstanden, aber folgendes Programm lässt eine LED an B4 blinken: .include "tn85def.inc" sbi DDRB,4 ldi r16,(1<<CS13)+(1<<CS12) out TCCR1,r16 loop: in r16,TIFR sbrs r16,TOV1 rjmp loop out TIFR,r16 sbi PINB,4 rjmp loop
So, langsam lichtet es sich... AVR-Studio ist nicht gewillt, den Timer1 laufen zu lassen (hatte noch 4.14 drauf, update auf 4.19 hat auch nichts daran geändert) In der Realität sieht es so aus, als ob es funktioniert. Böse Falle: es gibt gar keinen Interrupt für den CTC-mode?? Bin deshalb stillschweigend davon ausgegangen, dass T1OV ausgelöst wird bei TCNT1=OCR1C, dem ist wohl nicht so... Habe jetzt OCR1C=0x80 und OCR1A=0 und benutze den OCR1A-Interrupt, klappt. Böser Doppelfehler, so kann man auch viel Zeit vertrödeln :-(
Hm, jetzt wirds komisch: "Timer/Counter1 acts as an up-counter, counting from $00 up to the value specified in the output compare register OCR1C, and starting from $00 up again. A compare match with OC1C will set an overflow interrupt flag (TOV1) after a synchronization delay following the compare event." War meine Vermutung doch richtig.... Allerdings passiert genau dieses NICHT!
H.joachim Seifert schrieb: > Allerdings passiert genau dieses NICHT! Allerdings steht dieser Satz auch unter "Timer/Counter1 in PWM Mode".
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.