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
ok, ich hatte das Programm nicht installiert und deshalb auch nicht diese FAQ... Aber nun gut, nun habe ich die Variable folgendermassen deklariert: volatile unsigned char overflow_r=0; Aber es passiert dennoch nichts, also keine LED leuchten auf, auch wenn ich die Variable zB mit dem Wert 3 belege... Hat jemand ne Idee? regards patrick
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.