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

Przejście z Atmega128 na AT90USB1287 - doświadczenia z USB i kompatybilność

sivex 16 Wrz 2006 10:11 4710 21
  • #1 3025052
    sivex
    Poziom 27  
    Posty: 815
    Pomógł: 113
    Ocena: 25
    Pojawily sie dostepne w polsce uklady AT90USB1287.
    Uklad mam zrobiony na Atmega128, plytka idzie do druku ale jestem mocno zainteresowany przejsciem na nowy uklad ze wzgledu na USB.
    Nie mam juz czasu na to by zatrzymac projekt ale plytke moge jeszcze sprobowac dostosowac tak by mozna sie bylo przesiasc na AT90USB.
    Przrejrzalem note katalogowa tego ukladu i zauwazylem, ze piny rozmiar i rozstaw pinow jest identyczny. Zasilanie, rezonator tez jest na tych samych nogach. Rozni sie wyprowadzeniami portow ale to sprawa programu tez jest przeciez do zrobienia, no i oczywiscie USB.

    Czy ktos z Was prcuje na takim ukladzie i moglby podzielic sie kilkoma spostrzezeniami?

    Interesuje mnie jak przebiega transmisja usb w praktyce?
    Jak wyglada to od strony PC?
    Czy sa jakies sterowniki?
    Jak on jest wykrywany w windows?
    Czy cos zmienilo sie drastycznie miedzy tymi ukladami co przeszkadzalo by mojej domyslnej narazie (zanim zaglebie sie w PDF'a) kompatybilnosci?
    ...
    Na starcie tyle


    pozdr.
  • #2 3519917
    sivex
    Poziom 27  
    Posty: 815
    Pomógł: 113
    Ocena: 25
    Temat rozpocząłem dość ogólnie i pewnie też ogólnej odpowiedzi oczekiwałem :)
    W każdym razie jestem laikiem co do mikrokontrolerów raczej lepiej wychodzi mi programowanie na PC jednak ważna jest dla mnie komunikacja między pecetem a urządzeniami zewnętrznymi.

    Testowy układ już działa na AT90USB1287. Jestem bardzo zadowolony z jego funkcjonowania.

    I teraz odpowiem tak jakby sobie na pytania może komuś na początek prób z tym układem będą przydatne:

    Układ ten i atmega128 są bardzo podobne do siebie. Nowy interfejs USB wprowadził jednak zmiany tak jak i w wyprowadzeniach jak i w fuse bitach.

    Oczywiście jest narazie niewiele przykładów dostępnych w sieci z zastosowaniem tego układu lecz to co daje atmel (pdf'y , żródła demo aplikacji itp) są wystarczające do uruchomienia transmisji USB nawet takiemu laikowi jak ja :)
    Nie obeszło się bez poznania specyfikacji transmisji USB.
    http://www.usb.org http://www.usb.org/developers/hidpage
    Sterowniki są dostępne na stronie atmela http://www.atmel.com

    Układ działa jako urządzenie typu HID i nie ma problemu z oprogramowaniem w więkrzości języków programowania.

    Ja na etapie testów jestem bardzo zadowolony z działania tego układu. Będę testował go w praktyce i wtedy okaże się czy nie ma problemów z transmisją przy zakłóceniach i przeciążeniach obwodów elektrycznych.

    Wyjadaczy zajmującymi się mikrokontrolerami proszę o wyrozumiałość co do nieścisłych wypowiedzi :)


    pozdr.
  • #3 3831990
    sivex
    Poziom 27  
    Posty: 815
    Pomógł: 113
    Ocena: 25
    Zalazł się też mankament.

    Układ sterujący urządzeniami przemysłowymi, potrafi zawiesić transmisje USB, jak domyślam sie jest to spowodowane różnymi niedogodnościami związanymi z przeciążeniami, polem magnetycznym itp. ogólnie nieciekawym srodowiskiem dla uc jeżeli chodzi o maszyny pobierające sporo prądu, styczniki i inne ustrojstwa których pracę można nawet usłyszeć w głośnikach telewizorów w sąsiednich domach :)

    Sam Uc działa nadal, wykonuje pętle programu jednak zrywa komunikacje z PC. Nie pomaga nawet reset (więc i programowo raczej zapomniany temat). W takim stanie zaczyna się mocno grzać, pobiera ok 500mA więcej.
    Dodatakowo do testów podłączyłem oryginalnego USBKey Atmela korzystającego z do tego samego źródła zasilania, efekt jest identyczny a nawet częściej.

    Jedynym rozwiązaniem jest odłączenie zasilania od Uc i podłączenie ponownie.


    pozdr.
  • #4 3834225
    volender
    Poziom 13  
    Posty: 101
    Pomógł: 2
    Nie jestem specem, ale tak się o ile wiem dzieje, gdy na wejścia uC podasz napięcie wyższe od zasilania. Wtedy włączają się jakieś zabezpieczenia, pisze o tym na forum.
    Może trzeba by dobrze odizolować zasilanie uC od zasilania styczników czy tego, co używasz a co pobiera dużo mocy. Np. dać oddzielny transformator?
  • #5 3834524
    sivex
    Poziom 27  
    Posty: 815
    Pomógł: 113
    Ocena: 25
    Samo Uc pracuje teraz na zasilaniu z USB.
    Jednak zdarzają się takie sytuacje. Udało mi sie znaleźć sposób na symulacje tego zjawiska w "warunkach domowych", siada również komunikacja z moim modemem usb na ftdi.

    Cytat:
    ...pisze o tym na forum.


    Na naszej "Elce"?

    pozdr.
  • #6 3841798
    volender
    Poziom 13  
    Posty: 101
    Pomógł: 2
    W uC masz do każdego wejścia/wyjścia podłączoną diodę do +Vcc, która zaczyna przewodzić, gdy napięcie podawane na nóżkę przekroczy Vcc + o,3 V (coś koło tego). Więc wtedy to "wyższe" napięcie jest zwierane do Vcc i może popłynąć dość duży prąd. Z tąd grzanie się układu.
    A u ciebie te duże obciążenia mogły spowodować spadek napięcia zasilania poniżej sygnałów z USB i ta dioda mogła zadziałać.

    https://www.elektroda.pl/rtvforum/topic607226.html
  • #7 3848550
    sivex
    Poziom 27  
    Posty: 815
    Pomógł: 113
    Ocena: 25
    Rozmineliśmy się troszke co do istoty.

    Problemem nie jest to jak i dlaczego dochodzi do takiej sytuacji tylko dlaczego nie można nawiązać ponownie komunikacji USB.
    W tym przypadku są to obciążenia indukcyjne powstające w całej linii
    elektrycznej. W tych warunkach to norma i zdążyłem się już "przyzwyczaić" :)
    Układ masy, ekrany, filtry, kondensatory itp. to na pewno pomaga (jak i wtym przypadku) zredukować do minimum zakłócenia z sieci ale nie są wstanie zapobiec takim sytuacjom z 100 procentach. Chyba że o czymś nie wiem i ktoś ma naprawde doskonałe schematy układów antyprzepięciowych, proszę więc o wrzucenie kilku propozycji.

    Jeszcze raz powtórzę co jest dla mnie mankamentem. Uc pracuje stabilnie kiedy zerwana zostaje komunikacja USB (Najlepszy test to jarzeniówka w tym samym obwodzie i brak uziemienia). Bardzo często urządzenia widzą sie nadal jednak nie dochodzi do przekazywania informacji.
    Daremne są próby rozłączenia transmisji z poziomu programu w Uc w/g kolejnych kroków podanych w nocie katalogowej. Wyłączenie PLL i ustawienie taktowania ponownie również nic nie daje jak również podanie masy na reset, jak i odpalenie z HWB. W tych ostatnich przypadkach Uc znajdowane jest jako "Nieznane urządzenie". Układ w tym stanie grzeje się ale funkcje programu (oprócz USB) są wykonywane poprawnie.

    To właśnie mnie nurtuje, jak temu zaradzic bez rozłączania zasilania Uc, jeżeli już dojdzie do takiej sytuacji?

    pozdr.
  • #8 3981588
    ucy74
    Poziom 20  
    Posty: 539
    Pomógł: 22
    Ocena: 10
    sivex napisał:
    ...Dodatakowo do testów podłączyłem oryginalnego USBKey Atmela...


    Zaczynam się bawić tą płytką.
    Problemem dla mnie jest na razie to, że o ile wiem, programuje się to tylko programem FLIP 3 jako bootloader, albo przez ISP/JTAG kasując wgrany bootloader i fuse'y. Większość aplikacji bootloaduje starą ATmegę128 przez jakąś, widzianą z PC, emulację portu RS-232. Szukam opcji w której USBkey będzie widziany jako port RS-232 i w ten sposób będzie można wgrywać w niego oprogramowanie.

    Masz jakieś doświadczenia z tym tematem?
  • #9 3981791
    sivex
    Poziom 27  
    Posty: 815
    Pomógł: 113
    Ocena: 25
    Cytat:
    Problemem dla mnie jest na razie to, że o ile wiem, programuje się to tylko programem FLIP 3 jako bootloader, albo przez ISP/JTAG


    Tylko albo aż. Czy masz jakieś kłopoty z programowaniem tymi sposobami?

    pozdr.
  • #10 3982296
    ucy74
    Poziom 20  
    Posty: 539
    Pomógł: 22
    Ocena: 10
    sivex napisał:
    ...Czy masz jakieś kłopoty z programowaniem tymi sposobami...


    Chciałem się tym bawić softem http://wiring.org.co/, który jest czymś w rodzaju IDE do C-podobnego kompilatora, tak naprawde to jest to nakładka na GCC.
    Niestety, program jest z czasów kiedy USB konwertowało się na RS'a chip'ami FTDI i to drivery do nich załatwiały sprawę wirtualnego portu COM po stronie komputera.
    Po stronie ATmegi był bootloader który czekał na reset i ładował program po RS'ie.

    Oczywiście, mogę generować .hex'a i pakować go na USBkey FLIP'em.

    Ciekawy jestem jak sobie z tym dałeś radę, bo pisałeś że starowałeś od starej ATmegi128.
  • #11 3982589
    sivex
    Poziom 27  
    Posty: 815
    Pomógł: 113
    Ocena: 25
    W moim przypadku jeden jak i drugi rodzaj Uc programowane przez ISP.

    pozdr.
  • #12 3983805
    ucy74
    Poziom 20  
    Posty: 539
    Pomógł: 22
    Ocena: 10
    sivex napisał:
    ...Układ działa jako urządzenie typu HID i nie ma problemu z oprogramowaniem w więkrzości języków programowania...


    Rozumiem, że oprogramowanie wgrane przez ISP działa i powoduje że urządzenie widoczne jest jako HID. Czyli że do komunikacji z urządzeniem nie wykorzystujesz żadnego rodzaju terminala?
  • #13 3985374
    sivex
    Poziom 27  
    Posty: 815
    Pomógł: 113
    Ocena: 25
    Zaraz... co ma być do programowania a co do komunikacji.
    To są dwa oddzielne zagadnienia.

    Jeśli chodzi o programowanie to możesz wybrać sobie programowanie przez USB, JTAG, ISP...
    I tu moim zdaniem nie ma po co robić rewolucji i szukać niekonwencjonalnych sposobów.

    Drugie zagadnienie czyli komunikacja też jest dowolna ISP, UART, USB
    Jeżeli wybieramy USB to transmisja jest standardowa dla tego protokołu.
    To jaki wybierzesz sposób to też zależy od Ciebie. Nie ma co się łudzić: bez zapoznania się ze specyfikacją USB nie ma co zbierać sie za AT90USB1287 - www.usb.org

    Po pierwsze wybierasz czy Uc ma być Host czy Device, zależnie od potrzeb. Następnie klase w jakiej ma funkcjonować np: Display, Communication, Audio, Mass storage, Human Interface...

    Można też wgrać gotowca który na przykład emuluje Usb na rs232 i komunikować się na podobnej zasadzie jak FTDI.

    To tak pokrótce.

    pozdr.
  • #14 3985462
    ucy74
    Poziom 20  
    Posty: 539
    Pomógł: 22
    Ocena: 10
    sivex napisał:
    ...Można też wgrać gotowca który na przykład emuluje Usb na rs232 i komunikować się na podobnej zasadzie jak FTDI...


    Czy taki gotowiec zamienia cały USBkey w konwerter USB/RS-232? To byłoby ciut rozrzutne...
    Szukam czegoś, co zamieniłoby botloader do FLIP'a w konwerter USB-RS232 którym bootload'owałoby się do USBkey programy po RS-232.
  • #15 3985996
    sivex
    Poziom 27  
    Posty: 815
    Pomógł: 113
    Ocena: 25
    Widzę, że dalej się nie rozumiemy :)

    Cytat:
    Czy taki gotowiec zamienia cały USBkey konwerter USB/RS-232? To byłoby ciut rozrzutne...


    USB w tym układzie jest sposobem transmisji między UC a PC.
    Czyli komunikujesz sie nie za pomocą np UART do przekazywania danych tylko przez USB. Wysyłasz z PCeta do procka informacje żeby wykonał np jakąś funkcje (zapalił diodę podpiętą do któregoś pinu itp) lub odwrotnie, procek zbiera jakieś dane i wysyła je do PC (lub drugiego procka). Tak jak w ATmega128 można było do tego celu wykorzystać UART tak tu można wykorzystać USB (UART też jest).

    Jeżeli więc zaimplementujesz w nim konwersję USB>RS232 to pisząc aplikacje na PCecie korzystasz jak z portu RS a jednak dane przechodzą magistralą USB. A w przypadku USBKEY jeko płytki testowej możesz tam wgrywać różne wsady jak i pisać swoje programy i testować je.

    Cytat:
    Szukam czegoś, co zamieniłoby botloader do FLIP'a w konwerter USB-RS232 którym bootload'owałoby się do USBkey programy po RS-232.


    Bootloader od flipa jest po to by można było programować układ przez USB.

    Oddziel programowanie uC przez USB od transmisji danych przez USB!

    Żeby komunikować się z USBKEY nie jako HID a jako wirtualny port RS musisz zaprogramować samego procka a nie szukać bootloadera.

    Cytat:
    Nie ma co się łudzić: bez zapoznania się ze specyfikacją USB nie ma co zbierać sie za AT90USB1287 - www.usb.org


    pozdr.
  • #16 3988201
    ucy74
    Poziom 20  
    Posty: 539
    Pomógł: 22
    Ocena: 10
    Chyba faktycznie się rozmijamy :D

    Rozumiem co to programowanie, że można to robić FLIP'em, a można i po ISP. Rozumiem że programowanie wsadu to jedno, a komunikacja z zaprogramowanym uC to co innego.

    Nie chce się na razie pakować w rozgryzanie USB - za wysokie progi. Kupiłem USBkey żeby zacząć programować uC w C. Mam do tego program, który wgrywa soft za pomocą preinstalowanego w uC botloader'a. Był on przygotowany do pracy z ATmegą128 i wysyłał dane za pomocą wirtualnego portu COM przez układ FTDI.

    Szukam wsadu który pozwoli mi posługiwać się powyższym oprogramowaniem, tak by USBkey był widoczny jako konwerter USB/RS-232 i pozwalał wgrywać w siebie pisane przeze mnie aplikacje.
  • #17 3989011
    sivex
    Poziom 27  
    Posty: 815
    Pomógł: 113
    Ocena: 25
    To więc proponuje zrozumieć jeszcze to, ze ten program komunikuje się najwyraźniej z atmega128 nie przez USB tylko przez RS,a a FTDI jest tylko po to by zamienić transmisje po RS232 na USB ale tylko w części od PC do FTDI.

    pozdr.
  • #18 3989222
    ucy74
    Poziom 20  
    Posty: 539
    Pomógł: 22
    Ocena: 10
    ech... :|

    Czym się różni to:
    sivex napisał:
    ...ten program komunikuje się najwyraźniej z atmega128 nie przez USB tylko przez RS,a a FTDI jest tylko po to by zamienić transmisje po RS232 na USB ale tylko w części od PC do FTDI...

    od tego:
    ucy74 napisał:
    ...tak by USBkey był widoczny jako konwerter USB/RS-232...


    W obydwu przypadkach po stronie PC korzystamy z portu USB. Dane idą przez wirtualny port RS-232. Dalej FTDI konwertuje dane na RS-232, które trafiają do ATmegi128. Albo konwersja następuje już w USBkey, które realizuje program konwertera wewnątrz uC.

    Teraz tylko kwestia tego, czy wgrany w uC software pozwala na upload programu do pamięci. Czyli w wypadku USBkey, czy konwerter USB/RS-232 będzie działał jako bootloader.

    Pozdrawiam,
  • #19 3989288
    sivex
    Poziom 27  
    Posty: 815
    Pomógł: 113
    Ocena: 25
    Cytat:
    ...tak by USBkey był widoczny jako konwerter USB/RS-232...


    No właśnie z AT90USB1287 możesz sobie zrobić konwerter USB>RS232 taki jak FTDI i programować naprzykład Atmega128 a przy tym dodatkowo mierzyć temperature otoczenia, podłączyć wyświetlacz, sterować (przez dodatkowe układy) silnikami... i wszystko inne na co tylko twoja wyobrażnia i możliwości uC pozwalają.

    A USBKEY jest układem, na którym osadzony jest AT90USB i pokazującym jego możliwości lub pozwalającym na testowanie własnych aplikacji nawet jak będzie to tylko program typu "Zapalam diode".

    pozdr.
  • #20 6364698
    Spoonman
    Poziom 11  
    Posty: 16
    Rozumiem, że temat jest stary i zakurzony, ale uważam, iż jest on jak najbardziej aktualny!

    Chciałbym spróbować połączyć urządzenie mikroprocesorowe z kompem za pomocą portu USB bez potrzeby instalowania żadnych dodatkowych sterowników tworzących dwudziesty wirtualny COM i bez żadnych kosztujących majątek konwerterów po stronie mikrokontrolera. W tym celu pragnę zapoznać się ze sposobem transmisji danych poprzez USB.
    Może ktoś ma już spore doświadczenie w tej dziedzinie, którym chciałby się w prosty sposób podzielić?

    Oprócz tego chciałbym zadać jeszcze prostackie pytanie: czy do obsługi transmisji przez USB do/z AT90USB1287, programując go w Bascomie, potrzebne są dodatkowe biblioteki wspierające standard USB, oferowane przez Mcs?
  • #21 6365068
    sivex
    Poziom 27  
    Posty: 815
    Pomógł: 113
    Ocena: 25
    Nawet nie wiedziałem, że już minęły dwa lata... :)

    Do tego układu jest komplet materiałów wraz z kodami źródłowymi.
    Wątpię by Bascom oferował biblioteki.

    Życzę wytrwałości ale naprawdę warto! :)

    pozdr.
  • #22 6372292
    Smashing
    Poziom 20  
    Posty: 513
    Pomógł: 18
    Ocena: 12
    Witam
    Nie znam Bascoma, ale jeśli nawet uda Ci się oprogramować 90usb1287, to potem musisz napisać sobie oprogramowanie na PC żeby te dane odebrać. W Bascomie tego raczej nie zrobisz. Na stronie Atmela masz przykładowe programy pod USB. AVR studio jest za darmo+gcc. Proponuje, zacząć od nauki C. Przeanalizować program ze strony Atmela, wyrzucić to co Ci jest niepotrzebne i dopisać to co chcesz. Pozostaje oprogramować PC, według mnie najprościej w Builder C++ ( jeśli używasz Windows ). Można też w Visual Studio C, lub w C#, ale.... lepiej zacząć w Builder C++. Dokładasz dwie biblioteki z obsługa USB i wszystko śmiga....
    pozdrawiam

Podsumowanie tematu

✨ Dyskusja dotyczy przejścia z mikrokontrolera Atmega128 na AT90USB1287, ze szczególnym uwzględnieniem implementacji i praktycznego wykorzystania interfejsu USB. AT90USB1287 ma identyczny rozstaw i liczbę pinów co Atmega128, jednak różni się wyprowadzeniami portów, fuse bitami oraz wprowadza obsługę USB, co wymaga dostosowania oprogramowania. Transmisja USB w praktyce wymaga zapoznania się ze specyfikacją USB oraz odpowiednim wyborem trybu pracy mikrokontrolera (Host lub Device) i klasy USB (np. HID, Communication, Mass Storage). Programowanie układu odbywa się głównie przez ISP lub bootloader FLIP, który umożliwia wgrywanie oprogramowania przez USB. Wiele dyskusji dotyczyło sposobu emulacji portu RS-232 przez USB (wirtualny port COM) oraz problemów z kompatybilnością i stabilnością transmisji USB w środowiskach przemysłowych, gdzie zakłócenia elektromagnetyczne i przeciążenia mogą powodować zawieszanie komunikacji i wzrost poboru prądu. Rozwiązaniem są odpowiednie filtry, ekrany i izolacje zasilania. Użytkownicy podkreślają, że do efektywnej pracy z AT90USB1287 konieczne jest zrozumienie protokołu USB oraz przygotowanie dedykowanego oprogramowania po stronie PC, np. w C++ z bibliotekami USB. W Bascomie brak jest natywnych bibliotek USB, co utrudnia implementację. USBKEY to płytka testowa z AT90USB1287, umożliwiająca testowanie aplikacji i programowanie przez USB. Możliwe jest stworzenie własnego konwertera USB-RS232 w oparciu o AT90USB1287, co pozwala na elastyczne wykorzystanie mikrokontrolera w różnych aplikacjach.
Wygenerowane przez model językowy.
REKLAMA