Код
TCCR1B= (1<<WGM12) | (0<<CS12)|(0<<CS11) |(1<<CS10); //CTC mode, no prescaling
TIMSK = (1<<OCIE1A) | (1<<OCIE1B); //разрешили работу по compare A & B
OCR1A= (OSC / 1000); // как досчитывает до этого значения- обнуляется
OCR1B= (OSC / 10000);
#pragma vector = TIMER1_COMPA_vect
__interrupt void overflow_timer1_A(void)
{
CntT1_ms++; // each ms will interrupt
}
#pragma vector = TIMER1_COMPB_vect
__interrupt void overflow_timer1_B(void)
{
// CntT1_100mks++; // each 100 mks will interrupt
cpl (test_pin);
}
TIMSK = (1<<OCIE1A) | (1<<OCIE1B); //разрешили работу по compare A & B
OCR1A= (OSC / 1000); // как досчитывает до этого значения- обнуляется
OCR1B= (OSC / 10000);
#pragma vector = TIMER1_COMPA_vect
__interrupt void overflow_timer1_A(void)
{
CntT1_ms++; // each ms will interrupt
}
#pragma vector = TIMER1_COMPB_vect
__interrupt void overflow_timer1_B(void)
{
// CntT1_100mks++; // each 100 mks will interrupt
cpl (test_pin);
}
каждую 1 мс есть прерывание, а вот второе прерывание выполняется, но не так. cpl- это макрос- переворачивание ноги на противоположное сост.
в прерывание TIMER1_COMPB_vect входит, ногу переворачивает, но стабильно 1 мс на осцилле, а не 100 мкс
Чего забыл сделать или не учел?