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