logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

16F84(A) - niestabilna praca, resetowanie przy prostym programie LED

mikmas 22 Cze 2005 13:31 2059 17
REKLAMA
  • #1 1597889
    mikmas
    Poziom 18  
    Posty: 611
    Pomógł: 9
    Ocena: 18
    Kupiłem pic16f84a i żeby sprawdzić czy działa napisałem b. prosty programik, który karze mrugać diodami. Niestety! uC tak się zachowuje jakby się resetował - pracuje b. nie stabilnie. Próbowałem pod MCLR podpinać 5v, przez opornik, kondensator, bez niczego. No dużo, dużo kombinacji i nic. Nie ma żadnej zmiany
  • REKLAMA
  • #2 1597981
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    Zasilanie stabilne czy z prądnicy rowerowej... ? ;) Kod, schemat gdzie ? Wróżki znów na plaży...
  • REKLAMA
  • #3 1598209
    mikmas
    Poziom 18  
    Posty: 611
    Pomógł: 9
    Ocena: 18
    jest tak proste, że nie pomyślałem, ale ok :)
    Załączniki:
    • 16F84(A) - niestabilna praca, resetowanie przy prostym programie LED Untitled.gif (926 Bajtów) Musisz być zalogowany, aby pobrać ten załącznik.
  • #4 1598804
    mkaczor
    Poziom 16  
    Posty: 97
    Pomógł: 13
    Może masz w konfiguracji uaktywnionego watchdog-a a nie pobudzasz go?
    Powodzenia
  • #5 1598941
    Jacu$
    Poziom 27  
    Posty: 730
    Pomógł: 119
    Ocena: 26
    Mikmas, jeśli naprawdę podłączyłeś tak, jak na Twoim rysunku to się nie dziw, że nie działa. Czy mam Ci już wysyłać nowy układ PIC16F84A? No, może jeszcze się nie spalił... Popatrz do dokumentacji gdzie jest plus a gdzie minus zasilania. A diody LED to polecam zapalać poprzez zwieranie katody do masy pinem portu ustawionego w stan niski (wyjście). Anoda przez rezystor do plusa zasilania. Większość elektroników tak właśnie robi.
  • #6 1598982
    mikmas
    Poziom 18  
    Posty: 611
    Pomógł: 9
    Ocena: 18
    Schemat rysowałem na szybko, więc się pomyliłem, ale układ dobrze posklecałem. To czy katodę czy anodę podłączę pod pin to kwestia gustu. W tym momencie nie ma żadnego znaczenia. Pic ma chyba jakieś zabezpieczenie przeciw zbyt dużym pobraniem prądu. Kiedyś podłączyłem BEZPOŚREDNIO (nie no... podrodze był kondensatorek :) ) głośnik i się nie spalił. Tylko troche mu napięcia na pinach innych spadały.
    Zaraz sprawdzę bez Watch Dog Timer... [5min później] nie mam wyłączony. Włączony mam jedynie PWRT - Power up timer enable

    PS. Pic nawet jak się podłączy odwrotnie to zacznie się grzać, ale po poprawieniu działa dalej
  • #7 1599139
    Jacu$
    Poziom 27  
    Posty: 730
    Pomógł: 119
    Ocena: 26
    No to wklej ten program.
  • REKLAMA
  • #8 1599357
    mikmas
    Poziom 18  
    Posty: 611
    Pomógł: 9
    Ocena: 18
    napisany w basicu i tak prymitywnie, że każdy zrozumie, co robi kod
    
    DECLARE XTAL=16
    LOOP:
    HIGH PORTA.0
    DELAYMS 1000
    LOW PORTA.0
    DELAYMS 1000
    GOTO LOOP
    

    "DECLARE XTAL=16" - jakby ktoś nie wiedział, to jest to deklaracja, jaki kwarc jest podłączony
  • #10 1599420
    diag
    Poziom 29  
    Posty: 1401
    Pomógł: 45
    Ocena: 209
    Jak ma działać to zacznij od tego:
    Przy PIC kondensatory 100nF i 100mikro.
    Kwarc 4MHz i kondenstory 27 pF.
    Zasilanie 5V stabilizowane.
  • REKLAMA
  • #11 1599942
    mikmas
    Poziom 18  
    Posty: 611
    Pomógł: 9
    Ocena: 18
    mikmas napisał:

    [...]Zaraz sprawdzę bez Watch Dog Timer... [5min później] nie mam wyłączony[...]


    Sorry! pomiędzy "nie" i "mam" powinien być przecinek. Mam Watch Doga wyłączonego
    diag napisał:

    Przy PIC kondensatory 100nF i 100mikro.
    Kwarc 4MHz i kondenstory 27 pF.
    Zasilanie 5V stabilizowane.


    1. Te kondensatory mam w zasilaczu
    2. Na tym kwarcu chodzi dobrze - dioda zapala się, ale po xxx czasie się wywala (dioda, jeżeli była zapalona to na 100ms gdzieś tak gaśnie i zapala się spowrotem). Ale zaraz sprawdzę na 4MHz (jak znajdę :/)
    3. Jest stabilizowane
  • #12 1599955
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    A zauważyłeś "Przy PIC" w wypowiedzi diag-a o kondensatorach ? To nie to samo, co "w zasilaczu". Nie przedstawiaj problemów, skoro nie przyjmujesz do wiadomości porad... ;) No i jeśli był odwrotnie umieszczony w podstawce, to ma prawo robić problemy...
  • #13 1599973
    mikmas
    Poziom 18  
    Posty: 611
    Pomógł: 9
    Ocena: 18
    Pozamieniałem i dalej to samo
  • Pomocny post
    #14 1604559
    Jacu$
    Poziom 27  
    Posty: 730
    Pomógł: 119
    Ocena: 26
    Nie znam się na Basic'u i nie wiem, czy dobrze napisałeś program.
    Jeśli chcesz tylko przetestować czy masz sprawny scalak to napisałem Ci krótki program do przetestowania PIC-a.
    Programujesz nim układ, podpinasz zasilanie i dioda mruga w cyklu 1/4 sekundy jasność i 1/4 sekundy ciemność. A teraz opiszę schemat połączeń:
    Plus zasilania do nóżek 4 i 14 oraz do anody diody LED.
    Minus zasilania do nóżki 5.
    Kwarc i kondensatory - sam wiesz.
    Dioda LED katodą przez szeregowy rezystor 220 - 670 omów do nóżki 18.
    Uwaga: program jest sprawdzony i działa w 100%.
    Załączniki:
    • mikmas.zip (1.22 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #15 1604807
    mikmas
    Poziom 18  
    Posty: 611
    Pomógł: 9
    Ocena: 18
    Aż no poprostu brak mi słów :)...Przy tworzeniu (nie wiedzieć czemu) pomyliłem się przy odliczaniu nóżek i zamiast pod 4 podłączyłem pod 6. Dalej to nie sprawdzałem tego, bo jeszcze mi się nei zdarzyło tak się pomylić. I chociaż nie wiem, co bym tam podłączał, układ i tak się będzie resetować. Program Jacu$ia działa. Wielkie dzięki za pomoc wszystkim
  • #16 1715345
    sento
    Poziom 12  
    Posty: 20
    Pomógł: 2
    pin4 ... +5V
    pin5 ... 0V
    pin14 ... +5V

    15/16 ... XTal
    17 ... DigOutput (390 ohm + LED)
  • #17 1718055
    euromatic
    Poziom 21  
    Posty: 422
    Pomógł: 17
    Ocena: 14
    device 16F84
    xtal = 16
    All_digital = true
    output PORTA.0
    SYMBOL LED = PORTA.0


    main:
    delayms 500
    toggle led
    goto main

    używaj własnych nazw , będzie ci łatwiej, oszczędzaj miejsce, to samo można napisać dużo prościej.
    deklaruj czyport jest wejściem czy wyjściem.
    W procesorach które mają dużo wewnętrznych układów stosuj polecenie:
    All_digital = true
    które wyłącza komparatory itp.

    pozdrawiam
  • #18 1718459
    mikmas
    Poziom 18  
    Posty: 611
    Pomógł: 9
    Ocena: 18
    Wielkie dzięki, ale nie musicie mi tego mówić :). Robiłem o wiele bardziej skomplikowane urządzenia, a tu poprostu rąbnąlem się przy liczeniu nóżek

Podsumowanie tematu

LABEL_AI_GENERATED
Problem dotyczył niestabilnej pracy mikrokontrolera PIC16F84A, który resetował się podczas prostego programu migania diodą LED. Przyczyną były błędy w podłączeniu układu, w szczególności nieprawidłowe podłączenie nóżek zasilania (np. pomyłka w numeracji nóżek, podłączenie zasilania do niewłaściwej nóżki). Dyskusja zwróciła uwagę na konieczność stabilnego zasilania 5V, poprawnego podłączenia kwarcu (zalecany 4 MHz z kondensatorami 27 pF) oraz kondensatorów filtrujących (100 nF i 100 µF) blisko układu. Wskazano także na wyłączenie Watchdog Timer, który mógł powodować resetowanie, jeśli nie był odpowiednio obsługiwany. Program testowy w Basicu do migania diodą został udostępniony i potwierdzono jego poprawność. Ostatecznie problem rozwiązała korekta połączeń, zwłaszcza prawidłowe podłączenie nóżek zasilania i wyprowadzeń diody LED. Zalecano także zapalanie diod przez zwieranie katody do masy przez pin mikrokontrolera, a anodę przez rezystor do plusa zasilania.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA