Hallo zusammen, ich bekomme bei einem ATtiny 45 weder den TCNT1 zum Laufen noch mit einem Comparewert im Register OCR1A ein Togglen auf PB1 hin. Dazu gibt es folgende Befehle: ; Systemtakt 2 MHz laut Fusebits, Vorteiler 16, OC1A Toggle Mode an PB1 ldi r16, (1<<CS10)|(1<<CS12)|(1<<COM1A0) out TCCR1,r16 ; Ausgabewert für Frequenz an PB1 ldi r16, wert out OCR1A,r16 Im Timer 0 läuft ein separate ISR für Compare Match A mit folgender Einstellung problemlos. ldi r16, (1<<WGM01) out TCCR0A, r16 ldi r16, (1<<CS01)|(1<<CS01) ;Takt mit Vorteiler 256 out TCCR0B, r16 ldi r16,0x27 out OCR0A,r16 ;Konstante 27Hex ldi r16,(1<<OCIE0A) ;Timer/Counter0 Compare Match A Interrupt Enable out TIMSK,r16 sei Wo liegt der Fehler bzw. was habe ich übersehen? Vielen Dank im Voraus.
Hast du den Pin auch auf Ausgang gestellt? Das musst du seperat machen. Die Timereinstellung macht das nicht automatisch.
Hi >Wo liegt der Fehler bzw. was habe ich übersehen? Der Timer1 vom ATTiny45 'tickt' etwas anders, als die üblichen AVR-Timer. Da hilft nur intensives Datenblattstudium. Beispielsweise werden CTC, PWM1A, PWM1B über einzelne Bits eingeschaltet. CTC funktioniert nur mit OCR1C.... MfG Spess
Karl Heinz Buchegger schrieb: > Hast du den Pin auch auf Ausgang gestellt? > Das musst du seperat machen. Die Timereinstellung macht das nicht > automatisch. Ja, das habe ich vor der Timereinstellung getan: ldi r16, (1<<PB1); PB1 als Ausgang out DDRB,r16
spess53 schrieb: > Hi > >>Wo liegt der Fehler bzw. was habe ich übersehen? > > Der Timer1 vom ATTiny45 'tickt' etwas anders, als die üblichen > AVR-Timer. Da hilft nur intensives Datenblattstudium. > Beispielsweise werden CTC, PWM1A, PWM1B über einzelne Bits > eingeschaltet. CTC funktioniert nur mit OCR1C.... OK, wenn ich das richtig verstehe, kann ich nur über den nicht beabsichtigten Weg der PWM vielleicht zum Ziel kommen.
Hi >OK, wenn ich das richtig verstehe, kann ich nur über den nicht >beabsichtigten Weg der PWM vielleicht zum Ziel kommen. Kommt auf dein Ziel an. Du kannst auch bei CTC einen beliebigen Pin im Interrupt togglen. Beim ATTiny45 geht das einfach mit sbi PINB,x (ja, eine Ausgabe auf das PIN-Register). MfG Spess
spess53 schrieb: > Kommt auf dein Ziel an. Du kannst auch bei CTC einen beliebigen Pin im > Interrupt togglen. Beim ATTiny45 geht das einfach mit sbi PINB,x (ja, > eine Ausgabe auf das PIN-Register). Ja, danke für den Tipp. Also das Ziel ist die Ausgabe einer Frequenz auf PB1 über Toggle Mode ohne Belastung des Prozessors. Im Moment scheitere ich daran, den Timer 1 generell zum Laufen zu bekommen, dann könnte ich notfalls noch über Interrupt und sbi PINB,x "toggeln".
Jörg T. schrieb: > Im Moment scheitere ich daran, den Timer > 1 generell zum Laufen zu bekommen, Habe mein Problem gelöst. Sicherlich war es ein bekannter Bug, mir aber nicht. Es lag an der Simulation des Simulators im AVR Studio 4.18 . Nach dem Wechsel auf den Simulator 2 läuft auch die Simulation in der Darstellung des Timer 1 korrekt.
Jörg T. schrieb: > ich bekomme bei einem ATtiny 45 weder den TCNT1 zum Laufen hättest du schon erwähnen können dass du ein Simulant bist
Hi
> Sicherlich war es ein bekannter Bug, mir aber nicht.
Der Bug ist sogar Atmel bekannt. Zu finden unter den 'Known Issues' in
der Assembler Hilfe. Sollte man sich wenigsten einmal durchgelesen
haben.
MfG Spess
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.