Blog jest formą pamiętnika technicznego, upamiętniający moją przygodę z mikrokontrolerami PIC firmy Microchip. "Per aspera ad astra..."
poniedziałek, 30 grudnia 2019
ATSAML10E16A - Mini Board , spontaniczny projekt płytki developerskiej.
wtorek, 24 grudnia 2019
czwartek, 19 grudnia 2019
PIC32MM i moduł Ethernetowy Wiznet W5500 - komunikacja z chmurą za pomocą MQTT ,zajęcia praktyczne cz.5
W części nr 4 wątku o komunikacji z chmurą pokazywałem prostą metodę rozmowy z chmurą opartą na samym protokole TCP i strumieniu znakowym.
Od strony chmury komunikacja taka obsługiwana była w warstwie aplikacji przez protokół Telnet. Metoda ta znalazła uznanie wśród czytelników bloga, nie bez przyczyny, jest tak prosta , że już prościej się nie da. Ale to nie koniec niespodzianek dotyczących metod komunikacji z chmurą. Na deser zostawiłem najbardziej spektakularną metodę opartą o protokół MQTT. Jest to metoda obsługiwana praktycznie przez wszystkie chmury, jeśli przez jakąś nie jest obsługiwana to znaczy, że ta chmura nie warta jest uwagi z punktu widzenia ekosystemu IoT. Zapraszam do podróży po MQTT w aspekcie praktycznym.
poniedziałek, 16 grudnia 2019
PIC32MM i moduł Ethernetowy Wiznet W5500 - komunikacja z chmurą za pomocą TCP ,zajęcia praktyczne cz.4
Kontynuujemy przygodę z modułem ethernetowym W5500 i PIC32MM oraz chmurą Ubidots. W części nr 3 artykułu pokazałem metodę komunikacji z chmurą opartą o protokół HTTP i metodę POST. Wysyłaliśmy z powodzeniem daną do chmury. Wspomniałem, że pokażę jak się tą metodą odbiera dane. Kiedy podczas testów odbierania danej z chmury zobaczyłem ile nadmiarowych informacji musimy odebrać aby dobrać się do naszej danej , doszedłem do wniosku , że nie będzie to preferowana metoda komunikacji z chmurą dla zestawu MCU + W5500. Dlatego nie będę tego wątku kontynuował. Chmura Ubidots ma tę ogromną zaletę, że dostarcza różnych metod przesyłania danych do wyboru, jedną z nich jest bardzo prosta metoda oparta na samym protokole TCP lub UDP i zapytaniach znakowych . Od strony chmury w warstwie aplikacji, tego typu prosta komunikacja obsługiwana jest przez protokół Telnet , stworzony dla terminali znakowych. Telnet jest najstarszą i najbardziej elementarną usługą internetową , która dzisiaj została wyparta przez protokół SSH. Ekosystem internetu i usług sieciowych opiera się na ogromnej liczbie protokołów. W artykule pokażę jak posłużyć się bardzo prostą metodą komunikacji z chmurą. Nie będzie żadnych nadmiarowych komunikatów tak jak w przypadku protokołu HTTP.
środa, 4 grudnia 2019
PIC32MM i moduł Ethernetowy Wiznet W5500 - komunikacja z chmurą za pomocą HTTP i API REST ,zajęcia praktyczne cz.3
Czas na jedno z ciekawszych przedsięwzięć związanych z wykorzystaniem modułu ethernetowego W5500 firmy Wiznet. Tematyka chmur zaprząta moje myśli od jakiegoś czasu. Z zazdrością patrzyłem na moduły IoT np. takie jak PIC IoT firmy Microchip, które potrafiły wymienić dane z chmurą w obie strony. Mankamentem jak dla mnie w przypadku tego typu modułów jest ograniczenie współpracy do jednej firmy "Chmurowej" tutaj akurat Google. Jest to podyktowane wykorzystaniem urządzenia kryptograficznego ATECC608A zwiększającego poziom bezpieczeństwa przesyłu danych. Gdzie zatem wolność wyboru ? jedna chmura i koniec ?. Jeśli nie prezentujemy danych wrażliwych i sprawy bezpieczeństwa nie są kluczowe w naszym projekcie sieciowym to nie ograniczajmy się w wolności wyboru :). Duet PIC32MM + W5500 skomunikuje się z każdą chmurą, zatem niech żyje wolność :). W artykule pokażę na przykładzie wybranej chmury jedną z metod wysyłania i pobierania danych z chmury. Radość z pierwszego uaktualnienia danej w chmurze była ogromna :). Takiej satysfakcji nie zastąpi żaden gotowy moduł przysposobiony przez producenta do komunikacji z chmurą :)
poniedziałek, 2 grudnia 2019
PIC32MM i moduł Ethernetowy Wiznet W5500 - serwer TCP/IP, zajęcia praktyczne cz.2
W części pierwszej zajęć praktycznych pokazałem działanie mini-serwera UDP. W tym wpisie zajmiemy się kolejną dostępną opcją w module W5500 firmy Wiznet .Rozbudujemy nasz program z części 1 o funkcjonalność mini-serwera TCP. Nasz mini-serwer będzie na każde wysłane do niego zapytanie klienta z sieci lokalnej reagował wysłaniem kodu HTML. Do czego to może się przydać ? Mnie do głowy przychodzi pomysł np. realizacja ustawienia/konfiguracji jakiegoś urządzenia za pomocą przeglądarki www. Nie musimy wtedy angażować do tego celu wyświetlacza i interakcji z użytkownikiem do niego. W artykule pokażę jak zrealizować funkcję mini-serwera TCP przy pomocy modułu W5500 firmy Wiznet.
środa, 27 listopada 2019
Microchip rozbudowuje swoje portfolio w zakresie pamięci EERAM.
Zarąbisty produkt Microchipa - pamięć EERAM, który skradł moje serce od pierwszej sekundy użycia tego rodzaju pamięci. Z radością donoszę, że oferta tych pamięci została powiększona o nowe modele z interfejsem SPI i rozmiarze aż 1 Mbit . Każdy z nas zna wady klasycznej pamięci EEPROM, wolne toto , trzeba się pieprzyć ze stronicowaniem takich pamięci i w ogóle blee.. I tu wkracza Super Hero - Microchip ze swoją pamięcią EERAM w której brak stronicowania, szybkość zapisu na poziomie pamięci SRAM, po zaniku zasilania dane przepisane do pamięci statycznej a po powrocie zasilania przepisane z powrotem do pamięci SRAM. Jeśli ktoś nie czuje mocy tego wynalazku to ja cie przepraszam :)
niedziela, 24 listopada 2019
PIC32MM i moduł Ethernetowy Wiznet W5500 - serwer UDP, zajęcia praktyczne cz.1
Moduł W5500 sprawił mi dużo satysfakcji podczas jego poznawania. Zagadnienia z jakimi przyszło mi się zmierzyć po drodze były mi obce, dlatego podwójna satysfakcja, że udało się zgłębić "tajemną" sieciową wiedzę. Dziękuję ci zatem module W5500 za poszerzenie moich horyzontów wiedzy :).Przetarłem szlak ,zatem zapraszam do wspaniałej przygody z modułem Ethernetowym W5500 firmy Wiznet. W artykule pokażę jak prosto ogarnąć moduł W5500 za pomocą PIC32MM . W zajęciach praktycznych nawiążemy komunikację za pomocą protokołu UDP pomiędzy naszym modułem W5500 a lokalnym PC . Po drodze skorzystamy z narzędzi sieciowych takich jak WIRESHARK aby podsłuchać sieć. Ponadto pokażę w jak prosty sposób możemy wysyłać pakiety UDP z poziomu systemu LINUX. Artykuł będzie wstępem przed kontynuacją tematu , którego zwieńczeniem będzie pełna realizacja komunikacji z wybraną Chmurą. Mam nadzieję , że mi się uda to zrealizować. Taki wytyczam sobie cel mojego spotkania z modułem W5500 . Howgh.
sobota, 16 listopada 2019
PIC32MM i printf() - prosty wyrzut strumienia danych po UART.
Często zdarza się , że potrzebujemy monitorować pracę programu i wyświetlać komunikaty lub mieć podgląd na jakieś dane , szczególnie na etapie testowania funkcjonalności programu. Jednym z mediów do wyświetlania danych/komunikatów jest wyświetlacz , ale co w przypadku kiedy chcemy na przykład wyświetlić więcej komunikatów niż pomieści nam wyświetlacz ?. Wtedy przychodzi nam z pomocą UART i funkcja printf() ze standardowej biblioteki języka C. Ta para powoduje , że możemy w bardzo prosty sposób zobrazować komunikaty/dane w oknie monitora PC, nie pisząc nawet ani kawałka kodu konfiguracyjnego. W artykule pokażę jak skorzystać z funkcji printf() w programie , przekierować do niej strumień danych z UART i wyświetlić to na monitorze.
środa, 13 listopada 2019
WIZnet W5500, moduł ethernetowy ze sprzętowym stosem TCP/IP.
Podczas zabaw z chmurą dotarło do mnie, że fajnie byłoby mieć własny Gateway dostępowy oparty na mikrokontrolerze i zbudowany własnymi rękoma. Wiele projektów w tym zakresie opartych jest na RPi ale często jest to przerost treści nad formą. Po co angażować mikroprocesor i system operacyjny dla w sumie niezbyt skomplikowanego zadania. Dlatego moje poszukiwania skierowałem poza ekosystem RPi. Znalazłem młody projekt ZERYNTH , który w bajecznie prosty sposób umożliwia zbudowanie Gateway'a dostępowego do chmury w oparciu o wspierane płytki developerskie. Mam jednak takie podejście , że jak coś jest zbyt proste to szybko się nudzę, normalnie jak dziecko :) . Dlatego postanowiłem zrobić coś co wymagałoby większego zaangażowania "mózgownicy" czyli np. dostęp MCU do chmury za pomocą modułu Ethernetowego. Układ , który sobie upatrzyłem do realizacji tego zadania to W5500 firmy WIZnet. Do testów kupiłem moduł ETH WIZ click Serbskiej firmy Mikroelektronika , który dostaniemy również na naszym rynku.
poniedziałek, 11 listopada 2019
PIC18FxxQ84 - 8 bitowiec firmy Microchip z CAN FD na pokładzie.
Firma Microchip prowadzi szeroko zakrojoną ekspansję mikrokontrolerów 8-bitowych m.in w swojej flagowej serii PIC. Zjawisko jest o tyle ciekawe, że po wykupieniu firmy ATMEL wydawać by się mogło , że Microchip oprze swoje nowe konstrukcje PIC o rdzeń firmy Atmel. Nic z tych rzeczy. Pomimo , że core Microchipa jest mniej wydajne od Atmel to jednak jest dziedzina w której core Microchipa bije na głowę wyroby Atmel-a w ekosystemie 8-bitowym a jest to odporność na zakłócenia. Seria PIC jest dzięki tej właściwości bardzo chętnie stosowana w przemyśle ,gdzie odporność na zakłócenia jest kluczowym aspektem dla MCU. Kolejnym ciekawym modelem , który wejdzie niedługo do sprzedaży jest PIC18FxxQ84. Microchip jest znany z ciekawych peryferiów , którymi obudowuje swoje wyroby. Tym razem mamy do czynienia, zdaje się z pierwszym na świecie MCU 8-bitowym wyposażonym w CAN FD przy czym kompatybilność wsteczna z CAN 2.0 jest zachowana.
wtorek, 29 października 2019
ZERYNTH - sterowanie stanem pinu za pomocą chmury WolkAbout.
Temat związany z chmurami cokolwiek mnie zafascynował. Dotychczas patrzyłem na ten temat od strony sprzętu przez pryzmat wyłącznie Rasbety PI . Okazuje się jednak , że łączność z chmurą możemy z powodzeniem zrealizować na dowolnym MCU . Co jest do tego potrzebne oprócz MCU ? Moduł WiFi lub ciekawiej np Wiznet W5500 ze sprzętowym stosem TCP/IP . Z chmurą możemy rozmawiać na dwa sposoby , za pomocą API REST i MQTT. W przypadku MQTT chmura robi za Brokera. Oprogramowanie MCU do komunikacji z chmurą wydaje się być zadaniem cokolwiek ambitnym w szczególności kiedy spotykamy się z nowymi dla nas zagadnieniami . Dlatego dobrym sposobem dla obycia się z klimatem chmur jest zastosowanie technologii np. ZERYTH, który został stworzony do prostej implementacji komunikacji z chmurą. Bazując na przykładach z dokumentacji ZERYTH możemy w ciągu kilku minut załapać jak posługiwać się językiem Python i jak zrealizować łączność z chmurą. W tym artykule pokażę w jaki sposób możemy sterować stanem pinu na płytce wspieranej przez ZERYNTH z wykorzystaniem chmury WolkAbout .
piątek, 18 października 2019
ZERYNTH + WolkAbout = prosty przepis na rozmowę z Chmurą.
Jestem pod dużym wrażeniem prostoty z jaką udało mi się "zagadać" z webową Chmurą. Dotychczas był to dla mnie temat trochę z pogranicza czarnej magii. Ale dzięki ZERYNTH-owi i wspieranej przez ten projekt czeskiej chmurze WolkAbout ,udało mi się zaprzyjaźnić z tym tematem całkowicie bezboleśnie. Jest wiele obecnie na rynku rozwiązań w postaci płytek różnych producentów , które mają zaimplementowany wsad do realizacji połączenia z chmurą. Wadą tych rozwiązań jest w/g mnie ograniczenie do jednej wybranej chmury. W przypadku projektu ZERYNTH mamy do wyboru wiele chmur . Mnie w oko wpadła czeska chmurka WolkAbout i z tą chmurką udało mi się w prosty sposób porozmawiać. A co mnie kręci w projekcie ZERYNTH ? przede wszystkim możliwość prostej implementacji Gateway'a przy pomocy języka Python. Dopóki nie poznałem projektu ZERYNTH ,przymierzałem się do RasberyPI w roli bramy ale teraz widzę, że nie ma takiej potrzeby. Za ułamek kwoty RasberyPI mogę osiągnąć tą samą funkcjonalność w prostszy sposób na płytce z MCU 32 bit wspieranej przez ZERYNTH. A baza płytek ciągle się powiększa. W 2020 r zobaczymy wsparcie m.in dla PIC32.
wtorek, 8 października 2019
PIC32MM - biblioteka do obsługi kart SD od Microchipa. Wyświetlanie bitmapy na LCD.
Wszystkim dobrze znana biblioteka FatFs została bardzo ładnie i zgrabnie zaimplementowana dla serii PIC32MM . Kawał dobrej roboty zrobił Microchip ,dzięki czemu nie trzeba się trudzić aby bibliotekę FatFs przysposobić do współpracy z naszym miłym MCU. Co więcej biblioteka jest fajnie konfigurowalna i automatycznie dołączana z poziomu MCC w MPLAB-X IDE. Użytkownik praktycznie zwolniony jest z wszelkiej ingerencji w soft i może skupić się wyłącznie na używaniu biblioteki. W artykule pokażę jak dodać bibliotekę do projektu i jak tego użyć . Naszym celem będzie wyświetlenie obrazka z nagłówka artykułu na LCD i pobranie jego danych z karty SD . Mały Fiat na "małym" wyświetlaczu LCD powinień współgrać idelanie :)
piątek, 4 października 2019
ZERYNTH - Hello World
ZERYNTH to platforma implementująca język PYTHON we wspieranych przez projekt MCU. Umożliwia m.in proste podłączenie MCU do chmury i proste oprogramowanie tego w języku PYTHON. Na projekt ten wpadłem kompletnie przypadkiem ale zainteresował mnie i postanowiłem chwilę się jemu przypatrzeć. W szczególności , że projekt wspiera MCU firmy Microchip obecnie na razie tylko ATSAM-y ale jak mi powiedział twórca projektu na początku 2020 r wspierana będzie seria PIC32. Projekt jest cały czas rozwijany i dodawane są nowe MCU. Moim zdaniem rzecz jest ciekawa i warta zapoznania się z nią. A zaskakujące w tym wszystkim jest to, że to naprawdę działa :) . Spróbujmy na początek zasterować wybranym pinem MCU przy pomocy języka PYTHON.
niedziela, 29 września 2019
ILI9341 - kolorowy wyświetlacz w rozmiarze 2.8"
W moich zbiorach pojawił się wyświetlacz ILI9341 w rozmiarze 2.8 ". Przygodę z kolorowym LCD zaczynałam od wymiaru 1.8 ". Człowiekowi zawsze mało i w imię tej zasady wspinam się z rozmiarem powoli w górę pomimo, że kompleksów żadnych nie mam :) . Kolejnym wyświetlaczem jaki będę poznawał będzie zapewne w wymiarze 3.5 ". W zasadzie bibliotekę dla PIC32MM i ATSAM już poczyniłem dla mniejszego brata 2.2 ". Biblioteka powinna działać zatem i na 2.8 " bez żadnych zmian. Dodatkowo wyświetlacz 2.8" obsługuje dotyk ale to temat na oddzielny artykuł. W tym artykule chciałbym pokazać podstawy sterowania wyświetlaczem LCD czyli jak w ogóle zacząć cokolwiek wyświetlać na LCD z rodziny ILIxxxx.
niedziela, 22 września 2019
Jak napisać w języku C wygodny dostęp do warstwy sprzętowej . Praktyczny przykład na bazie modułu radiowego SI4463.
W artykule pokażę jedną z metod poruszania się po warstwie sprzętowej w języku C . Swoje rozważanie oprę na module radiowym SI4463. Ale tak naprawdę sprzęt jest tylko tłem dla pokazania samej metodologi i podejścia do zagadnienia. W wielu przypadkach bazujemy na bibliotekach sprzętowych napisanych przez innych adeptów języka C ,no bo w sumie po co odkrywać koło na nowo. Jeśli mamy szczęście to z takich bibliotek można się czegoś nauczyć bo metodologia jest zrozumiała i w sposób przejrzysty zakodowana. Ale to rzadkość. W większości przypadków do bibliotek czujemy awersję bo styl nam nie leży i ostatecznie trudno zrozumieć co poeta miał na myśli etc. Działa bo działa ale analiza kodu przysparza nas o ból głowy, więc odpuszczamy. Ekspertem od języka C nie jestem i wymądrzać się tutaj nie mam zamiaru. Ale ja wiele nauczyłem się na podstawie plików nagłówkowych napisanych dla MCU 32 bitowych. Gdzie królują Struktury , Unie, Wskaźniki . Moim zdaniem to olbrzymia kopalnia wiedzy o programowaniu warstwy sprzętowej w języku C, ponieważ te pliki piszą zawodowi informatycy, dlatego mamy pewność, że zastosowane rozwiązania programistyczne są optymalne.
środa, 18 września 2019
SI4463 - transciver RF firmy Silicon Labs - STANDBY mode (50nA)
Mój ulubiony moduł radiowy SI4463 jest mistrzem w trybach Power Saving. Dlatego jest doskonałym wyborem dla aplikacji bateryjnych. W najniższym dostępnym trybie Shutdown uzyskamy pobór prądu na poziomie 30 nA !!!. Czyli można by rzec, że ilość śladowa. W artykule podejmę się krótkiej retrospektywy trybów Power Saving dostępnych w module. Ze szczególnym uwzględnieniem trybu STANDBY, który wydaje się być idealnym trybem z punktu widzenia poboru prądu i czasu pobudki.
wtorek, 10 września 2019
SAM L10/L11 External Interrupt Controller (EIC)
Artykuł jest potrzebą chwili i powstał pod wpływem pisania biblioteki dla modułu radiowego SI4463. Podczas pisania biblioteki zaszła potrzeba użycia przerwania sprzętowego na pinie PA03 , który współpracuje z pinem IRQ modułu radiiowego RF. Niby sprawa trywialna ot wyczarujmy sobie przerwanie no ale kiedy poznajemy jakiś MCU i pierwszy raz stykamy się z jego modułem peryferyjnym opierając się tylko na dokumentacji to takie zadanie może stać się wyzwaniem :) . W artykule pokażę jak wyglądała moja droga do rozpoznania i w efekcie konfiguracji przerwania sprzętowego z wykorzystaniem modułu peryferyjnego EIC (External Interrupt Controller)
sobota, 7 września 2019
ATSAML10/11 - nowa wersja (ver 3.3) płytki developerskiej
Nowa wersja płytki dla ATSAML10 jest już dostępna. Przyczynkiem aktualizacji była praca nad biblioteką dla modułu radiowego SI4463. W boju wyszło mi, że przydałoby się więcej dostępnych GPIO dla gniazda pod moduł RF. Przy okazji wykryłem błąd związany z przełącznikami SW1 i SW2. Do płytki dodałem dwie diody LED , domyślnie do wykorzystania jako sygnalizacja dla modułu radiowego , tryb TX i RX. Nowa płytka jest dostępna na GitHub . Płytka sprawdza się w boju jest ładna , seksowna i funkcjonalna. Szczególne pięknie prezentuje się z obsadzonym wyświetlaczem i modułem radiowym RF a wszystko to spasowane kolorystycznie , można oprawić w ramki wieszać na ścianie , podziwiać i cieszyć się widokiem :)
czwartek, 15 sierpnia 2019
ZERYNTH - ciekawa koncepcja zastosowania języka Python w obszarze IoT.
Natknąłem się niedawno na ciekawy koncept przeniesienia percepcji programowania MCU 32 bitowych na pułap języka wysokopoziomowego jakim jest Python. Temat mnie zainteresował bo widzę przyszłość dla takiego podejścia. O ile na rynku są już jakieś lepsze lub gorsze próby implementacji Pythona np. w świecie embedded to ZERYNTH na tym tle wyróżnia się pozytywnie pod każdym względem. Przy czym nie tracimy tutaj możliwości korzystania z języka C . ZERYNTH umożliwia zgrabne łączenie Pythona z C. Wprowadzenie abstrakcji języka wysokopoziomowego jakim jest Python w świat MCU daje wbrew pozorom sporo korzyści. Jedną z nich jest przejrzysty i łatwy w utrzymaniu kod. Świat Pythona sprawia , że sporo rzeczy można zaimplementować małymi zasobami czasu i w sposób bardzo prosty a jednocześnie mamy do dyspozycji przyjazny język wspierający różne paradygmaty programowania, w tym obiektowość. Ponieważ Python rokuje być językiem wiodącym w przyszłym świecie autonomicznych urządzeń a w szczególności pojazdów autonomicznych , dlatego w/g mnie warto śledzić nowe technologie związane z tym językiem.
sobota, 27 lipca 2019
SI4463 - transciver RF firmy Silicon Labs do zastosowań bateryjnych, konwersja biblioteki dla ATSAML10 firmy Microchip.
W tym wpisie zajmę się konwersją biblioteki transcivera radiowego SI4463 napisaną dla ekosystemu PIC32 do ekosystemu ATSAML. W szczególe bibliotekę napisaną dla PIC32MM przekonwertujemy do ATSAML10E16. Stosowny artykuł w przypadku PIC32MM poczyniłem tutaj . Trasciver SI4463 zaskoczył mnie bardzo pozytywnie przy testach wewnątrz-budynkowych. W rozległym piętrowym obiekcie z żelbetonowymi przeszkodami nie było najmniejszych problemu z nawiązaniem łączności i przesyłem danych. Ani jedna ramka nie została utracona na 100 przesłanych pomimo ,że moduły były przedzielone nawet i kilkoma kondygnacjami o grubych stropach. Postanowiłem zatem kontynuować bliski kontakt z tymi modułami ale tym razem z perspektywy mikrokontrolera opartego o rdzeń M23 firmy Microchip.
niedziela, 21 lipca 2019
ATSAML10 - biblioteka dla kolorowego wyświetlacz ILI9341 2.2" 320x240.
Ponieważ moja płytka developerska dla ATSAML10 i 11 stała się faktem (ostateczna wersja 3.1), dlatego po szybkim rozpracowaniu SPI w ATSAML10 ,zająłem się dostosowaniem biblioteki dla wyświetlacza kolorowego LCD 2.2 ILI9341 . Wyświetlacz ten znajduje się na mojej sprytnej płytce developerskiej dedykowanej ATSAML10 i 11. Program dla ATSAML10 napisany jest bez użycia ASF a z wykorzystaniem plików nagłówkowych dostarczonych przez producenta i znajdujących się w środowisku SEGGER. Identyczną bibliotekę poczyniłem dla PIC32MM i ATSAML21. W sumie biblioteka jest bardzo przyjazna do robienie konwersji dla innych MCU.
niedziela, 30 czerwca 2019
Jestem na urlopie.
Korzystam z uroków Polskiej natury i wybrałem się pod namiot na Mazury. Ponieważ nabawiłem się ostatnio przepukliny pachwinowej i czekam obecnie na operację, dlatego ograniczam ruch do pływania i nordic walking. Rower niestety musiałem odpuścić. No cóż należy się cieszyć , że wogóle można cokolwiek robić :) Po latach wakacji w ciepłych krajach , stwierdzam, że najlepiej wypoczywam na naszej Polskiej ziemi. Klimat nam się ociepla i jak gdzieś czytałem migruje do nas śródziemnomorski. Więc niedługo Polska przez turystów będzie postrzegana jako ciepły kraj :)
wtorek, 4 czerwca 2019
ATSAML10 - spotkanie z SPI.
Generalnie wszystko co napisałem kiedyś o ATSAML21 dotyczy również ATSAML10 i ATSAML11. Ta sama seria L oznacza, że wspólne peryferia są opisane tymi samymi rejestrami. Więc przenośność kodu jest bardzo wysoka. Nie będę zatem ponownie powtarzał wiedzy przedstawionej w artykule ATSAML21 - uruchamiamy SPI czyli SERCOM nie tylko dla orłów. Bo większość tego co zostało napisane w tamtym artykule możemy zastosować do ATSAML10 i 11. Po krótce przyjrzymy się jak wygląda droga do uruchomienia SPI w naszym ATSAML10E16. Na pewno nie będzie nudno bo ATSAM-y są nietrywialnymi mikrokontrolerami i z nimi nie można się nudzić :)
środa, 29 maja 2019
ATSAML10 - pierwsze mruganie LED
Moja płytka do ATSAML10 i 11 jest gotowa, czas zatem zacząć zabawę . Na pokładzie dla przypomnienia mamy ATSAML10E16 firmy Microchip w obudowie 32 pin. Programy pisać będę w środowisku SEGGER-a . Do wgrania wsadu i debugowania używam programatora J-LINK Edu Mini. Zabawę zaczynam od wgrania aktualnego firmware do programatora. W tym celu ściągam J-Link Software w wersji dla Windowsa. Po zainstalowaniu softu znajduję program J-Link Configurator i z jego poziomu robię update firmware programatora. Cały proces jest bardzo prosty, więc nie ma potrzeby tutaj się więcej nad tym rozwodzić. Aktualizacja programatora jest potrzebna bo rdzenie M23 i M33 to nowość na rynku. Swoją drogą praca z programatorem J-Link firmy SEGGER to czysta przyjemność.
niedziela, 26 maja 2019
ATSAML10 - seksowna płytka gotowa do działania.
Wreszcie znalazłem czas aby poskładać do kupy płytkę developerską dla ATSAML10 i ATSAML11. Przy pierwszym podejściu do płytki okazało się , że pominąłem w obwodzie zasilania MCU dławik 10uH, bez którego nie skorzystamy z dobrodziejstw zasilania w trybie Buck. Musiałem poprawić projekt płytki i złożyć ponownie zamówienie na ich wykonanie. Poprawiony projekt płytki jest dostępny w wersji ver 3.0 na GitHub.
Czerwień płytki jest po prostu powalająca a zdjęcie nie oddaje tego w pełni. Zawsze będę powtarzał. że własna praca organiczna daje więcej satysfakcji niż kupienie gotowego produktu.
piątek, 10 maja 2019
ATSAML10 i ATSAML11 Power Saving Killer in 32-bit ecosystem.
Firma Microchip swoją ofertę rozszerzyła o MCU z rdzeniem Cortex M23 oparty o nowszą w stosunku do Cortex M0/M0+ architekturę ARMv8M. Są to ATSAML10 i ATSAML11. Pisałem już o tym w tym artykule. Pojawienie się na rynku takich konstrukcji w zasadzie za jednym zamachem do lamusa przenosi nam całą rodzinę Cortex M0/M0+. Jeśli ktoś jeszcze tego nie dostrzegł to informuję uprzejmie, że tak jest :). Lepsza wydajność, lepsza energooszczędność, lepsze bezpieczeństwo, praktycznie wszystko lepsze :). Jak zatem przejść obojętnie obok Cortex M23, no po prostu się nie da. Moją szczególną uwagę przykuły aspekty związane z Power Saving . Nie chodzi tylko o tryby uśpienia ale również o tryb Run Mode . W nowym produkcie Microchipa możemy uzyskać w tym trybie nawet i 25uA/MHz. W sumie myślałem , że to jakaś lipa z takimi poziomami ale jak zobaczyłem na własne oczy możliwości w zakresie Power Saving dostępne w ATSAML10 i 11 uwierzyłem tak jak niewierny Tomasz :)
czwartek, 9 maja 2019
PIC32MM - Tutorial part 6 - Prosty przepis na przerwania
środa, 24 kwietnia 2019
PIC18F Q10 - nowa seria 8-bitowców od Microchipa.
Świat oszalał na punkcie 32-bitów ale przed nami nowe szaleństwo 64-bitowe. Microchip prowadzi jednak konsekwentną politykę w zakresie rozwoju 8-bitowych konstrukcji. I co ciekawe nie opiera ich na core byłego ATMELA ale na mniej wydajnym rdzeniu własnej konstrukcji. Ma to swoje uzasadnienie w tym, że core ATMELA są wydajniejsze ale core Microchipa ma fundamentalną zaletę - bardzo wysoką odporność na zakłócenia. Dlatego przemysł chłonie wyroby Microchipa jak gąbka bo tam jest głównie zapotrzebowanie na takie wyroby. Nowa seria PIC18F Q10 jest obudowana bardzo bogatymi peryferiami i desygnowana m.in do aplikacji przemysłowych czasu rzeczywistego. Znajdziemy tutaj aż 8 komórek CLC , które mogą sterować procesami poza percepcją core mikrokontrolera. Duży nacisk położono na rozbudowę sekcji analogowej. Mikrokontrolery tej serii występują w obudowach 28, 40 i 44 pin.
piątek, 19 kwietnia 2019
RISC-V od Microchipa - zapowiedź rewolucji technologicznej.
Ostatnio coraz więcej słyszy się o RISC-V czyli o modelu programowym procesora, którego zaletą oprócz ogromnej wydajności jest brak opłat licencyjnych czyli takich jakimi obłożony jest ARM. Powstają nowe konsorcja światowych producentów , którzy chcą oprzeć swoje przyszłe wyroby o architekturę RISC-V. Coraz częstszym zjawiskiem jest nie odnawianie licencji na ARM a to też jest jakiś sygnał dla branży. W wyrobach z RISC-V próbują zabłysnąć Chińczycy pojawiają się u nas konstrukcje typu K210 z dwoma procesorami 64-bitowym na pokładzie ale brak wsparcia i dokumentacji nie zachęca do działania z nimi. Aczkolwiek pojawiają się Polskie inicjatywy takie jak np. pierwszy polski development board dedykowany 64 bitowym modułom opartym o RISC-V. Ale jeśli chodzi o poważniejsze aspekty związane z RISC-V to firma MICROCHIP ma obecnie najwięcej do zaoferowania i jako pierwsza pokazuje praktyczną implementację modelu RISC-V zbudowanego na bazie FPGA i działającego pod Linuxem : First RISC-V SoC FPGA For Real-Time With Linux
poniedziałek, 15 kwietnia 2019
SI4463 - transciver RF firmy Silicon Labs do zastosowań bateryjnych. Pierwsze uruchomienie na PIC32MM firmy Microchip.
Po udanej randce z modułem radiowym SI4432 firmy Silicon Labs postanowiłem odpytać ulepszoną wersję tego modułu o oznaczeniu SI4463. Numeracyjnie poszło daleko do przodu :). Na module tym oparto udaną i dobrze opiniowaną przez użytkowników konstrukcję HC12 czyli radiowy port UART dalekiego zasięgu.
W module SI4463 znacznie poprawiono część radiową , zwiększono czułość do 126 dBm, zwiększono czterokrotnie szybkość transmisji do 1 Mbps. Rozszerzono tryby modulacji : 2GFSK i 4GFSK. Ponadto mamy szybsze czasy Wake-Up i bardziej rozbudowane możliwości w zakresie budzenia. Czujnik temperatury i monitorowanie napięcia zasilania w standardzie. Moduł przy maksymalnej mocy +20dB poniesie bez problemu dane na odległość ponad 2 km. Mam tutaj potwierdzenie tego faktu z dwóch niezależnych źródeł. Jedno z nich znajduję się w linkach poniżej artykułu. Prądy w uśpieniu rzędu 30-50nA . Dla porównania popularny u nas moduł nRF24L01+ w trybie uśpienia pobiera 900 nA. Moduły SI4463 zakupiłem bez problemu na dalekowschodniej giełdzie na literkę A..... . Na modułach tych chciałbym oprzeć jakąś sprytną konstrukcję energooszczędną. Obecnie dodaję je do moich nowych płytek developerskich.
piątek, 12 kwietnia 2019
ATSAML10/11 - czerwone korale...na na na dam dam dam
Prosto z "płytkarni" śliczniusia płyteczka developerska dla ATSAML10 i ATSAML11 w wersji 32-pin .Zabrakło niestety na niej mojego nowego loga klubowego :) oraz jednego elementu w postaci dławika 10uH, który przyda się do zmiany trybu zasilania na BUCK. Nie mniej płytka jest w pełni funkcjonalna i czeka na zamówiony ATSAML10E16, wszystkie pozostałe komponenty mam już skompletowane. Po raz pierwszy zamówiłem płytkę w kolorze czerwonym i przyznam , że był to bardzo dobry wybór. Płytka jest śliczna i nie można od niej oderwać oczu. Na GitHub zamieściłem plik Gerbera płytki ver 3.0 z logo klubowym i dławikiem 10uH w obudowie 1210.
sobota, 6 kwietnia 2019
PIC32MM - Tutorial part 5 - UART
Operacje na pinach mam nadzieję są przyswojone z poprzednich tutoriali. Czas zatem na najbardziej pożądane przez hobbystów peryferium mikrokontrolera czyli UART. W PIC32MM mamy do dyspozycji trzy UART-y , które mogą pracować jako RS232, RS485, LIN, IrDA. No trochę tego dobrodziejstwa jest.
W tutorialu pokażę jak w najprostszy sposób skonfigurować UART i w bardzo prosty sposób wykorzystać . Do zabawy przydadzą się dodatkowe narzędzia takie jak analizator stanów logicznych . Tak na marginesie PIC32MM ma na pokładzie USB ale na razie tego tematu nie poruszam.
wtorek, 2 kwietnia 2019
Historia pewnej szczodrości ..... Microchipa
Z racji swej natury szczodrość często była przymiotem królów a także
pozostawała na stałe w ich tytule, np. Bolesław II Szczodry.
A ja spotkałem się ostatnio z nieoczekiwaną i niespodziewaną szczodrością i życzliwością ze strony przedstawiciela firmy Microchip, który jest opiekunem tej marki w naszym kraju Panem M.D. Pan ten jest inżynierem Microchipa i często można go spotkać na prelekcjach technicznych związanych z tą firmą. Miałem przyjemność uczestniczyć na takiej jednej prelekcji i byłem pod ogromnym wrażeniem wiedzy technicznej tego Pana ,gość po prostu nie do zagięcia. Podczas prelekcji zaopatrzyłem się w jego wizytówkę :) i tą drogą miałem kontakt . Ostatnio drogą majlową zwróciłem się z jakimś pytaniem technicznym. Przy okazji padła propozycja z jego strony abym dostał jakąś płytkę do zabawy. Na początku się wzbraniałem bo na co mi płytka jak mi rąk brakuje obrobić własne płytki :) ......
A ja spotkałem się ostatnio z nieoczekiwaną i niespodziewaną szczodrością i życzliwością ze strony przedstawiciela firmy Microchip, który jest opiekunem tej marki w naszym kraju Panem M.D. Pan ten jest inżynierem Microchipa i często można go spotkać na prelekcjach technicznych związanych z tą firmą. Miałem przyjemność uczestniczyć na takiej jednej prelekcji i byłem pod ogromnym wrażeniem wiedzy technicznej tego Pana ,gość po prostu nie do zagięcia. Podczas prelekcji zaopatrzyłem się w jego wizytówkę :) i tą drogą miałem kontakt . Ostatnio drogą majlową zwróciłem się z jakimś pytaniem technicznym. Przy okazji padła propozycja z jego strony abym dostał jakąś płytkę do zabawy. Na początku się wzbraniałem bo na co mi płytka jak mi rąk brakuje obrobić własne płytki :) ......
PIC32MM - Tutorial part 4 - Input/Output utrwalamy podstawy.
W tutorialu tym utrwalimy wiedzę jak skonfigurować pin jako wejście lub wyjścia oraz jak nimi posługować się w programie. Do ćwiczeń praktycznych wykorzystam trzy przyciski znajdujące się na płytce PIC32MM Curiosity oraz diodę RGB. Do konfiguracji peryferiów wykorzystam MCC. Naszym celem będzie zapalenie składowej diody RGB w momencie trzymania wcisniętego przycisku. Każdy z trzech przycisków będzie przyporządkowany do jednej składowej diody RGB. Będzie Prosto, Intuicyjnie, Ciekawie :) . PIC32 to najprostsze do szybkiej nauki mikrokontrolery 32-bitowe. Kiedyś spotkałem się z taką opinią malkontenta ekosystemu PIC na anty-forum e...., że to mikrokontrolery dla "emerytów" bo są zbyt proste w posługiwaniu się :) .Malkontent nie przemyślał do końca swojej wypowiedzi bo wyszło inaczej niż była jego intencja :)
poniedziałek, 1 kwietnia 2019
ATSAML10/11 - budujemy płytkę developerską.
Słowo się rzekło i płytka developerska dla ATSAML10/11 jest już zaprojektowana. Zajęło mi to całe dwa dni. To jest taki mój czasowy standard dla standardowej płytki developerskiej :) . Projekt wykonany w aplikacji webowej EasyEda. Projektowanie płytek sprawia mi bardzo dużą radość i satysfakcję, której gotowy produkt nie zastąpi. Gotowy produkt nie stanowi takiej zachęty do działania jak własny :). Tylko coś co się wytworzy własną pracą organiczną daje najwięcej satysfakcji i motywuje do działania nad tym. Nie dość , że mamy z własnej pracy satysfakcję to jeszcze nasza kieszeń nie ucierpi i mózg nie zwiotczeje :)
sobota, 30 marca 2019
ATSAML10/11 - pierwszy na rynku Cortex M23 zużywający mniej niż 25 uA/MHz w normalnym trybie pracy.
Microchip rozwinął bardzo udaną serię mikrokontrolera firmy ATMEL - ATSAML o unikalną jak na razie na rynku konstrukcję opartą na architekturze ARM v8-M i rdzeniu Cortex M23. Mowa o dwóch modelach ATSAML10 i ATSAML11. W stosunku do architektury ARM v6-M na której oparte były popularne rdzenie Cortex M0/M0+ uzyskano poprawę wydajności i skalowalności. Główne cechy nowej architektury to wprowadzenie TrustZone chroniącej dane przed "wyciekiem" lub uszkodzeniem , sprzętowe dzielenie, rozszerzone opcje Debuggowania, rozszerzenie modułu MPU (Memory Protection Unit. Nowa architektura opiera się na trzech filarach : Szybciej, Bezpieczniej, Energooszczędniej.
niedziela, 24 marca 2019
ATSAMD21 osadzony na płytce.
To nie artykuł ale zajawka. Udało się znaleźć chwilę czasu aby przylutować ATSAMD21 w obudowie 32-pin na moją nową płytkę developerską. Obudowa 32-pin jest bardzo łatwa do przylutowania , odstęp pomiędzy padami jest znacznie większy niż dla wersji 48-pin. Na płytce znajdzie się m.in superaśny transciver Silicon Labs SI4463 z dedykowaną antenką.
Pamięć EERAM 47L16, genialny wynalazek Microchipa oraz czujnik temperatury TC77 a tego zwierza jeszcze nie poznałem. Płytka wyszła bardzo zgrabnie i już się cieszę jak dziecko z własnej pracy organicznej :). Mam zamiar przed zalutowaniem płytki porobić szybkie testy Power Saving dla ATSAMD21 zobaczymy jak to wyjdzie. Idą święta i czas jest ograniczony a ja mam wyrzuty sumienia, że Żonie w porządkach w ogródku nie pomagam.
niedziela, 17 marca 2019
PIC32MM - Power Saving . Analiza trybu Idle i Sleep .
Temat oszczędzania energii jest bliski sercu każdemu Polakowi. Szczególnie jak co miesiąc patrzy na rachunek za prąd, wodę i gaz :). Każdy z nas prędzej czy później z tym tematem się spotka również i w mikrokontrolerach. Tam gdzie możemy oszczędzać energię to róbmy to :) PIC32MM daje nam takie możliwości , więc trzeba się im przyjrzeć. Znajdziemy w nim z grubsza cztery tryby zmniejszające pobór prądu oraz dodatkowo takie funkcjonalności jak wyłączanie poszczególnych modułów peryferyjnych. Generalnie temat nie jest trywialny dlatego, że stosowanie w praktyce trybów energooszczędnych wiąże się z braniem pod uwagę wielu aspektów nie tylko samego poboru prądu ale np. czasu czy wymaganych metod wybudzania . Szersze spojrzenie na temat przedstawia tutorial zamieszczony na łamach Elektroniki Praktycznej, który znajdziemy w linkach. Warto się z nim zapoznać.
środa, 13 marca 2019
PIC32MM - Tutorial part 3 - Hello World
W tej części tutoriala zajmiemy się wreszcie czymś konkretnym i namacalnym. Spróbujemy ożywić dwie diody LED na naszej płytce developerskiej Curiosity, które będą migać niezależnie ,każda z inną częstotliwością. I tak zdefiniujemy sobie nasze Hello World. Przy okazji poznamy obsługę timera sprzętowego i konstrukcję timera programowego. Najpierw musimy zlustrować schemat płytki Curiosity aby poszukać na niej dwóch diod LED i uzyskać informację do jakich pinów mikrokontrolera są przyporządkowane.
niedziela, 10 marca 2019
PIC32MM - Tutorial part 2 - Jak ustawić zegar.
Cechą charakterystyczną PIC jest wysoka precyzja generatora wewnętrznego RC. Co implikuje fakt, że w większości przypadków kwarc zewnętrzny jest tutaj zbędny. Dlatego nie znajdziemy go na naszej płytce Curiosity. W tutorialu pokażę jak w najprostszy dostępny sposób możemy skonfigurować zegar wewnętrzny RC a zajmie nam to dosłownie moment. Ja najczęściej wykorzystuję maksymalny dostępny pułap częstotliwości oferowany przez generator RC czyli 24 MHz. Zatem na koń szable w dłoń.
czwartek, 7 marca 2019
PIC32MM - Tutorial part 1 - START
Ponieważ widzę coraz większe zainteresowanie serią mikrokontrolerów 32-bitowych PIC32MM firmy Microchip a tutoriali jako takich brakuje. Postanowiłem wyjść na przeciw oczekiwaniom osób chcących poznać te bardzo sprytne mikrokontrolery i uporządkować jakoś wiedzę o nich. Stąd pomysł na tutoriale. Na początek kilka słów o serii. W portfolio Microchipa PIC32 mamy kilka serii MM, MX, MK, MZ. Seria MM jest najmłodszą serią charakteryzuje się stosunkowo małą ilością błędów w siliconie stąd wniosek, że proces technologiczny został tutaj dopracowany. Seria MM posiada dwa podtypy GPL i GPM. Podtyp GPL posiada mniejsze obudowy ale jest wykastrowany z I2C. Podtyp GPM , którym my będziemy się zajmować występuje w obudowach 28, 48 i 64 pin i ma na pokładzie I2C.
sobota, 2 marca 2019
Embedded World 2019
Wydarzenie roku , więc czemu o nim nie wspomnieć . Zerknijmy na stoisko Microchipa, opowiada sympatyczny Lucio Di Jasio spec od 8-bitów. W linku krótki filmik z wydarzenia. Warto zerknąć choćby po to aby zobaczyć jakie mają fajne koszulki z logo Microchipa :) . LINK
piątek, 1 marca 2019
Najmniejszy na rynku moduł komunikacyjny SiP zgodny ze standardem IEEE 802.15.4 oparty o SAMR30
Informacja o tyle ciekawa, że pokazuje jakie są obecnie trendy w modułach komunikacyjnych. Moduł Microchipa oparty jest o SAMR30 i ma wymiary 12,7 x 11 mm. Fizycznie jest to moduł w którym połączono mikrokontroler ATSAML21 z modułem radiowym sub-GHz (769- 935 MHz). W sumie nic odkrywczego bo takie rozwiązania są już dawno dostępne a specjalizuje się w nich np. firma Silicon Labs. no ale Microchip poszedł tutaj po bandzie i zrobił najmniejszy obecnie na rynku tego typu moduł. Dlatego warto o nim wspomnieć.
środa, 20 lutego 2019
ATSAMD21 - budujemy płytkę developerską dla wersji 32 pin.
Postanowiłem rozszerzyć portfolio stosowanych obudów MCU w moich płytkach developerskich i zejść z piedestału 48-pinów w kierunku obudów bardziej przyjaznych dla lutowania. Ponieważ na warsztacie mam obecnie ATSAM-y. Dlatego rozbuduję swój ekosystem płytek dla tej właśnie rodziny MCU. Na widelec biorę obudowę 32-piny i dla niej tworzę płytkę developerską. Tym razem aby nie było tak nudno urozmaicę płytkę dwoma ciekawymi komponentami, pamięcią EERAM 47L16 firmy Microchip i modułem radiowym RF opartym o SI4463 firmy Silicon Labs.
piątek, 15 lutego 2019
ATSAMD21 - popularny przedstawiciel serii ATSAM.
Wzrost zainteresowania w świecie serią ATSAMD21 wynika m.in z faktu, że są to mikrokontrolery wybrane przez organizację ARDUINO do nowych konstrukcji. Szczególnie bogata jest w nie rodzina ARDUINO MKR .Mikrokontrolery te znajdziemy również w wielu konstrukcjach ADAFRUIT Mając m.in powyższe na uwadze warto przyjrzeć się tym mikrokontrolerom bliżej. Moje oko przykuł ostatnio model ATSAMD21E18 Literka E w nazwie informuje nas, że mamy do czynienia z obudową 32 piny. Z przylutowaniem tej wersji obudowy nie będzie miał nikt problemu ponieważ rozstaw nóżek jest wyraźnie większy niż w obudowie 48-pin. Cyferka 18 symbolizuje, zasoby pamięci na poziomie. 256k Flash i 32k RAM, świat i ludzie na co komu więcej.
niedziela, 10 lutego 2019
ATSAML21 - biblioteka dla kolorowego wyświetlacz ILI9341 2.2" 320x240.
wtorek, 29 stycznia 2019
PIC32MM - biblioteka dla kolorowego wyświetlacza ILI9341 2.2" 320x240.
Jakiś czas temu popełniliśmy bardzo fajną bibliotekę dla PIC32MM obsługującą wyświetlacz ILI9163 1.8" . Teraz czas na stworzenie biblioteki dla większego brata czyli ILI9341 2.2". Większe w tym przypadku mamy wszystko, czyli rozmiar i rodzielczość. Na pewno obrazki będą się prezentowały znacznie lepiej. Moim zdaniem rozmiar 2.2" jest taki w sam raz ani za mały ani za duży i miły dla oka. Wyświetlacz ten zaaplikowałem do mojej płytki developerskiej dla ATSAML21. Ale najpierw zrobimy bibliotekę dla PIC32MM bo będzie nam najprościej to zrobić a potem przeportujemy ją do ATSAML21. PIC32MM jest naprawdę świetnym MCU low end z bardzo ciekawymi peryferiami i co ważne prostym w opanowaniu. W każdym przypadku łatwiej jest mi tutaj zrobić działającą aplikację i przeportować ją do ARM-a niż robić bezpośrednio dla ARM.
piątek, 25 stycznia 2019
ATSAML21 - rozpoznajemy moduł TC , a podobno szczęśliwi czasu nie liczą.
Kontynuujemy dobrą passę w poznaniu mikrokontrolerów ATSAM. W artykule zajmiemy się rozpoznaniem modułu peryferyjnego TC (Timer/Counter), jaki został zaimplementowany w ATSAML21/D21. Jest to jeden z dwóch (nie liczę SysTick-a i RTC) dostępnych modułów czasowych w naszym procku. Drugim jest bardziej rozbudowany TCC (Timer/Counter for Control Applications) ale tym się na razie zajmować nie bedziemy co by nas głowa nie rozbolała. Do ćwiczeń będziemy potrzebować płytki developerskiej, programatora (ja używam J-LINK EDU mini) oraz środowiska SEGGER. Nie używamy ASF (jest to ważna infomacja dlatego powtarzam ją ciągle).
Subskrybuj:
Posty (Atom)