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 zmienić prędkość UART z 9600 na 4800 w trakcie działania? Atmega128

muniek241 25 Lis 2005 12:08 1308 6
REKLAMA
  • #1 2024684
    muniek241
    Poziom 10  
    Posty: 47
    Witam,
    czy jest możliwe zmienienie w trakcie działania programu prędkości UARTA z 9600 na 4800 ? Bo muszę coś takiego wykonać a nie wiem czy to możliwe. Jeśli tak, to jak :-) I jeśli nie, to jak to obejść ?
    Pozdrawiam
    Piotrek
    PS. Procek to atmega128.
    PS2. Srodowisko programistyczne codevision (no ale to najmniej ważne ;-) )
  • REKLAMA
  • #2 2024748
    Masster
    Poziom 32  
    Posty: 1908
    Pomógł: 156
    Ocena: 46
    Co prawda nie wiem jak jest w Atmedze ale w przypadku prostrzych mikrokontrolerów nie widzę przeszkód. Ja bym poprostu załadował nowe wartości do rejestrów konfiguracyjnych i nadawał/odbierał z nową prędkością. Nie wiem dlaczego nie miało by to działać. W końcu to co i jak będzie robił zależy tylko i wyłącznie od Ciebie.
  • REKLAMA
  • #3 2024768
    LuznyTomasz
    Poziom 15  
    Posty: 204
    Pomógł: 13
    Ocena: 1
    Prędkosć BAUD ustalasz w UBRRnL i UBRRnH W zależności od kwarcu i prędkości jaką chcesz uzyskać musisz wpisać tam odpowiednie wartości.
    Np dla kwarcu 8MHz i bitu U2X=0:
    9600 ---> 51
    4800 ---> 103
    dla U2X=1 odpowiednio 103 i 207
    Jak widac liczby te nie są większe od 255 (jeden bajt) więc wpisujesz te liczby tylko do UBRRxL.
    Dla innego kwarcu wpisujesz inne wartości a wszystko możesz sobie przeczytać w dokumentacji (str 196)


    http://www.atmel.com/dyn/resources/prod_documents/doc2467.pdf
  • REKLAMA
  • #4 2024822
    muniek241
    Poziom 10  
    Posty: 47
    OK. Dzięki ! Czyli widzę że to nie problem (a tak się tego bałem ;-) )
    Pozdrawiam
    Piotrek
  • REKLAMA
  • #5 2024983
    genetix
    Poziom 24  
    Posty: 669
    Pomógł: 42
    A rozwiązałeś problem powiadomienia "drugiej" strony o zmianie prędkości transmisji?
  • #6 2026189
    muniek241
    Poziom 10  
    Posty: 47
    Producent rozwiązał :-) Bo druga strona to moduł GPS firmy Motorola, standardowo pracuje z 9600 i komedami motoroli, po presłaniu odpowiedniej komendy przechodzi na 4800 i tryb komend NMEA.
    Pozdrawiam
    Piotrek
  • #7 2026497
    Dexter77
    Poziom 28  
    Posty: 889
    Pomógł: 134
    Ocena: 19
    Nalezy tylko pamietac ze zmiana predkosci moze sie odbyc gdy bufor nadajnika jest pusty. Inaczej nastapia przeklamania. Czesc znaku wyskle sie ze stara predkoscia a czesc z nowa.
    Pozdro
    Dexter

Podsumowanie tematu

LABEL_AI_GENERATED
W trakcie działania programu na mikrokontrolerze Atmega128 można zmienić prędkość UART z 9600 na 4800 bodów poprzez modyfikację rejestrów UBRRnL i UBRRnH, które określają wartość preskalera dla baud rate. Dla kwarcu 8 MHz i bitu U2X=0 wartości te wynoszą odpowiednio 51 dla 9600 i 103 dla 4800. Zmiana prędkości wymaga jednak upewnienia się, że bufor nadajnika jest pusty, aby uniknąć przekłamań transmisji, gdyż części znaku mogłyby być wysłane z różnymi prędkościami. W przypadku komunikacji z modułem GPS firmy Motorola, który standardowo pracuje z 9600 bodów, zmiana prędkości na 4800 jest możliwa po wysłaniu odpowiedniej komendy, co pozwala na przejście do trybu komend NMEA. Dokumentacja Atmegi128 zawiera szczegółowe informacje dotyczące ustawień baud rate i rejestrów UART.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA