Obsługa zależności czasowych

Jakiś czas temu otrzymałem na maila takie pytanie:

Czy jest jakaś elegancka metoda, aby zarządzać zdarzeniami czasowymi w systemie?
Generalnie unikamy delay’ów i odnosimy się np. do zegara systemowego. Aby uruchomić daną komendę/operację/funkcję w konkretnym momencie czasowym używamy IF-ów. Sprawa się komplikuje jeśli chcemy powiązać czasowo różne zdarzenia w systemie.

Oto przykład: chcemy aby:
1. Zdarzenie X było realizowane co 2 sekundy,
2. Niezależne zdarzenie Y co 5 sekund
3. Zdarzenie Z 1 sekundę po zdarzeniu X.
 
Czy masz tu jakiś pomysł jak taki cel można zrealizować prościej, z wykorzystaniem jakiegoś tricku, aby kod stał się prostszy i bardziej czytelny?

W dzisiejszym wpisie omówię dwa podejścia do tego tematu – z RTOSem i bez.

Continue reading

Jak zaimplementować obsługę różnych języków w menu?

Czasami tak bywa, że sukces produktu niesie nowe wyzwania dla programistów. Jednym z takich wyzwań może być przetłumaczenie tekstów wyświetlanych w menu na inne języki i obsługa tego w prosty i niezawodny sposób. W dzisiejszym wpisie pokażę jak ustrukturyzować kod zawierający menu i jak łatwo zaimplementować tłumaczenia wykorzystując tablice.

Continue reading

Dołącz do kursu “C dla Zaawansowanych”!

W kursie online “C dla Zaawansowanych” uczestniczy już 170 osób, a teraz również Ty możesz wziąć w nim udział! Wszystkie potrzebne informacje znajdziesz na stronie cdlazaawansowanych.pl.

“C dla Zaawansowanych” to ponad 27 godzin nagrań wideo podzielonych na 13 modułów, które poruszają całe spektrum tematów potrzebnych programiście C.

Dzięki niemu:

  • Dogłębnie poznasz składnię C i zobaczysz, co się dzieje pod maską – jest bardzo dużo kompilatora online
  • Poznasz dobre praktyki i antywzorce, aby pisać czytelnie i efektywnie
  • Zdobędziesz wiedzę o całym toolchainie – kompilator, linker, biblioteki statyczne, biblioteka standardowa, rozszerzenia kompilatora
  • Poznasz techniki i narzędzia ułatwiające codzienną pracę w większych projektach.

Na stronie kursu znajdziesz pełną agendę i przykładowe lekcje. Są tam również opinie osób, które przeszły kurs.

Continue reading

Pięć rzeczy, które pomogą Ci w karierze programisty C – zapraszam na webinar!

W poniedziałek 13 września o 20:00 poprowadzę webinar:

Pięć rzeczy, które pomogą Ci w karierze programisty C

Opowiem o tym, co sam chciałbym wiedzieć zaczynając zawodową karierę. Czego warto się uczyć, jak podchodzić do pracy w większych projektach, czy jak weryfikować różnego rodzaju zasłyszane wskazówki.

Będzie to również start kolejnej edycji kursu “C dla Zaawansowanych”!

Jest już nagranie z webinaru:

Fragmenty live’ów na YouTube

Ostatnio na swój kanał YouTube zacząłem wrzucać fragmenty live’ów pocięte na krótsze – około 10-minutowe – filmiki. Każde nagranie skupia się na jednym zagadnieniu. Dzięki temu łatwiej będzie po czasie znaleźć interesujące fragmenty bez przeszukiwania całego dwugodzinnego nagrania.

Zapraszam również do zapisu na newsletter, gdzie poza tego typu nagraniami otrzymacie również linki do dodatkowych materiałów i różne opowieści z moich projektów.

Czytelność kodu w embedded

Dlaczego mój kod nie działa?

Stań się lepszym programistą C! – webinar we wtorek o 20:00

We wtorek 8 czerwca o 20:00 zapraszam na webinar:

“Stań się lepszym programistą C! – wskazówki ułatwiające codzienną pracę z kodem”

Czego możesz się spodziewać?

Pokażę kilka mniej znanych elementów składni C. Zobaczymy sobie w kompilatorze online, jakie są skutki pisania kodu zawierającego undefined behavior. Zobaczymy sobie ciekawe opcje zależne od poszczególnych kompilatorów i zastanowimy się jak je wykorzystać w praktyce.

Zobaczysz jak znajomość języka C, kompilatora i procesora może nam pomóc rozwiązać codzienne problemy w projektach.

Podczas webinaru wystartuje również trzecia edycja kursu “C dla Zaawansowanych”!

Zapraszam!

Książki dla programisty embedded – live na YT

Dzisiaj o 20:00 zapraszam na YT na live o książkach dla programisty embedded:

A w nim odpowiedzi na pytania:

  • Jakie książki wybrać do początkowej nauki?
  • Jakie książki polecam na później?
  • Jakie książki polecam o testach, architekturze, prowadzeniu projektów itd.
  • Jakie do C? A jakie do C++?
  • Jakie o elektronice?
  • Z czego sam się uczyłem?
  • Czy trzeba czytać książki od deski do deski?

Większość książek programistycznych pomija kwestie sprzętowe, a o samym embedded literatura jest dużo uboższa. Dlatego będzie też o tym jak odnosić informacje w książkach do naszej konkretnej sytuacji.

Migracja projektu z STM32 Cube IDE do CMake – live na YT

Problemy z konfiguracją IDE to prawdziwa zmora. Mogą objawiać się na różne sposoby – na przykład:

  • Wiesz jak coś ma działać, ale nie umiesz wyklikać tego w wizardzie.
  • Przenosisz projekt na inny komputer i się nie kompiluje.
  • Chcesz uruchomić kompilację bez instalowania IDE i nie wiesz jak.

Narzędzia się zmieniają, ale problemy pozostają te same. Musimy umieć sobie z nimi radzić.

Dlatego właśnie dzisiaj o 20:00 zapraszam na live na YouTube. Tematem będzie Migracja projektu z STM32 Cube IDE do CMake. A przy okazji pokażę co IDE robią pod maską.

Continue reading

Jak dodać analizę statyczną w CMake?

Języki takie jak C i C++ zakładają, że programista wie co robi i pozwalają mu na wiele. Są bardzo konserwatywne w zgłaszaniu błędów i warningów. Nieraz obraca się to przeciwko programiście, dlatego sami aktywujemy dodatkowe flagi warningów podczas kompilacji i używamy różnych narzędzi do analizy kodu.

Ale do narzędzi takich jak cppcheck czy clang-tidy musimy podać te same pliki źródłowe, include, define co w głównym buildzie. Konfiguracja jest dosyć trudna. Na szczęście system budowania może nam w tym pomóc. W końcu posiada wszystkie informacje przekazywane kompilatorowi. Dzisiaj zobaczymy jak skonfigurować analizę statyczną w CMake.

Continue reading

CMake – automatyczna obsługa podprojektów z gita

W poprzednim odcinku skonfigurowaliśmy sobie większy projekt. Mieliśmy oddzielne targety na poszczególne podprojekty. Dzięki temu dało się na przykład utworzyć bibliotekę statyczną, czy dodać bibliotekę header only. Dzięki odpowiedniej konfiguracji byliśmy w stanie raz skompilować podprojekt i używać go w wielu targetach. Teraz pójdziemy o krok dalej. Nasze podprojekty będą automatycznie ściągane z własnych repozytoriów.

W przykładzie użyje repo na GitHubie, ale równie dobrze można użyć innych systemów kontroli wersji, serwerów, czy nawet lokalnych plików. Zalety takiego rozwiązania w większych projektach są nieocenione. Po pierwsze możemy sensownie zarządzać aktualizacjami zewnętrznych bibliotek, a po drugie możemy tworzyć własne reużywalne biblioteki z aktualizacjami propagowanymi na wszystkie projekty.

Continue reading

© 2021 ucgosu.pl

Theme by Anders NorénUp ↑