Witam, próbuję nauczyć się zliczać impulsy z zewnętrznego źródła - w tym przypadku czujnika koloru. Dokumentacja: botland.com.pl/attachment.php?id_attachment=185
Wykorzystany procesor: ATMEGA8
Napisałem następujący program (dioda ma się zapalać gdy zostanie zliczony chociaż jeden impuls z czujnika):
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Układ nie działa. Mógłby ktoś spróbować mi pomóc i jakby była możliwość, wytłumaczyć jakie błędy zrobiłem? Układ został podłączony następująco:
- zasilanie +5V na VCC, AVCC oraz RESET przez rezystor 10k
- masa na wszystkich pinach GND
- kondensator 100nF pomiędzy VCC i GND
- zewnętrzny rezonator kwarcowy 8MHz (podłączony z kondensatorami 22pF, Fuse-Bity przestawione)
- PB0 (ICP1) - wyjście OUT czujnika
- PC5 - dioda z rezystorem 1k podłączona katodą do masy
- PC4 - wejście czujnika aktywujące OUT stanem niskim
- PC3, PC2 - wyprowadzenia czujnika S0 i S1 (stan wysoki na obu - zakres częst. 500kHz)
- PC1, PC0 - wyprowadzenia czujnika S2 i S3 (stan wysoki na obu - zielona fotodioda)
Dodatkowo mam pytanie, czy mój tok rozumowania jest dobry? Jeżeli ustawiłem czujnik na zakres pomiarowy 500kHz, natomiast częstotliwość taktowania procesora to 8MHz (preskaler = 1), to w takiej sytuacji mogę zliczyć maksymalnie 4096 impulsów ze źródła zewnętrznego zanim nastąpi przepełnienie po zliczeniu 65536 impulsów z sygnału taktującego? Wyliczyłem to następująco:
Czas do przepełnienia tp = ( 1 / 8MHz ) * 65536 impulsów = 0,008192s
Najkrótszy czas pomiędzy impulsami z czujnika (największe natężenie barwy) tc = 1 / 500kHz = 0,000002s
Maks. liczba zewnętrznych impulsów zliczonych aż do przepełnienia = tp / tc = 4096.