Forum: Mikrocontroller und Digitale Elektronik Timmer B stoppen bei ATTiny1614


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Hozlwurm (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

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

volatile uint16_t count = 0;
ISR(TCB0_INT_vect)
{
  TCB0.CTRLA = 0;
  count++;
}

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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.