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

16F877A-E/P - Błąd weryfikacji IC-Prog i niestabilne działanie diody

pikachu1986 24 Kwi 2009 17:18 2389 19
REKLAMA
  • #1 6452245
    pikachu1986
    Poziom 13  
    Posty: 155
    Ocena: 36
    Witam mam problem z 16F877A-E/P, pierwszy raz bawie się tym prockiem i nie mogę sobie poradzić:) Na próbe napisałem programik do zapalania diody.Kwarc 4Mhz ustawiłem HS ,lvp off, wdt off.Nie mogłem go zaprogramować w IC-Progu podczas weryfikacji wyskakiwał błąd na 0004h. Zmieniłem na XT i zaprogramował się normalnie ale zapala diode jak chce w różnych odstępach czasu. Nie wiem w czym tkwi problem proszę o pomoc.
    Cytat:

    void main() {
    adcon1=7 ;
    PORTD = 0;
    TRISD = 0;

    while(1) {
    PORTd =0xff;
    Delay_ms(1000);
    PORTd =0x00;
    Delay_ms(1000);
    }
    }
  • REKLAMA
  • #2 6452632
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    Od kwarcu programowanie jest zupełnie niezależne, to nie AVR żeby potrzebować kwarcu do programowania. A jak masz ten kwarc podłączony, XT powinno być ok dla 4MHz, a może paluchami dotykasz kwarca?
  • #3 6453465
    pikachu1986
    Poziom 13  
    Posty: 155
    Ocena: 36
    Kwarc mam podłączony do 13 i 14 pinu i przez 22p do masy, reset przez 10k do zasilania. Może to wina programatora? Z drugiej strony weryfikacja przebiega poprawnie. Próbowałem z kwarcem 20Mhz ustawione na HS i nie chciał się zweryfikować raz błąd 0004h a raz 0014h a jak ręcznie przestawie w IC-progu na XT zweryfikuje normalnie ale dioda nie świeci wogóle.
  • REKLAMA
  • Pomocny post
    #4 6453490
    karlos79
    Poziom 33  
    Posty: 1768
    Pomógł: 254
    Ocena: 77
    Witam
    Pozwolę sobie na małą dygresję od tematu
    elektryk napisał:
    to nie AVR żeby potrzebować kwarcu do programowania.

    Chyba nie do końca masz rację, wrzucałem pliki hex do kontrolera, po czym ustawiałem fusy na wewnętrzny generator i wszystko hulało.
    Mówię tu o kontrolerach AVR.
    Pozdrawiam.
  • #5 6453805
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    karlos79 napisał:
    elektryk napisał:
    to nie AVR żeby potrzebować kwarcu do programowania.

    Chyba nie do końca masz rację, wrzucałem pliki hex do kontrolera, po czym ustawiałem fusy na wewnętrzny generator i wszystko hulało.
    Mówię tu o kontrolerach AVR.
    Mea culpa, racja na wbudowanym RC też zadziała. Więc poprawiam swoje zdanie. PIC to nie AVR więc nie wymaga taktowania żeby się dać zaprogramować.

    A co do procesora to czy nie programujesz go w układzie gdzie masz tylko rezystor do Vcc? Czy wybrałeś dobry typ układu z dokładnością do literki na końcu typu?
  • #7 6454496
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    A programator wcześniej testowany? Działa prawidłowo? Czy procesory przechodzą weryfikację?

    Co do typy to /P oznacza typ DIP, a ta literka by sugerowała jakiś dziwny zakres temperatury, producent podaje że w tym miejscu może się pojawić tylko literka I albo brak literki.

    Jeszcze takie pytanko, czemu nie ustawiasz konfiguracji procesora tak żeby kompilator C zapisał ją wewnątrz pliku HEX? Oraz czemu nie ma żadnych dyrektyw w języku C określających częstotliwość zegara, bo funkcja delay_ms() musi skąś sobie wziąć ten parametr.
  • REKLAMA
  • #8 6454602
    pikachu1986
    Poziom 13  
    Posty: 155
    Ocena: 36
    Programator nie był wcześniej testowany ale weryfikacja przebiega prawidłowo. Pisze w mikroC a tam w konfiguracji ustawiam wszystko przy tworzeniu projektu oraz podaje częstotliwość kwarcu. Konfiguracja zapisuje się w pliku HEX bo jak otwieram w icprogu to wszystko jest ustawione tak jak ma być. Wcześniej pisałem na 16f628a i wszystko działało normalnie ale używałem innego programatora. Wczoraj zmieniałem opóżnienia np. na 10s ale dalej świeci jak chce.
  • #9 6454807
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    A masz pod ręką jakiś gotowy generator kwarcowy? Dokładna częstotliwość nie ma znaczenia, jeśli podłączenie go zamiast kwarca ustabilizuje to w jakiś sposób miganie diody LED to masz coś z kwarce albo połączeniami.

    Jeszcze jedna sprawa mi się przypomniała, czy wyłączyłeś w fusach albo zablokowałeś sprzętowo wchodzenie w tryb LVP.
  • REKLAMA
  • #10 6454899
    pikachu1986
    Poziom 13  
    Posty: 155
    Ocena: 36
    Sprawdziłem z kwarcami 4,6,20Mhz na każdym działa inaczej ale nie stabilnie. LVP Off. Może procek jest uszkodzony, nie mam drugiego żeby sprawdzić.
  • #11 6458319
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    pikachu1986 napisał:
    Sprawdziłem z kwarcami 4,6,20Mhz na każdym działa inaczej ale nie stabilnie. LVP Off. Może procek jest uszkodzony, nie mam drugiego żeby sprawdzić.
    Może i jest uszkodzony, ale ja bym obstawiał że to chyba szybciej wina błędnego montażu. Opukaj procesor, obstukaj, zrób program żeby dioda migała szybciej. Sprawdź reset, zasilanie, może BOD resetuje układ, może watchdog.
  • #12 6459177
    pikachu1986
    Poziom 13  
    Posty: 155
    Ocena: 36
    W konfiguracji mam takie możliwości:
    cp all
    cp off
    debug off
    debug on
    wrt off
    wrt 256
    wrt 1fourth
    wrt half
    cdp off
    cdp on
    lvp off
    lvp on
    boden off
    boden on
    pwrte off
    pwrte on
    wdt on
    wdt off
    rc osc
    hs osc
    xt osc
    lp osc
    Domyślnie jest ustawione lvp off ,wdt off, hs osc. Jutro polutuje wszystko od nowa na nowych elementach to dam znać czy coś się zmieniło.
  • #13 6460417
    piti___
    Poziom 23  
    Posty: 623
    Pomógł: 67
    Ocena: 9
    Czy napewno ustawiles fuse bity ? Jeśli oprogramowanie programatora nie wrzucilo fuse bitow, masz nie zaprogramowany bit LVP. W takim przypadku jeśli pin Rb3/PGM wisi w powietrzu to procesor będzie się losowo resetował (wchodził w tryb programowania).
  • Pomocny post
    #14 6460778
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    pikachu1986 napisał:
    Domyślnie jest ustawione lvp off ,wdt off, hs osc.
    Co znaczy "domyślnie"? Przez kogo ustawione?
  • #15 6461310
    pikachu1986
    Poziom 13  
    Posty: 155
    Ocena: 36
    Domyślnie tzn. w konfiguracji daje default i zaznacza mi te trzy pola , pózniej w IC-progu po załadowaniu programu konfiguracja ustawia się tak samo jak zaznaczałem w mikroC czyli jest ok. Dla pewności sprawdzę RB3/PGM ,u mnie w układzie wisi. Jaki stan podać żeby wystartował?
  • Pomocny post
    #16 6461339
    piti___
    Poziom 23  
    Posty: 623
    Pomógł: 67
    Ocena: 9
    Najwazniejsze punkty dotyczące PGM:
    PGM dajesz do masy i koniecznie wylaczasz pullup na tym pinie.

    To enter Programming mode, VDD must be applied
    to the RB3/PGM.

    When using low voltage ICSP programming
    (LVP) and the pull-ups on PORTB
    are enabled, bit 3 in the TRISB register
    must be cleared to disable the pull-up on
    RB3 and ensure the proper operation of
    the device.

    RB3 should not be allowed to float if LVP
    is enabled. An external pull-down device
    should be used to default the device to
    normal operating mode. If RB3 floats
    high, the PIC16F87X device will enter
    Programming mode.
  • #17 6462725
    pikachu1986
    Poziom 13  
    Posty: 155
    Ocena: 36
    Chyba nareszcie udało mi się normalnie uruchomić mój układ;) Wszystko polutowałem na nowych elementach, nowy stabilizator napięcia +kondensatory, kwarc 8,86Mhz bo taki miałem akurat pod ręką i 2x15p .RB3 na początku miałem podłączony do masy ale odłączyłem i też działa normalnie więc problem raczej nie tkwił w LVP tylko w stabilizatorze napięcia. Dziękuje wszystkim pozdrawiam pikachu1986.
  • #18 6835715
    goodbay
    Poziom 12  
    Posty: 28
    Ocena: 3
    Witam.
    Zrobiłem sobie centralkę DCC ze strony http://www.tinet.org/~fmco/nanox_en.html . Po zaprogramowaniu procesora PIC 16F628A programem IcProg mam problem z jego startem. Muszę parę razy wyłączać i załączać zasilanie, żeby procesor wystartował i wtedy centralka działa normalnie. Czy ten procesor ma jakiś reset? A może jest coś nie tak z Fuses. Mam takie ustawienia PWRT ON, BODEN ON, reszta OFF. Z AVR-ami nie miałem nigdy takich problemów.
    Schemat http://www.tinet.org/~fmco/download/NanoX-S88_manual_v3.pdf
    Pozdrawiam
    Marcin
  • #19 6837361
    pikachu1986
    Poziom 13  
    Posty: 155
    Ocena: 36
    Korzystasz z zewnętrznego kwarcu? Sprawdź czy masz podpięty reset do 4 pinu. Może coś nie łączy i raz startuje a raz nie pozdrawiam pikachu1986
  • #20 6847120
    goodbay
    Poziom 12  
    Posty: 28
    Ocena: 3
    Witam
    Problem rozwiązany.
    Okazało się, że coś nie tak było z MAX485 po wymianie na nowy wszystko działa OK.
    Pozdrawiam
    Marcin

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik napotkał problemy z programowaniem i działaniem mikrokontrolera PIC16F877A-E/P. Początkowo występował błąd weryfikacji na adresie 0004h w programie IC-Prog przy ustawieniu oscylatora na HS (4MHz). Zmiana ustawienia na XT pozwoliła zaprogramować układ, ale dioda LED migała niestabilnie. Dyskusja dotyczyła potencjalnych przyczyn, takich jak ustawienia konfiguracyjne (fusy), sposób podłączenia kwarcu (4MHz, 6MHz, 20MHz testowane), działanie programatora (Feng), wpływ kompilatora (mikroC) na konfigurację w pliku HEX, znaczenie liter w oznaczeniu procesora (/E/P), oraz problem związany z pinem PGM (RB3) i trybem niskonapięciowego programowania (LVP). Wskazywano na możliwość losowych resetów układu, jeśli pin RB3/PGM wisi w powietrzu przy włączonym LVP. Po przeprowadzeniu testów z różnymi kwarcami i sprawdzeniu ustawień konfiguracji (LVP Off, WDT Off, HS Osc domyślnie w mikroC i widoczne w IC-Prog), użytkownik podjął decyzję o przelutowaniu układu na nowych elementach. Ostatecznie problem został rozwiązany po zmontowaniu układu od nowa z nowymi elementami, w tym stabilizatorem napięcia, kondensatorami i kwarcem (8.86MHz + 15pF). Użytkownik stwierdził, że przyczyną niestabilnego działania był prawdopodobnie stabilizator napięcia, a problem z LVP/RB3 nie był głównym źródłem usterki.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA