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

Jak przesłać tekst z terminala Linux do Atmega32 przez USBasp?

Nevasith 28 Cze 2010 02:05 2881 10
REKLAMA
  • #1 8238696
    Nevasith
    Poziom 11  
    Posty: 19
    Posiadam laptopa bez portu równoległego, ale z portami USB, oraz sprawnie działający programator USBasp. Chciałbym moc przesyłać tekst z terminala do wyświetlacza podłączonego do atmegi. Z tego co wyczytałem na necie wychodzi, ze potrzebny byłby mi jakiś dodatkowy układ (np FT232RL), zebybrak opcji zmian w to co trzeba w slowniku zrobić przejście USB - RS232. Na chwile obecna chciałbym przesłać chociaż pojedynczy znak do atmegi, docelowo teksty i w miarę możliwości komendy.
    Czy jest możliwe bezpośrednie komunikowanie sie z atmega przy użyciu USBasp - bez składania dodatkowej przejściowi. Po podłączeniu do USB, programator identyfikuje sie jako usbasp wiec pewnie sam nie jest przelotka zadnego brak opcji zmian w to co trzeba w slowniku rodzaju...

    1) Jakie kroki musze podjac i na co zwrócić uwagę zeby taka komunikacja była możliwa.
    2) Co i gdzie przeczytać zeby wiedzieć jak taka komunikacja działa
    Dosc istotne jest, ze używam linuxa i bardzo chętnie poznałbym wrazenia bardziej doświadczonych użytkownikowi systemu spod znaku pingwina.

    Proszę poprawić pisownię.
    Robak

    dodałem spacje i przecinki, polskich znaków nie posiadam, ale wierze, ze srednio inteligentny człowiek domyśli sie co znaczy np. "moze" Co moglem zmienic wbudowana korekta pisowni to zmienilem
  • REKLAMA
  • #2 8238991
    arrevalk
    Poziom 25  
    Posty: 450
    Pomógł: 94
    Ocena: 7
    Po podłączeniu jakiegokolwiek konwertera usb<->rs232 w katalogu /dev powinien pojawić się wpis ttyUSBx (gdzie x jest liczbą od 0 w górę). Obsługuje się go tak samo jak standardowe porty szeregowe(/dev/ttyx) (google: "serial port programming linux").

    Jeżeli taki wpis się nie pojawia to można sprawdzić czy system wykrył konwerter, poprzez wpisanie w konsoli polecenia "dmesg" (bez cudzysłowów, jest to polecenie które wyświetla komunikaty urządzeń). Ostatnie linijki powinny zawierać komunikaty związane z konwerterem. Jeżeli brak jest w nich czegokolwiek związanego z USB to znaczy że mamy problem sprzętowy, natomiast gdy mamy tylko ogólne komunikaty USB (wykryte usb ale nie zidentyfikowane) to problem ze sterownikiem.

    Na szczęście większość współczesnych dystrybucji ma w standardzie odpowiednie biblioteki do większości konwerterów (na pewno dla tych produkcji FTDI oraz Profilic)
  • #3 8239128
    xury
    Specjalista automatyka domowa
    Posty: 7085
    Pomógł: 878
    Ocena: 1498
    Program do obsługi portów w linuxie to np. minicom.
    Po podłączeniu powinno pojawić się nowe urządzenie jak pisze kolega powyżej np. /dev/ttyUSB0
    teraz wystarczy skonfigurować minicom'a na ten port i zewrzeć pin nr 2 i 3 na wyjściu portu rs232 (lub rx i tx na innym kablu z sygnałami ttl) po napisaniu czegokolwiek w minicomie powinno się wyświetlić to co piszesz.

    Co do kabli to bardzo dobrze nadają się do tego celu kable USB do telefonów komórkowych takich jak Sony-Ericsson T68i, Nokia DKU-5
    Siemens C35i itp. W nich wystarczy odciąć wtyczkę od telefonu, i podpiąć się pod UART Atmegi.
  • REKLAMA
  • #4 8239347
    shg
    Poziom 35  
    Posty: 2289
    Pomógł: 339
    Ocena: 135
    Picocom moim zdaniem lepszy, prostszy, bez zbędnych fajerwerków, a do komunikacji w zupełności wystarczy.

    Zamiast ATmega32 proponuję ATmega32U4, cena nawet niższa (a już na pewno taniej niż ATmega + FT232), a nie potrzeba dodatkowego konwertera USB<->port szeregowy, bo ten mikrokontroler ma wbudowany interfejs USB. Nie wiem tylko czy są w tej chwili dostępne, bo z tego co widzę, to były tylko w seguro.pl, a teraz nie wyświetla się stan magazynowy, jak się pojawiły to znikały całkiem szybko. Interfejs ten można oprogramować tak, żeby udawał port szeregowy (CDC). Producent dostarcza gotowy kod, który chyba nawet się kompiluje w avr-gcc (czy WinAVR), ale tego akurat nie sprawdzałem.
    Literatura na temat komunikacji po USB: http://www.usb.org/
    Na początek "USB in a Nutshell" (google), potem dokumentacja CDC z usb.org, ewentualnie więcej szczegów na temat samej komunikacji, prosta to ona nie jest. Chyba że wyjdziesz z założenia, że uruchamiasz kod z Atmela i traktujesz go jako czarną skrzynkę.
  • REKLAMA
  • #5 8239482
    Nevasith
    Poziom 11  
    Posty: 19
    minicoma miałem zainstalowanego. Atmege32 już mam, dlatego powiedziałem akurat o niej - postaram się wybrać do sklepu w najbliższym czasie i zakupić przelotkę (chyba, ze znajdę kabel od telefonu), ale zacznę od przejrzenia informacji na temat tej komunikacji.
    Mieszkam za granicą i chociaż do sklepu z komponentami mam daleko to jest on dość dobrze wyposażony, więc wierze, że znajdę konwerter i/lub atmege32U4
  • REKLAMA
  • #6 8242566
    Nagus
    Poziom 27  
    Posty: 757
    Pomógł: 99
    Ocena: 97
    Konwertery FT... zgłaszają się jako ttyUSBx, ale urządzenia typu CDC mogą meldować się jako ttyACMx. Wygodnie jest zainstalować sobie pakiet usbutils, wtedy wystarczy polecenie lsusb i będzie gotowa lista podłączonych urządzeń. Programy typu usbview (z GUI) też się przydają.
    Lepiej nie stosować gołego 'dmesg' bo można się zapłakać, gdy potrzebny wpis będzie w środku, lepiej użyć konstrukcji 'dmesg | tail'.
    Pod ATmega U dostępne są dwa pakiety softu: Atmelowski i projekt LUFA. Oba kompilują się w avr-gcc.
  • #7 8242996
    arrevalk
    Poziom 25  
    Posty: 450
    Pomógł: 94
    Ocena: 7
    Nagus napisał:
    Lepiej nie stosować gołego 'dmesg' bo można się zapłakać, gdy potrzebny wpis będzie w środku, lepiej użyć konstrukcji 'dmesg | tail'.


    Jeżeli potrzebny wpis jest gdzieś w środku, to tail też nic nie da, bo domyślnie wyświetla ostatnie 10 linijek pliku.
    Wynik można przeszukać np. poleceniem grep.
  • #8 8243888
    gaskoin
    Poziom 38  
    Posty: 4159
    Pomógł: 436
    Ocena: 102
    zaraz po wpięciu i tak powinien być na końcu lub w tych 10 linijkach
  • #9 8243949
    archanoid
    Poziom 26  
    Posty: 867
    Pomógł: 76
    Ocena: 251
    Witam. Panowie wystarczy przed wpinaniem sprzętu w konsoli wpisać tail z opcją f czuli tail -f /var/log/messages a następnie wpiąć sprzęt. Opcja f to nieskończona pętla w której działa tail . Poniżej zrzut konsoli po podłączeniu przejściówki usb rs232. Polecam manuala poczytać .
    Jak przesłać tekst z terminala Linux do Atmega32 przez USBasp?
  • #10 8243988
    gaskoin
    Poziom 38  
    Posty: 4159
    Pomógł: 436
    Ocena: 102
    jeszcze można też użyć lsusb :)
  • #11 8248721
    Nevasith
    Poziom 11  
    Posty: 19
    no wlasnie ja uzywalem lsusb zeby wykrywac programator plus kiedys kamere jesli mnie pamiec nie myli. Mialem kiedys problem z przelotka USB - LPT ale cos z nia bylo nie tak (zglaszalo sie wszystko ok, ale drukarka nie dzialala - wymiana przelotki na nowa rozwiazala problem, wiec tamta pewnie byla walnieta)

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik poszukuje sposobu na przesyłanie tekstu z terminala Linux do mikrokontrolera ATmega32 za pomocą programatora USBasp, mimo braku portu równoległego. Wskazano, że do komunikacji USB-RS232 potrzebny jest konwerter, np. FT232RL, ale użytkownik zastanawia się, czy możliwe jest bezpośrednie połączenie z ATmega32 przez USBasp. Odpowiedzi sugerują, że po podłączeniu konwertera USB-RS232 w systemie Linux powinien pojawić się wpis w katalogu /dev, co umożliwia korzystanie z programów takich jak minicom lub picocom do komunikacji. Użytkownicy polecają również rozważenie użycia ATmega32U4, który ma wbudowany interfejs USB, eliminując potrzebę dodatkowego konwertera. Wskazówki dotyczące diagnostyki sprzętowej obejmują użycie poleceń dmesg, lsusb oraz instalację pakietu usbutils.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA