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

Atmega8 - V-USB, C#, sterowanie diodą

tyxu 30 Lip 2013 01:18 2703 9
  • #1 30 Lip 2013 01:18
    tyxu
    Poziom 12  

    Witam!
    Postanowiłem skomunikować komputer z Atmegą przy pomocy USB bez dodatkowych układów.
    Po głowie mi chodzi coś większego, ale najpierw chciałbym zrobić prostą rzecz - sterowanie diodą.
    Znalazłem w internecie przykład:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Trochę powalczyłem, ale ostatecznie udało się skompilować. Komputer widzi atmegę. Od strony elektronicznej prawdopodobnie wszystko ok."Sterownik" zainstalowany. Niestety nie udało mi się skompilować oprogramowania dla komputera - do Visuala C ja siły nie mam :|

    Najchętniej bym to zrobił w C# - czy jeśli wykorzystam LibUsbDotNet to będzie działać? Jak taki program powinien wyglądać?

    Z góry dzięki za pomoc :)

    0 9
  • #2 30 Lip 2013 09:06
    tmf
    Moderator Mikrokontrolery Projektowanie

    Jeśłi chodzi ci po głowie "coś większego" to nie prościej dobrać procesor ze sprzętowym USB? Po co kombinować? Sprzętowe USB na pokładzie obecnie nic nie kosztuje.

    0
  • #3 30 Lip 2013 11:33
    tyxu
    Poziom 12  

    Nie :)
    Zresztą nie chodzi o to, żeby iść po najmniejszej linii oporu.
    Zwłaszcza, że tu nadal chodzi o przesłanie garści bitów.

    Widziałem w Internecie kilka projektów łączących aplikację w C# i vusb, więc się da.
    Jak ktoś wie z grubsza jak, to proszę o podzielenie się wiedzą.

    0
  • #4 30 Lip 2013 12:26
    hotdog
    Poziom 26  

    zawsze w przypadku robienia czegoś nowego po 2 stronach, radzę mieć jedną stronę pewną.

    Proponuje Tobie pobrać jakiś projekt z programem na C# i na uC, sprawdzić czy działa i później zabrać się za aplikację w C# czy to na uC. Wtedy jedną stronę i hardware masz na 100% pewne.

    Urządzenie ma pracować jako HID?

    0
  • #5 30 Lip 2013 12:41
    tyxu
    Poziom 12  

    W sumie nie ma to większego znaczenia. Może działać jako hid, nie musi. Może nawet lepiej by było nie.
    Niestety żaden z projektów, w których jest wykorzystana biblioteka v-usb i aplikacja w C# nie jest możliwy do pobrania. Przynajmniej ja nie znalazłem :/

    0
  • #7 30 Lip 2013 16:39
    tyxu
    Poziom 12  

    Szczerze? Nie wiem nawet jak się zabrać za to :|
    Ściągnąłem paczkę z Twojego linku. Po otworzeniu w Visualu postanowił to przekonwertować (bo było w starszej wersji programu).
    Po uruchomieniu uzyskuję coś takiego:
    Atmega8 - V-USB, C#, sterowanie diodą

    0
  • #8 30 Lip 2013 19:33
    hotdog
    Poziom 26  

    w archiwum sa 2 projekty, jeden to biblioteka, drugi to przykład.

    Ciebie interesuje katalog/projekt UsbLibrary. Z tego kompiluje się DLL,
    1. dodajesz do swojego projektu (add reference) plik dll (lub tworzysz nowy projekt w otwartej solucji z tej paczki i ustawiasz go na startowy, wtedy dodajesz lokalną referencję - lepiej się tak debuguje)
    2. przeciągasz kontrolkę UsbHidPort
    3. wypełniasz vid i pid w preferencjach kontrolki
    4. dodajesz kod do swojej formy:

    Kod: csharp
    Zaloguj się, aby zobaczyć kod

    5. Obsługujesz eventy: OnDataRecieved i o ile chcesz OnSpecifiedDeviceArrived i OnSpecifiedDeviceRemoved
    6. Kompilujesz
    7. Uruchamiasz
    8. Podłączasz urządzenie (można wykryć przy włączeniu programu czy urządzenie jest podłączone wywołując metodę UsbHidPort.CheckDevicePresent)
    9. Powinien odpalić się event OnSpecifiedDeviceArrived (sprawdź debugererm)
    10. O ile masz dobrze zrobione urządzenie, powinny zacząc przychodzić raporty i odpalać się event OnDataRecieved
    11. Jak chcesz coś wysłać to metodą usbHidPort.SpecifiedDevice.SendData(byte[] data)

    Drugi projekt z tego co pamiętam to jakiś tam sniffer. Z racji tego czym jest może też się przydać.

    Jak będziesz miał problem, to pomogę, ale nie napiszę tego za Ciebie.

    0
  • #9 30 Lip 2013 20:25
    tyxu
    Poziom 12  

    Bardzo dobrze, że nie napiszesz za mnie, bo nie o to chodzi. To nie praca na zaliczenie tylko inwencja własna :)
    Wskazówki dane przez Ciebie trochę mnie oświeciły.

    Tymczasem udało mi się przebrnąć przez kilkadziesiąt błędów w visualu i odpaliłem przykład z vusb, steruję diodą. Jak się okazało na stacjonarce mam popsutego Visuala - z jakichś powodów nie działają mi nawet komendy typu "#include <stdio.h>".
    Ze względów na jakiś postęp przy pomocy C i kodu, który posiadam ugryzę problem z tej strony.
    Niemniej na bank wrócę również do C#, nie odpuszczę, zwłaszcza, że nie przepadam za C gdzieś niż na uC.
    Ale tymczasem pobawię się trochę tym kodem w C, bo mnie trafi w końcu :) A jak poznam lepiej mechanikę tego typu komunikacji to łatwiej będzie zmusić do działania aplikację w C#.
    Dzięki za podpowiedzi, na bank się przydadzą.
    Proszę nie zamykać wątku, jak wrócę do C# to może będę miał jakieś pytania, a jak nie to pochwalę się efektami.

    0
  • #10 13 Sie 2013 23:50
    tyxu
    Poziom 12  

    Wiec tak. Poradziłem sobie z częścią problemów. Umiem przesyłać bajty przy pomocy usb_control_msg() (C)
    Z aplikacją w C# mam problem, znajduję urządzenie ale nie mogę dokonać transferu danych. Próbuję wykorzystać analogicznie ControlTransfer(), jednak nie działa. Nie wiem jak powinienem wypełnić pierwszy parametr, głównie UsbSetupPacket...

    0