Forum: Compiler & IDEs Timer vorladen


von wendt (Gast)


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

von johnny.m (Gast)


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.

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.