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

attiny2313 - jak poprawnie wysyłać dane do PC przez UART?

noel200 29 Kwi 2013 16:46 2727 7
  • #1 12252235
    noel200
    Poziom 26  
    Witam, stoję przed potrzebą wysyłania danych z proca do PC. Zrobiłem sobie kawałek płytki, polutowałem i napisałem kawałek kodu:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Ogólnie rzecz biorą działa. Tymczasowo do testów odbieram to programem realterm, albo comtest.
    Dostaje takie dane:
    1 204 1 2 120 3 3
    Pierwsza cyfra to numer kanału. Druga to jakby końcówka, a trzecia to ilość całości. Przynajmniej tym tokiem myślenia doszedłem do tego co mi się wyświetla.
    Czyli, trzecia cyfra tj. 1*256(pełny bajt)+druga cyfra czyli 204. Daje to nam 460, czyli to co faktycznie powinienem uzyskać. Drugi kanał wygląda tak samo, z trzecim jest gorzej bo jest jedynie numer kanału, a wartość wysłana to zero i się nie wyświetla nic, pomimo że sprawdzając oscyloskopem kresek jest więcej, więc tego zera program na pc nie pokazuje, ale procek coś wysyła.
    Problem mój wygląda następująco. Potrzebuję zrobić takie urządzenie, które będzie próbkować 8 kanałów ADC i przesyłać do pc przez rs232. Muszę jakoś logicznie ułożyć ramkę i ten sprzęt oddać koledze, żeby mi napisał program na pc, który to będzie te dane odbierał i zapisywał do pliku txt. Taki rejestrator.
    Czy da się zrobić, żeby dane były jako jedna cyfra np 460 a nie 204 1 ?
    I czy da się zrobić, żeby zero również się pokazywało? A może znacie jakiś gotowy programik na pc który by to zrobił. Te co mam i co odczytują mają zapis do pliku, ale widzicie, że dane są rozbite i brak jest zera.
    Pozdrawiam
  • #2 12252370
    BlueDraco
    Specjalista - Mikrokontrolery
    Proponuję, aby Kolega najpierw zapoznał się z pojęciami takimi jak "liczba" i "cyfra". Wiedza z pierwszych klas szkoły podstawowej znakomicie ułatwia komunikację techniczną.

    Problem nie leży w danych, a (prawdopodobnie) w konfiguracji terminala. o tym niestety Kolega nie napisał nic - jaki terminal, w jakim trybie.
  • #4 12252453
    BlueDraco
    Specjalista - Mikrokontrolery
    No i co Ci się na tym terminalu nie podoba? Na moje oko wszystko w porządku.
  • #5 12252498
    noel200
    Poziom 26  
    Zmieniłem w programie komendę printbin na print i wyświetlanie w terminalu na ASCII i pokazuje już całkiem nieźle. Jeszcze obok liczb jakieś znaczki występują, ale to zdaje się jest znak końca linii czy coś takiego, bo kiedyś o tym czytałem, ale już nie pamiętam dokładnie.

    Na chwilę obecną zmieniłem kod na:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    W programie comtest z włączoną rejestracją danych do pliku tekstowego wyszło mi, że attiny przesyła do komputera 8 liczb 12-bitowych 28 razy na sekundę. Z programem realterm 22 razy na sekundę, więc od programu i pc dużo tu zależy, ale przechodząc na sprzętowy uart i dokładając max232, zmieniając kwarc na 11,0592Mhz, oraz zmieniając prędkość na 57600 bodów jaką jestem w stanie realnie prędkość osiągnąć?
  • #6 12272247
    noel200
    Poziom 26  
    Zastosowałem nowy układ składający się z procka attiny, max232, wykorzystałem sprzętowy uart, prędkość ustawiona na 57600 8N1. Kwarc jeszcze pozostał 16MHz, bo innym nie dysponuję. Wysyłam ramkę z ośmioma zmiennymi 12 bit, do tego rozdzielone są przecinkami. Korzystając z programu realterm jestem w stanie osiągnąć prędkość 120 ramek na sekundę. Gdy ustawię zapis do pliku, prędkość zwalnia, bo program gdy zapisuje jedną ramkę to następnej nie odbiera. Prędkość jest już całkiem satysfakcjonująca, choć mam nadzieję, że dedykowany program na pc będzie lepiej sobie radził.
    Właściwie to tyle w temacie. Pozdrawiam
  • #7 12274119
    Konto nie istnieje
    Konto nie istnieje  
  • #8 12275899
    noel200
    Poziom 26  
    W programie jeszcze będzie obsługa spi, więc na pewno zwolni, choć w tej chwili przy tej częstotliwości taktowania w symulatorze wychodzi mi, że procek byłby w stanie wysłać ok 500 ramek. Ale na pewno to spadnie i to mocno.
    Od strony PC sytuacja wygląda tak, że w każdym oprogramowaniu, którym dysponuję, jest coś takiego, że prędkość po włączeniu logowania danych do pliku spada dokładnie dwukrotnie. Wygląda, jakby program, gdy odbierze pełną ramkę zapisywał ją do pliku. I to jest jedyna rzecz jaką robi. W związku z tym następna ramka, która jest nadawana jest tracona, więc mam co drugą.
    W każdym bądź razie, jeżeli po docelowym złożeniu tego do kupy prędkość będzie za mała, to spróbuję coś stworzyć w C
REKLAMA