Witam
Napisałem kilka linijek kodu, który ma działać jako generator częstotliwości z częstotliwością regulowaną przez SPI przez inny procesor.
Mam zadeklarowaną zmienną globalną:
i zainicjowany timer1:
Przełączanie stanu wyjścia załatwiam w obsłudze przerwania:
Zmienna tim_reg_Val przychodzi po SPI (na pewno przychodzi, bo wyrzuciłem sobie jej wartość na UART). Po otrzymaniu zmiennej generator nie zmienia częstotliwości - w procedurze obsługi przerwania od timera1 do TCNT1 zawsze wpisywane jest ustalone na początku 3030
Próbowałem nawet mało subtelnie zmienić wartość zmiennej tim_reg_Val w taki sposób:
ale dalej bez zmian.
Co zrobić, aby przy każdym uruchomieniu obsługi przerwania od timera1 do TCNT1 wpisyawna była aktualna wartość zmiennej tim_reg_Val ??
Napisałem kilka linijek kodu, który ma działać jako generator częstotliwości z częstotliwością regulowaną przez SPI przez inny procesor.
Mam zadeklarowaną zmienną globalną:
unsigned int tim_reg_Val=3030i zainicjowany timer1:
TIMSK=(1<<TOIE1);
TCNT1=tim_reg_Val;
TCCR1B=0b011;
sei();
Przełączanie stanu wyjścia załatwiam w obsłudze przerwania:
SIGNAL (SIG_OVERFLOW1)
{
TCNT1=tim_reg_Val; //regulacja czasu przełączenia
PORTC^=_BV(5); //przełączenie wyjścia
}
Zmienna tim_reg_Val przychodzi po SPI (na pewno przychodzi, bo wyrzuciłem sobie jej wartość na UART). Po otrzymaniu zmiennej generator nie zmienia częstotliwości - w procedurze obsługi przerwania od timera1 do TCNT1 zawsze wpisywane jest ustalone na początku 3030
Próbowałem nawet mało subtelnie zmienić wartość zmiennej tim_reg_Val w taki sposób:
int main(void)
{
...
...
while(1)
{
tim_reg_Val=60000;
...
}
}
ale dalej bez zmian.
Co zrobić, aby przy każdym uruchomieniu obsługi przerwania od timera1 do TCNT1 wpisyawna była aktualna wartość zmiennej tim_reg_Val ??
