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

ZL2MCS51- bez PC program nie reaguje na przyciski (?)

wielkimechatronik 27 Lut 2009 00:10 1713 7
REKLAMA
  • #1 6210399
    wielkimechatronik
    Poziom 10  
    Posty: 20
    Witam ponownie
    Kolejny dzień i kolejny problem :).
    Z pomocą ekspertów przebrnąłem przez nabardziej grząskie fragmenty mojej aplikacji i wszystko byłoby pięknie, gdyby nie działała ona prawidłowo tylko podczas podłączenia płytki do komputera przez RS232. Co dziwniejsze, żaden z programów (Flip, Keil) nie musi być włączony :|.

    Co rozumiem przez niepoprawne działanie: wyświetlacz pokazuje pierwszy element programu -menu, ale za nic nie chce reagować na wciskane przyciski.
    Same przyciski działają "w miarę" dobrze -topornie, ale po podłączeniu przyłączeniówką portu przycisków z portem diody led, wciśnięcie przycisku powoduje zaświecenie diody.
    Po podłączeniu RSem do komputera, nawet bez wyłączenia/załączenia zasilania, program i wyświetlacz reagują prawidłowo na przyciski.

    Nie mam pojęcia co może być nie tak, przejrzałem całą (skromną bo skromną) dokumentację zestawu, ustawienia kompilatora itp.
    Szukałem odpowiedzialnego za taki stan rzeczy ustawienia zworek i tutaj mam pewnie trop, mianowicie zmiana ustawien #PSEN i #EA (odpowiedzialne za korzystanie z pamięcie zew/wew) powodują zmiany zachowania wyświetlacza.
    Nie do końca rozumiem opisane tam połączenie #PSEN 0| | |NC. Przełączenie na 0 powoduje wyswietlenie paska na ekranie i brak reakcji na cokolwiek.
    EA 1| | |0 ->po przełączeniu na 0 wyswietla pasek na ekranie i powoduje mruganie diod.
    Podłączenie Reset do masy także nic nie zdziałało.

    Ale do brzegu, wygląda na to,że podłączenie do kopmutera uaktywnia klawiaturę na płytce. Tak wyglądają objawy, przyczyn nie znam.
    Może coś przegapiłem, lub zlekcaważyłem?
    Wdzięczny będę za jakąkolwiek sugestię, bo pół dnia zmarnowałem na diagnozowanie usterki -bez skutku.
  • REKLAMA
  • #2 6210578
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    A płytę kupiłeś zmontowaną czy montowałeś samemu?
  • REKLAMA
  • #3 6210600
    wielkimechatronik
    Poziom 10  
    Posty: 20
    Płytka była kupiona gotowa (ledy, LCD, przyciski i cała reszta konfeti). Dostałem ją od promotora, więc trudno mi powiedzieć, czy i jak bardzo była eksploatowana wcześniej :|.
    Myślisz,że może to być skutek usterki na płytce?
  • Pomocny post
    #4 6210686
    piti___
    Poziom 23  
    Posty: 623
    Pomógł: 67
    Ocena: 9
    Wygląda to jak brak masy. Podłączenie płytki do PC łączy jakąś mase i przyciski działają prawidłowo. Sprawdź czy jest masa na przyciskach.
  • #5 6211280
    wielkimechatronik
    Poziom 10  
    Posty: 20
    Damn..brzmiało tak wiarygodnie :)
    Właśnie sprawdziłem masa na przyciskach. Wydaje się być w porządku -po naciśnięciu przycisku napięcie pomiędzy we i wy przycisku spada do 0. Poza tym, LEDy działają prawidłowo- wciśnięcie przycisku powoduje zaświecenie diody led (po odpowiednim połączeniu portów).
    Dziękuję za odzew, jakieś inne pomysły na to diabelstwo?

    DODANO 21:54

    Sprawa zrobiła się jeszcze ciekawsza, bo zagospodarowałem przycisk, który do tej pory chodził "topornie" i nie był brany pod uwagę. Otóż po podłączeniu do PC program zachowuje sie jakby przycsk byl wcisniety non-stop natomiast po odłączeniu od PCta program reaguje poprawnie na wciśniećie przycisku (jest to domyslnie P3.0 odpowiedzialny za RxD, więc możliwe że komputer cos wystawia na tą linię).
    Po podłączeniu (taśmą) pod ten przycisk innego portu (odpowiedzialnego za którykolwiek z pozostałych przycisków) program nie reaguje na wciskanie.
    Po zmianie programowej obsługi przycisku, w dalszym ciągu działa tylko fukcja przypisana do przycisku P3.0, więc błąd w programie raczej odpada.
    Zmiana domyślnego portu przycisków z P3 na P2 i zwieranie wyprowadzeń do masy daje identyczne rezultaty -tylko funkcja przypisana do portu P2.0 jest wywoływana.

    Ma ktoś pomysł,co to może być?
    Może mikrokontroler się był uszkodził?
  • REKLAMA
  • #6 6214669
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    Zmierz napięcia na linii procesora od przycisku, względem masy procesora. Sprawdź czy się zmienia jak naciskasz przycisk.
  • REKLAMA
  • #8 6215044
    wielkimechatronik
    Poziom 10  
    Posty: 20
    AAA! Działa :D
    Ustrojstwo był sabotowane przez PCta. Po podłączeniu pod rsa, prawdopodobnie bootloader sam wykrywa jego obecność i rozpoczyna czytanie jakichś danych. Niechby sobie czytał, sęk w tym,że używa on do tego portu P3.0 (RxD) i zmienia wartości podawane z przycisków do programu.
    Dodatkowo (prawo murphiego) błąd ten nałożył się z moją szczerbatą matematyką, bo przy rozpoznawaniu klawiatury wszystkie wartości odpowiadające za wywołanie funkcji były o jeden mniejsze od prawidłowych. Dlatego po podłączeniu do komputera ustrojstwo działało, a po odłączeniu już nie (choć powinno być na odwrót).
    Jak do tego doszedłem?Ha!
    Kazałem wyrzucać na LCDku symbol odpowiadający numerycznej wartości portu P3 i zwierając odpowiednie porty z igiełek procesora do masy obserwowałem pojawiające się symbole. Mając w ręku dataszita WC1602A znalazłem i porównałem wartości binarne portów z/bez podłączenia. i tadam!
    Aż zjem sobie kawałek czekolady :).

    Dziękuję wszystkim za pomoc i trop.

Podsumowanie tematu

✨ Problem dotyczył nieprawidłowego działania aplikacji na płytce ZL2MCS51, która reagowała na przyciski tylko po podłączeniu do komputera przez RS232, mimo że programy takie jak Flip czy Keil nie były uruchomione. Przyciski fizycznie działały poprawnie, co potwierdziło podłączenie ich do diod LED. Połączenie z komputerem powodowało, że program i wyświetlacz reagowały prawidłowo na przyciski, natomiast bez komputera przyciski nie były wykrywane. Podejrzenie padło na brak masy, jednak pomiary wykazały prawidłowe napięcia i działanie przycisków. Ostatecznie problemem okazało się zakłócenie linii P3.0 (RxD), wykorzystywanej przez bootloader do wykrywania obecności portu RS232, co powodowało ciągłe odczytywanie danych i fałszywe sygnały przycisków. Dodatkowo błąd w obsłudze klawiatury (przesunięcie wartości o jeden) maskował problem. Rozwiązaniem było zrozumienie, że podłączenie do PC aktywuje bootloader, który ingeruje w linię RxD, co wpływa na odczyt przycisków. Diagnoza została potwierdzona przez pomiary napięć i porównanie wartości binarnych portów z dokumentacją wyświetlacza WC1602A.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA