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

Atmega8 komunikacja z PC przez RS232.

16 Mar 2006 20:02 1250 3
  • Poziom 10  
    Witam.
    Mam problem z ATmega8, tzn chciałbym żeby komunikowała się z pc przez rs232. Dokładniej po to aby uC zbierała informacje od czujników podpiętych do niej i przesyłała do pc za pomocą rs232. Szukałem troche, ale nie przyniosło do oczekiwanych wynikow dlatego pisze tego posta.
    Interesuje mnie głownie strona programowania pod c na uC i na PC.
    POZDRAWIAM
  • Poziom 22  
    Bawiłem się trochę transmisją przez 232 i od strony PC skorzystałem z gotowej klasy (C++) ze strony:
    CodeGuru
    Na pierwszy rzut oka może się wydawac skomplikowane, ale jak się wgryziesz, to da się to strawić. Całkiem fajna pomoc. Ja wprowadziłem tylko nieliczne zmiany i dzięki niej można bezproblemu transmitować nie tylko pojedyńcze bajty, ale także serie danych.

    Jeśli chodzi o uC, to korzystałem z ATmega16 i posiłkowałem się książką wydawnictwa BTC - "Mikrokontrolery AVR ATmega w praktyce". Trzeba było się nieźle nakombinować niestety, dodatkowo szukałem po necie, ale się udało. Stworzyłem bardzo prosty protokolik transmisji, typu:
    - Komp. wysyła bajt (o pewnej umówionej wartości) do uC.
    - Jesli uC rozpozna, że jest to ten ustalony bajt, to go odsyła i czeka na następne dane.
    - PC wysyła 3-bajtowy nagłówek, w którym znajduje się informacja o tym, czy uC ma wysyłać, czy odbierać dane oraz ile tych danych ma być.
    - uC odbiera nagłówek przechodzi odpowiednio do pętli wysyłającej lub odbirającej i wysyła/obiera dokładnie tyle danych ile 'chce' PC.

    Tak w skrócie ja to rozwiązałem, Wymagało to nieco gimnastyki, ale działa pięknie, można z powodzeniem wysyłać nawet kilka KB danych.

    Zacznij najpierw od wysyłania/odbierania pojednynczego bajtu, potem jakaś żonglerka tym bajtem (wysyłamy go do uC i uC po chwili odsyła z powrotem), potem to samo na 2ch bajtach.
    Uwaga powyżej 3-ch bajtów musisz uważać na bufor (bo właśnie mieści tylko 3bajty - w ATmega) i trzeba potem w programie sprawdzać, czy został on już opróżniony i czy jest gotowy do wysyłania/odbierania.

    Tyle ode mnie, powodzenia :)
  • Poziom 10  
    Wielkie dzięki za pomoc;]
    Wiesz narazie raczkuje jesli chodzi o takie zaawansowane programowanie uC
    ale chyba kiedys zrozumie;] Ale chodzi mi jak zmusic ATmega8 żeby wyslalo cos przez rs232 do pc o ile dobrze widze sa tam 2 piny TxD i RxD, jak to wyglada, ze strony połoczenia odpowiednich pinów do kabla i zaprogramowanie uC zeby wysylal informacje do kompa.(w C)
    POZDRAWIAM
  • Poziom 10  
    Czesc nie wiem czy jeszcze Ci to jest potrzebne ale ja sam teraz rozwiazuje podobny temat.
    Jezeli jestes nadal zainteresowany daj znac, napisze cos wiecej. A zeby nie tracic poki co swojego czasu powiem tyle ze potrzebujesz umiescic na plytce uklad MAX232, jest to interfejs dopasowujacy napiecia, wlutowujesz to miedzy mege a gniazdo wyjsciowe na kabel. i Tyle.