PWM v0.3d

Lista rejestrów

Nazwa rejestru Numer rejestru
(indeks portu)
Typ dostępu Typ danych
R / W
PWM_RegChannel0 0 RW U32 / U32
PWM_RegChannel1 1 RW U32 / U32
PWM_RegChannel2 2 RW U32 / U32
PWM_RegRGB 3 RW U32 / U32
PWM_RegDelay 4 RW U8 / U8
PWM_RegParabolic 5 RW U8 / U8
PWM_RegChannel3 6 RW U32 / U32
PWM_RegChannel4 7 RW U32 / U32
PWM_RegChannel5 8 RW U32 / U32
PWM_Reg345 9 RW U32 / U32
PWM_RegBlink A RW NULL / U16
PWM_RegDefaultRGBT B RW U32 / U32
PWM_RegAnimate C RW U8 / STR

Opis rejestrów


PWM_RegChannelX

Odczyt: [U32]
Zwraca aktualną wartość współczynnika wypełnienia dla kanału X oraz aktualne parametry czasowe.
Zapis: [U32]
Ustawia wartość współczynnika wypełnienia dla kanału X oraz opcjonalne parametry czasowe.
Opis:
Rejestr ten umożliwia zmianę współczynnika wypełnienia danego kanału PWM. Wartości PWM wyrażone są w procentach (0..100%).
Znaczenie poszczególnych bajtów rejestru jest następujące:

Numer bajtu 3 2 1 0
Symbol bajtu - D T V

V - docelowa wartość PWM
T - czas płynnej zmiany PWM od wartości aktualnej do docelowej, wyrażony w jednostkach 1/8 sekundy
D - czas opóźnienia, wyrażony w jednostkach 1/64 sekundy
Jeśli D ma wartość 0xFF, to czas opóźnienia jest równy wartości wpianej do rejestru PWM_RegDelay.
Jeśli kanał X nie jest obsługiwany, próba zapisu lub odczytu rejestru spowoduje zwrócenie błędu PWM_ERR_CHANNEL.


PWM_RegRGB

Odczyt: [U32] (0..0x646464)
Zwraca aktualną wartość współczynników wypełnienia dla wszystkich kanałów RGB (0, 1 i 2).
Zapis: [U32]
Ustawia wartości współczynnika wypełnienia dla poszczególnych kanałów RGB (0, 1 i 2) oraz opcjonalny parametr czasowy.
Opis:
Rejestr ten umożliwia jednoczesną zmianę współczynników wypełnienia wybranych kanałów PWM. Wartości wyrażone są w procentach (0..100%).
Znaczenie poszczególnych bajtów rejestru jest następujące:

Numer bajtu 3 2 1 0
Symbol bajtu T B G R

R - wartość PWM dla kanału 0 (R)
G - wartość PWM dla kanału 1 (G)
B - wartość PWM dla kanału 2 (B)
T - czas płynnej zmiany

Przy odczycie rejestru, T ma zawsze wartość 0, natomiast pozostałe bajty przedstawiają aktualną wartość PWM dla poszczególnych kanałów.
Przy zapisie rejestru, T określa czas (wyrażony w jednostkach 1/8 sekundy), w jakim nastąpi płynna zmiana PWM poszczególnych kanałów z wartości aktualnych do docelowych, natomiast R, G i B określają docelowe wartości PWM poszczególnych kanałów. Jeżeli którykolwiek z bajtów R, G lub B ma wartość 0xFF, to odpowiadający mu kanał PWM nie zostanie zmieniony. Jeżeli wartość bajtu R mieści się w zakresie 0x80..0xBF to wpis do rejestru zostanie potraktowany jak wpis do rejestru PWM_RegBlink, przy czym bajt R po skasowaniu najstarszego bitu oraz bajt G będą traktowane odpowiednio jako bajty K i T rejestru PWM_RegBlink, natomiast pozostałe bajty będą ignorowane.


PWM_RegDelay

Odczyt: [U8]
Zwraca wartość opóźnienia dla rejestru PWM_RegRGB.
Zapis: [U8]
Ustawia wartość opóźnienia dla rejestru PWM_RegRGB.
Opis:
Rejestr ten umożliwia dodanie opóźnienia między wpisem do rejestru PWM_RegRGB a rozpoczęciem płynnej zmiany PWM. Czas ten jest wyrażony w jednostkach 1/64 sekundy.
Zapis do rejestru powoduje zapamiętanie jego wartości w pamięci EEPROM.


PWM_RegParabolic

Odczyt: [U8]
Zwraca wartość współczynnika sterowania parabolicznego.
Zapis: [U8]
Ustawia wartość współczynnika sterowania parabolicznego.
Opis:
Rejestr ten umożliwia zmianę sposobu przeliczania wartości PWM wpisywanych do rejestrów PWM_RegChannelX i PWM_RegRGB na rzeczywistą wartość współczynnika wypełnienia. Dla wartości 0 sterowanie jest liniowe (wartość rzeczywista odpowiada wartości wpisanej do rejestrów), natomiast dla wartości większych niż 0 sterowanie jest paraboliczne, ze współczynnikiem paraboli P równym wartości wpisanej do rejestru podzielonej przez 256.
W ogólnym przypadku, rzeczywistą wartość PWM można określić ze wzoru:

PWM = P * X2 + (1 - P) * X,

gdzie:
P - współczynnik paraboli równy PWM_RegParabolic / 256
X - wartość PWM wpisana do rejestru PWM_RegChannelX lub PWM_RegRGB, wyrażona w %
PWM - rzeczywista wartość PWM wyrażona w %
Zapis do rejestru powoduje zapamiętanie jego wartości w pamięci EEPROM.


PWM_Reg345

Odczyt: [U32] (0..0x646464)
Zwraca aktualną wartość współczynników wypełnienia kanałów 3, 4 i 5.
Zapis: [U32]
Ustawia wartości współczynnika wypełnienia dla kanałów 3, 4 i 5 oraz opcjonalny parametr czasowy.
Opis:
Rejestr ten umożliwia jednoczesną zmianę współczynników wypełnienia wybranych kanałów PWM. Wartości PWM wyrażone są w procentach (0..100%).
Znaczenie poszczególnych bajtów rejestru jest następujące:

Numer bajtu 3 2 1 0
Symbol bajtu T C5 C4 C3

C3 - wartość PWM dla kanału 3
C4 - wartość PWM dla kanału 4
C5 - wartość PWM dla kanału 5
T - czas płynnej zmiany

Przy odczycie rejestru, T ma zawsze wartość 0, natomiast pozostałe bajty przedstawiają aktualną wartość PWM dla poszczególnych kanałów.
Przy zapisie rejestru, T określa czas (wyrażony w jednostkach 1/8 sekundy), w jakim nastąpi płynna zmiana PWM poszczególnych kanałów z wartości aktualnych do docelowych, natomiast C3, C4 i C5 określają docelowe wartości PWM poszczególnych kanałów. Jeżeli którykolwiek z bajtów C3, C4 lub C5 ma wartość 0xFF, to odpowiadający mu kanał PWM nie zostanie zmieniony.


Odczyt: [NULL]
Zapis: [U16]
Inicjuje proces mrugania diodami RGB.
Opis:
Rejestr ten umożliwia zainicjowanie jednego z kilku możliwych scenariuszy mrugania diodami RGB. W chwili wpisania poprawnej wartości do rejestru, ewentualny proces zmiany jasności diod RGB (zainicjowany wczesniej dowolnym rejestrem PWM_RegChannelX, PWM_RegRGB lub PWM_Reg345) zostaje wstrzymany i następuje rozpoczęcie sekwencji mrugania diodami (przygaszania od wartości aktualnej do wartości 0). Wyjątek stanowi sytuacja, w której w chwili wpisu do rejestru PWM_RegBlink wszystkie diody RGB są zgaszone. Wtedy diody są rozjaśniane do maksymalnej wartości, a następnie zgaszane. O wyborze sekwencji oraz czasie jej trwania decydują parametry wpisane do rejestru:

Numer bajtu 1 0
Symbol bajtu T CMD

T - czas trwania całej sekwencji wyrażony w jednostkach 1/16 sekundy
CMD - kod komendy składający się z następujących pól:

Numer bitu 7 6 … 0
Symbol bitu R K

R - flaga powtarzania sekwencji
K - kod sekwencji, zgodnie z poniższą tabelą:

K Opis
0 Zatrzymanie sekwencji i powrót do normalnej pracy PWM
1 Pojedyncze przygaszenie diod - zgaszenie w czasie 1/2 T, ponowne zapalenie w czasie 1/2 T
2 Dwukrotne przygaszenie diod - każde zgaszenie i każde zapalenie w czasie 1/4 T
3 Trzykrotne przygaszenie diod - każde zgaszenie i każde zapalenie w czasie 1/6 T
4 Długie a następnie krótkie (stosunek czasów 3:1) przygaszenie diod - pierwsze zgaszenie i pierwsze zapalenie w czasie 3/8 T, drugie zgaszenie i drugie zapalenie w czasie 1/8 T

Wpisanie wartości K nie wymienionej w tabeli spowoduje zignorowanie wpisu do rejestru. Wpisanie wartości T równej 0 spowoduje zastąpienie jej wartością domyślną równą 12. Wpisanie wartości T różnej od 0 i mniejszej niż 6 spowoduje zastąpienie jej wartością 6.
Jeśli bit R jest ustawiony, to sekwencja podana w polu K będzie powtarzana do czasu wpisania do rejestru nowej wartości.
Po zakończeniu sekwencji następuje wznowienie ewentualnego procesu zmiany jasności diod RGB. Jeśli w trakcie wykonywania sekwencji zostanie zmieniona wartość dowolego z rejestrów PWM_RegChannelX, PWM_RegRGB lub PWM_Reg345, to wynikająca z nich zmiana jasności diod nastąpi dopiero po zakończeniu sekwencji mrugania.


PWM_RegDefaultRGBT

Odczyt: [U32]
Zwraca domyślną wartość R, G, B i T.
Zapis: [U32]
Ustawia domyślną wartość R, G, B i T.
Opis:
Rejestr ten umożliwia zmianę/odczyt domyślnych wartości koloru (RGB) i czasu płynnej zmiany (T) dla zdarzeń generowanych wewnętrznie (np. błyśnięcie po wykryciu ruchu przez czujkę PIR).
Znaczenie poszczególnych bajtów rejestru jest następujące:

Numer bajtu 3 2 1 0
Symbol bajtu T B G R

R - wartość koloru czerwonego (0..100)
G - wartość koloru zielonego (0..100)
B - wartość koloru niebieskiego (0..100)
T - czas płynnej zmiany

Zapis do rejestru powoduje zapamiętanie jego wartości w pamięci EEPROM.


PWM_RegAnimate

Odczyt: [U8]
Zwraca pozostała liczbę kroków animacji.
Zapis: [STR]
Konfiguruje animację RGB.
Zdarzenie: [U8]
Informuje o zakończeniu animacji.
Opis:
Rejestr ten umożliwia wyświetlenie animacji RGB składającej się z maksymalnie 4 kroków. Wpisywana wartość może być łańcuchem składającym się z 4, 8, 12 lub 16 bajtów. Każde 4 kolejne bajty określają parametry pojedynczego kroku animacji:

Numer bajtu 1 2 3 4
Symbol bajtu R G B T

R - wartość koloru czerwonego (0..0x64, 0xFF)
G - wartość koloru zielonego (0..0x64, 0xFF)
B - wartość koloru niebieskiego (0..0x64, 0xFF)
T - czas płynnej zmiany
Znaczenie poszczególnych pól jest takie jak w rejestrze PWM_RegRGB, przy czym wpisanie wrtości 0xFF w pole R, G lub B powoduje pozostawienie odpowiedniego koloru bez zmian do końca danego kroku animacji. Po zapisie do rejestru lub przy jego odczycie zwracana jest liczba kroków pozostałych do końca animacji. Wpisanie pustego łańcucha powoduje zatrzymanie animacji.
Po zakończeniu animacji generowane jest zdarzenie z wartością równą 0.
Przykład:

  • Wpisanie łańcucha %640000100064001000006410 powoduje płynne przechodzenie od aktualnego koloru do koleno: czerwonego, zielonego i niebieskiego. Każde przejście trwa 0x10 jednostek, co dopowiada 2 sekundom (cała animacja trwa 6 sekund).
  • Wpisanie łańcucha %6400FF106464FF100064FF10 powoduje płynne rozjaśnianie diody czerwonej z wartości aktualnej do maksymalnej i jednocześnie wyłączenie koloru zielonego (o ile był włączony), następnie płynne rozjaśnienie koloru zielonego do maksimum (kolor czerwony pozostaje bez zmian) i ostatecznie płynne wyłączenie koloru czerwonego przy pozostawionym kolorze zielonym. Przez cały czas trwania animacji kolor niebieski pozostaje niezmieniony, bez względu na jego wartość początkową.