Witam. Mam problem. Zrobiłem generator jak na rysunku poniżej:
Potrzebuje mierzyć w czasie rzeczywistym częstotliwość jego pracy. Chcę zrobić na Atmedze8 którą posiadam. Podłączyłem do niej wyświetlacze siedmiosegmentowe i napisałem w C ich sterowanie.
Moja pierwsza próba:
Najpierw próbowałem zrobić zliczacz częstotliwości w taki sposób że podłączamy napięcie z generatora na linię INT0, mówimy żeby każda zamiana sygnału rosnąca generowała przerwanie, a w obsłudze tego przerwania inkrementowałem zmienną przechowująca ilość tych przerwań. Zaciągnąłem do pracy też Timer0 który przepełniał się co 16ms (taktowanie wewnętrzne 16MHz prescalowane przez 1024), i w momencie przepełnienia obliczał częstotliwość jako ilość przerwań dzielone na te 16 ms i oczywiście resetował ilość przerwań żeby przez kolejne 16ms liczyły się od 0. Efekt: działało to jak sobie tą "częstotliwość" generowałem wciskaniem i zwalnianiem buttona. Z generatora nie odczytał nic.
Moja druga próba:
Skonfigurowałem timer0 tak by taktował się napięciem z linii T0, na które zamierzałem podać częstotliwość generatora. Efekt: brak efektu. Również brak efektu gdy symuluje częstotliwość wciskaniem buttona. Żeby widzieć lepiej co się dzieje uprościłem kod żeby pokazywał na wyświetlaczach stan licznika (rejestr TCNT0). Zawartość jego zmienia się tylko gdy podłączam na T0 +5V i gdy od odłączam z powrotem to rośnie o 1 lub kilka.
Poniżej fragment kodu który konfiguruje Timer. Pozostała część programu jest w formie komentarza dla przejrzystości.
Może ten sygnał z generatora trzeba jakoś przetworzyć zanim się poda na T0? Próbowałem go przepuścić przez bramkę AND, ale nie dało to efektu. Być może to robię źle. Sygnał wyprowadzam z generatora tam gdzie jest podłączona jego cewka. Multimetr pokazuje tam około 276 kHz. Proszę o pomoc.
Edit: Na prośbę moderatora zamieniłem znaczniki code na SYNTAX.

Potrzebuje mierzyć w czasie rzeczywistym częstotliwość jego pracy. Chcę zrobić na Atmedze8 którą posiadam. Podłączyłem do niej wyświetlacze siedmiosegmentowe i napisałem w C ich sterowanie.
Moja pierwsza próba:
Najpierw próbowałem zrobić zliczacz częstotliwości w taki sposób że podłączamy napięcie z generatora na linię INT0, mówimy żeby każda zamiana sygnału rosnąca generowała przerwanie, a w obsłudze tego przerwania inkrementowałem zmienną przechowująca ilość tych przerwań. Zaciągnąłem do pracy też Timer0 który przepełniał się co 16ms (taktowanie wewnętrzne 16MHz prescalowane przez 1024), i w momencie przepełnienia obliczał częstotliwość jako ilość przerwań dzielone na te 16 ms i oczywiście resetował ilość przerwań żeby przez kolejne 16ms liczyły się od 0. Efekt: działało to jak sobie tą "częstotliwość" generowałem wciskaniem i zwalnianiem buttona. Z generatora nie odczytał nic.
Moja druga próba:
Skonfigurowałem timer0 tak by taktował się napięciem z linii T0, na które zamierzałem podać częstotliwość generatora. Efekt: brak efektu. Również brak efektu gdy symuluje częstotliwość wciskaniem buttona. Żeby widzieć lepiej co się dzieje uprościłem kod żeby pokazywał na wyświetlaczach stan licznika (rejestr TCNT0). Zawartość jego zmienia się tylko gdy podłączam na T0 +5V i gdy od odłączam z powrotem to rośnie o 1 lub kilka.
Poniżej fragment kodu który konfiguruje Timer. Pozostała część programu jest w formie komentarza dla przejrzystości.
Code: c
Może ten sygnał z generatora trzeba jakoś przetworzyć zanim się poda na T0? Próbowałem go przepuścić przez bramkę AND, ale nie dało to efektu. Być może to robię źle. Sygnał wyprowadzam z generatora tam gdzie jest podłączona jego cewka. Multimetr pokazuje tam około 276 kHz. Proszę o pomoc.
Edit: Na prośbę moderatora zamieniłem znaczniki code na SYNTAX.