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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.