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

Źle działający UART. Tiny2313, RS. Nie działa transmisja.

kiler129 17 Mar 2008 15:25 2539 27
REKLAMA
  • #1 4919552
    kiler129
    Poziom 27  
    Posty: 1304
    Pomógł: 12
    Ocena: 80
    A wiec na tiny2313 wysylam "Siema" przez RS.
    Kodzik:

    
    $crystal = 4000000
    $baud = 1200
    Do
    Print "Siema"
    Wait 3
    Loop
    End
    


    I do pc dociera tekst "VKMIOy=" :| I tak wkolo wiec transmisja dzila tylko cos nie dokonca dobrze :D
    Probowalem roznych predkosci transmisji - caly czas tosamo :cry:

    Czy ktos mozewyjasnic przyczyne tego zachowania ?
  • REKLAMA
  • #2 4919899
    johny_w
    Poziom 24  
    Posty: 673
    Pomógł: 80
    Ocena: 63
    Mi to właśnie wygląda na złą prędkość transmisji. Oczywiście na PC ustawiłem taką samą?
    Poza tym w nocie tiny2313 najmniejsza możliwa prędkość to 2400 (tabela na końcu rozdziału USART. Spróbuj zwiększyć prędkość.
  • #3 4920280
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    a masz ustawione dobrze fusebity w procku ???

    napisałeś w programie:
    $crystal = 4000000

    a masz przestawione właśnie fusebity na wewnętrzny oscylator 4MHz albo na zewnętrzny rezonator kwarcowy 4MHz???

    bo jak znam życie, to masz fabrycznie ustawionego na 1MHz i teraz dopiero się okaże, że o taktowaniu procka o ustawieniach fusebitów się jeszcze nie doczytało co?

    poza tym jak już testujesz łączność z PC to ustawiaj sobie prędkość na 9600bps a nie 1200

    oczywiście przy błędnej deklaracji prędkości $crystal i jedno i drugie ci nie pomoże

    pozdrówka
  • #4 4920334
    kiler129
    Poziom 27  
    Posty: 1304
    Pomógł: 12
    Ocena: 80
    Nie no az taki lamer nie jestem :P
    Od poczatku problwalem z 9600 ale nie dizlalo wiec zmienilem na najmniejsza :D
    Fusy sa dobre. Bo caly czas pracuje na tym attiny na 4Mhz (kwarc). Probowalem wlaczyc wewnetrzny oscylator i dzielnie na 8Mhz i przy tym otrzmuje doklendie identyczny wynik :D
    Jesli ustawie inna pradkosc na pc albo schrznie predkosc $crystal to popostu nic sie nie pojawia w terminalu albo pojawiaja sie jakies bzdury.
    A tutaj konsekwentnie co 3 sec pojawia sie ten ciag :|
  • #5 4920455
    dawid512
    Poziom 32  
    Posty: 1439
    Pomógł: 229
    Ocena: 6
    Może byś napisał coś o hardware? Jest taki układzik o nazwie MAX232 bez niego ciezko bedzie sie polaczyc... Co do predkosci to przy 9600 i fusach na 8MHz błąd jest bardzo mały, gdzieś nawet widzialem tabele z błędami.
  • REKLAMA
  • #6 4920474
    kiler129
    Poziom 27  
    Posty: 1304
    Pomógł: 12
    Ocena: 80
    HW to attiny kabelkiem do com :)
    Przy nadawaniu chyba nie potrzeba MAX`a.
    Przy odbieraniu owszem bo popali attiny.
  • #7 4920596
    dawid512
    Poziom 32  
    Posty: 1439
    Pomógł: 229
    Ocena: 6
    Bezposrednio kablem procka i kompa radzilbym nie laczyc. Powiem Ci tak od siebie ze kazdy taki uklad realizuje wlasnie ukladem max232 i nigdy nie mam problemow z komunikacja. Stracisz kilka złotch ale za to komunikacje bedziesz mial z prawdziwego zdarzenia.
  • #8 4921065
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    kiler129 napisał:
    Nie no az taki lamer nie jestem :P


    wcale nie uważałem cię za lamera, poprostu nie podałeś tych informacji w opisie swojego problemu a to bywa jedną z częstszych przyczyn

    ... z drugiej strony piszesz, że:
    Cytat:
    "przy nadawaniu chyba można bez MAX232"

    jak słusznie zauważyłeś "chyba można" jednak nie wiesz za dużo n/t RS232 - to tak dla przypomnienia powiem ci tylko, że wg tego standardu logiczna "1" to +12V natomiast logiczne "0" to -12V. Oczywiście wiadomym jest, że obecne złącza COM w PCtach a szczególnie w notebokach potrafią pracować na nieco niższych napięciach typu +6V do +7V oraz -6V do -7V.

    ale ty gdy łączysz bezpośrednio wyjście procka w standardzie TTL to chyba wiesz co robisz ??? próbujesz jeszcze bardziej od jednej strony ograniczyć to napięcie - bo o ile +5V masz jak w banku przy TTL to chyba rozumiesz, że z tej drugiej strony masz co najniżej 0V zamiast chociaż -5V

    może to coś ci wyjaśni i skłoni jednak do zastosowania prościutkiego MAX232 jak wspominali poprzednicy a wtedy większość twoich podstawowych problemów zniknie
  • #9 4921148
    kiler129
    Poziom 27  
    Posty: 1304
    Pomógł: 12
    Ocena: 80
    Moj laptop (na szcescie?) pracuje na poziomach TTL.
    Na logiczne 0 ma 0V a na 1 ma 5V.
    Wiec problem napiec odpada.
    Nawet w instrukcji lapka widzilem ze jesli podlaczasz urzadzenia nie pracujace w standardzie ttl (czyt. wsyztkie posiadajace osobne zasilnie) musisz uzyc innego portu COM, z przlotka na USB bo inaczj uszkodzisz chipset.
    Problem zasilania samego attiny tez odpada - zasilany jest z usb.
    CHyba jednak znalazlem przyczyne problemu. Gdy to TxD lapka podlacze glosnik i nic nie nadaje co chiwle slysze takie leciutkie slabe pikanie, jakby przerwanie.
    I jak cos nadaje to w tych danych tez to pikanie jest.
    Byc moze ndlatego laptopa zle odbiera moja informacje bo cos ja zakloca w lapku ?
  • #10 4921341
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    tak z ciekawości - skąd wytrzasnąłeś takiego notebooka, który ma złącze RS232 typu DB9 a do tego w standardzie TTL.

    możesz napisać co o za notebook? jaki typ? z chęcią bym sprawdził sobie w necie te ciekawoski o jakich piszesz - to musi być jakiś wyjątek nad wyjątkami

    ... a do tego ... sprawdzanie łącza RS232 "na słuch" poprzez dołączanie głośnika i nasłuchiwanie szumów i trzasków a na dodatek w transmitowanym sygnale hmmmmm no takich technik to w życiu nie widziałem

    .... no ale może czegoś nie wiem a ty miałeś do czynienia z jakąś echolokacją ze statków podowdnych albo za dużo nasłuchiwałeś sygnałów z kosmosu.

    ok a tak na poważnie to daj znać zanim zamkniesz temat co się na końcu okaże, że ci to nie działa

    pozdrawiam
  • REKLAMA
  • #11 4921569
    kiler129
    Poziom 27  
    Posty: 1304
    Pomógł: 12
    Ocena: 80
    Model prototypowy IBM Thinkpda T20. Moze w produkcyjnym jest normlanie? Nie wiem. Wiem ze w prototypie i instukcjie do niego jest napisany taki tekst.
    Co do sluchu to nie powinno byc nic cihego na rs jak nic nie nadaje - logicznie nie ? :)
    Po za tym te piski to nie jest rs bo niezlanei od predkosci sa takie same
  • #12 4921742
    crazy_phisic
    VIP Zasłużony dla elektroda
    Posty: 2244
    Pomógł: 278
    Ocena: 130
    A pomyślałeś o tym że łącząc bezpośrednio uP i PC eliminujesz człon dopasowujący napięcia który dodatkowo "odwraca" sygnał?
  • #13 4921908
    kiler129
    Poziom 27  
    Posty: 1304
    Pomógł: 12
    Ocena: 80
    crazy_phisic napisał:
    A pomyślałeś o tym że łącząc bezpośrednio uP i PC eliminujesz człon dopasowujący napięcia który dodatkowo "odwraca" sygnał?


    Co masz na mysli mowiac odwaraca ?
  • #14 4921926
    tzok
    VIP Zasłużony dla elektroda
    Posty: 38819
    Pomógł: 3175
    Ocena: 6533
    To, że najprawdopodobniej w porcie RS232 twojego laptopa stan niski to 5V, a wysoki 0V.
  • #15 4921927
    crazy_phisic
    VIP Zasłużony dla elektroda
    Posty: 2244
    Pomógł: 278
    Ocena: 130
    Z dokumentacji MAX232...
    Źle działający UART. Tiny2313, RS. Nie działa transmisja.

    Wnioski wyciągnij sam.
  • #16 4922972
    Bigfoot
    Poziom 25  
    Posty: 982
    Pomógł: 74
    Ocena: 13
    mirekk36 napisał:
    to tak dla przypomnienia powiem ci tylko, że wg tego standardu logiczna "1" to +12V natomiast logiczne "0" to -12V.


    Kolego, jak juz uczyc kogos to poprawnie! Jest dokladnie odwrotnie niz mowisz:) W RS232 logiczne "0" to +12V, natomiast logiczne "1" to -12V.


    BF
  • #17 4923017
    Elektrooonik
    Poziom 29  
    Posty: 1212
    Pomógł: 127
    Ocena: 83
    kiler129 napisał:
    Moj laptop (na szcescie?) pracuje na poziomach TTL.
    Na logiczne 0 ma 0V a na 1 ma 5V.

    Czym to pomierzyłeś ? W takim razie ten port w laptopie to nie jest RS232, Specyfikacja napięcia definiuje "1" logiczną jako napięcie -3V do -15V, zaś "0" to napięcie +3V do +15V.

    Jeśli ten port to RS232 to polącz procek z laptopem przez maxa232 pracującego w standardowej aplikacji.

    Dodano po 1 [minuty]:

    dodatkowo sprawdz czy masz te same ustawienia nadawania w procku i kompie: liczba bitow stopu, kontrola parzystosci, liczba bitow danych
  • #18 4923157
    teedd
    Poziom 19  
    Posty: 219
    Pomógł: 24
    Ocena: 2
    Witaj.
    Jeśli już tak bardzo chcesz się komunikować ze swoim lapem bez układu dopasowującego typu MAX232, to też się da - przy pomocy programowego UART-a. Zapoznaj się z instrukcją OPEN w helpie. Jest tam przykład.
    'When you dont want to use a level inverter such as the MAX-232
    'You can specify ,INVERTED :
    'Open "comd.0:300,8,n,1,inverted" For Input As #2
    'Now the logic is inverted and there is no need for a level converter
    'But the distance of the wires must be shorter with this
    

    Ustaw odpowiedni pin, prędkość i oczywiście kierunek transmisji (Output). I już.
    Pozdrowienia - teedd
  • #19 4923165
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    Bigfoot napisał:
    Kolego, jak juz uczyc kogos to poprawnie! Jest dokladnie odwrotnie niz mowisz:) W RS232 logiczne "0" to +12V, natomiast logiczne "1" to -12V.


    odpowiem tym samym - jak już kogoś uczyć kolego Bigfoot to poprawnie! (bo nie jest też prawdziwe stwierdzenie ogólne, które ty napisałeś) dla ścisłości:

    Parametry elektryczne sygnałów
    Napięcia na liniach danych:
    od -15V do -3V : 1 logiczna
    od 3V do 15 V: 0 logiczne

    Napięcia na liniach sterujących:
    od -15V do -3V : 0 logiczne
    od 3V do 15 V: 1 logiczna

    a mi w mojej wypowiedzi chodziło głównie o to, żeby pokazać autorowi o jakim zakresie napięć w ogóle mówimy i czym to się różni od poziomów TTL
  • REKLAMA
  • #20 4923726
    kiler129
    Poziom 27  
    Posty: 1304
    Pomógł: 12
    Ocena: 80
    Dobrze sproboje zaraz z MAX232 bo mam pod reka jedna sztuke.
    Jednak mi sie wydaje ze tu nie o to chodzi.

    p.s. Jako terminal uzywam PuTTY. Terminal w bascomie niestety nei dziala - po odpaleniu wywala blad ze program zostal zamkniety. Probowalem kilku wersji bascoma - wszytkie tak samo.
    Ale moze nawet lepiej ? :) Wole putty.


    >>>EDIT<<<
    Przy max232 nie dziala - cisza na ekrania.
    Przy tranzystorowym konwerterze napiec dziala.
    Nie wiem moze zle ustawielm zworki na ZL11AVR
  • #21 4924829
    gufiak
    Poziom 21  
    Posty: 444
    Pomógł: 15
    Ocena: 2
    mirekk36, tutaj akurat Bigfoot miał rację. Komunikacja odbywa się na liniach danych, a nie liniach sygnałowych. To że mu się odgryzłeś, bo wreszcie zajrzałeś do specyfikacji, nie oznacza, że nie miał on racji. I to co napisał jest bardzo ważne, bo wysyłane dane bez użycia invertera muszą zostać zanegowane przed wysłaniem.

    kiler129, jak masz rozwiązany tranzystorowy konwerter napięć? Bardzo prawdopodobne, że na komputerze otrzymujesz zanegowane dane.
  • #22 4925577
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    qufiak -> czytaj dokładniej zanim coś odpowiesz. Gdzie się doczytałeś, że mówiłem o tym, iż Bigfoot nie miał racji ???? zajrzałem rzeczywiście do dokumentacji i przytoczyłem dokładne dane. Musisz coś zrobić ze sobą bo przewrażliwony jesteś widzę.
  • #23 4925887
    Bigfoot
    Poziom 25  
    Posty: 982
    Pomógł: 74
    Ocena: 13
    Panowie gufiak i mirekk36, nie chodzi o to by wytykac kazdy kazdemu tylko by sie czegos dowiedziec. Ja mowiac -12V wiem, ze tak naprawde to zakres -3 - -15V. Natomiast nie wiedzialem, ze jest roznica miedzy sygnalami na liniach sterujacych. Moge prosic o zrodlo tej informacji?

    BF
  • #24 4926100
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    Bigfoot -> ja przyznam, że też dopiero jak zajrzałem do dokładnego opisu to , no może nie dowiedziałem się o tym ale powiedzmy przypomniałem może sobie .... poprostu na codzień, gdy człowiek działa z tą transmisją i wszystko jest ok - gdy się działa zgodnie ze standardami to się nie zwraca uwagi na takie szczegóły.... (ale od czego jest net gdy się napotka problemy i trzeba na szybko sprawdzić dokładnie co i jak działa)

    ok poniżej link, który akurat znalazłem:

    http://www.fizyka.umk.pl/~ptarg/labview/folie/RS232.pdf


    o jeszcze z innego PDF'a:

    4. Parametry elektryczne sygnałów
    W opisie standardu używane są pojęcia stanów logicznych
    sygnałów sterujących interfejsu : ON i OFF oraz linii danych:
    Mark i Space. ON oznacza stan aktywny , OFF
    nieaktywny sygnału sterującego, Mark odpowiada stanowi Logiczne
    1, a Space stanowi Logiczne 0 przesyłanych danych.
    Przyjęto następujące parametry elektryczne poszczególnych
    stanów linii interfejsu V.24 :

    ON : +3V..+25V
    OFF : -3V..-25V

    Mark : -3V..-25V
    Space: +3V..+25V
  • #25 4926217
    kiler129
    Poziom 27  
    Posty: 1304
    Pomógł: 12
    Ocena: 80
    Ok ale tranzystory to nieeleganckie rozwiazanie :D
    Gdy ustawiam zworki na max232 wtedy rs nie dziala wcle :|
  • #26 4926276
    crazy_phisic
    VIP Zasłużony dla elektroda
    Posty: 2244
    Pomógł: 278
    Ocena: 130
    J5, J6 1-2; J4 2-3.
    Oczywiście poświęciłeś trochę czasu i sprawdziłeś czy przewód jaki masz wpięty do JP7 nie ma zamienionych linii RX i TX?
  • #27 4927347
    kiler129
    Poziom 27  
    Posty: 1304
    Pomógł: 12
    Ocena: 80
    Dokumentacje czytac umiem tylko teraz ktore to jest 1 a ktore 3 :D
    Co do kabla to napewno nie bo poprostu najpierw sprawdzilem dioda gdzie nadaje i podlaczylem kawalkiem kabla.
  • #28 9384686
    mikandrzej12321
    Poziom 12  
    Posty: 85
    Pomógł: 1
    Ocena: 45
    To ja pozwolę sobie odświeżyć temat, jako że mam problem z płytką ZL11AVR i RS-232. Próbuję się połączyć z kompem i nic się nie dzieje. Zworki ustawione tak jak trzeba, kabel jest z przeplotem a nic się nie pokazuje na kompie.

    Dodam, że układ to MAX232N.

    Czy jest w stanie mi ktoś pomóc?

    Dodano po 1 [godziny] 20 [minuty]:

    Na tranzystorach wbudowanych w płytkę transmisja działa, ale tylko w stronę komputera.

Podsumowanie tematu

✨ Problem dotyczy niepoprawnej transmisji UART na mikrokontrolerze ATtiny2313 przy użyciu interfejsu RS232. Autor wysyła ciąg znaków "Siema" z prędkością 1200 bps przy taktowaniu 4 MHz, jednak na komputerze odbierany jest zniekształcony tekst. Dyskusja wskazuje na kilka potencjalnych przyczyn: niezgodność prędkości transmisji, błędne ustawienia fusebitów i taktowania mikrokontrolera, brak konwertera poziomów napięć (np. MAX232) powodujący brak odwrócenia sygnału i nieprawidłowe poziomy napięć RS232 względem TTL. Użytkownik potwierdza poprawne fusebity i taktowanie, a także użycie kabla bezpośrednio łączącego ATtiny z portem COM laptopa, który według niego pracuje na poziomach TTL (0V i 5V). Wskazano, że standard RS232 wymaga napięć od +3V do +15V dla stanu logicznego 0 i od -3V do -15V dla stanu logicznego 1, co różni się od poziomów TTL i wymaga zastosowania układu MAX232 lub innego konwertera. Próby użycia MAX232 nie przyniosły efektu, natomiast konwerter tranzystorowy działa, choć może generować zanegowane dane. Poruszono też temat inwersji sygnału i konieczności dopasowania ustawień transmisji (prędkość, bity stopu, parzystość). Dodatkowo pojawiła się wzmianka o problemach z terminalem Bascom i preferencji używania PuTTY. W podsumowaniu zaleca się stosowanie konwertera poziomów (MAX232) oraz dokładne sprawdzenie konfiguracji sprzętowej i programowej, w tym poprawności połączeń RX/TX i ustawień fusebitów.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA