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

Bascom - jak zmienić prędkość baud z 5 na 10400 przy komunikacji OBD?

Skojon 14 Lip 2015 02:03 1866 11
  • #1 14846625
    Skojon
    Poziom 9  
    Witam, posiadam problem polegający na obsłudze uartu w bascomie. Potrzebuję skomunikować się z portem obd w samochodzie, jednak napotkałem problem przy inicjalizacji połączenia. Potrzebuję wysłać jeden bajt 0x33 przy prędkości baud = 5 (200ms na bit) a następnie nawiązać zwykłą komunikację przy baud = 10400. Problem pojawia się przy próbie zmiany prędkości baud. Próbowałem na wiele sposobów, a także komendy disable serial, jednak bez skutku. Czy mógłby mnie ktoś naprowadzić w jaki sposób mogę to rozwiązać?
  • #2 14846700
    Kuniarz
    Moderator Projektowanie
    Można zmieniać prędkość "w locie", miałem to przetrenowane w jakimś projekcie.

    Tej komendy (parametry przypadkowe) można używać wielokrotnie w programie.

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod
    Pomogłem? Kup mi kawę.
  • #3 14847013
    Konto nie istnieje
    Poziom 1  
  • #4 14847928
    kamyczek
    Poziom 38  
    W każdej wersji da się zmienić prędkość przecież to nic innego tylko wpisanie odpowiedniej wartości do rejestrów i można to zrobić z poziomu bascoma lub wstawki asemblerowej .
  • #5 14847976
    Konto nie istnieje
    Poziom 1  
  • #6 14849005
    kamyczek
    Poziom 38  
    To polecenie konfiguracyjne robi to samo tylko przelicza automatycznie wartość prędkości do zadeklarowanej częstotliwości zegara. Poza tym jeśli już mowa o wysyłaniu wywołania z prędkością 5 bodów nie uzyskasz stosując klasyczny uart i rezonator w MHz. Maksymalna częstotliwość zegarowa dla której osiągniesz "5 baud" wymaga zastosowania rezonatora w praktyce zegarkowego 32,768kHz lub użycia programowego uarta . Takie wywołania zazwyczaj robi się programowo i dopiero po ich realizacji włącza się uarta oczekując na wartość 55h
  • #7 14849127
    Skojon
    Poziom 9  
    Z tym że szukałem długo i nigdzie nie znalazłem sposobu jak włączyć uart z komendy. Wpisanie jakiejkolwiek komendy do obsługi uart ($baud, print itp) gdziekolwiek w kodzie powoduje brak możliwości użycia txd jako normalnego portu.
  • Pomocny post
    #8 14849176
    kamyczek
    Poziom 38  
    I z wielu właśnie takich powodów robi się przesiadkę z bascoma na C lub asemblera . Tu nie ma komendy trzeba zrobić wycieczkę do rejestrów mikrokontrolera i wyłączyć sobie w rejestrach konfiguracyjnych odpowiedzialnych za uarta nadajnik , odbiornik , zmienić prędkość , i wszystko co tego dotyczy i co jest nam potrzebne . Jeśli nie potrafisz wyłączyć uarta z poziomu bascoma podłącz do linii k tranzystor typu BC548 emiterem do masy , kolektorem do K i przez rezystor 1k bazą do wolnego portu i wyślij inicjalizację 5 bodów z takiego portu nie zapominając o odpowiedniej polaryzacji i pozostawieniu portu w stanie niskim ! . To też zadziała bo linia k ma rezystor 470 om do plusa zasilania a układ jedynie zwiera ją przy transmisji do masy podobnie jak to jest w magistrali i2c .
  • #9 14849542
    Konto nie istnieje
    Poziom 1  
  • #10 14849925
    kamyczek
    Poziom 38  
    Bascom to świetne narzędzie do nauki bo szybko widać efekty i łatwo zobaczyć Hello World ;) niestety moim zdaniem nie nadaje się on do pisania złożonych programów bo jego funkcjonalność jest mocno ograniczona i użycie sprowadza się do wstawienia wstawek asemblerowych lub wycieczki do rejestrów . Pomijając to wszystko można jeszcze trafić na jedną dolegliwość tego środowiska mianowicie wykorzystywanie przez makroinstrukcje liczników do generowania opóźnień i takim sposobem jedna taka instrukcja działa a kilka w jednym programie niekoniecznie dobrze .
  • #11 21269509
    grafii1
    Poziom 17  
    wystarczy napisać BAUD=9600 , bez config bo to nie przechodzi , u mnie działa...
  • #12 21269614
    Kuniarz
    Moderator Projektowanie
    Zamykam wykopalisko...
    Pomogłem? Kup mi kawę.
REKLAMA