ATtiny1614 TCB: Überlauf bei input capture erkennen?

OP #7494231
Lesenswert?

Mir scheint, es ist unmöglich, beim ATtiny1614 (und Verwandten) einen Überlauf von TCB0 bzw. TCB1 in den input capture Modi (bei mir: CNTMODE=FRQ) zu erkennen oder gar zuverlässig zu zählen. Offenbar geht das nur mit den ATmega-TCB. Kennt jemand einen Trick, wie man das mit einem ATtiny schafft?

#7494347
Lesenswert?

S. L. schrieb:

hat Microchip offenbar den Mangel erkannt und mit der 'tinyAVR® 2 Family' behoben.

Irgendwie lernen die es nie. Statt mal gründlicher nachzudenken und alt bewährtes zu übernehmen, werden wieder mal neue Typen am laufenden Band rausgeschleudert. Ich hatte ja kürzlich erst gefragt, was dieser Typenwildwuchs soll und mal die vielen 8kB 14-Pinner betrachtet.

#7494442
Lesenswert?

S. L. schrieb:

Die neuen ATtiny sind ja völlig verrückt ... TCB hat Captureinterrupt, aber kein Overflow.

Wie von Wilhelm M. geschrieben, hat Microchip offenbar den Mangel erkannt und mit der 'tinyAVR® 2 Family' behoben.

Nicht nur das, sondern man hat damit einen 32bit Timer. Und das ist gut, denn bei einem 8bitter kommt es wesentlich auf die Flexibilität der internen Peripherie an.

#7494656
Lesenswert?

Peter D. schrieb:

Wilhelm M. schrieb:

Nicht nur das, sondern man hat damit einen 32bit Timer.

Ist dann aber auch ein atomarer Zugriff möglich, d.h. 3 Temp-Register. Ansonsten ist das witzlos und ein Kaskadieren in Software gleichwertig.

Da es ja nur um den Capture-Modus geht, lese ich das DB so, dass tatsächlich hier Kopien der CNT in die CCMP-Register atomar geschieht (zumindest interpretiere ich die Beschreibung des CASCADE-Flags so).

#7494766
Lesenswert?

Hallo,

genau, die Übernahme des Zählerstandes erfolgt sicher in Hardware und man liest sie nur noch aus. Wenn man bspw. TCB0 und TCB1 kaskadiert hat

1
ISR(TCB0_INT_vect)
2
{
3
  counter.lsb  = TCB0.CCMP;
4
  counter.msb  = TCB1.CCMP;
5
  // counter.finish = true;
6
  TCB0.INTFLAGS = TCB_CAPT_bm;      // clear the interrupt flag
7
}

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