Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[BASCOM] Dziwny wynik instrukcji PRINT

adam220 29 Maj 2012 13:25 555 0
  • #1 29 Maj 2012 13:25
    adam220
    Poziom 14  

    Witam

    oto prosty kod :

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    który daje nieoczekiwany wynik na terminalu (włączony znacznik czasowy):

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Moje obserwacje:
    - jedyne ustawienie terminala przy którym rozpoznawane są ludzkie znaki to 9600. Tylko przy 9600 rozpoznawane są znaki CR i LF które są rzeczywiście wysyłane z tego kodu.

    - Bity startu, stopu, parzystości ustawiane na terminalu nie wpływają na wyświetlenie odbieranego tekstu.

    - znacznik czasowy świadczy o poprawnych ustawieniach oscylatora (wewnętrznego RC)

    Zauważyłem jeszcze żę
    odbierane "qrstuvwxyp" po heksowemu to 70...79
    a nadawane "123456789" po heksowemu to 30...39
    Jest tu jakieś podobieństwo...
    Proszę o pomoc.



    Po zmianie kodu na $baud = 1200 działa poprawnie.
    Czyli chyba zegar 1MHZ nie gra z 9600. Proszę o sugestię jak ustwić żeby przy tym zegarze było szybciej?

    Dodano po 20 [minuty]:

    Witam,
    odpowiadam sam sobie, dla potomnych:)

    1. Żeby zmniejszyć błąd, można wyregulować takt UARTA wpisując do rejestru atmegi UBRR liczbę wyliczona ze wzoru: N=Fxtal/16f - 1 (część całkowitą tej liczby), gdzie Fxtal to kwarc np 1 000 000, a f to prędkość transmisji w bodach np 4800 bps .

    2. Można eksperymentować. U mnie dla 1200,2400,4800 jest błąd 0,16%
    a przy zmianie na 9600 juz >7%, co jak sie okazuje jest nie do przyjęcia.

    3. Zerowe błędy dla wszystkich typowych transmisji dają kwarce będące wielokrotnością 16x115200Hz.

    pozdrawiam wszystkich.

    0 0