atmega 16
hallo,
ik ben bezig om een gemoduleerd signaal te maken voor een IR led.
volgens mij heb ik het al eens werkend gehad, maar het lukt nu niet.
ik wil met 2 timers (0&1) een compare match interrupt maken.
ik heb de code terug gebracht tot het meest essentieele voor dit probleem.
dus in 2 verschillende interrupts worden 2 led's ge-toggeld rood en groen.
beide leds werken wel los van elkaar (ik // dan de andere weg)
maar beide tegelijk werkt niet, dan werkt alleen de gele led ????
ziet iemand wat er fout gaat ?
#define F_CPU 8000000UL // 8 MHz clock speed
#include <stdio.h>
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
ISR(TIMER0_COMP_vect)
{
PORTD = PORTD ^(1 << PIND7); // togle led rood^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
}
ISR(TIMER1_COMPA_vect)
{
PORTD = PORTD ^(1 << PIND5); // togle led geel^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
}
int main(void)
{
PORTD |= (1 << PIND4);
PORTD |= (1 << PIND5);
PORTD |= (1 << PIND7);
DDRD = 0b11111111;
sei(); // global interrup enable
TCCR0 |= (1 << WGM01) | (1 << CS00); // CTC-mode, no prescaling
TIMSK |= (1 << OCIE0); // timer 0 compare match interrupt enable
OCR0 = 105;
TCCR1B |= (1 << WGM12); // CTC-mode,
TCCR1B |= (1 << CS12) | (1 << CS10); // start timer with prescaler = 1024^^^^^^^^^^^^^^^^^^^^^^
TIMSK = (1 << OCIE1A); // timer1 A compare match interrupt enabled
OCR1A = 2500;
for(;;)
{
}
}