Skip to content
Snippets Groups Projects
Instrukcje.md 22.86 KiB

Wstęp

Mikrokontroler jest urządzeniem programowalnym pod postacią układu scalonego. Układem scalonym nazywamy komponent elektroniczny scalający wiele elementów w jednej obudowie. Mikrokontroler zawiera w sobie:

  • mikroprocesor

  • RAM

  • ROM (Flash lub EEPROM)

  • Peryferia

Mikrokontrolery różnią się od typowego komputera PC:

  • ilością zasobów (RAM I ROM)

  • Architekturą procesora - PC uniwersalnie używają architektur x86 i x86-64, natomiast mikrokontrolery mogą mieć różne architektury procesorów. Często używane są procesory o architekturze ARM.

  • Mikrokontrolery wykorzystywane są do niskopoziomowych (blisko sprzętu i elektroniki) zadań, w porównaniu z PC gdzie operujemy daleko od sprzętu, na wysokim poziomie abstrakcji.

Mikrokontrolery są przystosowane do “bycia mózgiem” i sterowania urządzeń nie wymagających dużych mocy obliczeniowych (np. pralek). Urządzenia wykorzystujące mikrokontrolery są nazywane systemami wbudowanymi.

Podczas laboratorium nauczymy się programowania mikrokontrolera firmy Nordic Smiconductor, a mianowicie NRF52840. Cechą szczególną tego mikrokontrolera jest dodatkowy rdzeń będący sterownikiem BLE (Bluetooth Low Energy)

Mikrokontrolery są sprzedawane razem z devkitem, czyli pomocniczą płytką elektroniczną stanowiącą interfejs do programowania.

Używany przez nas devkit to płytka PCA10059, która jest w formie Dongle USB, jak widać na rys. 1. Mikrokontroler nrf52 to ten czarny kwadratowy układ scalony pośrodku płytki. Płytka zawiera też kilka peryferów takich jak przycisk reset, diody LED, czy antenę BLE, które będą naszym interfejsem z mikrokontrolerem.

By zaprogramować płytkę będzie nam potrzebny również interfejs z naszym PC. W wypadku PCA10059 mamy do dyspozycji złącze USB. Oprócz programowania posłuży ono nam do komunikacji poprzez porty szeregowe, dzięki czemu będizemy mogli widzieć komunikaty w naszej konsoli na PC. Kod kompilować będziemy również na PC. Zabieg programowania z jednej architektury na drugą nazywamy kompilacją na krzyż (cross-compilation). Pomimo niskopoziomowej natury, mikrokontrolery będziemy programować używając wysokopoziomowego języka C.

Rys. 1: nrf52 PCA10059 USB Dongle

Żródła: img https://www.nordicsemi.com/Software-and-tools/Development-Kits/nRF52840-Dongle

LAB1

GPIO

Każdy element elektroniczny posiada określoną ilość wyprowadzeń (pinów), czyli miejsc do których możemy się podłączyć przewodami lub ścieżkami nadrukowanymi na płytce. Rys 3 przedstawia notę katalogową naszego mikrokontrolera, na której widać wszystkie jego piny.

*Rys. 2: Połączenie diod na płytce*

W układach cyfrowych przyjmujemy zazwyczaj dwa poziomy sygnałów które będą płynąć w naszym ukłądzie - 0 oraz 1; Tym wartościom przypisujemy określone poziomy napięć. Tu jedynka będzie miała wartość 3.3V, a zero będzie małym napięciem bliskim 0V. Te same jedynki i zera są zapisywane w rejestrach jako znane nam liczby w systemie binarnym.

Najprostszym peryferium mikrokontrolera są piny GPIO (General Purpose Input Output). GPIO może być w jednym z dwóch trybów: trybie wejścia (input)), trybie wyjścia(output).

W trybie wyjścia GPIO może podać na swój pin wartość 1 lub 0. W trybie wejścia moze odczytać te wartości i podać je nam na poziomie aplikacji. GPIO jest więc naszym elektronicznym interfejsem.

W mikrokontrolerze nrf52 mamy do dyspozycji dwa sterowniki GPIO po ok. 32 piny każdy.

*Rys. 3: Mikrokontroler i opisanymi pinami*

Na rys 3 są one opisane jako Px.yy , gdzie x to numer sterownika, a yy to numer pinu.

LED

Podstawowym interfejsem w przypadku mikrokontrolerów są zazwyczaj LEDy. Więc nasze “Hello World” będzie polegać na zapaleniu diody.

Dioda to element elektroniczny który cechuje sie tym, że przewodzi prąd tylko w jedną stronę. Rys. 2 i 3 zostąły wzięte z dokumentacji naszego devkitu (dostępne tutaj ). Na Rys 2. Zaznaczone są połączenia diod LED na płytce. Symbol VDD lub czasem VCC oznacza zasilanie, natomiast symbol GND lub symbol masy (rys.4), oznacza masę. Zasilanie to w naszym przypadku węzeł mający potencjał 3.3V, a masą węzeł o potencjale 0V.

*Rys. 4: Symbol masy*