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 ustawic/uzyskac transmisje 9600 8E1 w uC 8051 ?

piotr973 16 Cze 2006 13:55 1954 8
REKLAMA
  • #1 2733889
    piotr973
    Poziom 12  
    Posty: 35
    Ocena: 2
    Witam!
    Czy moze ktos wie jak zrobic transmisje w 8051 o parametrach 9600, 8E1, potrzebuje takiej do sterowania urzadzenia po RS485.
    Korzystajac ze sprzetowego UART , wydaje mi sie ze mozna w najlepszym wypadku 8N - uzyskac?

    prosze o jakies sugestie, ewentualnie kawalek kodu w ASM.

    Pozdrawiam.
    Piotr
  • REKLAMA
  • #2 2734293
    And!
    Admin grupy Projektowanie
    Posty: 9061
    Pomógł: 175
    Ocena: 784
    To zależy od częstotliwości rezonatora kwarcowego.

    W sieci są kalkulatory online dające wartości rejestrów. Pozwala to uniknąć pomyłek i zaoszczędzić nieco czasu.
    Poszukaj kalkulatorów podobnych do np. tego:
    http://www.esacademy.com/faq/calc/8951rx2uart.htm
  • #3 2734557
    piotr973
    Poziom 12  
    Posty: 35
    Ocena: 2
    Rezonator 11,059MHz.
    Na obliczenie wartosci jest odpowiedni wzor i to nie jest dla mnie problemem, nie wiem czy sie da zrealizowac transmisje 8E1 (8 bitow danych, z bitem parzystosci i bitem stopu) i na to pytanie wlasnie potrzebuje odpowiedzi.



    Pozdrawiam
  • REKLAMA
  • #4 2734573
    Tdv
    Poziom 34  
    Posty: 2237
    Pomógł: 150
    Ocena: 55
    Oczywiście, że się da.
    Tryb 2 lub 3 portu szeregowego. Bit parzystości (wysyłany jako 9) do wysłania umieszczasz w SCON.3 (TB8), a odczytujesz ten bit przy odbiorze z SCON.2 (RB8).
  • #5 2734628
    piotr973
    Poziom 12  
    Posty: 35
    Ocena: 2
    dzieki za podpowiedz, moze ktos mi wyjasni jak sie liczy bit parzystosci, czy ten bit okresla parzystosc wczesniejszych osmiu bitow?
  • REKLAMA
  • #6 2734647
    Tdv
    Poziom 34  
    Posty: 2237
    Pomógł: 150
    Ocena: 55
    Dokładnie - są dwa rodzaje bitu parzystości - do parzystej liczby jedynek (czyli jeżeli w bajcie jest parzysta liczba jedynek to bit parzystości jest równy zero, jeżeli liczba jedynek w bajcie jest nie parzysta to bit parzystości wynosi 1), czasami stosuje się negację sposobu poprzedniego.
  • REKLAMA
  • #7 2736385
    jony15
    Poziom 25  
    Posty: 604
    Pomógł: 68
    Ocena: 74
    Na parzystość jest prosty sposób: to co do wysłania wpisujesz do A, i sprawdzasz bit PSW.0 ( najmłodszy bit w słowie PSW ) jeśli jest ustawiony to w A jest parzysta liczba jedynek. Co do prędkości 9600 to polecam http://www.keil.com/c51/baudrate.asp. pozdrawiam.
  • #8 2825676
    Nisser
    Poziom 11  
    Posty: 8
    Najprościej to nie sprawdzać ale od razu wstawiać bit psw.0 czyli P do TB8 czyli mov TB8,P przy sprawdzaniu po wpisaniu z sbufa danych do akumulatora, należy porównać RB8 z PSW.0. TB8 i RB8 znajdują się w SCON RB8 - SCON.2, TB8 - SCON.3
  • #9 2826751
    piotr973
    Poziom 12  
    Posty: 35
    Ocena: 2
    Dziekuje wszystkim za pomoc i dobre rady - transmisja dziala poprawnie.

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy realizacji transmisji szeregowej o parametrach 9600 baudów, 8 bitów danych, parzystość (E) i 1 bit stopu (8E1) w mikrokontrolerze 8051, wykorzystywanym do sterowania urządzeniem przez RS485. Potwierdzono, że jest to możliwe przy użyciu sprzętowego UART w trybie 2 lub 3, gdzie bit parzystości jest przesyłany jako 9. bit (TB8) i odczytywany z RB8 w rejestrze SCON. Omówiono sposób obliczania bitu parzystości na podstawie liczby jedynek w bajcie danych oraz wykorzystanie bitu PSW.0 do sprawdzania parzystości. Podano linki do kalkulatorów i narzędzi ułatwiających ustawienie prędkości transmisji i konfigurację rejestrów, m.in. dla rezonatora 11,059 MHz. Wskazano, że bit parzystości należy ustawiać bezpośrednio w TB8 przed wysłaniem, a przy odbiorze porównywać RB8 z PSW.0. Ostatecznie potwierdzono poprawne działanie transmisji 9600 8E1 na 8051.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA