CxPins

Witam ponownie! Nie wiem jak Ty, drogi czytelniku ale ja zawsze miałem pewien problem z tworzeniem uchwytów do pinów podczas pisania programów w C++ na "czystym" AVR, w sensie bez Arduino. Podczas gdy Arduino dostarcza piękne rozwiązanie gdzie mamy po prostu numery, to do pełnej kontroli nad pinem GPIO bez cudownych bibliotek Arduino trzeba mieć trzy wskaźniki i liczbę. Pierwszy na DDRx, żeby ustawić tryb, potem PORTx żeby manipulować wyjściem, oraz PINx aby wczytać dane wejściowe. A no i jeszcze numer bitu w tych rejestrach czyli liczba 8 bitowa. Więc gdy chcemy stworzyć bardzo prostą klasę która reprezentować będzie dwie diody LED to musimy przekazać przynajmniej 6 parametrów (LED-y nie wysyłają sygnałów, jest to tylko wyjście więc ewentualnie PINx można pominąć). Napisałem więc prostą bibliotekę, dzięki której możemy stworzyć uchwyt do pinu używając jedynie adresu DDRx oraz numeru pinu w tym rejestrze. Potem uchwyt taki możemy przekazywać do funkcji czy klasy, co w przykładzie z dwoma LED-ami zmniejsza ilość parametrów do dwóch, Pinami możemy manipulować przez funkcje, jak również przez operatory (=, == !=,!). Pełna instrukcja jak i biblioteka jest tutaj: CxPins
Dodam adres PORTx oraz PINx nie musi być wskazany gdyż z DDRx można sobie takowy obliczyć. Biblioteka jest również mała (przykładowy kod dla ATtiny 13 ma 60 bajtów) jak i nie spowalnia dostępu do pinów, Jeżeli nie używasz Linux-a to na Windows-ie możesz po prostu dorzucić CxPins.h do folderu z projektem i używać #include "CxPins.h"