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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 14 kwi 2025, o 04:17


    Strefa czasowa: UTC + 1





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

    Jest OK ?!
    TAK 94%  94%  [ 15 ]
    NIE 6%  6%  [ 1 ]
    Liczba głosów : 16
    Autor Wiadomość
    PostNapisane: 23 kwi 2016, o 19:20 
    Offline
    Nowy

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

    W poprzednim poście LINK pokazałem jak w bardzo prosty sposób w Atmel Studio 7 przy pomocy bibliotek ASF wykorzystać port USB, zdefiniować go jako port szeregowy i przekierować no niego potoki STDIN/STDOUT.
    W tym poście chcę dodatkowo podłączyć kartę SD korzystając z bibliotek Atmela, a informacje o karcie SD będą wyświetlane poprzez port szeregowy emulowany przez interfejs USB procesora.

    Ważną sprawą jest fakt, że ASF (Atmel Software Fundation) to gotowe sterowniki, komponenty, usługi i funkcje realizujące obsługę portów IO, interfejsów komunikacyjnych, usług i procedur do wykorzystania w naszym kodzie.
    Czasem dzięki kilku liniom kodu i odpowiednim definicjom można uzyskać naprawdę spektakularne efekty.

    Poniżej obrazek ze strony Atmela pokazujący strukturę ASF,
    Obrazek

    W naszym projekcie będziemy korzystali z następujących komponentów ASF:
    - „GPIO service” do zdefiniowania trybu pracy portów procesora
    - „SD/MMC stack component” do komunikacji z kartą SD
    - „SD/MMC memory Access komponent” zawierający funkcję odczytu i zapisu danych na/z karty
    - „USB Device (service) CDC_STDIO” – do obsługi USB w trybie emulacji portu szeregowego przechwytującego STDIN/STDOUT

    Użyte w projekcie komponenty ASF w oknie ASF Wizard powinny wyglądać TAK
    Obrazek

    Po dodaniu komponentów czas na konfigurację plików nagłówkowych.
    Tak jak poprzednio konfigurujemy pliki conf_clock.h oraz conf_usb.h

    Plik /config/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 /config/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.
    Przyda się jeszcze zakomentować poniższą linie znajdującą się gdzieś na początku pliku....
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Nowością będzie definicja pliku conf_board.h.
    W pliku tym definiujemy połączenia procesora do komponentów zewnętrznych.
    W tym przypadku będą te definicje podłączenia karty SD oraz przycisku sprzętowego FLIP podłączonego do portu E5 procesora.
    Jeśli nie mamy przełącznika WRITE_PROTECT to go nie definiujemy, poniżej jest on zakomentowany ponieważ u mnie nie występuje.

    Zawartość mojego pliku conf_board.h wygląda tak:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Ponieważ mój zestaw nie jest żadną z płyt uruchomieniowo/deweloperskich Atmela, wieć muszę jeszsze do pliku
    /ASF/common/boards/user_board/init.c dopisać zawartość procedury board_init, która inicjuje komponenty zewnętrzne i porty procesora do współpracy z nimi.
    Jak widać ja musiałem tylko konfigurować porty IO do współpracy z kartą SD oraz pin E5 do którego jest podłączony microswitch [FLIP].

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Skoro jest już tyle... należy zająć się programem głównym...

    Po uruchomieniu procesora program czeka za naciśnięcie przycisku podłączonego do portu E5 (zwieramy pin procesora do masy),
    daje nam to czas na otwarcie okienka terminala portu szeregowego (u mnie COM5).
    Po naciśnięciu przycisku FLIP program działa w pętli badając status karty i wyświetlając informacje o niej.

    Zmienna status przechowuje informacje o aktualnym statusie karty SD.
    Zmienna port to numer portu ( możliwe jest zdefiniowanie i podłączenie kilku kart SD i wybór pomiędzy nimi za pomocą sygnału CD, użyjemy wtedy SD_MMC_0_CD_GPIO, SD_MMC_1_CD_GPIO itd. w pliku conf_board.h )

    Cała reszta to użycie funkcji i definicji które są już w ASF.

    A tak wygląda program

    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Działający program wygląda tak jak poniżej, jest to przykład dla dwóch różnych kart SD.
    Obrazek

    I to by było na tyle ... w następnym "odcinku" dodamy do projektu bibliotekę FatFS ( jej Atmelowską wersję )
    i spróbujemy coś odczytać i zapisać.


    Załączniki:

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



    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: 1 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

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


    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:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO