Timmer B stoppen bei ATTiny1614

Gast #6249367
Lesenswert?

Hallo,

ich versuche mich am ATTiny1614 mit dem Atmel Studio. Ich verwende den 
TimerB wie folgt:
1
void Init(){
2
  TCB0.CCMP = F_CPU / 1000; //1ms
3
  TCB0.INTCTRL = TCB_CAPT_bm;
4
  TCB0.CTRLA = TCB_ENABLE_bm;
5
}
6

7
volatile uint16_t count = 0;
8
ISR(TCB0_INT_vect)
9
{
10
  TCB0.CTRLA = 0;
11
  count++;
12
}

Ich dachte mit CTRLA auf 0 setzen, könnte ich den Timer wieder stoppen. 
Das geht leider nicht. Wie kann ich den Timer wieder stoppen oder muss 
ich den Interrupt disable um bei start den CNT auf 0 setzen?

Viele Dank für alle Tipps

Der Wurm
Beitrag #6249401 wurde von einem Moderator gelöscht.
Gast #6249432
Lesenswert?

Ich teste das mit dem Atmel ICE und habe einen Breakepoint auf die Zeile 
"count++;".
Wenn ich dann F5 drücke wird das immer und immer wieder aufgerufen. Wenn 
ich den Interrupt sperre

TCB0.INTCTRL = 0;

Dann ist Ruhe.
(Firma: L-E-A) #6249456
Lesenswert?

Hozlwurm schrieb:

> Ich dachte mit CTRLA auf 0 setzen, könnte ich den Timer wieder stoppen.
> Das geht leider nicht. Wie kann ich den Timer wieder stoppen oder muss
> ich den Interrupt disable um bei start den CNT auf 0 setzen?

Woraus schließt Du, dass der Timer weiterläuft? Wenn der Interrupt 
weiterhin ausgelöst wird, wäre es auch möglich, dass das Irpt-Flag nicht 
beim Einsprung in den Handler gelöscht wird.

Das Datenblatt meint dazu: "Bit 0 – CAPT Interrupt Flag
This bit is set when an interrupt occurs. The interrupt conditions are 
dependent on the Counter Mode (CNTMODE) in TCBn.CTRLB. This bit is 
cleared by writing a '1' to it or when the Capture register is read in 
Capture mode."

Woraus ich schließen würde, dass das Flag explizit gelöscht werden muss, 
wenn man nicht das Capture-Reg. liest.

Grüßle
Volker
(Firma: L-E-A) #6249514
Lesenswert?

Hozlwurm schrieb:

> Ich das so gemacht wie im Datenblatt beschrieben und jetzt hält er auch
> an.

Wunderbar, freut mich :-)

Übrigens ist bei den neuen AVRs auch immer ein Blick ins Errata-Sheet 
nötig. Ich habe schon Stunden damit verbracht, Peripherie anzusprechen 
*), die lt. Datenblatt vorhanden sein sollte -- bis ich ins Errata 
guckte und feststellen musste, dass diese in den vertriebenen 
Maskenrevisionen (noch) nicht implementiert wurde.

Grüßle
Volker

*) ATxmega32D4: REV B no TWIE available!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren