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

AT90S2313 - uart i HyperTerminal

Mortan1 13 Gru 2008 13:01 3583 20
  • #1 5853322
    Mortan1
    Poziom 14  
    Witam
    Mam problem z połączeniem mikrokontrolera AVR przez złącze RS232. Płytka razem z procesorem zasilana i programowana jest z innego laptopa, natomiast przez złącze uart miała współpracować z innym.
    Po wgraniu przykładowego programu, który wpisane znaki na klawiaturze wyświetlał by w terminalu i na ekranie LCD płytki, mam następujący problem:
    Po wpisaniu literki a - wyświetla się dziwny trójkąt, po k - { itp. Nic nie da się wpisać normalnie. Prawie identycznie dzieje się na wyświetlaczu, z tym że tam pojawiają się jeszcze inne "krzaczki". Co może być tego przeczyną? Próbowałem nie tylko w HyperTerminalu, ale także w terminalu bascoma - to samo.

    Wszystko jest poprawnie ustawione - prędkość 2400, 8, Brak, 1, Brak, TTY.

    Proszę o pomoc
  • #3 5853401
    Mortan1
    Poziom 14  
    Zestaw startowy AVT3500 - kwarc 4,00
  • Pomocny post
    #4 5853434
    mirekk36
    Poziom 42  
    no ok kwarc dla tej prędkości i ustawień powinien być ok. Na tej płytce jednak nie ma prawdziwego konwertera TTL/RS232 jak np MAX232. Są tylko inwerterki sygnału na tranzystorkach. Jeśli coś tam źle podłączyłeś lub nie ustawiłeś odpowiednio zworek to może dlatego masz taki efekt
  • #5 5853465
    Mortan1
    Poziom 14  
    Wszystko wg instrukcji:
    pin 2 - TxD
    pin 3 - RxD
    pin 5 - GND

    Zworki J4, J5 połączone.

    Może być to wina portu COM?
  • #7 5853689
    Mortan1
    Poziom 14  
    Po napisaniu prostego programu:
    
    Dim B As Byte
    Cls
    Lcd "Napisy z peceta"
    Lowerline
    Do : B = Inkey()
         If B > 0 Then
                Print "X " ;
                Lcd Chr(b)
         End If
    Loop Until B = 27
    Cls
    Lcd "Koniec zabawy!"
    End
    


    Z liter prawidłowo działaja tylko (wyświetlają w terminalu gwiazdki) R, P, D, F, X, B. Reszta zwraca jakieś krzaczki.
    Na LCD nic prawidłowo się nie wyświetla.

    Kurde!
  • Pomocny post
    #8 5853715
    mirekk36
    Poziom 42  
    pokaż cały kod - bo zaraz się okaże może, że w kodzie nie zadeklarowałeś procka? może jakiś zły baudrate ?

    chociaż ja osobiście obstawiam na to, że w programie może i masz wszystko dobrze ale jest jakaś lipa z połączeniami.

    Weź może sobie normalnie tak jak się powinno układ MAX232 i przez niego zrób podłączenie do procka a nie przez te tranzystory.
  • #9 5853877
    Mortan1
    Poziom 14  
    Cytat:
    pokaż cały kod - bo zaraz się okaże może, że w kodzie nie zadeklarowałeś procka? może jakiś zły baudrate ?

    To jest cały kod. Procesor mam ustawiony sprzętowo w bascomie.

    Jakie napięcia powinny być na wejścia TxD i RxD? Nie wiem czy to jest normalne:
    TxD - 0V - przy wysyłaniu znaku napięcie ok 0,4V
    RxD - 5,72V

    Dodano po 9 [minuty]:

    Po wpisaniu pokoleji wszystkich znaków z klawiatury
    (qwertyuiop[]asdfghjkl;'\zxcvbnm,./)

    tak to wygląda w hyperterminalu:
    AT90S2313 - uart i HyperTerminal
    A tak na płytce:
    AT90S2313 - uart i HyperTerminal
    Na przycisk ESC również żadnej reakcji.

    Proszę korzystać z przycisku "Dodaj obrazek" - poprawiłem
    [zumek]
  • Pomocny post
    #10 5854001
    elektryk
    Poziom 42  
    A dobrze masz ustawione FUSY w procku? Może on nie jest taktowany kwarcem.
  • Pomocny post
    #11 5854048
    mirekk36
    Poziom 42  
    elektryk -> kolega może nie zauważył, ale to jest stareńki procek, który nie ma wewnętrznego oscylatora i może pracować tylko z zewn kwarcem lub generatorem, dlatego pytałem o niego na początku.

    Mortan1 -> chesz się szybko nauczyć programować i robić coraz mniej błędów w programach a za to więcej działająych układów? .... to zobacz sobie, wszędzie o tym piszą (nie tylko ja) ..... nie korzystaj z ustawień jak to mówisz sprzętowych w Bascomie i wpisuj jasno i wyraźnie w kodzie na początku:

    1. załączenie definicji procka, u ciebie: $regfile = "2313def.dat"
    2. definicja jaka jest częstotliwość taktowania, u ciebie: $crystal = 4000000
    3. prędkość dla RS232, u ciebie: $baud = 2400

    tak samo dla pinów wyświetlacza LCD i tym podobnych, bo bez tego zginiesz chłopie. Już przez to możesz mieć mnóstwo niespodzianek
  • #12 5854158
    Mortan1
    Poziom 14  
    Teraz stała się jeszcze dziwniejsza rzecz, nagle przestał działać wyświetlacz - w pierwszej linijce wyświetlają się kwadraty, natomiast druga jest pusta. Żaden program nie działa, nawet najprostszy:

    
    Do
    Cls
    Lcd "Bascom"
    Loop
    End
    


    Co się mogło stać?
  • Pomocny post
    #13 5854171
    mirekk36
    Poziom 42  
    a czytać umiesz? bo sorry ale coś zaczynam wątpić. Napisałem wcześniej jakie kroki powinieneś poczynić aby zacząć sobie pomagać .... ale widzę, że szkoda gadać bo jak grochem o ścianę
  • Pomocny post
    #14 5854245
    Kris52
    Poziom 22  
    Ja by jeszcze proponował ustawic taka samą prędkość w hyperterminalu i nie zostawiać żadnych ustawień przypadkowi bo na pewno przez przypadek będzie inaczej niż byś chciał.
  • #15 5854266
    Mortan1
    Poziom 14  
    Cytat:
    Ja by jeszcze proponował ustawic taka samą prędkość w hyperterminalu

    Prędkość jest ustawiona taka sama - 2400

    Cytat:
    a czytać umiesz? bo sorry ale coś zaczynam wątpić. Napisałem wcześniej jakie kroki powinieneś poczynić aby zacząć sobie pomagać .... ale widzę, że szkoda gadać bo jak grochem o ścianę

    Czytam uważnie. Chodziło mi raczej o to co mogło być tego przyczyną, że od kilku tygodni nie ma problemu i wyswietlacz działa, a teraz lipa.
    Zaraz spróbuje skonfigurować go programowo, tylko najpierw muszę przeczytać jak to wogóle zrobić.
  • #16 5854304
    mirekk36
    Poziom 42  
    Mortan1 napisał:

    Zaraz spróbuje skonfigurować go programowo, tylko najpierw muszę przeczytać jak to wogóle zrobić.


    ....No i o to chodzi.

    tylko zrób to samo jak pisałem z prockem, taktowaniem, prędkością dla RS'a itp
  • #17 5854351
    Mortan1
    Poziom 14  
    
    $regfile = "2313def.dat"
    $crystal = 4000000
    $baud = 2400
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2
    Cls
    Lcd "bascom"
    Do
    Loop
    End
    


    Jest to samo - kwadraty w pierwszej linijce, w drugiej pusto :(
  • Pomocny post
    #18 5854379
    mirekk36
    Poziom 42  
    ok teraz można analizować ;)

    skoro widzisz kwadraty w pierwszej linijce a w drugiej pusto to na 1000% oznacza tylko, że wyświetlacz nie został prawidłowo zainicjalizowany (programowo oczywiście).... co może być tego powodem?

    1. na pewno nie Bascom - bo w takiej prostej konfiguracji to zawsze ale to zawsze działa chyba, że

    2. sprawdź po trzykroć połączenia wyświetlacza z parametrami Config Lcdpin

    jeśli sprawdzisz - to zobacz czy nie ma jakiegoś fizycznego niekontaktu lub przerwanej ścieżki czy zimnego lutu - bo ten ostatni bywa najgorszy

    rozumiem, że procek się programuje bez żadnego błędu tak?
  • #19 5854433
    Mortan1
    Poziom 14  
    Cytat:
    2. sprawdź po trzykroć połączenia wyświetlacza z parametrami Config Lcdpin

    Tu jest napewno dobrze. Sprawdziłem jeszcze raz.

    Cytat:
    jeśli sprawdzisz - to zobacz czy nie ma jakiegoś fizycznego niekontaktu lub przerwanej ścieżki czy zimnego lutu - bo ten ostatni bywa najgorszy

    Zaraz posprawdzam. Coś się musiało zepsuć, bo dosłownie godzinę temu, z wyświetlaczem było wszystko ok.

    Cytat:
    rozumiem, że procek się programuje bez żadnego błędu tak?

    Tak, bezproblemu.


    AT90S2313 - uart i HyperTerminal

    Dodano po 9 [minuty]:

    Wgrałem taki program
    
    $regfile = "2313def.dat"
    $crystal = 4000000
    $baud = 2400
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2
    
    Do
    Cls
    Lcd "bascom"
    Loop
    End
    


    Potencjometr miałem skręcony na minimum. Podczas sprawdzenia, widzę, że kwadracikai zaczynają migać, po wyregulowaniu w pierwszej linijce wyświetlacza pojawiły się dziwne krzaczki. Po restarcie znowu kwadraciki i nic. Popukałem chwilkę w luty na wyświetlaczu i pojawiły się krzaczki, czyli co to może oznaczać?

    AT90S2313 - uart i HyperTerminal
  • Pomocny post
    #20 5854493
    mirekk36
    Poziom 42  
    hmmm a jeszcze takie jedno kontrolne pytanko, jak zasilasz cały ten układ? skąd bierzesz zasilanie??? bo na fotce jakoś nie widać

    Dodano po 1 [minuty]:

    i spróbuj po wgraniu tego prostego programiku odłączyć programator - zostawiając tylko zasilanie
  • #21 5854694
    Mortan1
    Poziom 14  
    Cytat:
    jak zasilasz cały ten układ? skąd bierzesz zasilanie??? bo na fotce jakoś nie widać

    Z programatora USB.

    Cytat:
    i spróbuj po wgraniu tego prostego programiku odłączyć programator - zostawiając tylko zasilanie

    Po odłączeniu od programatora i podłączeniu pod zasilacz 5V stabilizowany jest to samo.

    Dodano po 8 [minuty]:

    Poprawiłem wszystkie luty wyświetlacza, rozwiązało to problem.

    Czyli wyświetlacz jest już wporządku. Teraz muszę dojść o co chodzi z tym uartem ...

    Dodano po 24 [minuty]:

    Przed chwilą załadowałem program ten sam co wcześniej do współpracy z UART i ..., znowu to samo.
    Przypomniałem sobie jednak o twoich wskazówkach, wklejam ustawienia do programu, ładuje... i niesamowite, ale wszystko zadziałało. WSZYSTKO JEST JAK NALEŻY.

    Bardzo dziękuje za pomoc!
    Proszę uważać przy doborze słów.
    [zumek]
REKLAMA