• Nie Znaleziono Wyników

TECHNIKA MIKROPROCESOROWA 1. GPIO mgr inż. Sławomir Niespodziany

N/A
N/A
Protected

Academic year: 2022

Share "TECHNIKA MIKROPROCESOROWA 1. GPIO mgr inż. Sławomir Niespodziany"

Copied!
38
0
0

Pełen tekst

(1)

TECHNIKA

MIKROPROCESOROWA 1

GPIO

mgr inż. Sławomir Niespodziany

(2)

Zestaw uruchomieniowy NUCLEO-L053

■ Prefix`y dodane dla ułatwienia

■ Dokumentacja płytki PCB

– NUCLEO_en.DM00105823.pdf

■ Dokumentacja rodziny układów STM32L053x6/STM32L053x8 – DEVICE_stm32l053c6.pdf

■ Manual STM32L0x3

– MANUAL_en.DM00095744.pdf

(3)

Zestaw uruchomieniowy NUCLEO-L053R8

■ Dokumentacja płytki PCB

– Plik NUCLEO_en.DM00105823.pdf

■ Konkretny model mikrokontrolera – STM32L053R8T6

(4)

Programator/debugger

■ Zestaw sygnałów:

(5)

Programator/debugger

■ Zestaw sygnałów:

(6)

Obudowa układu

■ Dokumentacja rodziny układów:

– Plik DEVICE_stm32l053c6.pdf

(7)

Wyprowadzenia

■ Dokumentacja rodziny układów:

– Plik DEVICE_stm32l053c6.pdf

(8)

Struktura wewnętrzna

■ Dokumentacja ogólna

– Plik MANUAL_en.DM00095744.pdf

(9)

Struktura wewnętrzna

(10)

Struktura wewnętrzna

(11)

Budowa portu ogólnego przeznaczenia I

■ * Występują również wyprowadzenia szczególnego przeznaczenia

■ Wyprowadzenie („noga”, „pin”)

■ Blok GPIO

■ Układy peryferyjne

(12)

Budowa portu ogólnego przeznaczenia II

PA1 GPIOA1

USART2 TIM2

TX CH3

(13)

Budowa portu ogólnego przeznaczenia II

PA1 GPIOA1

USART2 TIM2

TX ctrl CH3

(14)

Budowa portu ogólnego przeznaczenia II

PA1 GPIOA1

USART2 TIM2

TX CH3

ctrl

(15)

Struktura bloku GPIO - ogólnie

(16)

Struktura bloku GPIO - wejście

(17)

Struktura bloku GPIO - wyjście

(18)

Push-pull vs Open-drain

(19)

Sterowanie blokiem GPIO

Sterowanie poprzez zapis/odczyt zawartości określonych rejestrów

Lista rejestrów MODER OTYPER OSPEEDR PUPDR IDR

ODR

BSRR LCKR AFR[0]

AFR[1]

BRR

(20)

Sterowanie blokiem GPIO

Sterowanie poprzez zapis/odczyt zawartości określonych rejestrów

Lista rejestrów MODER OTYPER OSPEEDR PUPDR IDR

ODR

BSRR LCKR AFR[0]

AFR[1]

BRR

(21)

Zadanie

■ Napisz program, który w trakcie wykrycia naciśnięcia przycisku zapali diodę LED – Wykrywanie, czy przycisk jest naciśnięty ?

■ Gdzie jest podłączony przycisk ?

■ Jak odczytać stan przycisku ?

– Zapalanie/gaszenie diody LED

■ Gdzie jest podłączona dioda ?

■ Jak zapalić/zgasić diodę ?

– Jak uzależnić od siebie te czynności ?

(22)

Połączenie diody LED na schemacie

■ Dokument NUCLEO_en.DM00105823.pdf

■ Dioda na schemacie „Extension connectors” (strona 66)

■ Połaczenie z mikrokontrolerem na schemacie

„STM32 MCU” (strona 64)

■ Sterowanie:

– Zapis wartości ,1’ do PA5 – dioda świeci (3.3V) – Zapis wartości ,0’ do PA5 – dioda nie świeci (0V)

(23)

Połączenie przycisku na schemacie

■ Dokument NUCLEO_en.DM00105823.pdf

■ Przycisk na schemacie „STM32 MCU” (strona 64)

■ Wartość odczytana na pinie PC13:

– ‚1’ jeżeli przycisk nie naciśnięty

(stan linii 3.3V, ze względu na rezystor R30)

– ‚0’ jeżeli przycisk naciśnięty (stan linii 0V, ze względu na zwarcie do masy przez przycisk)

(24)

Dostęp do rejestrów

■ Plik nagłówkowy (odpowiedni dla konkretnego mikrokontrolera) definiuje struktury ułatwiające dostęp do rejestrów znajdujących się w przestrzeni adresowej

■ Przykładowo: struktura „GPIO_TypeDef” zawiera wszystkie rejestry sterujące pojedynczym portem GPIO

■ Takiej struktury nie tworzymy

samodzielnie. Używamy wskaźnika

już zdefiniowanego w pliku nagłówkowym.

■ Przykładowo: aby zapisać wartość x do rejestru MODER, portu ‚A’:

■ Analogicznie dla WSZYSTKICH rejestrów mikrokontrolera.

(25)

Ustawienie określonych bitów rejestru

■ Na przykładzie rejestru MODER

■ Aby ustawić pin PA5 jako wyjście, należy ustawić bity nr 11 i 10 na wartość „01”

(po uruchomieniu mają wartość „11”)

■ Naiwne rozwiązanie:

Powoduje utratę wartości wszystkich pozostałych bitów rejestru, a powinny one pozostać w niezmienionym stanie.

(26)

Ustawienie określonych bitów rejestru

■ Poprawne rozwiązanie:

Zachowuje wartości wszystkich pozostałych bitów.

■ Wszystkie makrodefinicje (np. GPIO_MODER_MODE5_0) możemy odnaleźć w pliku nagłówkowym.

(27)

Ustawienie określonych bitów rejestru

■ Poprawne rozwiązanie (2):

■ Modyfikacja rejestru następuje w dwóch krokach:

– Najpierw wykasowanie bitów nr 11 i 10, a dopiero później ustawienie bitu nr 10

– W konsekwencji przechodzimy z MODE = „analog” do

MODE = „input”, a dopiero później MODE = „output”

– W tym konkretnym przypadku, taki stan pośredni nie wpływa na działanie urządzenia, ale w innych przypadkach może to mieć bardzo duże znaczenie !

(28)

Odczyt określonych bitów rejestru

■ Na przykładzie rejestru IDR

■ Aby odczytać wartość logiczną podaną na pin PC13, należy wyłuskać wartość bitu nr 13, rejestru IDR, struktury wskazywanej przez wskaźnik GPIOC

■ Należy zwrócić uwagę, że wszystkie pozostałe bity mogą mieć w danej chwili różne wartości logiczne

(29)

Odczyt określonych bitów rejestru

■ Poprawne rozwiązania:

■ W zależności od wybranego wariantu:

– W każdym przypadku możemy sprawdzić czy:

– W dwóch pierwszych przypadkach możemy sprawdzić czy:

– W ostatnim przypadku możemy wykonać test:

■ Podane przykłady nie wyczerpują wszystkich możliwości

(30)

Struktura programu

■ Program składa się bezargumentowej z funkcji main()

■ Funkcja nie może zakończyć swojego działania – Musi wykonywać nieskończoną pętlę

– Przed wejściem do nieskończonej pętli może wykonać jednorazowe czynności konfiguracyjne

(31)

Struktura programu Przykład

■ Konfiguracja:

– Konfiguracja zegara dla wybranych portów (,A’ oraz ,C’)

– Ustawienie pin`u PC13 jako wejście czytające stan przycisku – Ustawienie pin`u PA5 jako wyjście sterujące diodą LED

■ Pętla główna:

– Odczytanie stanu przycisku – Zapalenie diody, jeżeli

przycisk naciśnięty – Zgaszenie, jeżeli niewciśnięty

(32)

Konfiguracja zegara

■ System zegarowy zostanie omówiony w dalszej części wykładu

■ Najważniejsze informacje:

– Mikrokontroler jest domyślnie taktowany z częstotliwością 2.1MHz

– Po uruchomieniu wszystkie zegary układów peryferyjnych są odłączone (minimalizacja poboru mocy). Każdy układ peryferyjny jest synchronicznym układem cyfrowym, co oznacza, ze bez zegara jego działanie jest „zamrożone”

– Aby móc użyć danego układu peryferyjnego (w tym wypadku GPIOA oraz GPIOC) należy włączyć jego zegar

(33)

Konfiguracja GPIO – wyjście i wejście

■ Konfiguracja polega na ustawieniu WSZYSTKICH rejestrów danego układu peryferyjnego

■ Każdy rejestr ma określoną konkretną wartość domyślną. Jeżeli domyślna konfiguracja dla danego rejestru odpowiada docelowej, to nie trzeba jej aktualizować.

■ Konfiguracja PA5, jako wyjścia (pin nr 5, dla portu ‚A’):

– MODE = General purpose output mode – OSPEED = Very high speed

– Pozostałe rejestry bez zmian

■ Konfiguracja PC13, jako wejścia (pin nr 13, dla portu ‚C’):

– MODE = Input mode

(34)

Konfiguracja GPIO – MODE

(35)

Konfiguracja GPIO - OSPEED

(36)

Pętla główna

■ Rozwiązania równoważne

■ Różnica jedynie na poziomie języka C

■ Brak różnicy na poziomie kodu wykonywalnego

(37)

Pętla główna

■ Wyrażenia zrealizowane w trzech krokach:

– Odczyt zawartości rejestru

– Ustawienie odpowiednich bitów za pomocą podanej maski – Zapis do rejestru

■ Blok GPIO udostępnia rejestr BSRR (bit set reset register) pozwalający na realizację tych operacji w jednym kroku (atomowo)

(38)

Kompletny kod

Cytaty

Powiązane dokumenty

Temat: Ustawienie podstawowych parametrów wejść centrali CA-10... Temat: Ustawienie podstawowych parametrów wyjść

Przedmiotem niniejszej szczegółowej specyfikacji technicznej (SST) są wymagania dotyczące wykonania i odbioru robót związanych z ustawieniem

Przed przystąpieniem do robót Wykonawca powinien uzyskać od producentów zaświadczenia o jakości (atesty) oraz wykonać badania materiałów przeznaczonych do wykonania

Dla przerzutnika zrealizowanego z bramek NAND poziomem aktywnym wejścia jest logiczne zero (stan niski), a poziomem spo- czynkowym logiczna jedynka (stan wysoki). Wejście

Ustalenia zawarte w niniejszej specyfikacji dotyczą zasad prowadzenia robót związanych z wykonaniem i odbiorem ustawienia krawężników betonowych typu ulicznego i

Jeśli pole obserwacji zostaje zawężone, to widziany jest nie- wielki fragment rzeczywistości, a reszta, która w danym momencie nie jest przetwarzana jako coś postrzeganego,

pinMode(8, OUTPUT); //ustawienie końcówki jako wyjście pinMode(8, INPUT); // ustawienie końcówki jako wejście.. pinMode(8, INPUT_PULLUP); // ustawienie końcówki jako wejście //

Od daty rozpoczęcia robót aż do wydania potwierdzenia zakończenia okresu gwarancyjnego, Wykonawca zobowiązuje się do zawarcia na własny koszt odpowiednich umów