Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

PIC16F1459 - Frequency counter / meter (programowy)

mariomario 29 Lip 2016 21:17 3003 3
  • #1 29 Lip 2016 21:17
    mariomario
    Poziom 18  

    Witam,

    chcę zrealizować otwarty projekt miernika częstotliwości opartego o mikrokontrolery PIC (do testów używam PIC16F1459). Poniżej wstawiłem, pierwszy prototyp. Aktualnie program działa, ale... poprawnie zlicza tylko do ok 4kHz - i tu mam pytanie do Was, czy może ktoś wie jak ten wynik poprawić (rozwiązania programowe, inne podejście do problemu) ?

    Aktualnie zliczanie jest całkowicie "programowe", używam timera1 jako podstawy czasowej (20uS, czyli 50,000 sprawdzeń stanu pinu na sekundę). Wynik pomiaru wysyłany jest po rs232 do komputera. Pomiar jest poprawny w zakresie 1-4000 Hz, powyżej tej wartości są błędy np +20% do wyniku.

    Kod (PIC16F1459, MikroC, 48MHz INTOSC):

    Kod: c
    Zaloguj się, aby zobaczyć kod






    PS. Tak, wiem, widziałem w internecie gotowe takie mierniki oparte o PIC16F628A - ale kod źródłowy do nich występuje w ASM (którego "jeszcze" nie ogarniam). Chciałbym z Wami - forumowiczami, od "podstaw" stworzyć jakiś wmiarę dobry i uniwersalny kod pisany w C pod różne PIC'e. Fajnie jakby całość zliczała poprawnie do np 100kHz.

    0 3
  • #2 29 Lip 2016 21:51
    2675900
    Użytkownik usunął konto  
  • #3 29 Lip 2016 23:41
    p.kaczmarek2
    Poziom 23  

    mariomario napisał:
    Kod: c
    Zaloguj się, aby zobaczyć kod



    Nie czuję zamysłu tego kodu.
    Jak już chcesz czyścić z powrotem flagę po tym jak się zmieni na 1, to czyść po tym jak się zmieni na 1...

    tzn:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Ogólnie całość do przemyślenia... może rano jeszcze tu spojrzę.



    Piotrus_999 napisał:

    Licznik sprzętowy powiniem startować kiedy masz jedną zmianę zbocza sygnału mierzonego a wyłaczać się przy innej ( albo przy tym samym zboczu).

    A to też jest bardzo dobra uwaga i ja mogę dodać, że widziałem tego typu przerwania (external interrupts) chyba na PIC18F4550, więc może w tym Twoim PIC16 też są? Sprawdzałeś?
    Przerwania powinno dać się skonfigurować tak by danym zboczu się wywoływały.

    0
  • #4 30 Lip 2016 00:24
    94075
    Użytkownik usunął konto