Gast
#1698334
Guten Abend :) Erstmal, das ist meine erste Begegnung mit Interrupts und Timer. Ich denke das Prinzip hab ich nach wiederholten Lesen des Tuts und des Forums verstanden, trotzdem happerts. Wollt nur mal eine LED in der ISR dauerhaft anschalten. Da die ISR ja sofort nach 16000000 / 1024 Taktzyklen das erste mal durchlaufen wird (bei 16MhZ CPU, ja, läuft mit externem Quarz, und Prescaler von 1024) müsste sie ja praktisch "immer" leuchten, ausser Reset wird gedrückt gehalten :) Hier mal mein Code: #include <avr/io.h> #include <avr/interrupt.h> int mainvoid){ DDRA = 0xFF; //Port A soll verwendet werden sei(); TIMSK |= (1<<TOIEO); TCCR0 = (1<<CS02) | (1<<CS00); //Presacler 1024 while(1); } ISR (TIMER0_OVF_Vect){ PORTA = |= (1<<0) //ersten Pin des Portes anschalten } Ich durchforste jetz echt scho 3 Stunden das Forum. Bei allen Beiträge die ich finde sieht der Code genauso aus. Im Prinzip müsste doch nach dem flashen sofort die Led an Pin0 Port A dauerhaft leuchten? Wird ja nie wieder auf 0 geschaltet. Vielleicht is heute einfach scho zu spät, sich in Timer und Interrupts einzuarbeiten :) Vielleicht weis ja jemand weiter :) Achja, nochmal als Info: Ich verwende den ATmega16 mit 16Mhz. Der externe Takt wird verwendet, getestet durch Spielereichen mit _delay_ms(); usw.