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

AVR AT90S2343: Dziwne znaki na terminalu przy softwareowym UART 2400 bps

JollyRoger 14 Paź 2005 19:55 1281 13
REKLAMA
  • #1 1898887
    JollyRoger
    Poziom 21  
    Posty: 538
    Pomógł: 21
    Ocena: 30
    Witam. Mam procek 2343, który jak wiadomo nie ma sprzętowego UART więc postanowiłem rozwiązać to programowo.
    
    $crystal = 1000000
    Open "comb.3:2400,8,n,1,inverted" For Output As #1
    Do
    Print #1 , "hello"
    Waitms 100
    Loop
    


    Niestety, na terminalu pojawiają się tylko dziwne krzaczki bez względu na użytą prędkośc czy zastosowanie MAX232 (opcja inverted). Czy ktoś ma pomysł jak rozwiązać ten problem?
  • REKLAMA
  • #2 1898933
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    A taktowanie procesora jest ok? Nie znam bascoma ale czemu w Twoim przypadku służy parametr "inverted"?
  • #3 1898952
    JollyRoger
    Poziom 21  
    Posty: 538
    Pomógł: 21
    Ocena: 30
    Procesor ma wbudowany generator RC (1MHZ)
    Opcja inverted służy do tego by nie używać przetwornika typu MAX232 , tylko sygnał mozna odrazu podłączyć do portu COM.
  • REKLAMA
  • #4 1899042
    zerpo
    Poziom 22  
    Posty: 463
    Pomógł: 50
    Ocena: 134
    JollyRoger napisał:
    Procesor ma wbudowany generator RC (1MHZ)
    Opcja inverted służy do tego by nie używać przetwornika typu MAX232 , tylko sygnał mozna odrazu podłączyć do portu COM.

    Nie jestem ekspertem, ale z tego co wiem, to do transmisji potrzebujemy bardziej dokładnej częstotliwości, niż mało dokładny wewnetrzny rezonator RC... To może być jeden problem.
    Drugi, to MAX232 musi być, bo z PCta, z portu COM mamy napięcie ±12V, a procek na takich napięciach nie chodzi. Opcja inverted wątpie zeby coś zdziałała, nie znam co prawda BASCOMa, ale ta opcja służy do czegoś innego, w przypadkach, gdy sygnał wyjściowy jest negowany...
  • #5 1899081
    JollyRoger
    Poziom 21  
    Posty: 538
    Pomógł: 21
    Ocena: 30
    Jeżeli chodzi o opcję INVERTED:
    Cytat:

    When you dont want to use a level inverter such as the MAX-232
    You can specify ,INVERTED

    A co dziwniejsze z ukłądem MAX232 (no i bez tej opcji) też występuja krzaczki i to dokładnie takie same :).

    Jeżeli chodzi o oscylator RC to cóż.. muszę się przyznać że troche mogłem przegżać procesorek podczas lutowania :/ więc może się zupełnie rozregulował. Czy istnieje zatem inny sposób wyprowadzenia danych z takiego procesora? Czy warto samemu napisać jakiś prosty protokół transmisji?
  • #6 1899262
    Dexter77
    Poziom 28  
    Posty: 889
    Pomógł: 134
    Ocena: 19
    Do podlaczenia z PC-tem musisz uzyc MAX-a Ta opcja sluzy prawdopodobnie do tego zeby polaczyc dwa procesory na krotkiej odleglosci bez konwersji napiec. Gdzies na elektrodzie placze sie schemat prostego konwertera na tranzystorach, w sam raz do zamontowania w obudowie wtyczki DB9.
    Pozdro
    Dexter
  • REKLAMA
  • #7 1899496
    JollyRoger
    Poziom 21  
    Posty: 538
    Pomógł: 21
    Ocena: 30
    Mam zmontowany konwerter na MAX232, ale jak już wcześniej pisałem problem nadal występuje.
  • #8 1899844
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    JollyRoger napisał:
    Mam zmontowany konwerter na MAX232, ale jak już wcześniej pisałem problem nadal występuje.
    No to pozostaje zobaczyć oscyloskopem jak wygląda przebieg.
  • REKLAMA
  • #9 1899848
    McRancor
    VIP Zasłużony dla elektroda
    Posty: 5326
    Pomógł: 479
    Ocena: 124
    Wykalibruj porządnie wewnętrzny zegarek, bo takie głupoty to właśnie jego zasługa.
  • #10 1900027
    JollyRoger
    Poziom 21  
    Posty: 538
    Pomógł: 21
    Ocena: 30
    McRancor napisał:
    Wykalibruj porządnie wewnętrzny zegarek, bo takie głupoty to właśnie jego zasługa.


    Czy szanowny kolega moze powiedziec jak? :D
  • #11 1900179
    McRancor
    VIP Zasłużony dla elektroda
    Posty: 5326
    Pomógł: 479
    Ocena: 124
    Wbij program, który zapala i gasi diodę co kilka sekund, po wysłaniu np. 1000bajtów, wtedy zobaczysz w którą stronę ucieka czas > dioda miga za szybko, trzeba zwiększyć długość pętli opóźniającej generującej baudrate, za wolno, to trzeba skrócić itd. potem w celu uzyskania precyzji zwiększasz liczbe bajtów tak żeby dioda migała co 10sek i korygujesz precyzyjnie pętle.

    Obserwacja zegarek + oko przy 10 sek powinna ustalić na tyle dobrą dokładność, że transmisja się nie będzie sypać.

    Kiedyś męczyłem podobnego proca i okazało się że wewnętrzny RC śmiga mi na 1,2Mhz
  • #12 1902722
    JollyRoger
    Poziom 21  
    Posty: 538
    Pomógł: 21
    Ocena: 30
    Niestety piszę w Bascomie i nie mam dojścia do pętli opóźniającej, jedyne czym dosyponuje to polecenie "Print" ;) W nowszych bascomach nie ma zmiennych systemowych odpowiedzialnych za prędkość transmisji.
  • Pomocny post
    #13 1903254
    McRancor
    VIP Zasłużony dla elektroda
    Posty: 5326
    Pomógł: 479
    Ocena: 124
    Reguluj prędkość poleceniem $crystal

Podsumowanie tematu

✨ Problem dotyczył transmisji szeregowej programowej (software UART) na mikrokontrolerze AVR AT90S2343, który nie posiada sprzętowego UART. Użytkownik próbował komunikować się z terminalem przy prędkości 2400 bps, stosując wewnętrzny oscylator RC 1 MHz oraz opcję "inverted" w Bascomie, aby uniknąć użycia konwertera MAX232. Na terminalu pojawiały się jednak nieczytelne znaki. W dyskusji zwrócono uwagę na niedokładność wewnętrznego oscylatora RC, konieczność stosowania konwertera napięć MAX232 do komunikacji z portem COM komputera oraz na prawidłową kalibrację częstotliwości taktowania procesora. Ostatecznie rozwiązaniem okazała się korekta wartości $crystal w Bascomie z 1 MHz na 1,1 MHz, co poprawiło synchronizację i umożliwiło poprawną transmisję danych. Zalecano także użycie oscyloskopu do analizy sygnału oraz kalibrację pętli opóźniającej generującej baudrate, jednak w Bascomie autor miał ograniczone możliwości ingerencji w tę pętlę.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA