PaMan
30.07.2007, 21:01
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 O:)
#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 }
}
}
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 O:)
#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 }
}
}