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

ATmega8 RS232 błędy przy wysyłaniu większej liczby danych

dawid-ptaszyk 12 Maj 2011 21:44 2071 4
REKLAMA
  • #1 9499695
    dawid-ptaszyk
    Poziom 18  
    Witam

    mam problem z wysyłaniem danych po rs232 między atmega8 i komputerem przez przejściówkę rs232-USB na attiny2313.

    Kwarc zewnętrzny 11059200, prędkość rs 9600.

    Banalny program w Bascom'ie:

    Kod: text
    Zaloguj się, aby zobaczyć kod

    Wszystko działa poprawnie dopóki liczby są mniejsze od 100. Później zaczynają się gubić znaki końca linii, a gdy próbuje wysłać np. napis to mam zwykle tylko 3-4 pierwsze znaki i dalej jest "kaszanka".

    Gdy zwieram przejściówkę to wysyłane dane wracają bez błędu, więc ona jest raczej w porządku.
  • REKLAMA
  • #2 9501194
    Szumlus
    Poziom 17  
    Witam,


    Proponuje koledze sprawdzić układ pod względem elektrycznym tzn. czy nie ma zimnych lutów, czy na pewno układy mają wspólną masę. Jeśli to nie pomoże możliwe że jest gdzieś błąd w konfiguracji programowej Atmegi i transmisja się "rozjeżdża". Procesor może nie trafiać w szczeliny czasowe gdzie powinien próbkować stan linii RX.
    Radze zrobić mały teścik...wysyłaj znaki z Atmegi do przejściówki wtedy zobaczysz czy problem się powtórzy. Jeśli tak to prawdopodobnie błąd konfiguracji Atmegi.


    Pozdrawiam,
    Marcin
  • REKLAMA
  • #3 9501251
    Ture11
    Poziom 39  
    Oczywiście, gdy chcesz wysłać napis, nie stosujesz zmiennej BYTE, prawda?
  • REKLAMA
  • #4 9503510
    dawid-ptaszyk
    Poziom 18  
    Co do prób wysyłania napisów, to były to na pewno łańcuchy znaków String :)

    Zmiana programu na test odbierania przez ATmege8 znaków po RS232:

    Kod: text
    Zaloguj się, aby zobaczyć kod

    Włączona funkcja echo i oto wyniki:

    ?a - wysłanie znaku a i znaku końca linii
    a - poprawna odpowiedz (na lcd to samo)
    ?ab - wysłanie znaku a, b i znaku końca linii
    ab - poprawna odpowiedz (na lcd to samo)
    ?abc - wysłanie znaku a, b, c i znaku końca linii
    abc?abcd - zgubiony znak końca linii (na lcd znaki prawidłowe); wysłanie znaku a, b, c, d i znaku końca linii
    abc - zgubiony znak d, znak końca linii ok (na lcd znaki prawidłowe);
    ?abcde - wysłanie znaku a, b, c, d, e i znaku końca linii
    abcd?abcdef - zgubiony znak e oraz końca linii (na lcd znaki prawidłowe); wysłanie znaku a, b, c, d, e, f i znaku końca linii
    abcd? - zgubiony znak e, f oraz końca linii (na lcd znaki prawidłowe)

    Wniosek:
    Dane dochodzą do ATmegi, echo jest poprawne, próba odesłania danych gdy zawierają więcej niż 2 literki kończy się fiaskiem.

    Test na innym procesorze (ATmega8L) kwarc zmieniony na 4MHz - sytuacja bez zmian. Dodatkowo zauważyłem, że przy określonej liczbie znaków zawsze giną te same (na stałych pozycjach).
  • #5 9505543
    asembler
    Poziom 32  
    Wyglada na to ze masz zle skonigurowany uart oprocz szybkosci jest jeszcze do ustawienia ilosc bitów parztstosc i takie tam....
REKLAMA