Danke Michael !
Ich grübel mir nun schon den Kopf wund, wie ich das mit dem Timing machen soll, ich sage ja ich bin da fast Neueinsteiger in Sachen Timer,PWm, Interruppt.
Ich habe jetzt erst mal folgenden Code:
Damit habe ich etwas das Timing verstanden zu kapieren...nun müsste der Takt aber nicht 255 x ablaufen bis zum Überlauf, sondern nur noch 200. Gibt es nicht eine Methode, wo ich den Zähler schon auf 55 voreinstellen kann , so das nur noch 200 Takte bis zum Überlauf gebraucht werden ??Code:#include <avr/interrupt.h> #include <stdint.h> // ATTiny13 // F_CPU 4800000Hz intern // PIN B4 = LED Ausgang // PIN B2 = LED Anzeige Überlauf Timer // PIN B3 INPUT LOW oder HIGH volatile int timer_overflow_count = 0; uint8_t FLAG = 1; ISR(TIM0_OVF_vect) { if (++timer_overflow_count >18) //(4800000 /(255x1024x18) { // Toggle Port B Pin 2 output status PORTB ^= 1<<PB2; // LED blinkt in ca. 1sec. Abstand etwa... // FLAG != FLAG; timer_overflow_count = 0; } } int main(void) { // Set up Port B pin 2 mode to output DDRB = 1<<DDB2; // prescale timer to 1/1024th the clock rate // = 4867.5 Hz bei 4,8MHz TCCR0B |= (1<<CS02) | (1<<CS00); // prescale timer to 1/8th the clock rate //TCCR0B |= (1<<CS01); // enable timer overflow interrupt TIMSK0 |=1<<TOIE0; sei(); while(1) { // ISR handle the LED forever } }
Ich lesen das Datenblatt jetzt schon mehr mals rauf und runter , kann es nicht finden...
Dies muss ich erst mal kapieren , ehe ich mich mit dem Weiteren befassen kann...
Gruss und Dank
Gerhard
Lesezeichen