Gast
#76166
Hallo, ich habe bei einen 8515 den 8-bit Counter realisiert. Er zählt auch, doch nun möchte ich, wenn er überläuft, das die Overflowroutine aufgerufen wird. Dies macht er auch, so wie mir das das AVR Studio anzeigt. Doch den Coder darin steht wird nicht ausgeführt. Kurzbeschreibung: Counter läuft über => Overflow Routine soll eine Variable um 1 nach oben zählen und den Wert auf den LEDs des STK500 ausgeben! Code: #include <io.h> #include <sig-avr.h> #include <interrupt.h> #include <math.h> unsigned char wert_r, wert_l, wert_h, overflow_r=0x00; /*8-bit Variablenn*/ long double faktor = 0.44753086, schlupf_r; /*16-bit Gleitkomma Variablen*/ SIGNAL(SIG_INTERRUPT0) /*Switch 2: Start 8-bit Counter*/ { wert_r=inp(TCNT0); /*Wert des Counter auslesen*/ outp(~wert_r, PORTB); /*Den Wert auf den LEDs ausgeben*/ outp(0x00, TCNT0); /*8-bit Counter zurücksetzen/nullen*/ cbi(TIFR, TOV0); /*Overflow-Bit zurücksetzen*/ outp((1<<CS00), TCCR0); /*Counter-Start mit CLK*/ /*overflow_r=2;*/ } SIGNAL (SIG_OVERFLOW0) /*Wenn das Overflowbit gesetzt wird startet diese Routine und zählt die Variable overflow_r um 1 hoch*/ { overflow_r++; /*Overflow um 1 hochzählen*/ outp(~overflow_r, PORTB); /*Wert auf den LEDs ausgeben*/ } SIGNAL(SIG_INTERRUPT1) /*Switch 3: Start 16-bit Counter*/ { wert_h=inp(TCNT1L); /*Wert des Counters auslesen*/ outp(~wert_h, PORTB); /*Den Wert auf den LEDs ausgeben*/ outp(0x00, TCNT1H); /*High-Counter zurücksetzen/nullen*/ outp(0x00, TCNT1L); /*Low-Counter zurückstellen/nullen*/ cbi(TIFR, TOV1); /*Overflow-Bit zurücksetzen*/ outp((1<<CS10),TCCR1B); /*Counter-Start mit CLK*/ } int main(void) { outp(0x00, DDRD); /*Port D als Eingänge schalten*/ outp(0xFF, DDRB); /*Port B als Ausgabe (LEDs)schalten*/ outp(0x02, TIMSK); /*8-bit: Overflow Interrupt aktivieren*/ outp((1<<INT0)|(1<<INT1), GIMSK); /*Interrupteinstellungen*/ sei(); /*Interrupts einschalten*/ /*schlupf_r = 1-faktor*wert_r/wert_h;*/ for(;;) /*Endlosschleife*/ { } } Vielleicht kann mir jemand nen Tipp geben! Vielen Dank schon mal im Voraus! MfG Patrick Weber