Gast
#1152746
Hallo, folgenden Code habe ich für den Attiny2313 geschrieben. a ist die Laufvariable, die bei jedem Timerinterrupt inkrementiert wird. Solange sie kleiner als b ist, sollen die LEDs an PORTB leuchten. Immer, wenn sich a überschlägt, wird b hochgezählt. Wenn b am Ende (0xFF) ist, soll es wieder bis 0 runterzählen. Das Ganze soll die LEDs an Port B pulsieren lassen. Leider regt sich da an Port B aber gar nichts....Hat wer eine Idee? (Ich möchte nur perifer wissen, was man besser machen könnte; mich interessiert wirklich, wo der Fehler hier stecken mag) Danke! #include <avr/io.h> #include <avr/interrupt.h> #include <avr/sleep.h> #include <stdint.h> uint8_t a, b,c; int main () { DDRB =0xFF; PORTB= 0x00; TCCR0A = 0x00; TCCR0B = 0x03; TIMSK = 0x2; b = 0; a = 0; c = 0; while (1) { sleep_enable(); sei(); sleep_cpu(); sleep_disable(); } } ISR(TIMER0_OVF_vect) { a++; if (a < b) { PORTB = 0xFF; } else { PORTB = 0x00; } if (a == 0xFF) { if (c == 0) { b++; } else { b--; } if (b==0) { c = 0; } if (b==0xFF) { c = 1; } } reti(); }