Witam serdecznie.
Próbuję zrobić dzielnik częstotliwość na amtega8. Taktowanie 1 MHz.
Narazie tak dla treningu robię sobie podział na 2.
Sygnał podaję na INT0. I nawet mi to fajnie dzieli....ale jak częstotliwość dam powyżej 18kHz. To już nie dzieli..tzn dzieli ale częstotliwośc na wyjściu ustala się w granicach 9kHz i dalej nie idzie. Np. na wejścio INT0 dam 40kHz to na wyjściu dalej mam około 9kHz.
Oto kod:
Problem może tkwić w sprzęcie czy w programie?
Próbuję zrobić dzielnik częstotliwość na amtega8. Taktowanie 1 MHz.
Narazie tak dla treningu robię sobie podział na 2.
Sygnał podaję na INT0. I nawet mi to fajnie dzieli....ale jak częstotliwość dam powyżej 18kHz. To już nie dzieli..tzn dzieli ale częstotliwośc na wyjściu ustala się w granicach 9kHz i dalej nie idzie. Np. na wejścio INT0 dam 40kHz to na wyjściu dalej mam około 9kHz.
Oto kod:
#include <avr/io.h>
#include <avr/interrupt.h>
#define INTO_rising MCUCR = (1<<ISC01) | (1<<ISC00) ; GICR = (1<<INT0) ;
int a=0;
SIGNAL (SIG_INTERRUPT0)
{
a++;
if (a == 1 ) PORTD=0x01;
if (a == 2 ) { PORTD=0x00; a=0;}
}
int main (void)
{
DDRD = 0x03
INTO_rising;
sei();
while(1) {}
return(0);
}
Problem może tkwić w sprzęcie czy w programie?