Artykuły

Najprostszą metodą konwersji liczb szesnastkowych na dziesiętne jest liczenie ile razy dana waga dziesiętna „zmieści się” w liczbie szesnastkowej. W języku asembler operację tę przeprowadza się najczęściej przez odejmowanie wagi dziesiętnej i liczenie ilości operacji odejmowania do momentu ustawienia flagi przeniesienia C (Carry bit).   czytaj więcej
Pierwszy rzut oka na instrukcję programowania mikrokontrolera z rodziny AVR w języku asembler nieco przeraża. Dziesiątki zupełnie niezrozumiałych poleceń to dla wielu przeszkoda nie do przebycia. Niestety – taki jest urok programowania w asemblerze. Tutaj proste z pozoru operacje dodawania czy mnożenia muszą zawierać się w kilku czy kilkunastu poleceniach. Cykl artykułów będzie próbą wprowadzenia Czytelnika w świat programowania w języku asemblera AVR. Będzie też próbą pokazania, że nie taki diabeł straszny... czytaj więcej
Każdy z układów z interfejsem 1-Wire posiada unikatowy 64-bitowy kod identyfikacyjny. Kod ten nosi nazwę „kod ROM” i może być utożsamiany z unikatowym adresem układu z interfejsem 1-Wire. Kod ten używany jest przez układ Master do wyboru układu w sieci. W związku z tym, że jest to kod unikatowy, to jeśli nie jest znana liczba układów Slave w sieci, może ona zostać określona przy jego użyciu przez zastosowanie funkcji przeszukiwania sieci. Algorytm jej działania oparty jest o zasadę przeszukiwania drzewa binarnego. Gałęzie przeszukiwane są do momentu aż zostanie odnaleziony koniec gałęzi lub pamięć ROM układu 1-Wire. Funkcja przeszukuje drzewo do momentu aż wszystkie numery ROM i wszystkie zakończenia zostaną odkryte. czytaj więcej
Oryginalnie, skonstruowany przez firmę DALLAS SEMICONDUCTOR, interfejs 1-Wire (One Wire) przeznaczony był do komunikacji na bardzo małe odległości. Został opracowany w celu podłączenia układu peryferyjnego do mikrokontrolera z użyciem tylko jednego wyprowadzenia. Miał być odpowiedzią na pytanie: co zrobić, gdy pamięć RAM mikrokontrolera jest za mała aby pomieścić wszystkie zmienne i jednocześnie zbyt trudno jest zmienić mikrokontroler na inny albo też brak jest w linii produkcyjnej takiego, który spełniałby wymagania? czytaj więcej
Jednym z największych „pożeraczy” czasu i energii programisty, obok uruchomienia programu, jest tak zwany interfejs użytkownika. Mikrokontroler nie potrzebuje do pracy wyświetlacza, klawiatury, diod świecących LED i temu podobnych elementów, o ile nie jest to ściśle związane z operacjami zapisu lub odczytu danych. Wszystkie te drobiazgi są potrzebne nam, ludziom, abyśmy mogli wprowadzać parametry i poznać rezultat wykonania przez mikrokontroler określonego programu. Te przykłady programowania to jeden z elementów interfejsu użytkownika. Są to jedno- i dwupoziomowe menu, wyświetlane na wyświetlaczu LCD 4 linie po 20 znaków. czytaj więcej
Pisząc program w języku C czasami warto zadać sobie pytanie: czy naprawdę muszę tworzyć funkcję dokonującą konwersji wartości dziesiętnej na szesnastkową? Przecież chociażby biblioteka o nazwie STDIO zawiera w sobie możliwość formatowania zarówno danych wejściowych, jak i wyjściowych. Czy nie ma możliwości skorzystania z czyjejś pracy i zaoszczędzenia własnego czasu? czytaj więcej
Budując urządzenia z mikrokontrolerami wcześniej czy później staniesz przed zagadnieniem rozwiązania sposobu komunikacji z użytkownikiem. We wcześniejszych odcinkach „kursu” zajmowaliśmy się prezentacją wyników za pomocą wyświetlacza LED czy LCD. Czasami jednak trzeba również wprowadzić pewne parametry – na przykład nastawę czasu, wielkość napięcia itp. Możliwe jest tu wykorzystanie różnych technik, lecz jedna z nich przyjęła się u zarania dziejów urządzeń elektronicznych i króluje do dziś. Nic też nie wskazuje na to, aby szybko została wyparta przez inne rozwiązania. Mowa o klawiszu lub grupach klawiszy zwanych klawiaturami. czytaj więcej
Pakiet RIDE firmy Raisonance to zbiór narzędzi umożliwiających pisanie i uruchamianie programów w języku C i asemblera dla mikrokontrolerów ST62 firmy STM, XA firmy Philips oraz różnych pochodzących z rodziny 8051. Ze względu na specyfikę artykułu, pominę zagadnienia dotyczące środowiska programowania ST62 i XA – zajmiemy się wyłączenia informacjami dotyczącymi mikrokontrolera 8051. Nie oznacza to jednak, że uwzględniając specyfikę pominiętych mikrokontrolerów nie można tu opisanych metod wykorzystać również i dla nich. czytaj więcej
Rzadko zdarza się, aby mikrokontroler, którego zamierzamy użyć, oferował nam wszystkie potrzebne układy peryferyjne. Jeżeli jednak już tak jest, to albo ma również szereg innych, zupełnie niepotrzebnych, albo też przeraża jego cena. Dobrym rozwiązaniem tak przedstawionego problemu jest użycie taniego mikrokontrolera i dołączenie do niego w możliwie jak najtańszy sposób możliwie jak najtańszych układów peryferyjnych. Tu jednak pojawia się pewien problem – dołączenie układów zewnętrznych... czytaj więcej
O sposobie, w który są obsługiwane przerwania w języku C pisałem już kiedyś, przy okazji omawiania podstaw programowania. Dziś wykorzystamy programowanie przerwań do budowy prostego licznika. Uzyjemy w nim przerwania generowanego przez Timer 1 do obsługi wyświetlacza LED oraz innego, generowanego przez opadające zbocze sygnału na wejściu INT0 do zliczania impulsów zegarowych. W programie wykorzystamy też wskaźniki i ich arytmetykę – będzie okazja co nieco się nauczyć. czytaj więcej