Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 28 mar 2024, o 16:08


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 

W zanadrzu ubsługa przez XMEGA karty SD widzianej poprzez USB w windows jako dysk przenośny.
Kontynuować ?! Czy jest to interesujące ?! 94%  94%  [ 30 ]
Niee ... nuda ! 6%  6%  [ 2 ]
Liczba głosów : 32
Autor Wiadomość
PostNapisane: 22 kwi 2016, o 19:26 
Offline
Nowy

Dołączył(a): 01 lut 2013
Posty: 2
Pomógł: 0

Napisałem ten krótki poradnik, ponieważ mam wrażenie że sprzętowa obsługa portu USB dla XMEGA jest w wielu publikacjach traktowana po macoszemu.

Atmel udostępnia AtmelStudio w wersji 7 oraz biblioteki Atmel Software Framework,
które umożliwiają w dość prosty sposób obsłużyć komponenty "wokół" procesora.

ARDUINO ma "wbudowaną" obsługę portu szeregowego co znakomicie ułatwia debugowanie programów, a dlaczego tego nie zrobić dla procesorów XMEGA z ze sprzętową obsługą USB?!

Dlatego spróbujmy zmusić naszą XMEGE by przekierować STDIN/STDOUT na emulowany port szeregowy poprzez wbudowany w procesor sprzętowy interfejs USB.

W tym poradniku użyłem Atmel Studio 7.0.790 (biada mi, nie eclipse) z "wbudowanym" Atmel Software Framework w wersji 3.30.1.

Zaczynamy od otwarcia nowego projektu "GCC C ASF Board Project"
Obrazek

Następnie wybieramy typ procesora (w moim wypadku ATxmega128A3U) i rodzaj płyty na której on jest.
Ponieważ nie używam żadnego z zestawów firmy Atmel, wybrałem "User Board Template"
Obrazek

Po utworzeniu pustego projektu czas na wybór komponentów z biblioteki Atmel Software Framework (ASF) z których będziemy korzystać.
By to zrobić z menu wybierzmy ASF -> ASF Wizard lub wciśnijmy kombinację klawiszy ALT+W.
Powinno się pojawić okno jak poniżej...
Obrazek
Tutaj bardzo ważne jest zaznaczenie komponentu USB Device Serwice i z listy rozwijanej wybranie cdc_stdio ( uwaga: jest również komponent "cdc" - to nie ten, musi być cdc_stdio)
Klikamy Add oraz Apply i otrzymujemy to co poniżej
Obrazek


Teraz zamykamy okienko ASF i konfigurujemy nasz projekt.
W oknie Solution Explorer odnajdujemy w katalogu "config" pliki conf_clock.h, conf_usb.h i poprzez podwójne kliknięcie na nich otwieramy je do edycji.
Obrazek

Zauważcie, że u mnie przy nazwach plików jest czerwona kropka, świadczy to o tym, że plik został zmodyfikowany.

Plik conf_clock.h definiuje parametry taktowania procesora.
Modyfikujemy w nim trzy sekcjie:

1. zmieniamy parametr CONFIG_SYSCLK_SOURCE z domyślnego 2MHz na 32Mhz
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

2. zmieniamy parametr CONFIG_SYSCLK_PSADIV z domyślnego SYSCLK_PSADIV_1 na SYSCLK_PSADIV_2
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

3. usuwamy komentarz w liniach zawierających CONFIG_OSC_RC32_CAL i CONFIG_OSC_AUTOCAL_RC32MHZ_REF_OSC
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Teraz zajmijmy się plikiem conf_usb.h
W nim znajdzmy definicję funkcji wywoływanych po aktywacji portu usb
Musimy odnaleźć w nim definicje UDI_CDC_ENABLE_EXT, UDI_CDC_DISABLE_EXT
i zamienić na poniższe ...
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Linie te są odpowiedzialne za podłączenie/odłączenie STDIO w momencie gdy jest aktywowany/deaktywowany port USB z obsługą urządzenia typu Communication Device Class.


Następnie dodajmy co nieco do plilku main.c
zmieniając jego zawartość na poniższą ...
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



I to już właściwie wszystko ....
Linie
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
powinny się znajdować na początku każdego projektu używającego ASF.
Linia stdio_usb_init(); włącza obsługę STDIO dla USB.

Po kompilacji i zrestartowaniu procesora mamy w systemie windows dodatkowy port szeregowy, który jest połączony z STDIN/STDOUT procesora i możemy go wykorzystać do dowolnych celów....


A TUTAJ rozwinięcie tematu ... dokładamy kartę SD.


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Ostatnio edytowano 23 kwi 2016, o 19:40 przez radek_w, łącznie edytowano 6 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 kwi 2016, o 21:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 paź 2011
Posty: 702
Lokalizacja: Zielona Góra
Pomógł: 75

Super, prosimy o więcej, tylko popraw wklejenie kodu na SYNTAX C.

_________________
pozdrawiam
phill2k



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 wrz 2020, o 08:45 
Offline
Nowy

Dołączył(a): 10 mar 2015
Posty: 2
Pomógł: 0

Przepraszam że takie starocie odgrzewam ale mam pytanie w kwestii tego USB. Jedno co jest bardzo nie wygodne to to że po resecie ATX-a komunikacja z USB zanika. Jedyne co pomaga to wyjęcie wtyczki z PC-ta. Czy można tej niedogodności jakoś zapobiec ? Czy może to leży po stronie PC-ta ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO