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

[PIC16F877] [PIC16F877][C] Dlaczego dioda LED na RB1 nie mruga? Kod w MPLAB v8.76, Hi Tech PICC

gabryelski 05 Gru 2011 02:37 2480 8
REKLAMA
  • #1 10219931
    gabryelski
    Poziom 9  
    Posty: 25
    Witam,
    A więc programuje (próbuje) PIC16F877 w języku C. Używam MPlab v8.76, Hi Tech PICC.
    Moim pierwszym programem jest migająca dioda, niestety po wgraniu programu ona tylko świeci (albo mruga tak że tego nie widzę). Proszę o wskazówki czy kod jest dobry.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Diode mam na RB1, XT 4Mhz i dwa kondensatory 22pF
  • REKLAMA
  • #2 10220252
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #3 10220611
    gabryelski
    Poziom 9  
    Posty: 25
    Kompilator się nie buntuje, kompiluje. Delay.h i Delay.c wziąłem ze strony :
    http://www.microchipc.com/sourcecode/ podobno są zawarte tam opóźnienia DelayMs() i DelayUs().
    Wnętrze Delay.c:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Wnętrze Delay.h
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #4 10220667
    Konto nie istnieje
    Konto nie istnieje  
  • #5 10223913
    gabryelski
    Poziom 9  
    Posty: 25
    zgasła, tzn. nie zaświeciła się. I co wynika z tego testu?

    Dodano po 1 [godziny] 5 [minuty]:

    zmieniłem te opóźnienia na pentle:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    A dioda dalej nie mruga tylko świeci...

    Dodano po 41 [minuty]:

    A tu załączam jak to wszystko połączyłem, pewnie tu leży problem. Według "datasheet'u" kondensatory przy kwarcu powinny mieć wartości 15pF, ale w sklepie nie mieli i dali mi 22pF, ale z tym to chyba nie problem...
    [PIC16F877] [PIC16F877][C] Dlaczego dioda LED na RB1 nie mruga? Kod w MPLAB v8.76, Hi Tech PICC
  • REKLAMA
  • Pomocny post
    #6 10224027
    dondu
    VIP Zasłużony dla elektroda
    Posty: 13906
    Pomógł: 1292
    Ocena: 809
    Kondensatory nie są problemem, ale brak podciągnięcia MCLR do Vcc już może nim być.
    A dlaczego nie masz podpiętych wszystkich pinów zasilania?: http://mikrokontrolery.blogspot.com/2011/04/zasilanie-mikrokontrolera.html

    A czy Twój kompilator podczas optymalizacji nie pomija czasem pustej pętli? Sprawdź kod wynikowy.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #7 10224034
    gabryelski
    Poziom 9  
    Posty: 25
    Podpiąłem ten MCRL i zaczęło działać, MRUGA, dziękuje. Pierwszy krok za mną. Czyli jak MCLR nie jest podpięty to chip się całczas resetuje? czy jak?
  • Pomocny post
    #8 10224041
    dondu
    VIP Zasłużony dla elektroda
    Posty: 13906
    Pomógł: 1292
    Ocena: 809
    gabryelski napisał:
    Podpiąłem ten MCRL i zaczęło działać, MRUGA, dziękuje. Pierwszy krok za mną. Czyli jak MCLR nie jest podpięty to chip się całczas resetuje? czy jak?

    Ponieważ pin ten ma domyślnie funkcję RESET i jest wejściem, to należy na nim ustawić jakiś stan, albo programowo, albo rezystorem, lub wręcz podpiąć do Vcc.

    Jednak najlepszym wyjściem jest rezystor 4k7-10k, ponieważ pin ten jest wykorzystywany podczas programowania, a wtedy nie może być podpięty do VCC.

    Nie lekceważ pozostałych pinów zasilania. Zobacz na przykładzie AVRów: http://mikrokontrolery.blogspot.com/2011/04/minimalne-podlaczanie-pinow.html

    Powodzenia! :)
  • #9 10224044
    gabryelski
    Poziom 9  
    Posty: 25
    Temat uważam za rozwiązany, wina leżała w podłączeniu (a raczej nie podłączeniu) MCLR. Teraz wszystko działa.

Podsumowanie tematu

✨ Użytkownik programuje mikrokontroler PIC16F877 w języku C, używając MPLAB v8.76 oraz Hi-Tech PICC. Napotkał problem z migającą diodą LED podłączoną do pinu RB1, która zamiast mrugać, świeciła ciągłym światłem. Po kilku próbach, w tym zmianie opóźnień na pętle, problem nie ustępował. Użytkownik dowiedział się, że brak podłączenia pinu MCLR do Vcc powodował ciągłe resetowanie mikrokontrolera, co uniemożliwiało prawidłowe działanie programu. Po podłączeniu MCLR do Vcc, dioda zaczęła prawidłowo mrugać.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA