Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 14 gru 2024, o 10:23


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 29 gru 2016, o 14:34 
Offline
Nowy

Dołączył(a): 29 gru 2016
Posty: 2
Pomógł: 0

Witam
To mój pierwszy post na tym forum. :)
Mam taki problem napisałem taki kod


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jest to kod dla miernika częstotliwości. Zasada działanie pokrótce jest taka, zewnętrzne przerwanie z INT0 inkrementuje zmienną "stan_licznika", timer1 odlicza dokładnie 1 sekundę i po tum czasie przepisuje wartość tej zmiennej do zmiennej "stan_licznika2" a zmienną "stan_licznika" zeruje, zmienna "stan_licznika2" idzie na wyświetlacz. Mierzony przebieg (prostokąt) podawany jest na wejście INT0 atmegi8 taktowanej zewnętrznym kwarcem 4MHz i wyświetlany na wyświetlaczu led. W założeniach ma to mierzyć częstotliwość do góra 350KHz.
I wszystko działa poprawnie do momentu gdy mierzony przebieg nie osiągnie lub przekroczy około 65KHz. W tedy na losowym wyświetlaczu (a jest ich 6) zapala się jakaś losowa liczba i tak zostaje. Próbowałem też pomiaru na INT1 (po poprawieniu kodu) ale dzieje to samo. Czy ten kod jest winny takiemu stanu, rzeczy czy atmega8 ma takie ograniczenia? Da się to jakoś poprawić?
Dzięki
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2016, o 17:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

witam,
myślę że wykonując przerwanie INT ~65000 razy na sek i jeszcze przerwanie ~2000 razy na sek od przepełnienia timera 0,
w którym jest sporo procedur, to te 4MHz to mało.
Podejrzewam że dławi się przerwaniami. :?
Załączenie zewnętrznego rezonatora blisko 20MHz powinno poprawić wyniki,
ale czy wystarczająco ? nie wiem. :?
może trochę pomoże else w przerwaniu, ale pewnie niewiele. :|
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2016, o 18:37 
Offline
Nowy

Dołączył(a): 29 gru 2016
Posty: 2
Pomógł: 0

Fakt o dławieniu przerwaniami to nie pomyślałem
Jutro spróbuję wymienić kwarc na inny i dopiszę co i jak
Dzięki

------------------------ [ Dodano po: 41 minutach ]

Dzięki kolego za pomoc
Przełączyłem atmege tak na szybko do testów na wewnętrzny oscylator 8MHz i wyświetlana częstotliwość wzrosła do około 130KHz. Miałeś rację
Dzięki
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2016, o 22:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 paź 2014
Posty: 233
Lokalizacja: Rzeszów
Pomógł: 11

He he he - czytam i oczom nie wierzę... bo właśnie w tej chwili trawię płytę pod mój miernik częstotliwości.... :)

Robię go na atmedze 8 i wybrałem trochę inne podejście - u mnie impulsy zlicza bezpośrednio licznik zerowy do 256, po czym następuje przerwanie od przepełnienia i zwiększany o jeden jest starszy bajt (dwa bajty - UINT) wyniku. wszystko trwa jedną sekundę - PWM na tyle otwiera bramkę na wejściu. Po jej zamknięciu pomiar jest zatrzymany i spokojnie można go odczytać. Ja na wejściu ma dodatkowo 74F161 i z niego zczytuję 4 najmłodsze bity. Teoretycznie mogę mierzyć do 125 MHz (bo tyle podają dla 74F161, a procek z takim licznikiem teoretycznie powinien zmierzyć do 196 608 000 Hz z rozdzielczością do 1 Hz - nie mylić z dokładnością).
Żadnych przerwań, które przekłamują wynik pomiaru. Żadnego przechwytywania licznika. Napędza to kwarc 24,576 MHz :). Dlaczego taka wartość - domyśl się ;). Prototyp sobie radzi.
Jedyny minusu - maksymalna zmierzona częstotliwość (teoretycznie) równa jest połowie częstotliwości zegara. Niestety - atmega nie ma wejścia asynchronicznego dla licznika - PIC ma ;) ale PIC'ów nie umiem...
Spróbuj uderzyć w tym kierunku.

powodzenia.

_________________
Mr. Nobody



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sty 2017, o 20:26 
Offline
Użytkownik

Dołączył(a): 26 cze 2016
Posty: 186
Pomógł: 7

Wtrącę 3 grosze, mam fabryczny miernik częstotliwości i tam są czasy otwarcia bramki nie 0.1 1, 10 tylko trochę dziwne. Myślę, że nie trzeba się kurczowo trzymać okrągłych czasów w systemie dziesiętnym, procek może to przeliczyć. Na początku myślałem, że to profanacja, ale się przyzwyczaiłem i mi nie przeszkadza.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2017, o 11:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 paź 2014
Posty: 233
Lokalizacja: Rzeszów
Pomógł: 11

Zgadza się. Jak skończę swój z czasami "dziesiętnymi" to mogę pobawić się w inne czasy i przeliczanie ich. Będę wówczas mógł porównać wyniki.
Choć przyznaję, że już mi coś nowego po głowie chodzi i raczej zostanę przy tym co mam ;)

_________________
Mr. Nobody



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO