Timer vorladen

Gast #552659
Lesenswert?

ich hab den atmega16 und will den timer0 verwenden:
das mit:
  TCCR0 = 1<<CS02;      //Teiler 256
  TIMSK = 1<<TOIE0;
is mir schon klar
wie ich dann daraus (aus teiler und frequ.) meinen Preloader errechne 
ist mir auch klar, aber warum sieht man ab und zu negative zahlen beim 
preloader
z.b.   TCNT0 = -3;

ich lade doch eigentlich einen pos wert rein, damit er dann von 
preload-wert bis 255 hochzählt und mir dann den interrupt gibt
Gast #552687
Lesenswert?

Zweierkomplement-Darstellung machts möglich. Die Zahl "-3" hat die 
Hexadezimal-Darstellung 0xFD (in 8 Bit). Das entspricht wiederum (ohne 
Berücksichtigung des Vorzeichens zurückgerechnet) der Dezimal-Zahl 253. 
Es ist also Wurscht, ob Du 253 oder -3 ins Register schreibst, die 
Binärdarstellung ist für beide die selbe. Google mal nach 
"Zweierkomplement" bzw. befrage Wikipedia dazu. Da ist das Prinzip 
beschrieben.

BTW: Bei den AVRs macht man i.d.R. keinen Timer-Preload. Für so was gibt 
es den CTC-Modus, der den selben Effekt hat, nur andersrum arbeitet.

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