Forum: Mikrocontroller und Digitale Elektronik Timer / Interrupt


von Wolfgang (Gast)


Lesenswert?

hallo,

ich möchte jede Sekunde eine Interrupt Routine aufrufen.
Das ist mein code..... aber sie wird jede ca 20s aufgerufen

(18432000 Hz)

.
.
TCCR1A=0x00;
TCCR1B=0x05;
TCNT1H=0x46;
TCNT1L=0x50;
TIMSK1=1<<TOIE1;

#asm("sei")
.
.
.

interrupt [TIM1_OVF] void timer1_ovf_isr(void)

TCNT1H=0x4650 >> 8;
TCNT1L=0x4650 & 0xff;

lcd_putsf("test");

}

Bitte um Hilfe

MfG
Wolfgang

von Karl H. (kbuchegg)


Lesenswert?

Wolfgang schrieb:
> hallo,
>
> ich möchte jede Sekunde eine Interrupt Routine aufrufen.
> Das ist mein code..... aber sie wird jede ca 20s aufgerufen
>
> (18432000 Hz)

Hast du kontrolliert, ob dein µC auch wirklich mit dieser Taktfrequenz 
läuft? Quarz anhängen genügt nicht, du musst auch die Fuses entsprechend 
einstellen.

Deine 18 Mhz sind sehr nahe an den 20, wenn man bedenkt, dass ein AVR 
mit 1Mhz internem Takt ausgeliefert wird.

von Wolfgang (Gast)


Lesenswert?

genau sind das 27 Sekunden

meine Fuses müssten richtig sein
Atmega1284P
Low Fuses 0x7F
High Fuses 0xD9
Extented Fuse 0xFF
Lock Fuse 0xFF

von Wolfgang (Gast)


Lesenswert?

ich korrigiere

Low Fuses 0xDE

von Wolfgang (Gast)


Lesenswert?

nach dieser Kerrektur sind es aber noch 2,5 Sekunden

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.