ATMEGA324A Timer1

10/02/2013 - 22:30 von Michael S | Report spam
Hi Leute,
ich versuche nun schon seit einigen Stunden, den Timer1 des ATMEGA324A
zu laufen zu bekommen.
Er soll nur Interrupts im 1kHz- Takt auswerfen (10MHz Quarz).

Hier meine Initialisierung:

void initTimer1(void)
{
PRR0 &= ~(1<<PRTIM1);
OCR1A™99; //1kHz bei 10MHz
TCCR1A=0;
//CTC-Mode mit OCR1A als Top, kein Prescaler:
TCCR1B=(1<<WGM12) | (1<<CS10);

TIMSK1=(1<<OCIE1A); //Interrupt aktivieren
sei();
return;

}

ISR (TIMER1_COMPA_vect)
{
static char Timer0div=0;
Timer0div++;
if (Timer0div=)
{
Timer0div=0;
Task10ms++;
TimingDelay = (TimingDelay==0) ? 0 : TimingDelay-1;

}
if ((PORTC|(1<<PC4))!=0)
PORTC&= ~(1<<PC4);
else
PORTC|= (1<<PC4);

return;
}

Die Interrupts kommen einfach nicht, weder im Simulator, noch in echt.
Am Toggeln von PC4 müsste man das nàmlich sehen (DDRC steht richtig)


Hat jemand eine Idee?

Michael
 

Lesen sie die antworten

#1 Joerg
10/02/2013 - 22:48 | Warnen spam
Michael S wrote:
Hi Leute,
ich versuche nun schon seit einigen Stunden, den Timer1 des ATMEGA324A
zu laufen zu bekommen.
Er soll nur Interrupts im 1kHz- Takt auswerfen (10MHz Quarz).

Hier meine Initialisierung:

void initTimer1(void)
{
PRR0 &= ~(1<<PRTIM1);
OCR1A™99; //1kHz bei 10MHz
TCCR1A=0;
//CTC-Mode mit OCR1A als Top, kein Prescaler:
TCCR1B=(1<<WGM12) | (1<<CS10);

TIMSK1=(1<<OCIE1A); //Interrupt aktivieren
sei();
return;

}

ISR (TIMER1_COMPA_vect)
{
static char Timer0div=0;
Timer0div++;
if (Timer0div=)
{
Timer0div=0;
Task10ms++;
TimingDelay = (TimingDelay==0) ? 0 : TimingDelay-1;

}
if ((PORTC|(1<<PC4))!=0)
PORTC&= ~(1<<PC4);
else
PORTC|= (1<<PC4);

return;
}

Die Interrupts kommen einfach nicht, weder im Simulator, noch in echt.
Am Toggeln von PC4 müsste man das nàmlich sehen (DDRC steht richtig)


Hat jemand eine Idee?




Keine Ahnung, muss ich anderen ueberlassen, aber aus aehnlichen Pannen
mit anderen uC: Du bei Initialisieren hast nicht zufaellig den Watchdog
Timer vergessen?

Gruesse, Joerg

http://www.analogconsultants.com/

Ähnliche fragen