# Systemy Wbudowane ## Najważniejsze rzeczy, ktore być może się przydadzą, a być może nie ###### tags: `notatki` `sw20` ### Albo po prostu pytania z zeszłych lat **z uzasadnieiem. Ale moim, a nie oficjalnym.** **1.** Czym jest architektura harwardzka? - Jest to arhitektura, odzielną pamięcią programu i pamięcią rozkazów. Mikrokontrolery Atmega328p są właśnie takiej architektury. **2.** Po co używamy jest mostka H zamiast tranzystora przy sterowaniu silnikiem? - Użycie mostka H zamiast pojedyńczego tranzystora umożliwia sterowanie silnikiem w dwie strony. Ponadto układy ze zintegrowanym mostkiem H (takie jak sterownik L293D, którego używaliśmy) mają już wbudowane diody zabezpieczające. **3.** Czego NIE stosujemy, jeśli chcemy mieć większy prąd niż ten generowany przez mikrokontroler? - :heavy_check_mark: tranzystor bipolarny - :heavy_multiplication_x: wzmacniacz - :heavy_check_mark: mosfet - :heavy_check_mark: przekaźnik Wzmacniacz służy do wzmacniania sygnału, nie prądu. Mosfet to tak naprawdę tranzystor (unipolarny), używaliśmy go do sterowania silnikiem. Przekaźnik to taki przełącznik reagujący na stan wejściowy. W szczególności może działać podobnie do tranzystora - na wejściu mały prąd załącza większy prąd na wyjściu. :::info **Słów kilka o tranzystorach** Zetknęliśmy się z trzema typami: - tranzystor bipolarny PNP - aktywowany stanem **niskim** na bazie - tranzystor bipolarny NPN - aktywowany stanem **wysokim** na bazie - tranzystor unipolarny MOSFET - rodzajów MOSFETów jest sporo i raczej nas to nie obchodz; ogólnie to mosfety znoszą większy prąd i napięcie niż zwykłe tranzystory bipolarne ![](https://i.imgur.com/wOhWLBk.png) ::: **4.** Częstotliwość wejścia $f_{clk}$=16MHz, my chcemy 39,9 kHz. Jaka musi być wartość TOP dla licznika w trybie Fast PWM, aby taką uzyskać? - No jak my mamy pamiętać te wszystkie wzorki to trochę d00pa. Ale ten akurat pamiętam (przynajmniej dla zegara 16 bitowego, dla dwóch pozostałych może być inaczej, a tu nie jest sprecyzowane). Wzór: $\frac{f_{clk}}{N \cdot (1+TOP)}$, gdzie $N$ to jest wartość preskalera. **5.** `DDRB = 0x5;`. Ile pinów to wyjście? `0x5 == 0b00000101`; // wyjście to dwa piny **6.** `DDRB = 0xA7;`, `PORTB = 0x23;`. Ile pinów oznaczonych jako wyjście będzie miało wartość 0? **DDRB**: `0xA7 == 0b10100111;` **PORTB**: `0x23 == 0b00100011;` Tak naprawdę sprawdzamy wartość `DDRB & ~PORTB` - to zwróci nam bity ustawione na **output** i na stan niski - `0b10000100;` (dwa bity) :::info **Podstawowe informacje o sterowaniu pinami I/O** Piny mamy podzielone na grupy po max. osiem pinów. W przypadku naszego mikrokontrolera są to grupy **B**, **C** oraz **D** (patrz schemat). Każda grupa ma trzy podstawowe, ośmiobitowe rejestry. Każdemu pinowi odpowiada konkretnt bit w rejestrze. - **DDR$x$**: decyduje o trybie pracy pinu; `1 == output, 0 == input` - **PORT$x$**: działanie tego rejestru zeleżne jest od ustawienia **DDR$x$**: - jeżeli pin działa jako **output**: - ustawienie bitu na 1 spowoduje podanie stanu wysokiego na pinie - ustawienie bitu na 0 spowoduje podanie stanu niskiego na pinie - jeżeli pin działa jako **input**: - ustawienie bitu na 1 spowoduje aktywowanie wbudowanego rezystora *pull-up* - ustawienie bitu na 0 spowoduje wyłączenie wbudowanego rezystora *pull-up* - **PIN$x$**: jeżeli pin działa jako **input** odpowiedni bit zostanie ustawiony na 1 gdy odczytany zostanie stan wysoki, albo 1 gdy odczytany zostanie stan niski. Wyłączenie wbudowanego rezystora podciągającego spowoduje, że pin wejściowy będzie miał "trzy możliwe stany". To znaczy, gdy do pinu nie będzie dochodził żadnek konkretny sygnał, jego wartość będzie niezdefiniowana i zależna od wielu czynników. ::: **7.** Jaki slinik używa szczotek? - :heavy_check_mark: prądu stałego - :heavy_multiplication_x: indukcyjny - :heavy_multiplication_x: BLDC - :man-shrugging: krokowy Czy o tym w ogóle była mowa na wykładzie? Nie przypominam sobie. **8.** Gdzie nie jest możliwa pełna dwukierunkowa komunikacja? - :heavy_check_mark: SPI - tutaj jest ten motyw *slave/master*. $Master$ dyktuje warunki, w szczególności częstotliwość, ale komunikacja jest dwukierunkowa (ale czy pełna?) - :heavy_check_mark: $I^2C$ - sterowanie EEPROMem - :man-shrugging: $I^2S$ - coś tam z przesyłaniem dźwięku **chyba** w jedną stronę - :heavy_check_mark: UART - komunikowaliśmy się przez ten interfejs z komputerem **9.** Gdzie używa się adresowania do komunikacji z urządzeniami połączonymi? - :heavy_multiplication_x: SPI - komunikacja odbywa się poprzez jeden bufor, nie ma adresowania - :heavy_check_mark: $I^2C$ - jest adresowanie, np. adresowaliśmy pamięć w EEPROMie - :heavy_multiplication_x: $I^2S$ - nie ma adresowania, wysyłasz i elo - :heavy_multiplication_x: UART - bez adresowania, są bufory :::info **Trochę o interfejsach komunikacyjnych** - **SPI** - rasistowski interfejs, w którym komunikacja nie odbywa się na równych prawach. Jest biały *master* i czarny *slave*. Polega na wymianie zartości buforów pana i niewolnika. Wymaga trzech przewodów: - **MOSI** (*master output slave input*) – dane dla niewolnika - **MISO** (*master input slave output*) – dane od niewolnika - **SCLK** (*serial clock*) – sygnał zegarowy dyktowany przez *mastera* - **UART** - komunikacja odbywa się na równych prawach i wymaga tylko dwóch przewodów: **rx** (odbiór) i **tx** (transfer). Przez ten interfejs komunikowaliśmy się z komputerem. Kompromisem tutaj jest to, że obydwa urządzenia muszą mieć ustawioną tę samą częstotliwość (baudrate), inaczej informacje nie będę zrozumiałe. - **I2C** - komunikacja dwustronna wykorzystująca dwa przewody (obydwa muszą być podciągnięte rezystorem *pull-up*): - **SDA** – (Serial Data Line) linia danych - **SCL** – (Serial Clock Line) linia zegara - **I2S** - o tym nie było w ogóle, to niewiele wiem ::: :::info **Rezystory** Pull up ![](https://i.imgur.com/I38GSTe.png) Pull down ![](https://i.imgur.com/JOuJkNa.png) Hold up ![](https://i.imgur.com/TbMILcY.jpg) Hold down ![](https://i.imgur.com/5naJRUc.png) ::: :::info **Wzory z zadań obliczeniowych** ::: :::info **Typy lutownic** Lutownica oporowa ![](https://i.imgur.com/sHra3KY.png) Lutownica transformatorowa ![](https://i.imgur.com/Q0lDbUb.png) Lutownica hot-air ![](https://i.imgur.com/xslRaqK.png) ::: :::info **Silniki** ::: :::info **ADC** ![](https://i.imgur.com/i7aOtDx.png) atmega ma Successice Approximation ::: :::info **Volatile w C** https://elektronika327.blogspot.com/2016/07/c-zmienna-volatile.html ::: :::info **Freertos** ::: :::info **Uśpienia** ![](https://i.imgur.com/VhyOPRp.png) ::: :::info **Ile cykli zajmują operacje?** Z tego co znalazłem (choć jest duuużo opinii na ten temat) to dodawanie i odejmowanie to 1 cykl, mnożenie 3, reszta więcej. ::: Pytania na które musimy odpowiedzieć: * Czym jest napięcie otwarcia? ![](https://i.imgur.com/QPq1XNm.png) * Najważniejsze info o silnikach * Regulator PID * Proportional - błąd x współczynnik * Integral - całka po błędzie x współczynnik, po to żeby nie był zawsze poniżej ustawionej wartości * Derative - pochodna po błędzie, żeby nie było oscylacji przy szybkiej zmianie ustawionej wartości * Sterowania dzielą się na: * Sterowanie w pętli otwartej - kontroler stara się przewidzieć czynniki zewnętrzne i z wyprzedzeniem zmienić wejście procesu, żeby zminimalizować błąd. * Sterowanie w pętli zamkniętej - mierzymy wpływ czynników zewnętrznych i dostosowujemy wejście procesu na podstawie pomiaru. ![](https://i.imgur.com/gGFJ1Xt.png) * Typy boardów * Układy wzmacniaczy, wspólny: * emiter * baza * kolektor * Oblicznie rezystora do diody: http://extronic.pl/content/26-jak-dobrac-rezystor-do-diody-led * Regulatory: * Liniowe * Dropout voltage - zachodzi mocniej w regulatorach liniowych wykorzystujących PNP * Low dropout - typ regulatora wykorzystujący PNP, potrzebne dobre dobranie kondensatorów * Impulsowe * Wysoka efektywność * Pozwala podnosić napięcia i zmienić ich polaryzację * Wymaga więcej elementów * Są źródłem interferencji elekromagnetycznej * Regulator step down ![](https://i.imgur.com/5m9Nm57.png) * Odczyt pamięci flash (progmem) * Freertos (czego nie można robić) - nie można zwalniać semaforów binarnych po otrzymaniu ich * Sprzętowy i programowy debouncing przycisków * Rodzaje kondensatorów Żeby dioda się zapaliła to potrzebny jest pin ustawiony na wyjście i stan niski 0 ![](https://i.imgur.com/3oT5qpT.jpg) ![](https://i.imgur.com/UNhLbKw.jpg) ![](https://i.imgur.com/XsCOgnD.png) PWM (ang. Pulse-Width Modulation) – metoda regulacji sygnału prądowego lub napięciowego, o stałej amplitudzie i częstotliwości, polegająca na zmianie wypełnienia sygnału