Hallo Zusammen, Ich habe über Timer0 in CTC Mode versucht. Und zwar wollte OCF0 Flag überprüfen, ob Set oder nicht Set ist. Ich habe ein Programm versucht zu schreiben, aber nicht funktioniert.. T.T In If Loop funktioniert nicht richtig. Könnten Sie mir ein Vorschlag geben, was ich machen sollte Gruß PaMan [c] #include <avr/interrupt.h> #include <avr/io.h> #include <stdint.h> /*********************************************************************** *******/ int main (void) { DDRA = 0xFF; // Set PortA as Output DDRB = 0b11111010; // PB3( OC0 as Output) PB0(T0 as Input) PB2(SW as Input) PORTB = 0b00000101; while(PINB & (1<<PINB2)); // wait switch clear to start //Initial Timer/Counter0 TCNT0 = 0x00; // Clear counter OCR0 = 0xFF; // Match at Top TIFR |= (1<<OCF0); // while(1) { TCCR0 = 0b00011110; // Start T/C0, CTC Mode, extclk T0 if (OCF0==1) { PORTA |= (1<<PORTA1); // show OK at PortA1 } else { PORTA |= (1<<PORTA2); // show NOK at PortA2 } } } [\c]
Wenn du innerhalb der SChleife den Timer immer wieder startest, wird der nie so richtig zum zählen kommen. Initialisierungen werden nur einmal gemacht. Ausserhalb der Hauptschleife! ---------- if (OCF0==1) OCF0 ist ein Bit im TIFR Register! if( ( TIFR & OCF0 ) != 0 )
Oh!!! Das kann nicht direkt mit dem Bit arbeiten. Bedanke für Ihre Hilfe, PaMan
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.