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

Dlaczego UART z kwarcem 11059200 nie działa poniżej 2400 baud w BASCOM?

PiotrLotnik 06 Gru 2005 11:46 2197 5
REKLAMA
  • #1 2058386
    PiotrLotnik
    Poziom 15  
    Posty: 207
    Pomógł: 2
    Ocena: 2
    Witam.
    Mam kwarc 11059200 na M32
    Odczytuje dane z PC przez com1 i jak ustawie transmisje
    $Baud = 2400 lub większą to dane są odczytywane.
    Natomias jak ustawie
    $Baud mniejszy niż 2400 np $baud = 300 to nic sie nie odczytuje.
    Oczywiście zmnieniam prędkość transmisji na PC.
    Jeśli przestawie M32 na 1000000 to na $Baud = 300 dane są odczytywane.

    Dlaczego przy z kwarcem 11059200 nie mogę ustawić transmisji na mniejszą niż 2400, czy to wina Bascoma i czy da sie to obejść.

    Dzięki za odpoweidz.
    Pozdrawiam
  • REKLAMA
  • #2 2058563
    hunterhouse
    Poziom 26  
    Posty: 893
    Pomógł: 84
    Ocena: 3
    dokładnie ci teraz nie powiem ale są możliwe 2 problemy. albo przy 300baud'ach transmisja ma dużo błędów albo przy częstotliwości 11059200 kończa sie możliwości dzielnika częstotliwości.
    ale wydaje mi sie ze ta dróga możliwość jest bardziej prawdopodobna
  • REKLAMA
  • #3 2058690
    maxiu25
    Poziom 16  
    Posty: 190
    Pomógł: 16
    Ocena: 3
    niestety ten kwarc nie pozwala na prace wolniejszą niz 2400 choc w jakieś notce widziałem ze najmniejszą czestotliwoscia przesyłu danych jest 4800
    jak chcesz wolniejszą transnisje moze zmniejszysz kwarc pozatym im mmniejszy kwarc tym mniejszy pobór prądu
  • REKLAMA
  • #4 2059906
    jony15
    Poziom 25  
    Posty: 604
    Pomógł: 68
    Ocena: 74
    co sie nie da. na 11059200 nawet 150b/s sie da zrobić. http://www.keil.com/c51/baudrate.asp pierwsze pole 11.059200 ostatnie pole 300, pozdrawiam. p.s. nie wiem jak to sie przekłada na bascoma.
  • REKLAMA
  • #5 2258680
    PiotrLotnik
    Poziom 15  
    Posty: 207
    Pomógł: 2
    Ocena: 2
    Na wewnętrznym kwarcu 8MHz transmisja przy użyciu sprzętowego UART nie może być wieksza niż 2400
  • #6 2259502
    szymtro
    Poziom 30  
    Posty: 1421
    Pomógł: 101
    Ocena: 59
    Mega 8, kwarc 14745600 i transmisja 1200 bez problemu.
    BAscom ze standardowymi komendami ni ebędzie tego potrafił.

    I to jest kolejne ograniczenie ale da sie je obejść.
    W nocie katalogowej do ustalania prędkości są dwa rejestry: (UBRRL i UBRRH).
    Bascom używa tylko UBRRL (dlatego że dostęp do UBRRH jest bardziej skomplikowany).
    To znaczy że transmisja zadziałą jak wartość wyliczona będzie mniejsza niz 255 (i tu właśnie dlatego to ograniczenie do jednego bajtu)

    Da sie to obejść ale wykasuj linię $baud=....

    i zacznij ustawiać rejestry ręcznie.

    A wymysliłem że jeżeli będziesz używał print to i tak pewnie nie zadziała bo nikt nie wie w którym miejscu bascom nadpisze rejestr UBRR.
    Pozostaje tylko ustawić cała transmisje ręcznie (w asm bascoma albo tylko sterujac rejestrami).
    Ubrrl = &HFF                                                '1200 dla kwarcu 14745600
    'Ubrrl = &H7F                                                '2400 dla kwarcu 14745600
    'Ubrrl = 191                                                 '4800 dla kwarcu 14745600
    'Ubrrl = 95                                                  '9600 dla kwarcu 14745600
    Reset Ucsrc.7                                               'wybierz ubrrh zamiast ucsrc
    Ubrrh = 2                                                   '1200 dla kwarcu 14745600
    'Ubrrh = 1                                                   '2400 dla kwarcu 14745600
    'Ubrrh = 0                                                   '>2400 dla kwarcu 14745600
    Set Ucsrc.7                                                 'wybierz spowrotem ucsrc
    Ucsrc = &B10000110                                          '8 bit no parity 1 stop bit
    Ucsrb = &B10010000                                          'zalaczenie rxc i rxen
    

    A i jeszcze jedno: w przypadku M8 rejestr UBRR jest 12 bitowy wiec napewno da sie wyciągnać transmisje 150bps
REKLAMA