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.

PIC10F322 Hi-Tech C - Bezbłędna kompilacja, błędne działanie

Urgon 14 Cze 2013 10:02 1755 8
  • #1 14 Cze 2013 10:02
    Urgon
    Poziom 36  

    AVE...

    Praktycznie od świtu próbuję napisać prosty generator obsługiwany dwoma przyciskami z pomocą PIC10F322 i jego modułu Numerically Controlled Oscillator. Sam moduł działa bez problemów. Reszta nie za bardzo. W pierwszej wersji kodu jedynie wpisywałem wartości rejestrów NCO1 na sztywno i migałem diodą na porcie RA1, wtedy wszystko działało. Ale gdy próbuję dodać obsługę przycisków i sygnalizowanie pozycji w zmiennej i wartości jej fragmentu, to dioda nie miga wcale. Miałem też problemy z poprawną inicjalizacją wszystkich peryferiów.
    RA0 - przycisk
    RA1 - dioda LED
    RA2 - wyjście
    RA3 - przycisk

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0 8
  • Pomocny post
    #2 14 Cze 2013 10:23
    PJS
    Poziom 15  

    Skoro to C to wywołanie funkcji blinks i blinkl jest dziwne.
    Powinno chyba być blinks() i blinkl().
    Kompilacja na pewno przeszła bez błędów i ostrzeżeń?

    0
  • #3 14 Cze 2013 10:51
    Urgon
    Poziom 36  

    AVE...

    Przeszła bez błędów i ostrzeżeń. Ale dodałem wszędzie te nawiasy. teraz w losowych momentach generuje mi dwa błyski z części inicjalizacyjnej...

    EDIT:
    Zmieniłem część inicjalizacyjną tak, by dodać trzeci błysk:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    I wydłużyłem czasy błysków:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    I mam dwa losowe błyski jeno...

    0
  • Pomocny post
    #4 14 Cze 2013 11:25
    PJS
    Poziom 15  

    Migotanie masz zależne od tego, czy zmienna blink==1, a nigdzie jej nie inicjujesz w main(), natomiast wywołujesz blinks().
    Podobnie jest przy if(ninc == 1) dopiero po pierwszym przejściu po switch(n) ustawiasz zmienną blink.

    0
  • Pomocny post
    #6 14 Cze 2013 12:29
    94075
    Użytkownik usunął konto  
  • #7 14 Cze 2013 13:26
    Urgon
    Poziom 36  

    AVE...

    Kondensatory do przycisków dodane(troszkę przesadziłem i mam tam kondensatory według miernika 4,7µF, ale mniejszych w SMD nie mam). Poprawiłem też już wspomniane błędy. Przycisk od RA0 funkcjonuje poprawnie. Ale ten pod RA3 powoduje resetowanie całości lub wymuszenie ponownej inicjalizacji, co jest dziwne, zważywszy na to, iż fusebity są ustawione poprawnie(sprawdziłem w MPLAB IDE, co dokładnie ustawia). Oto cały kod z poprawkami:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • Pomocny post
    #8 14 Cze 2013 13:48
    94075
    Użytkownik usunął konto