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

AT89C2051 - Sterowanie LED nie działa, brak reakcji na przyciski

fantasta 16 Lut 2005 12:43 5417 41
Najlepsze odpowiedzi

Dlaczego AT89C2051 nie reaguje na przyciski i nie steruje diodami w prostym układzie testowym oraz co sprawdzić, gdy porty od razu wyglądają na stan wysoki?

Najprawdopodobniej problem leżał w zbyt dużej odległości elementów od mikrokontrolera, zwłaszcza kwarcu i kondensatorów — po przeniesieniu kwarcu oraz C bezpośrednio przy podstawce układ zaczął działać poprawnie [#1247667] Sprawdź też, czy pin 10 jest na pewno połączony z masą, bo bez tego układ nie ruszy [#1235234] Reset nie może wisieć w powietrzu; w wątku sugerowano poprawny układ resetu z kondensatorem 1 µF do Vcc i rezystorem 10 kΩ do masy [#1235352] Dla prostego testu można użyć programu, który kopiuje P3 na P1, a jeśli to nadal nie działa, trzeba jeszcze zweryfikować sam generator kwarcowy i montaż pod kątem zwarć/przerw [#1241237]
Wygenerowane przez model językowy.
REKLAMA
  • #1 1234237
    fantasta
    Poziom 29  
    Posty: 1696
    Pomógł: 48
    Ocena: 100
    Witam. Mam problem i ni jak nie moge sobie z nim poradzic. Dostaje powoli szlu :[ Zbudowalem sobie plytke testowa do AT89C2051 czyli na port 1 dolozylem diody z opornikami a na port 3 przelaczniki ktore zwieraja do masy lub daja jedynke bo wejscia sa podciagniete do zasilania poprzez 10k. Probowalem wiele prostych programow i nic nie dziala.

    Nastepnie zrobilem drugi uklad jak na schemacie (schemat i listing programu w linku ponizej) i takze ten sam efekt. Nic nie dziala, nic sie nie swieci. Nieraz zaswieca sie wszystkie segm. przy wlaczeniu a przewaznie nic :/ Uklad na nic nie reaguje. Co mnie dziwi na wszystkich portach oprocz P1.7 jest wg. masy stan wysoki. I takze nie reaguje na zaden impuls z przycisku.

    Co robie zle. Czy te uklady wymagaja jakis specyficznych warunkow ??

    Oto link http://www.mikromax.netlook.pl/modules.php?name=News&file=article&sid=18
  • REKLAMA
  • #2 1234274
    crazy_phisic
    VIP Zasłużony dla elektroda
    Posty: 2244
    Pomógł: 278
    Ocena: 130
    fantasta napisał:

    Nastepnie zrobilem drugi uklad jak na schemacie (schemat i listing programu w linku ponizej) i takze ten sam efekt. Nic nie dziala, nic się nie swieci. Nieraz zaswieca się wszystkie segm. przy wlaczeniu a przewaznie nic :/ Uklad na nic nie reaguje. Co mnie dziwi na wszystkich portach oprocz P1.7 jest wg. masy stan wysoki. I takze nie reaguje na zaden impuls z przycisku.

    Co robie zle. Czy te uklady wymagaja jakis specyficznych warunkow ??

    Oto link http://www.mikromax.netlook.pl/modules.php?name=News&file=article&sid=18


    no coz jak masz stan wysoki to na pewno nie zaswieci... aby segmenty zaswiecily na porcie musi byc stan niski (taki jak zaraz po wlaczeniu procesora).... program jest oki wiec moze masz blad w montazu... Pozdrawiam
  • REKLAMA
  • #3 1234281
    fantasta
    Poziom 29  
    Posty: 1696
    Pomógł: 48
    Ocena: 100
    Montarz jest napewno dobry. Mam dwie plytki, i na dwoch jest tak samo. Sprawdzalem je chyba przez dwa dni i juz nie ma sily. A stan wyskoki jest zaraz po wlaczeniu ukladu. Raz na ruski rok trafi sie ze wlaczy sie niski ale wtedy pala sie wszystkie segmenty :/
  • REKLAMA
  • #4 1234292
    crazy_phisic
    VIP Zasłużony dla elektroda
    Posty: 2244
    Pomógł: 278
    Ocena: 130
    Procesor jest ok?? uruchamiales na nim juz inne uklady??
  • #5 1234309
    fantasta
    Poziom 29  
    Posty: 1696
    Pomógł: 48
    Ocena: 100
    Zadne moje nie dzialaja. Procek jest z kitu Jabel (licznik bodajze) i zostal skasowany i zaladowalem do niego moj program. Probowalem 2 prockow z calkiem nowych nie otwieranych kitow.
  • #6 1234313
    john_t
    Poziom 29  
    Posty: 1070
    Pomógł: 127
    Ocena: 89
    Układ powinien działać.
    Jeśli jest to nowy układ który jeszcze nigdy dobrze nie działał sprawdź obwód na płytce, może jest jakiś błąd lub zwarcie.
    Być może masz uszkodzony procesor lub programator.
    W sprawnym procesorze zaraz po włączeniu wszystkie piny na portach przyjmują domyślnie stan wysoki (oczywiście o ile działający program ich nie zmieni)
    W odróżnieniu do portu P1 piny portu P3 nie muszą być podpinane do zasilania.
  • #7 1234320
    fantasta
    Poziom 29  
    Posty: 1696
    Pomógł: 48
    Ocena: 100
    A po co piny P1 podpinac do zasilania ?? A jak sobie podpiolem wyswietlacz albo diody przez rezystory do do zasilania anody to zle ??
  • #8 1234325
    crazy_phisic
    VIP Zasłużony dla elektroda
    Posty: 2244
    Pomógł: 278
    Ocena: 130
    a jakie masz uklady w programatorze pcf8574 , pcf8574A ??? i jak masz ustawione w programie?? program dziala w symulatorze??


    fantasta napisał:
    A po co piny P1 podpinac do zasilania ?? A jak sobie podpiolem wyswietlacz albo diody przez rezystory do do zasilania anody to zle ??


    bo p1.0 ,p1.1 to wejscia komparatora i nie sa wewnetrznie podciagniete do vcc
  • #9 1234336
    GienekS
    Poziom 32  
    Posty: 1971
    Pomógł: 139
    Ocena: 15
    Jak podwieszasz diody przez opornik do +5V to musisz pamiętać żeby dioda zaświciła to musisz do portu wpisać '0'
    A jak wygląda napięcie na nóżce RESET procka ?
  • #10 1234384
    fantasta
    Poziom 29  
    Posty: 1696
    Pomógł: 48
    Ocena: 100
    Na reset wg. Vcc jest stan niski. Nie uzywam jakis programatorow pod Bascoma. Mam Willema PCB3. W Bascomie kompiluje i tworze HEX`a lub BIN`a. Ale to nie ma roznicy bo program napisany w Turbo Asdemblerze tez nie chce dzialac. Moze mi ktos napisac jakis prosty program za pomoca ktorego mogbym sprawdzic prosto dzialanie plytki ?? Cos w stylu ze jak zwieram np. P3.2 do masy to na P1.5 swieci mi sie dioda czyli pojawia stan niski. Ja juz nie mam sil do napisania takiego trywialnego programu :/
  • #11 1234393
    jaglarz
    Poziom 23  
    Posty: 480
    Pomógł: 58
    Ocena: 47
    fantasta, jakbyś zapisał zawartość twojego układu do pliku *.bin i przysłał go mi? Akurat mam pod ręką 89C2051. Podaj także wartość Twojego R1.

    www.
    Marek Jaglarz
  • #12 1234403
    fantasta
    Poziom 29  
    Posty: 1696
    Pomógł: 48
    Ocena: 100
    Jakbys mogl podac maila byloby latwiej. Na tej stronie ciezko sie polapac i dorwac kontakt :)

    crazy_phisic twoj program takze nie dziala :(
    Sprawdzilem na dwoch ukladach i na dwoch plytkach wyczyszczone do zera procki i napewno sa czyste. Po podlaczeniu do plytki na wszystkich portach od razu usytawiaja sie stany wysokie wg. masy. Mowiliscie ze powinny byc od razu niskie wiec cos jest nie tak. Ale co ?? Moze ten kwarc powinien byc jakis inny. Mam 12Mhz i c1 i c2 po 33 pF
  • #13 1234402
    crazy_phisic
    VIP Zasłużony dla elektroda
    Posty: 2244
    Pomógł: 278
    Ocena: 130
    $Crystal = 12000000
    Dim A As Byte
    Do
    P1 = A
    Incr A
    Wait 1
    loop

    To chyba najprostrze co mozna napisac... mam nadzieje ze nie zrobilem bledu ;)

    Dodano po 2 [godziny] 11 [minuty]:

    1.Programowales juz willemem inne atmele ktore pozniej dzialaly??

    2. Czy program dziala w symulacji programowej??

    3. Czy probowales na innym programatorze ??
  • #14 1234889
    fantasta
    Poziom 29  
    Posty: 1696
    Pomógł: 48
    Ocena: 100
    Mam działający układ licznika zbudowany z użyciem tego procka i dzięki niemu wiem, że mój programator działa bo chyba ze sto razy już kasowałem go i ćwiczyłem różne niedziałające kombinacje ale zawsze na koniec jak wpisałem mu oryginalnego BIN-a to układ startował i liczył.
  • #15 1234953
    crazy_phisic
    VIP Zasłużony dla elektroda
    Posty: 2244
    Pomógł: 278
    Ocena: 130
    no to pozostaje tylko schemat.... podeslij schemat i podumamy dalej ;)
    Pozdrawiam
  • #16 1235215
    fantasta
    Poziom 29  
    Posty: 1696
    Pomógł: 48
    Ocena: 100
    Oki schemat mojej plytki testowej wyglada tak.

    Przycikami zwieram do masy i podaje niski stan w gdy sa otwarte jest wysoki bo sa pociagniete do zasilania przez rezystory.
    Diody powinny sie swiecic gdy podam na nie niski stan.
    Czyli jednym slowem port 3 to przyciski i jakby zadajnik a port 1 to diody i wizualizacja stanow na nim.

    Nie wiem co z resetem ale gdzies widzialem ze jest polaczony kondensatorem do zasilanie wiec tez tak zrobilem i dalem te 4.7u

    Moim zdanie plytka jest ok i taki schemat jest jak najbardziej dobry
    Załączniki:
    • AT89C2051 - Sterowanie LED nie działa, brak reakcji na przyciski Plytka.JPG (53.65 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #17 1235234
    john_t
    Poziom 29  
    Posty: 1070
    Pomógł: 127
    Ocena: 89
    fantasta
    Podepnij pin (10) procka do masy bo jak widzę na Twoim schemacie scalak jej niema i powinno działać.
  • #18 1235320
    h-doc
    Poziom 27  
    Posty: 1208
    Pomógł: 57
    Ocena: 21
    no i nie zostawiaj resetu wiszącego w powietrzu.
  • #19 1235352
    john_t
    Poziom 29  
    Posty: 1070
    Pomógł: 127
    Ocena: 89
    h-doc napisał:
    no i nie zostawiaj resetu wiszącego w powietrzu.

    A jeszcze lepiej reset przez 1µF do +5V i 10kΩ do masy.
    Zapewni to autoreset przy włączaniu (1µF) i odporność na zakłócenia (10kΩ) podczas pracy.
    Rezystory 1K na pinach P3 nie przeszkadzają, ale nie są potrzebne.
  • #20 1236349
    fantasta
    Poziom 29  
    Posty: 1696
    Pomógł: 48
    Ocena: 100
    Cytat:
    fantasta
    Podepnij pin (10) procka do masy bo jak widzę na Twoim schemacie układ scalony jej niema i powinno działać


    Niedopatrzenie w schemacie poprostu. Wiadomo ze masa jest dopieta :)

    Cytat:
    A jeszcze lepiej reset przez 1µF do +5V i 10kΩ do masy


    Tak jak pisalem jest podpiety do Vcc poprzez 4,7uF ale moge sprobowac jeszcze z rezystorem do masy

    Cytat:
    Rezystory 1K na pinach P3 nie przeszkadzają, ale nie są potrzebne.


    Wiem ze nie porzebne ale w celu plytki testowo - edukacyjnej zapewniaja one stan wysoki na pinach portu 3 a po wcisnieciu przyciku jest stan niski

    Wszystkie te problemy niestety nie sa rozwiazaniem mojego problemu :( Nie wiem co jest grane. Moim zdaniem kazdy program napisany pod taka plytke czyli jakis odczyt na porcie 3 i wywsietlanie na porcie 1 powinien dobrze dzialac.
    Zastanawia mnie tez to ze czysty uklad po wlaczeniu ustawia na wszystkich portach stan wysoki wzgledem masy a jak wiekszosc twierdzi powninien byc niski :? Nie wiem co moze to powodowac ...
  • #21 1238409
    kackers
    Poziom 16  
    Posty: 137
    Pomógł: 13
    Ocena: 19
    Napisz coś więcej, np. jakiego kompilatora używasz i z jakimi ustawieniami?
    Czy plik, który wprowadzasz do proca jest napewno kompilowany pod ten typ układu? Może tu tkwi problem... bo skoro proc jest sprawny to nic innego się nie nasuwa. :wink:
  • #22 1238678
    olekewaagata
    Poziom 25  
    Posty: 638
    Pomógł: 64
    Ocena: 28
    fantasta napisał: Zastanawia mnie tez to ze czysty uklad po wlaczeniu ustawia na wszystkich portach stan wysoki wzgledem masy a jak wiekszosc twierdzi powninien byc niski Nie wiem co moze to powodowac ...

    Nie wiem co twierdzi wiekszość ale w chwili resetu na pinach portów tego procka zawsze pojawia sie stan wysoki.
  • REKLAMA
  • #23 1238783
    fantasta
    Poziom 29  
    Posty: 1696
    Pomógł: 48
    Ocena: 100
    Cytat:
    Napisz coś więcej, np. jakiego kompilatora używasz i z jakimi ustawieniami?
    Czy plik, który wprowadzasz do proca jest napewno kompilowany pod ten typ układu?


    Wiec tak:
    1 sytuacja to otwieram BASCOM wpisuje program, kompiluje i utworzone po kompilacji pliki *.BIN lub *.HEX laduje do procka.
    2 sytuacja to otwieram Turbo Asembler wpisuje program i kompiluje, reszta jw.
    Zawsze uzywam ustawien do AT89C2051

    Cytat:
    Nie wiem co twierdzi wiekszość ale w chwili resetu na pinach portów tego procka zawsze pojawia się stan wysoki


    No to ja juz teraz nic nie wiem. Czysty procek laduje na plytke i na wszystkich portach mam stan wysoki. Jedni mowia ze zle a drudzy ze dobrze.
    Ogolnie po zaprogramowaniu ukladu program nie dziala :( Ani jeden ani drugi :/ Moze programy trzeba jakos wystartowac, uruchomic, no nie wiem juz co myslec.
  • #24 1238812
    jaglarz
    Poziom 23  
    Posty: 480
    Pomógł: 58
    Ocena: 47
    olekewaagata dobrze pisze, po restarcie wszystkie porty są w stanie wysokim.
    fantasta czy to co przysłałeś to Twój program?
    Przepraszam, ale muszę go skrytykować.
    Po co używać instrukcji powrotu z przerwań skoro przerwania nie są używane?
    Po co ładować do rejestru liczbę 7F, skoro zaraz po tym do tegoż samego rejestru jest wpisywane 0?
    Z pętli na początku
    clr A
    mov R0<-A
    djnz, R0, #FD
    procesor nigdy nie wyjdzie!
    Na schemacie podanym przez Ciebie w pierwszym poście kondensator przy resecie jest wpięty odwrotnie. Ma być plusem do zasilania.

    Napisz dokładnie co to ma robić, a możnaby taki program napisać.
    Moja sugestia: napisać nowy program.

    www.
    Marek Jaglarz
  • #25 1238835
    h-doc
    Poziom 27  
    Posty: 1208
    Pomógł: 57
    Ocena: 21
    fantasta - obawiam się, że na resecie sam kondensator 4,7uF do Vcc nie wystarczy. Reset jest realizowany stanem wysokim, więc przy normalnej pracy musi być na tej nóżce stan niski. Daj rezystor 100 Ohm do masy.
  • #26 1238869
    jaglarz
    Poziom 23  
    Posty: 480
    Pomógł: 58
    Ocena: 47
    h-doc - nigdy nie stosuję przy resecie rezystora,a zawsze działa.


    www.
    Marek Jaglarz
  • #27 1238881
    fantasta
    Poziom 29  
    Posty: 1696
    Pomógł: 48
    Ocena: 100
    Cytat:
    fantasta - obawiam się, że na resecie sam kondensator 4,7uF do Vcc nie wystarczy. Reset jest realizowany stanem wysokim, więc przy normalnej pracy musi być na tej nóżce stan niski. Daj rezystor 100 Ohm do masy.


    Ehhhhhhhhh...wczesniej ktos pisal ze dac do masy 10k.
    Wiec tak zmiany w schemacie to takie ze do resetu podlaczony jest kondensator 1uF (plusem do nozki 1 czyli reset) i rezystor 10k do masy.

    Cytat:
    fantasta czy to co przysłałeś to Twój program?
    Przepraszam, ale muszę go skrytykować.


    Niestety ale nie, jestem narazie na etapie nauki i stwierdzilem ze musze sobie kupic jakas ksiazke...
    Program ten jest ze strony do ktorej link dalem w pierwszym poscie.
    Jezeli chodzi co program to odpowiem ze byle co. Zaczynam zabawe z uC i poprostu chcialem sprawdzic plytke ktora sam wykonalem. Jak widac ze schematu to na wyjsciach portu 1 sa diody a portu 3 przelaczniki ktorymi zmieniam stany z 1 na 0. Jezeli ktos moze mi napisac lub podac jakis programik ktory napewno dziala i wtedy bede pewny ze wina lezy po stronie sprzetu. Doslownie byle jaki ktory zbiera info z portu 3 a wyswietla jakis wynik na porcie 1. Zamiast diod moge podlaczyc LED 7-segm, nie ma problemu. No juz sam nie wiem. Jakis sumator 2 bitowego kodu BCD odczytywanego z P3.0 i P3.1 pierwsza liczba i P3.2 i P3.3 druga liczba, natomiast wyswietla wynik dziesietny na LCD 7-segm.

    Wszystkie opcje ktore dzialaja na tej plytce dozwolone.
  • #28 1238909
    jaglarz
    Poziom 23  
    Posty: 480
    Pomógł: 58
    Ocena: 47
    Cytat:
    Wiec tak zmiany w schemacie to takie ze do resetu podlaczony jest kondensator 1uF (plusem do nozki 1 czyli reset)

    fantasta - nie przeczytałeś dokładnie mojego postu. Kondensator przy resecie plusem do zasilania!!

    www.
    Marek Jaglarz

    Zaraz będzie program.
  • #29 1238923
    fantasta
    Poziom 29  
    Posty: 1696
    Pomógł: 48
    Ocena: 100
    Oki, nie ma problemu. Zmienie polaryzacja ale wg. mnie i tam nie ma to znaczenia ;)
  • #30 1238997
    jaglarz
    Poziom 23  
    Posty: 480
    Pomógł: 58
    Ocena: 47
    Program pobiera dane z portu P3 i wysyła je na P1.
    Od adresu 000

    85 B0 90
    80 FB

    Gdybyś niedał rady tego wpisać,wyślę plik *.BIN

    Jeśli to nie zadziała, to masz błąd montażowy albo uszkodzony układ (mało prawdopodobne).

    www.jaglarz.com
    Marek Jaglarz

Podsumowanie tematu

✨ Problem dotyczył braku reakcji diod LED i przycisków podłączonych do mikrokontrolera AT89C2051 na własnoręcznie wykonanej płytce testowej. Po podłączeniu diod do portu P1 i przycisków do portu P3, użytkownik zauważył, że po włączeniu układu na wszystkich portach (oprócz P1.7) pojawia się stan wysoki względem masy, co uniemożliwia poprawne świecenie diod i odczyt przycisków. Dyskusja wyjaśniła, że po resecie porty mikrokontrolera faktycznie mają stan wysoki, a diody podłączone do +5V przez rezystory zapalają się przy stanie niskim na porcie. Wskazano na konieczność poprawnego podłączenia pinu RESET z kondensatorem i rezystorem do masy, a także na prawidłowe umieszczenie kwarcu i kondensatorów blisko mikrokontrolera. Użytkownik potwierdził, że problemem była zbyt duża odległość kwarcu i elementów od układu, co powodowało brak pracy generatora i w efekcie brak działania programu. Po poprawieniu montażu i skróceniu połączeń programy, w tym prosty program przesyłający dane z portu P3 na P1, zaczęły działać poprawnie. Wskazano również na możliwe błędy w programowaniu i konieczność weryfikacji poprawności zapisu do mikrokontrolera. Podsumowując, kluczowe dla działania układu było zapewnienie poprawnego sygnału reset, stabilnej pracy generatora kwarcowego oraz prawidłowego montażu elementów blisko mikrokontrolera.
Wygenerowane przez model językowy.
REKLAMA