SREG v0.4d
Lista rejestrów
Nazwa rejestru | Numer rejestru (indeks portu) | Typ dostępu | Typ danych R / W |
---|---|---|---|
SREG_RegIn00 | 0 | RO | U8 / - |
… | … | RO | U8 / - |
SREG_RegIn0F | F | RO | U8 / - |
SREG_RegIn10 | 10 | RO | U8 / - |
… | … | RO | U8 / - |
SREG_RegIn1F | 1F | RO | U8 / - |
SREG_RegOut00 | 20 | RW | U8 / U8, U32 |
… | … | RW | U8 / U8, U32 |
SREG_RegOut0F | 2F | RW | U8 / U8, U32 |
SREG_RegOut10 | 30 | RW | U8 / U8, U32 |
… | … | RW | U8 / U8, U32 |
SREG_RegOut1F | 3F | RW | U8 / U8, U32 |
Opis rejestrów
SREG_RegInXY
Odczyt: [U8]
Zwraca stan rejestru o numerze Y w banku o numerze X.
Zdarzenie: [U8]
Generowane po każdej zmianie dowolnego bitu w danym rejestrze.
Opis:
Rejestr przy odczycie zwraca aktualny stan na wejściach wybranego rejestru. Jeśli rejestr XY nie jest obsługiwany, przy odczycie zwracany jest błąd SREG_ERR_INDEX.
SREG_RegOutXY
Odczyt: [U8]
Zwraca stan rejestru o numerze Y w banku o numerze X.
Zapis: [U8, U32]
Zmienia stan rejestru o numerze Y w banku o numerze X.
Zdarzenie: [U8]
Generowane po automatycznej zmianie dowolnego bitu w danym rejestrze.
Opis:
Rejestr przy odczycie zwraca aktualny stan na wyjściach wybranego rejestru. Jeśli rejestr w banku X ma zdefiniowaną linię SOUTxFB, po restarcie procesora odczytywany jest faktyczny stan rejestrów. Jeśli linia SOUTxFB nie jest zdefiniowana, po restarcie rejestry są kasowane (wyjścia ustawiane w stan 0).
Zapis do SREG_RegOutXY wartości 1-bajtowej (0..0xFF) powoduje zmianę wyjść rejestru XY na wpisaną wartość.
Do rejestru można również wpisywać wartości większe niż 1-bajtowe. Znaczenie poszczególnych bajtów jest wówczas następujące:
Numer bajtu | 3 | 2 | 1 | 0 |
---|---|---|---|---|
Symbol bajtu | TIME | OPT | VAL |
VAL - wartość będąca argumentem operacji na rejestrze
OPT - opcje operacji
TIME - czas ponownej zmiany stanu, wyrażony w jednostkach 1/64 sekundy
OPT jest polem bitowym o następującej strukturze:
Numer bitu | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Symbol bitu | - | - | GT | ST | BN | OP |
OP - kod operacji:
Wartość OP | Znaczenie |
---|---|
000 | Zapisuje argument do rejestru |
001 | Ustawia w rejestrze bity wskazane w argumencie |
010 | Kasuje w rejestrze bity wskazane w argumencie |
011 | Zmienia w rejestrze stan bitów wskazanych w argumencie |
pozostałe | Nie zdefiniowane |
BN - jeśli jest ustawiony, VAL jest interpretowane jako numer bitu, argumentem jest wtedy wartość (1 « VAL), w przeciwnym razie argumentem jest VAL
ST - jeśli ustawiony, operacja jest wykonywana na czas określony w TIME, po tym czasie stan wskazanego bitu będzie zmieniony na przeciwny. ST ma znaczenie tylko jeśli bit BN jest ustawiony, w przeciwnym razie ST jest ignorowany
GT - jeśli ustawiony, w odpowiedzi (w polu TIME) zostanie zwrócony czas od ostatnio wykonywanej operacji na danym bicie, o ile operacja ta nie miała określonego czasu wykonania (bit ST był skasowany). GT ma znaczenie tylko jeśli bit BN jest ustawiony, w przeciwnym razie GT jest ignorowany
Jeśli rejestr XY nie jest obsługiwany, przy odczycie lub zapisie zwracany jest błąd SREG_ERR_INDEX.
Przykłady użycia
Pola niewymienione należy traktować jako równe 0.
- Ustawianie kilku wybranych bitów (np. 2, 3 i 7) i kasowanie pozostałych: VAL = 0b10001100
- Ustawienie jednego wybranego bitu (np. 3) i skasowanie pozostałych: VAL = 0b00001000 lub VAL = 3, BN = 1, OP = 0b000
- Ustawienie wybranego bitu (np. 3) i pozostawienie pozostałych bitów bez zmian: VAL = 3, BN = 1, OP = 0b001
- Skasowanie wybranego bitu (np. 5) i pozostawienie pozostałych bitów bez zmian: VAL = 5, BN = 1, OP = 0b010
- Zmiana stanu wybranego bitu (np. 1) i pozostawienie pozostałych bitów bez zmian: VAL = 1, BN = 1, OP = 0b011
- Ustawienie wybranego bitu (np. 3) i jego automatyczne skasowanie po czasie 1s: VAL = 3, BN = 1, OP = 0b001, ST = 1, TIME = 64 (0x0040), GT = 0
- Ustawienie wybranego bitu (np. 3) i odczyt czasu od ostatniej operacji na tym bicie: VAL = 3, BN = 1, OP = 0b001, ST = 0, GT = 1