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

Jak skomunikować AT89S52 z komputerem przez RS232? Problemy z MAX232

vktgz 17 Wrz 2005 18:41 2001 9
REKLAMA
  • #1 1826642
    vktgz
    Poziom 11  
    Posty: 8
    Usiłuję skomunikować AT89S52 z kompem przez RS232. Walczę z tym już 3 miechy i mam dość. Wypróbowałem już chyba wszystkie sztuczki. Ale po kolei:

    - kwarc 22.118.400 - z dwoma kondensatorami 22pF. Stabilny, działa, programik migający diodą co sekundę śmiga aż miło.

    - kanał transmisyjny - wyjąłem procka, zwarłem w podstawce linie RxD i TxD, odpalam na kompie terminal i śmiga jak trzeba, terminal odbiera to co wysłał. Wychodziłoby że MAX232 działa jak trzeba.

    - to samo co przed chwilą ale z drugiej strony. Wgrywam w procka program który wysyła bajt, odbiera go i sprawdza czy dostał to samo (sygnalizacja diodkami). Wyciągam z kompa wtyczke, zwieram linie RxD i TxD i zonk - nie działa. Zwieram te same linie na płytce, tuż za MAXem patrząc od strony procka - dalej nic. Wyciągam MAXa, zwieram linie w podstawce od strony procka i ... działa.

    Jakieś pomysły co z tym zrobić ?? MAX232 działa jak trzeba, napięcia po obu stronach MAXa są zawsze poprawne, kondensatory wokół MAXa polutowane są jak trzeba, użyłem tantali 1uF, aż za dobrych. Procek wydaje się w pełni sprawny, programuje się jak trzeba i wszystkie programy działają poprawnie, UART w procku też niby działa bo w końcu po zwarciu linii bez MAXa dane odebrał. Wszelkie próby dogadania się przy różnych prędkościach transmisji (wielokrotnie przeliczanych) kończą się zawsze tym samym - komp odbiera jeden bajt w momencie włączenia zasilania na płytce a potem cisza. Wymieniałem też procka, procek kolegi zachowuje się tak samo.
  • REKLAMA
  • #2 1826782
    RoBoS
    Poziom 15  
    Posty: 173
    Pomógł: 14
    Ocena: 1
    Wrzuć przykładowy programik.. może to pomoże.
  • REKLAMA
  • #3 1826860
    jony15
    Poziom 25  
    Posty: 604
    Pomógł: 68
    Ocena: 74
    na dzien dobry podmien MAX-a. daj z dodatnia szyna maxa dławik 10uh i lizaczka 100n na samym maxie. jak nie pomoże to bedziemy dalej szukac ( cudów nie ma ) pozdrawiam. acha jak by ci sie chcialo podeslij schemat maxa z najblizsza okolicą.
  • REKLAMA
  • #4 1827348
    hunterhouse
    Poziom 26  
    Posty: 893
    Pomógł: 84
    Ocena: 3
    sprawdz jeszcze raz jak podłączyłeś uP z maxem.
    w twoim przypadku wydaje mi się ze to może być to.


    mam zato jeszce jedno pytanie bo nie jestem pewny.
    jeśli łącze 2 avr'y przez uart to rx i tx łącze na krzyż??
    tak mi się wydaje ale złożyłem układ i coś mi się nie chce zkomunikować???
  • #5 1827765
    muminek
    Poziom 16  
    Posty: 243
    Pomógł: 9
    Ocena: 10
    Niektóre systemy mikroprocesorowe wymagają do komunikacji kabla nul-modem, nie działają na kablach RS 1->1. To tylko taka sugestia.
  • #6 1827841
    vktgz
    Poziom 11  
    Posty: 8
    Załączam schemat. Połączenia przerwane (na czerwono) skopiowałem z jakiegoś innego projektu (pozostałość po eksperymentach). Juz ich nie ma (ale mogą szybko wrócić :P ). Piny gniazdka RS232 są podpięte: 2-RxD, 3-TxD, 4-GND. 1 już nie używana (była do CTS). Pozostałe są zwarte: DTR-DSR-CD oraz CTS-RTS.

    jony15: o podmianie MAXa nie pomyślałem, zrobi sie jak dorwe nowego. Reszty nie bałdzo zrozumiałem - co to "lizaczek" ??
    Załączniki:
    • Jak skomunikować AT89S52 z komputerem przez RS232? Problemy z MAX232 rpw-rs.gif (64.91 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #7 1828047
    jony15
    Poziom 25  
    Posty: 604
    Pomógł: 68
    Ocena: 74
    lizaczek - kondensator ceramiczny. na dzien dobry ( jeszcze przed zmiana maxa ) podmien elki przy maxie na 10u i przy zasilaniu daj 47u + 100n ceramik. pozdrawiam
  • #8 1828799
    Zaquadnik
    Poziom 27  
    Posty: 998
    Pomógł: 103
    Ocena: 25
    Cytat:

    mam zato jeszce jedno pytanie bo nie jestem pewny.
    jeśli łącze 2 avr'y przez uart to rx i tx łącze na krzyż??
    tak mi się wydaje ale złożyłem układ i coś mi się nie chce zkomunikować???



    Tak, należy skrzyżować linie RxD i TxD. Ja tak łączyłem AT89C2051.
    A jeśli nie działa to sprawdź czy prędkości bodowe są identyczne na obu prockach. Rozumiem, że komunikacje realizujesz przy pomocy przerwań?
    Pozdrawiam
  • #9 1830560
    hunterhouse
    Poziom 26  
    Posty: 893
    Pomógł: 84
    Ocena: 3
    dobra ja już sobie poradziłem.
    problem był z tym że jeden z procków jest dość mocno zajęty (obsługuje złożone przerwanie i dane przychodzące zbyt szybko niebyły odbierane tylko pokrywane przez następne).

    mój problem rozwiązany :)
  • #10 1831419
    vktgz
    Poziom 11  
    Posty: 8
    Działa !! :D W życiu bym nie pomyślał że to wina MAXa. Wymieniłem na nowego i śmiga.

Podsumowanie tematu

✨ Problem dotyczył komunikacji mikrokontrolera AT89S52 z komputerem przez interfejs RS232 z użyciem układu MAX232. Układ kwarcowy 22.1184 MHz działał poprawnie, a testy linii RxD i TxD bezpośrednio na komputerze potwierdziły prawidłowe działanie MAX232. Jednak po podłączeniu mikrokontrolera i próbie komunikacji z wykorzystaniem MAX232 transmisja nie działała. Sprawdzenie połączeń, kondensatorów i napięć wokół MAX232 nie wykazało błędów. Sugerowano wymianę układu MAX232 oraz dodanie dławika 10 µH i kondensatorów ceramicznych (tzw. "lizaczek" 100 nF) dla stabilizacji. Zwrócono uwagę na konieczność skrzyżowania linii RxD i TxD oraz zgodność prędkości transmisji. Ostatecznie problem rozwiązała wymiana układu MAX232 na nowy egzemplarz, co przywróciło poprawną komunikację. Dodatkowo zwrócono uwagę, że przeciążenie mikrokontrolera obsługą przerwań mogło powodować utratę danych.
Wygenerowane przez model językowy.
REKLAMA