W procesie projektowania i budowania mojego super zegarka , który będzie poligonem doświadczalnym w zakresie programowania , chodzą mi po głowie różne pomysły. Jednym z takich pomysłów jest zastosowanie dwóch MCU z dwóch konkurencyjnych firm tj. STM i Microchip. Ponieważ docelowo mój zegarek będzie miał dwie płytki : front i tył, dlatego jedną płytkę obsadzę STM32G0 a drugą PIC32CM lub ATSAML. Tym samym podnoszę sobie poprzeczkę i nie pójdę na łatwiznę w postaci MCU 8 bit Microchipa. Płytka frontowa zegarka z STM32G0 jest już na ukończeniu. Zabieram się za uruchomienie zegarka MCP79410 przy pomocy MCU STM32G071. Programuję w stylu Bare Metal czyli za pomocą rejestrów bez użycia HAL .
Blog jest formą pamiętnika technicznego, upamiętniający moją przygodę z mikrokontrolerami PIC firmy Microchip. "Per aspera ad astra..."
sobota, 18 grudnia 2021
STM32G0 - Bare Metal i zabawy z zegarkiem Microchipa MCP79410
W procesie projektowania i budowania mojego super zegarka , który będzie poligonem doświadczalnym w zakresie programowania , chodzą mi po głowie różne pomysły. Jednym z takich pomysłów jest zastosowanie dwóch MCU z dwóch konkurencyjnych firm tj. STM i Microchip. Ponieważ docelowo mój zegarek będzie miał dwie płytki : front i tył, dlatego jedną płytkę obsadzę STM32G0 a drugą PIC32CM lub ATSAML. Tym samym podnoszę sobie poprzeczkę i nie pójdę na łatwiznę w postaci MCU 8 bit Microchipa. Płytka frontowa zegarka z STM32G0 jest już na ukończeniu. Zabieram się za uruchomienie zegarka MCP79410 przy pomocy MCU STM32G071. Programuję w stylu Bare Metal czyli za pomocą rejestrów bez użycia HAL .
środa, 6 października 2021
Zegar LED czyli od lamera do Super Bohatera :)
Poczyniłem kilka lat temu projekt zegarka LED. Mózgiem zegarka był AVR,
wtedy jeszcze nawet nie słyszałem o PIC-ach :). Była to moja pierwsza
"poważna" konstrukcja oparta o mikrokontroler, która po dzień dzisiejszy
napawa mnie satysfakcją i dumą. Wykonałem kilka takich zegarków dla rodziny i
chodzą bezawaryjnie od lat. Zegarek stał się przyjacielem domu.
Inaczej spogląda się na twór własnej pracy a inaczej na gotowy produkt
kupiony w sklepie. Postanowiłem stać się ponownie Super Bohaterem i
wykonać udoskonalony produkt tak, aby cieszył oko domowników przez kolejne lata. Tym razem zegarek będzie większy,
inteligentniejszy i ładniejszy :). Czyli zrobię sobie zegarek , który w
chwilach niepowodzeń pogada ze mną , wysłucha , udzieli rad i porad
w tym psychoterapeutycznych :). Czyli zegarek psychoterapeuta. No okay ale taki to dopiero zrobię w wersji nr 3. :).
wtorek, 18 maja 2021
Interfejsy jako jedna z technik tworzenia kodu w embedded - zajęcia praktyczne
Sztuką jest biegle opanować tworzenie modułów oprogramowania nadających się do wielokrotnego wykorzystania, które stanowią budulec dla dużych i niezawodnych aplikacji. W przeciwieństwie do nowoczesnych języków obiektowych, język C nie ma zbyt wielu mechanizmów pozwalających łatwo tworzyć interfejsy programisty (API), a tym bardziej mechanizmów zachęcających do opracowywania takich interfejsów. Większość programistów C korzysta na co dzień z różnego rodzaju gotowych API i bibliotek je implementujących, ale względnie niewielu tworzy i udostępnia nowe API ogólnego przeznaczenia.
sobota, 8 maja 2021
Maszyna stanów przyjaciel embedownika :)
Maszyna stanów skończonych to pojęcie abstrakcyjne , definiuje zachowanie systemów dynamicznych jako maszyny
o skończonej liczbie stanów i skończonej liczbie przejść pomiędzy
tymi stanami. Definicja ta wydaje się dość abstrakcyjna , ale lepszej chwilowo nie znalazłem :). Maszyny stanów
skończonych odgrywają bardzo ważną rolę w programowaniu
w szczególności w świecie mikrokontrolerów. Umożliwiają m.in panowanie nad rozbudowaną sekwencją zdarzeń w programie i zwiększają znacząco niezawodność kodu. W wielu przypadkach maszyna stanów w połączeniu z przerwaniami może okazać się lepszym wyborem niż np. RTOS ,choć z drugiej strony nie w każdym przypadku maszyna stanów znajdzie zastosowanie. Bardzo powszechnym obecnie nurtem jest stosowanie maszyny stanów do nieblokującej obsługi interfejsów np.I2C, SPI, UART. W szczególności ten nurt możemy zaobserwować w bibliotekach Microchipa gdzie np. taki framework jak HARMONY "wypluwa" standardowo kod oparty o maszynę stanów. Ale i w MCC widzę , że maszyna stanów zaczyna być częstym gościem . Skoro producenci MCU opierają swoje biblioteki o maszynę stanów to znaczy, że coś w tym musi być I dlatego warto temu zagadnieniu przyjrzeć się bliżej.
poniedziałek, 3 maja 2021
STM32G0 - EXTI , konfiguracja przerwania zewnętrznego.
Konfiguracja przerwania zewnętrznego w STM32G0 dla wybranego źródła może być nie lada wyzwaniem dla osoby , która po raz pierwszy zetknie się z tym zagadnieniem. STM pogmatwał tutaj trochę i przynajmniej na początku odczujemy dyskomfort konfigurując ten moduł. W artykule postaram się pokazać jak poprawnie skonfigurować wybrany pin do współpracy z przerwaniem zewnętrznym.
czwartek, 29 kwietnia 2021
STM32G0 - randka z MDK ARM
MDK Microcontroller Development Kit firmy Keil to najwyżej oceniane w branży zintegrowane środowisko do programowania i debugowania MCU z architekturą ARM. Jak pisze producent, MDK jest najbardziej wszechstronnym rozwiązaniem programistycznym dla mikrokontrolerów opartych na architekturze ARM i zawiera wszystkie komponenty potrzebne do tworzenia, budowania i debugowania aplikacji wbudowanych. Jeśli na rynku pojawi się jakiś nowy MCU zbudowany w oparciu o architekturę ARM wydany przez dowolnego producenta to pierwszym środowiskiem w którym on się pojawi będzie MDK Keila. W zasadzie MDK jest wzorem środowiska do którego reszta może tylko się próbować równać. W artykule zerknę na środowisko MDK przez pryzmat STM32G0.
wtorek, 13 kwietnia 2021
STM32G0 - Hello World w Segger Embedded Studio
Jestem już w posiadaniu mojej płytki dla STM32G0. Jest fajna, jest czarna i oczy cieszy. Uśmiech na gębie od ucha do ucha. Na płytce dałem niebieskiego LED-a do wykorzystania przez użytkownika, czerń z niebieskim w półmroku powala :). Lubię cieszyć się z rzeczy prostych. Czas sprawdzić czy wszystkie komponenty czyli IDE i programator będą współpracować z moją płytką. Ostatnio kolega śmiał się ze mnie, że programuję MCU nie posiadając go fizycznie na płytce :). No tak jest najzabawniej :). A śmiech służy zdrowiu :). W artykule, napiszemy pierwszy program w ultra szybkim i lekkim środowisku SEGGER-a i za pomocą miluśkiego programatorka J-Link Edu Mini, spróbujemy wgrać wsad do STM32G071KBT6 , który znajduje się na mojej płytce. Życzę sobie powodzenia :).
sobota, 3 kwietnia 2021
STM32G0 - I2C , uruchomienie sterownika dotyku CAP1296 firmy Microchip .
Zadanie jakie sobie wytyczyłem tym wpisem to zapoznanie się z interfejsem I2C w STM32G0 . Ale aby zapoznanie nie było nudne, spróbuję uruchomić przy okazji sterownik dotyku Microchipa, CAP1296. W STM32G0 w wersji 32 pin, której używam mamy do dyspozycji dwa interfejsy I2C. Przy czym ten drugi czyli I2C2 jest trochę wykastrowany z funkcjonalności w stosunku do pierwszego czyli I2C1. Ale nie będzie to przedmiotem moich dociekań. Oba interfejsy oprócz standardowych prędkości 100 i 400 kHz mają możliwość pracy z prędkością 1 Mbit/s.
niedziela, 28 marca 2021
STM32G0 - ustawienie zegara.
W STM32G0 mamy do dyspozycji cztery podstawowe źródła taktowania.
LSI RC - wewnętrzny zegar 32kHz
LSE OSC - zewnętrzny zegar 32.768 kHz
HSI16 RC - wewnętrzny zegar 16 MHz
HSE OSC - zewnętrzny zegar 4-48 MHz
Dla wersji z USB mamy dodatkowo dedykowany wewnętrzny zegar HSI48 RC .
czwartek, 25 marca 2021
STM32G0 - zapis do rejestrów, wybrane zagadnienia.
W MCU 8-bitowych wszystko było proste, rejestry były proste, zapisy do nich były proste , życie było proste. W rejestrach nie było praktycznie pól bitowych o rozmiarze większym niż jeden bit, zapis sprowadzał się do operowania na jednym bicie .Człowiekowi było mało , więc stworzył 32-bitowe monstra. Rozmowa z nimi drastycznie się skomplikowała, wydłużyły się rejestry pojawiły się pola bitowe . Skoro rozmowa z MCU się skomplikowała to zaczęto wprowadzać dodatkową abstrakcje w postaci opasłych bibliotek typu HAL. Biblioteki tego typu uprościły komunikację użytkownika z rejestrami i migrację ale wprowadziły jednocześnie niepożądane zjawiska takie jak błędy związane z rozwojem biblioteki , dodatkowy narzut zasobów MCU jakie trzeba poświecić do obsługi biblioteki oraz wyraźne spowolnienie wykonywania zadań przez MCU w tym spowalnianie działania interfejsów komunikacyjnych . Dlatego w krytycznych czasowo aplikacjach tam gdzie nie można sobie pozwolić na luksus związany z wygodą stosowania biblioteki HAL, tam pożądana jest umiejętność rozmowy z MCU w technice określanej jako "Bare Metal" czyli to co w MCU 8-btowych było chlebem powszednim.
czwartek, 18 marca 2021
Projekt płytki dla STM32G0 i instalacja lekkiego środowiska firmy SEGGER.
Tak to nie pomyłka :), na moim blogu poświęconym głównie wyrobom firmy Microchip postanowiłem zajrzeć do ogródka "konkurencji" czyli do wyrobu firmy STM32. A cóż mnie skłoniło do takiego szalonego pomysłu ?, ano zwykła ludzka ciekawość :) i chęć poszerzenia swoich horyzontów wiedzy. Na widelec biorę przedstawiciela relatywnie nowej serii STM32G0. Budżetowy MCU oparty o rdzeń Cortex M0+. Ciekawostką jest tutaj to, że w tej serii STM próbował poprawić odporność na zakłócenia EM. Generalnie z tego co wiem to STM-y słabo wyglądały na tym polu. Drugą cechą STM-ów jest relatywnie słaba stabilność zegarów RC, przez co np. użycie USB bez zewnętrznego kwarca nie jest tutaj zalecane. W serii STM32G0 producent deklaruje, że stabilność zegara RC została poprawiona.
poniedziałek, 15 marca 2021
USB w PIC32MM - uruchomienie przykładu z biblioteki Microchipa.
Tym razem krótki wpis w którym pokażę jak w ultraszybki sposób możemy uruchomić komunikację po USB pomiędzy komputerem a mikrokontrolerem PIC32MM. Dla przypomnienia seria PIC32MM firmy Microchip to segment tanich i sprytnych mikrokontrolerów. Jest to bardzo udana seria Microchipa, którą w sposób łatwy zaprogramujemy bez użycia "ciężkich" bibliotek HAL-o podobnych. Jest to jedyna seria 32-bitowa konfigurowalna w MPLABX-IDE za pomocą wtyczki MCC ,co powoduje, że kontakt z tym mikrokontrolerem to czysta przyjemność. Ponieważ PIC32MM w standardzie ma na pokładzie USB, postanowiłem zobaczyć czy to działa :). Poszedłem w tym przypadku maksymalnie na skróty i użyłem przykładu Microchipa do uruchomienia komunikacji. Przykład ten zawarty jest w standardowej bibliotece/stosie USB , który dołączamy we wtyczce MCC. Pokażę zatem jak to ugryźć.
czwartek, 11 marca 2021
PIC18F04Q41 z rozbudowanymi peryferiami analogowymi
Microchip konsekwentnie rozbudowuje portfolio MCU 8-bitowych. Tym razem mamy modele w małych obudowach 14 i 20 pin (w tym mini-obudowa typu SOIC). Nowymi przedstawicielami MCU są np. PIC18F06Q41 z rozbudowanymi peryferiami analogowymi i PIC18F06Q40 bez takiej rozbudowy ale dostępny w obudowie 3x3 mm !!!. Standardem już u Microchipa staje się wyposażenie MCU 8-bitowych w kontroler DMA co dotychczas było domeną tylko MCU 16-bit i 32-bit. Wyjątkowo dam przekierowanie do ciekawego artykułu na portalu mikrokontroler.pl . Świetny artykuł Pana Tomasza Jabłońskiego. Zachęcam do zapoznania się z nim i poszerzenia swoich horyzontów wiedzy :).
sobota, 30 stycznia 2021
CAP1296 - sterownik dotyku od Microchipa i pierwsze uruchomienie na najnowszym PIC18F47Q84.
Sterownik CAP1296 umożliwia w prosty sposób zrealizowanie dotykowego interfejsu sterującego w naszych projektach. Do dyspozycji mamy 6 kanałów. Sterownik umożliwia dostep do takich funkcjonalności jak Press and Hold , Power Button, Proximity, Multiple Button Pattern Detection .Rozmowa ze sterownikiem odbywa się za pomocą interfejsu I2C , dostępna jest prędkość 400 kHz. Sterownik pracuje w ekosystemie napięciowym 3.3V oraz 5V. Obudowa jaką ja wybrałem do testów tego sterownika to SOIC14.
Subskrybuj:
Posty (Atom)