Forum: Mikrocontroller und Digitale Elektronik ATtiny45 TCNT1 läuft nicht


von Jörg T. (joto59)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

Hast du den Pin auch auf Ausgang gestellt?
Das musst du seperat machen. Die Timereinstellung macht das nicht 
automatisch.

von spess53 (Gast)


Lesenswert?

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

von Jörg T. (joto59)


Lesenswert?

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

von Jörg T. (joto59)


Lesenswert?

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.

von spess53 (Gast)


Lesenswert?

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

von Jörg T. (joto59)


Lesenswert?

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".

von Jörg T. (joto59)


Lesenswert?

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.

von Walter S. (avatar)


Lesenswert?

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

von spess53 (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.