kör avr-gcc till en mega328p 20Mhz
har samma setup för två 8 bitars timers som ska funka på samma sätt.
men saken är att jag får två olika resultat.
från timer0 så får jag 13ms mellan triggningarna, och signalen är inte ren, utan de kommer pulser som är mycket längre än 13ms.
från timer2 så får jag 132us mellan triggningarna, och signalen är helt ren, bara fyrkantsvåg.
signalerna tar jag ut på två pinnar out1 och out2
Någon som har en idee vart felet kan ligga någonstanns ??
Avr Studio rapporterar inga fel.
hoppas någon ser nått

Edit***
nu när jag la in allt i ett nytt projekt för att lättare kunna debugga så får jag ingenting ut från timer0 och out1
nu har jag verkligen ingen aning om vad jag har missat.

Kod: Markera allt
#include <avr/io.h>
#include <avr/interrupt.h>
#define OUT1 _BV(PORTC3)
#define OUT2 _BV(PORTC4)
void init_Timer0(void);
void init_Timer2(void);
ISR(TIMER0_COMPA_vect);
ISR(TIMER2_COMPA_vect);
int main (void)
{
DDRC |= 0b00011000;
init_Timer0();
init_Timer2();
sei(); // Enable global interrupts
for (;;) // Loop forever
{
}
}
void init_Timer0(void)
{
TCCR0A |= (1 << WGM01); // Configure timer 0 for CTC mode
TIMSK0 |= (1 << OCIE0A); // Enable CTC interrupt
OCR0A = 254; // Set CTC compare value
TCCR0B |= (1<<CS00) | (0<<CS01) | (1 << CS02); // 1024
}
void init_Timer2(void)
{
TCCR2A |= (1 << WGM21); // Configure timer 0 for CTC mode
TIMSK2 |= (1 << OCIE2A); // Enable CTC interrupt
OCR2A = 254; // Set CTC compare value
TCCR2B |= (1<<CS20) | (0<<CS21) | (1 << CS22); // 1024
}
/*--------------------------------------------------------------------------------------------------
Timer interrupt
--------------------------------------------------------------------------------------------------*/
ISR(TIMER0_COMPA_vect)
{
PORTC ^= OUT1;
}
/*--------------------------------------------------------------------------------------------------
Timer interrupt
--------------------------------------------------------------------------------------------------*/
ISR(TIMER2_COMPA_vect)
{
PORTC ^= OUT2;
}