Forum: Mikrocontroller und Digitale Elektronik Timmer B stoppen bei ATTiny1614


von Hozlwurm (Gast)


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 vom Autor gelöscht.
von Hozlwurm (Gast)


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.

von Volker B. (Firma: L-E-A) (vobs)


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

von Hozlwurm (Gast)


Lesenswert?

Oh, da hast du Recht.

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

Vielen Dank für deinen Tipp.

von Volker B. (Firma: L-E-A) (vobs)


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!

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.