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

Programowy i sprzętowy UART w Bascomie

monokrysztal12 11 Wrz 2011 20:58 3250 6
  • #1 9917481
    monokrysztal12
    Poziom 13  
    Czy można w Bascomie używać w tym samym programie 2 UART-ÓW - jeden programowy, drugi sprzętowy, bo czytałem że są jakieś problemy z tym w Bascomie?

    Np.
    Print "abc" 'sprzętowy wysyła dane
    Print #1 'zaraz programowy wysyła dane

    I czy konfiguracja programowego ma być taka:

    Cytat:
    Open "COM1:" For Binary As #1


    czy taka

    Cytat:
    Open "comd.1:19200,8,n,1" For Output As #2

    tj. czy parametr FOR BINARY czy FOR OUTPUT?

    Program ma tylko wysyłać dane przez programowy do PC.

    Dodano po 6 [minuty]:

    A i czy jak mam jeden sprzętowy, to kanał dla programowego ma być #2 bo sprzętowy zajmuje #1?
    I czy jest to prawidłowe, jak zadeklaruję końcówkę programowego uart (nadaje) jako wyjście, stan początkowy = 0.? A dla sprzętowego końcówka TxD - wyjście, stan spocz. 0, RxD - wejście, w stanie wysokiej impedancji?
  • #2 9917545
    piotrva
    VIP Zasłużony dla elektroda
    Może mały przykład
    
    $baud=9600
    Open "COM1:" For Binary As #1
    Open "comd.1:19200,8,n,1" For Output As #2 
    Open "comd.2:19200,8,n,1" For Input As #3 
    Print #1, "ABC"'literki ABC powędrują na pierwszy kanał, czyli na sprzętowy uart działający z prędkością 9600
    Intput #1, zmienna 'zostanie pobrana wartość zmiennej ze sprzętowego uarta
    Print #2, "DEF"'literki DEF zostaną wysłane na wyjście programowe Tx ustawione na pinie PD1 z baudrate=19200
    Input #3, zmienna ' zostanie pobrana wartość zmiennej z linii programowej Rx ustawionej na pinie PD2 z baudrate=19200
    

    Innymi słowy - pierwsza instrukcja otwiera sprzętowy uart (UART0) w trybie transmisji 2-kierunkowej
    Programowy uart trzeba w Bascom osobno konfigurować jako nadajnik i osobno jako odbiornik - stąd parametr Input lub Output
  • #3 9917561
    monokrysztal12
    Poziom 13  
    Acha, rozumiem. A czy taka konfiguracja UARTU sprzętowego jest konieczna, jeżeli procesor ma tylko jeden? (tj. Open "COM1:" For Binary As #1 ).
  • #4 9918106
    xury
    Specjalista automatyka domowa
    To nie jest konfiguracja sprzętowego UARTu tylko programowego. Sprżetowego nie trzeba konfigurować. Użycie Print,Inkey,Input bez numeru kanału domyślnie używa sprzętowego Uart. Jedynie można sobie ustawić bufor wejściowy i wyjściowy poleceniami Config Serialin/Serialout
  • Pomocny post
    #5 9918364
    piotrva
    VIP Zasłużony dla elektroda
    @xury to polecenie
    Open "COM1:" For Binary As #1
    konfiguruje sprzętowy UART jako kanał. Takie polecenie jest konieczne jeśli używamy programowych UARTów lub obsługi np. kart SD poprzez bibliotekę AVR-Dos, gdyż wtedy powinniśmy też przypisać kanał uartowi sprzętowemu, aby funkcje Print i Input były jednoznacznie identyfikowane z kanałem sprzętowym. Owszem, nie jest to konieczne, ale jest to dobry nawyk, który oszczędzi nam nerwów.
  • Pomocny post
    #6 9918738
    xury
    Specjalista automatyka domowa
    Ja nigdy nie używałem polecenia Open dla sprzętowego UART. Zresztą help Bascoma mówi nam co innego:
    Cytat:
    The default device is COM1 and you don't need to open a channel to use INPUT/OUTPUT on this device.

    Czyli:
    Cytat:
    Domyślne urządzenie to Com1 i nie ma potrzeby otwierania kanału by używać operacji wejścia/wyjścia na nim

    A następnie:
    Cytat:
    With the implementation of the software UART, the compiler must know to which pin/device you will send/receive the data.

    So that is why the OPEN statement must be used. It tells the compiler about the pin you use for the serial input or output and the baud rate you want to use.

    Czyli w moim wolnym tłumaczeniu:
    Cytat:
    Chcąc zastosować programowy UART kompilator musi wiedzieć która końcówka/urządzenie bedzie wysyłać/odbierać dane.
    Więc po to Open musi być użyte, by powiedzieć kompilatorowi, który końcówki będą użyte jako programowy UART oraz jaką chcesz prędkość transmisji.

    Z czego jasno wynika, że Open stosuje się tylko do programowego UARTu.
    Przynajmniej ja tak rozumiem, a że często korzystam z UARTu sprzętowego i nigdy nie musiałem go w ten sposób "otwierać". :)
  • #7 10379292
    monokrysztal12
    Poziom 13  
    Rozumiem. Wszystko działa już OK, zatem temat zamykam.
REKLAMA