Serwis Edukacyjny
w I-LO w Tarnowie
obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

obrazek

Autor artykułu: mgr Jerzy Wałaszek
Konsultacje: Wojciech Grodowski, mgr inż. Janusz Wałaszek

©2021 mgr Jerzy Wałaszek
I LO w Tarnowie

obrazek

Mikrokontrolery

ATtiny4/5/9/10

Interfejs TPI

obrazek

Educational and Non-Profit Use of Copyrighted Material:

If you use Microchip copyrighted material solely for educational (non-profit) purposes falling under the “fair use” exception of the U.S. Copyright Act of 1976 then you do not need Microchip’s written permission. For example, Microchip’s permission is not required when using copyrighted material in: (1) an academic report, thesis, or dissertation; (2) classroom handouts or textbook; or (3) a presentation or article that is solely educational in nature (e.g., technical article published in a magazine).

https://www.microchip.com/about-us/legal-information/copyright-usage-guidelines

SPIS TREŚCI
Podrozdziały

obrazek

Własności

Na początek:  podrozdziału   strony 

Przegląd

Interfejs TPI (ang. Tiny Programming Interface) obsługuje zewnętrzne programowanie wszystkich pamięci nieulotnych (ang. Non-Volatile Memories, NVM). Programowanie pamięci wykonywane jest poprzez sterownik NVM, wykonując jego instrukcje, co opisano w następnym rozdziale "Programowanie pamięci”.

Interfejs TPI zapewnia dostęp do narzędzi programowania. Składa się on z dwóch warstw: warstwy dostępu oraz warstwy fizycznej, co ilustruje poniższy rysunek:

obrazek

Programowanie wykonywane jest poprzez fizyczny interfejs, który składa się z trzech końcówek mikrokontrolera z wykorzystywaniem końcówki RESET jako uaktywnienia, końcówki TPICLK jako wejścia zegarowego oraz końcówki TPIDATA jako wejścia i wyjścia danych. Pamięci nieulotne można programować tylko przy zasilaniu mikrokontrolera napięciem 5V.

Na początek:  podrozdziału   strony 

Warstwa fizyczna interfejsu TPI

Fizyczna warstwa interfejsu TPI obsługuje komunikację szeregową na podstawowym niskim poziomie. Używa ona dwukierunkowego, pół-dupleksowego nadajnika i odbiornika szeregowego. Warstwa fizyczna zawiera konwersję danych szeregowo-równoległych oraz równoległo-szeregowych, wykrywanie początku ramki, wykrywanie błędu ramki, wykrywanie błędu parzystości, generację parzystości oraz wykrywanie kolizji.

Dostęp do TPI następuje poprzez trzy następujące końcówki:

obrazek

RESET: Wejście uaktywniające interfejs programowania
TPICLK: Wejście zegara dla interfejsu TPI
TPIDATA: Wejście/wyjście danych dla interfejsu TPI

Dodatkowo końcówki VCC i GND muszą być połączone pomiędzy zewnętrznym programatorem a mikrokontrolerem, jak na poniższym rysunku:

obrazek

Pamięci nieulotne NVM mogą być programowane tylko przy napięciu 5V. W niektórych projektach może okazać się konieczna ochrona elementów nie tolerujących 5V za pomocą oporników szeregowych.

Uaktywnianie interfejsu TPI

Następująca sekwencja uaktywnia interfejs TPI (zobacz na rysunek poniżej):

Sekwencja uaktywniania interfejsu TPI
obrazek

Wyłączanie interfejsu TPI

Zakładając, iż bit uaktywniający NVM został wcześniej wyzerowany, interfejs TPI jest automatycznie wyłączany, gdy końcówka RESET zostanie zwolniona w nieaktywny stan wysoki lub alternatywnie 12V przestanie być przykładane do końcówki RESET . Jeśli bit uaktywniający NVM nie został wcześniej wyzerowany, to wymagane jest wyłączenie zasilania w celu wyjścia z trybu programowania TPI. Zobacz na opis bitu NVMEN w rejestrze TPISR.

Format ramki

Warstwa fizyczna TPI obsługuje ustalony format ramki. Ramka składa się z jednego znaku o długości 8 bitów, jednego bitu startowego, bitu parzystości oraz dwóch bitów stopu. Dane są przesyłane od najmniej znaczącego bitu.

obrazek

Symbole używane na powyższym rysunku:
IDLE
: stan nieaktywny, wysoki
ST
: bit startowy (ang. start bit), zawsze o stanie niskim
D0-D7: kolejne bity danych od najmłodszego (ang. data bits)
P: bit parzystości (ang. parity bit)
SP1: bit stopu nr 1 (ang. stop bit), zawsze o stanie wysokim
SP2: bit stopu nr 2 (ang. stop bit), zawsze o stanie wysokim
IDLE/ST: stan nieaktywny albo bit startowy następnej ramki

Obliczanie bitu parzystości

Bit parzystości jest obliczany z bitów danych za pomocą funkcji logicznej suma modulo dwa (ang. exclusive-or) zgodnie ze wzorem:

gdzie:

P: bit parzystości
D0-D7: bity danych znaku

Obsługiwane znaki

Znak BREAK (przerwa) jest równy 12 bitom o stanie niskim. Można go rozszerzyć poza długość 12 bitów.

obrazek

Działanie

Warstwa fizyczna TPI działa synchronicznie wg zegara TPICLK dostarczanego przez zewnętrzny programator. Zależność pomiędzy zboczami sygnału zegarowego a próbkowaniem danych lub zmianą danych pokazuje rysunek poniżej. Dane są zmieniane przy zboczach opadających, a próbkowane przy zboczach narastających.

obrazek

Warstwa fizyczna TPI obsługuje dwa tryby pracy: Nadawanie i Odbieranie. Standardowo warstwa jest w trybie odbiorczym, oczekując na bit startowy. Tryb pracy jest kontrolowany przez warstwę dostępu.

Szeregowy odbiór danych

Gdy warstwa fizyczna TPI znajduje się w trybie odbiorczym, przyjmowanie danych rozpoczyna się po wykryciu bitu startowego. Każdy bit następujący po bicie startowym będzie próbkowany przy narastającym zboczu sygnału zegarowego TPICLK i przesuwany do rejestru przesuwającego aż do otrzymania drugiego bitu stopu. Gdy w rejestrze przesuwającym znajdzie się kompletna ramka, odebrane dane staną się dostępne dla warstwy dostępowej TPI. Są trzy możliwe wyjątki w trybie odbiorczym: błąd ramki, błąd parzystości oraz wykrycie przerwania. Wszystkie te wyjątki są sygnalizowane warstwie dostępowej TPI, która następnie wchodzi w stan błędu i przełącza warstwę fizyczną TPI w stan odbiorczy, oczekując znaku BREAK.

Szeregowa transmisja danych

Gdy warstwa fizyczna TPI jest gotowa do wysłania nowej ramki, rozpoczyna transmisję przez załadowanie rejestru przesuwającego danymi do wysłania. Gdy rejestr ten zostanie załadowany nowymi danymi, to nadajnik przesuwa w nim bity i wysyła jedną kompletna ramkę linią TPIDATA z szybkością ustaloną przez zegar TPICLK.
Jeśli podczas transmisji zostanie wykryta kolizja, to sterownik wyjścia zostaje zablokowany. Warstwa dostępowa TPI wchodzi w stan błędu, a warstwa fizyczna TPI zostaje przełączona w tryb odbiorczy, oczekując na znak BREAK.

Wyjątek wykrycia kolizji

Warstwa fizyczna TPI używa pojedynczej, dwukierunkowej linii danych zarówno do przesyłania jak i odbioru. Może wystąpić konflikt, jeśli zewnętrzny programator oraz warstwa fizyczna TPI sterują jednocześnie linią TPIDATA. Aby zredukować efekt tego konfliktu, obsługiwany jest mechanizm wykrywania kolizji, który jest oparty na sposobie sterowania linią TPIDATA przez warstwę fizyczną TPI.

Linia TPIDATA jest sterowana przez trójstanowy, przeciwsobny układ z wewnętrznym podciąganiem (ang.  tri-state, push-pull driver with internal pull-up). Układ wyjściowy jest zawsze włączany, gdy przesyłane jest logiczne 0 (aby wysterować w stan niski linię TPIDATA). Gdy przesyłane są logiczne jedynki, wyjście jest aktywnie sterowane tylko w pierwszym cyklu zegarowym. Potem układ wyjściowy przechodzi automatycznie w stan wysokiej impedancji, a linia TPIDATA jest utrzymywana w stanie wysokim przez wewnętrzne podciąganie (ang. pull-up). Wyjście zostaje ponownie włączone przy przesyle następnego zera.

Wykrywanie kolizji jest włączane w trybie nadawania, gdy układ wyjściowy został wyłączony. Linia danych powinna teraz być utrzymywana w stanie wysokim przez wewnętrzne podciąganie, a to jest monitorowane, aby wykryć, czy linia transmisyjna nie została wysterowana w stan niski przez zewnętrzny programator. Jeśli wyjście znajdzie się w stanie niskim, wykryta zostanie kolizja.

Istnieje kilka potencjalnych pułapek związanych ze sposobem wykonywania wykrywania kolizji. Na przykład, kolizji nie można wykryć, jeśli warstwa fizyczna TPI przesyła strumień kolejnych zer logicznych, albo strumień naprzemiennych jedynek i zer. Dzieje się tak, ponieważ układ wyjściowy jest aktywny przez cały czas, zapobiegając przeglądaniu stanu linii TPIDATA. Jednakże w pojedynczej ramce dwa bity stopu powinny zawsze być transmitowane jako logiczne jedynki, co włączy wykrywanie kolizji przynajmniej jeden raz na ramkę (o ile format ramki nie został naruszony, jeśli chodzi o bity stopu).

Fizyczna warstwa TPI przerwie transmisję, gdy wykryje kolizję na linii TPIDATA. Kolizja zostanie zasygnalizowana warstwie dostępowej TPI, która natychmiast przełączy warstwę fizyczną w tryb odbiorczy i przejdzie do stanu błędu. Warstwa dostępowa TPI może być wyprowadzona ze stanu błędu tylko przez przesłanie znaku BREAK.

Zmiana kierunku

Aby zapewnić poprawny czas wykonania operacji pół-dupleksowej, do warstwy fizycznej został dodany prosty mechanizm ochrony czasu. Gdy fizyczna warstwa TPI zmienia tryb z odbierania na nadawanie, to przed wysłaniem bitu startowego wstawiana jest konfigurowalna liczba dodatkowych bitów bezczynności (o stanie wysokim). Minimalny czas przejścia pomiędzy trybami odbioru i nadawania wynosi dwa bity bezczynności. Całkowity czas bezczynności jest sumą określonego czasu ochronnego plus dwa bity bezczynności.
Czas ochronny jest konfigurowany przez przydzielone mu bity w rejestrze TPIPCR register. Standardowy czas ochronny po inicjalizacji warstwy fizycznej wynosi 128 bitów.

Zewnętrzny programator traci kontrolę nad linią TPIDATA, gdy docelowe urządzenie TPI zmienia tryb odbiorczy na nadawanie. Czas ochronny ułatwia wykonanie tej krytycznej fazy komunikacji. Gdy zewnętrzny programator zmienia tryb odbiorczy na nadawanie, co najmniej jeden bit bezczynności powinien być wstawiony przed wysłaniem bitu startu.

Na początek:  podrozdziału   strony 

Warstwa dostępowa interfejsu TPI

Warstwa dostępowa TPI (ang. TPI access layer) jest odpowiedzialna za komunikację z zewnętrznym programatorem (np. mkII). Komunikacja ta opiera się formacie wiadomości, gdzie każda wiadomość zawiera instrukcję, za którą następuje jeden lub więcej argumentów o rozmiarze bajtowym. Instrukcja jest zawsze przesyłana przez zewnętrzny programator, lecz argumenty są wysyłane albo przez zewnętrzny programator, albo przez warstwę dostępową TPI, w zależności od wysłanej instrukcji.

Warstwa dostępowa TPI steruje kierunkiem przesyłania znaków w warstwie fizycznej TPI. Zajmuje się również wychodzeniem ze stanu błędu po wystąpieniu wyjątku.

Obszar sterowania i stanu (ang. Control and Status Space, CSS) interfejsu TPI jest przydzielony dla rejestrów sterowania i stanu w warstwie dostępowej TPI. Obszar CSS składa się z rejestrów bezpośrednio zaangażowanych w funkcjonowaniu samego interfejsu TPI. Rejestry te są dostępne poprzez instrukcje SLDCS i SSTCS.

Warstwa dostępowa może również mieć dostęp do obszaru danych, albo bezpośrednio, albo pośrednio przez użycie rejestru wskaźnikowego (ang. Pointer Register, PR) jako wskaźnika adresu. Obszar danych jest dostępny poprzez instrukcje SLD, SST, SIN i SOUT. Wskaźnik adresu może zostać umieszczony w rejestrze wskaźnikowym przy pomocy instrukcji SSTPR.

Format wiadomości

Każda wiadomość zawiera instrukcję, za którą następuje jeden lub więcej argumentów. Instrukcja ta jest zawsze wysyłana przez zewnętrzny programator. Zależnie od instrukcji wszystkie następne argumenty są wysyłane albo przez zewnętrzny programator, albo przez interfejs TPI.

Wiadomości można podzielić na dwa rodzaje na podstawie zawartych w nich instrukcji:

Wszystkie instrukcje z wyjątkiem instrukcji SKEY wymagają następstwa jednego bajtowego argumentu. Instrukcja SKEY wymaga 8 bajtowych argumentów.

Obsługa wyjątków i synchronizacja

Kilka sytuacji jest uważane za wyjątki od normalnej pracy interfejsu TPI. Gdy warstwa fizyczna TPI jest w trybie odbiorczym, wyjątkami są:

Gdy warstwa fizyczna TPI jest w trybie nadawczym, możliwym wyjątkiem jest:

Wszystkie te wyjątki są sygnalizowane do warstwy dostępowej TPI. Warstwa dostępowa odpowiada na wyjątek przez przerwanie bieżącej operacji w toku i wejście w stan błędu. Następnie pozostaje w tym stanie błędu aż do odebrania znaku BREAK, po którym przechodzi w stan standardowy. W konsekwencji zewnętrzny programator zawsze może zsynchronizować protokół po prostu przez wysłanie dwóch kolejnych znaków BREAK.

Na początek:  podrozdziału   strony 

Zestaw instrukcji

Interfejs TPI posiada zwarty zestaw instrukcji, które są używane do dostępu do obszaru sterowania i stanu interfejsu TPI (ang. Control and Status Space, CSS) oraz do obszaru danych. Instrukcje te umożliwiają zewnętrznemu programatorowi dostęp do interfejsu TPI, sterownika pamięci nieulotnych (ang. NVM Controller) oraz do pamięci nieulotnych (ang. NVM memories). Wszystkie instrukcje z wyjątkiem SKEY wymagają jednego argumentu bajtowego, który następuje za instrukcją. Za instrukcją SKEY występuje 8 bajtów danych. Wszystkie instrukcje mają rozmiar jednego bajta.
Podsumowanie zestawu instrukcji interfejsu TPI instruction jest w poniższej tabeli:
Mnemonik Argument Opis Działanie
SLD data, PR Szeregowy odczyt z obszaru danych
z użyciem adresowania pośredniego
data ← DS[PR]
SLD data, PR+ Szeregowy odczyt z obszaru danych
z użyciem adresowania pośredniego
z postinkrementacją
data ← DS[PR]
PR ← PR+1
SST PR, data Szeregowy zapis do obszaru danych
z użyciem adresowania pośredniego
DS[PR] ← data
SST PR+, data Szeregowy zapis do obszaru danych
z użyciem adresowania pośredniego
z postinkrementacją
DS[PR] ← data
PR ← PR+1
SSTPR PR, a Szeregowy zapis do rejestru wskaźnikowego
z użyciem adresowania bezpośredniego
PR[a] ← data
SIN data, a Szeregowy odczyt z obszaru we/wy data ← I/O[a]
SOUT a, data Szeregowy zapis do obszaru we/wy I/O[a] ← data
SLDCS data, a Szeregowy odczyt z obszaru sterowania i stanu
z użyciem adresowania bezpośredniego
data ← CSS[a]
SSTCS a, data Szeregowe zapis do obszaru sterowania i stanu
z użyciem adresowania bezpośredniego
CSS[a] ← data
SKEY Key, {8{data}} KLUCZ Key ← {8{data}}

SLD – Serial LoaD from data space using indirect addressing – Szeregowy odczyt z obszaru danych z użyciem adresowania pośredniego

Instrukcja SLD wykorzystuje adresowanie pośrednie, aby załadować dane z obszaru danych (ang. data space, DS) do rejestru przesuwającego warstwy fizycznej TPI w celu ich szeregowego odczytu. Komórka w obszarze danych wskazywana jest przez rejestr wskaźnikowy (PR), w którym odpowiedni adres należy umieścić przed dostępem do danych. Rejestr wskaźnikowy jest albo pozostawiany bez zmian przez operację, albo zostaje zwiększony o 1, jak pokazano w poniższej tabeli:

Operacja Kod instrukcji Uwagi Rejestr
data ← DS[PR] 0010 0000 PR ← PR Bez zmiany
data ← DS[PR] 0010 0100 PR ← PR + 1 Postinkrementacja

SST – Serial STore to data space using indirect addressing – Szeregowy zapis do obszaru danych z użyciem adresowania pośredniego

Instrukcja SST wykorzystuje adresowanie pośrednie, aby zapisać odczytany szeregowo bajt z rejestru przesuwającego warstwy fizycznej TPI do obszaru danych (ang. data space, DS). Komórka w obszarze danych wskazywana jest przez rejestr wskaźnikowy (PR), w którym odpowiedni adres należy umieścić przed dostępem do danych. Rejestr wskaźnikowy jest albo pozostawiany bez zmian przez operację, albo zostaje zwiększony o 1, jak pokazano w poniższej tabeli:

Operacja Kod instrukcji Uwagi Rejestr
DS[PR] ← data 0110 0000 PR ← PR Bez zmiany
DS[PR] ← data 0110 0100 PR ← PR + 1 Postinkrementacja

SSTPR – Serial STore to Pointer Register – Szeregowy zapis do rejestru wskaźnikowego

Instrukcja SSTPR umieszcza szeregowo odczytany bajt danych z rejestru przesuwającego warstwy fizycznej TPI w rejestrze wskaźnikowym (ang. Pointer Register, PR). Bit adresowy w instrukcji określa, do którego bajtu rejestru wskaźnikowego trafią dane.

Operacja Kod instrukcji Uwagi
PR[a] ← data 0110 100a Bit 'a' adresuje bajt w rejestrze wskaźnikowym

SIN – Serial IN from i/o space using direct addressing – Szeregowy odczyt z obszaru we/wy z wykorzystaniem adresowania bezpośredniego

Instrukcja SIN ładuje bajt z obszaru we/wy do rejestru przesuwającego warstwy fizycznej TPI w celu jego szeregowego odczytu. Instrukcja używa adresowania bezpośredniego, w którym adres zawarty jest w 6 bitach instrukcji.

Operacja Kod instrukcji Uwagi
data ← I/O[a] 0aa1 aaaa Bity oznaczone jako 'a' tworzą 6-bitowy adres we/wy

SOUT – Serial OUT to i/o space using direct addressing – Szeregowy zapis do obszaru we/wy z wykorzystaniem adresowania bezpośredniego

Instrukcja SOUT umieszcza odczytany szeregowo bajt z rejestru przesuwającego warstwy fizycznej TPI w obszarze we/wy. Instrukcja używa adresowania bezpośredniego, w którym adres zawarty jest w 6 bitach instrukcji.

Operacja Kod instrukcji Uwagi
I/O[a] ← data 1aa1 aaaa Bity oznaczone jako 'a' tworzą 6-bitowy adres we/wy

SLDCS – Serial LoaD data from Control and Status space using direct addressing – Szeregowy odczyt z obszaru sterowania i stanu z użyciem adresowania bezpośredniego

Instrukcja SLDCS ładuje bajt z obszaru sterowania i stanu interfejsu TPI do rejestru przesuwającego warstwy fizycznej TPI w celu jego szeregowego odczytu. Instrukcja SLDCS używa adresowania bezpośredniego, adres tworzą 4 bity zawarte w kodzie instrukcji.

Operacja Kod instrukcji Uwagi
data ← CSS[a] 1000 aaaa Bity oznaczone jako 'a' tworzą 4-bitowy adres

SSTCS – Serial STore data to Control and Status space using direct addressing – Szeregowy zapis do obszaru sterowania i stanu z użyciem adresowania bezpośredniego

Instrukcja SLDCS zapisuje odczytany szeregowo bajt z rejestru przesuwającego warstwy fizycznej TPI do obszaru sterowania i stanu interfejsu TPI. Instrukcja SSTCS używa adresowania bezpośredniego, adres tworzą 4 bity zawarte w kodzie instrukcji.

Operacja Kod instrukcji Uwagi
CSS[a] ← data  1100 aaaa Bity oznaczone jako 'a' tworzą 4-bitowy adres

SKEY – Serial KEY signaling – Szeregowe sygnalizowanie KLUCZA

Instrukcja SKEY jest używana do sygnalizowania aktywacji klucza, który włącza programowanie pamięci nieulotnej NVM. Za instrukcją SKEY następuje 8 bajtów danych tworzących 64-bitowy klucz aktywacyjny.

Operacja Kod instrukcji Uwagi
Key ← {8[data}} 1110 0000 Po instrukcji następują bajty danych
Na początek:  podrozdziału   strony 

Dostęp do sterownika pamięci nieulotnej NVM

Standardowo programowanie pamięci nieulotnej NVM nie jest uaktywnione. Aby uzyskać dostęp do sterownika NVM i móc programować pamięci nieulotne, należy przesłać unikalny klucz za pomocą instrukcji SKEY. 64-bitowy klucz uaktywniający programowanie NVM jest podany w poniższej tabeli:
Rodzaj klucza Wartość
Aktywacja programowania NVM 0x1289AB45CDD888FF

Po przekazaniu klucza, należy sprawdzać stan bitu aktywacji pamięci nieulotnej (ang. Non-Volatile Memory Enable bit, NVMEN)   w rejestrze stanu TPI (ang. TPI Status Register, TPISR) do momentu, aż pamięć nieulotna zostanie uaktywniona. Programowanie NVM jest wyłączane po zapisie logicznego zera do bitu NVMEN w TPISR.

Na początek:  podrozdziału   strony 

Opis obszaru rejestrów sterowania i stanu

Rejestry sterowania i stanu interfejsu TPI są odwzorowane w obszarze sterowania i stanu (ang. Control and Status Space, CSS). Rejestry te nie należą do obszaru rejestrów we/wy, a dostęp do nich jest uzyskiwany wyłącznie za pomocą instrukcji SLDCS i SSTCS. Rejestry sterowania i stanu są bezpośrednio zaangażowane z konfiguracją i monitorowaniem stanu interfejsu TPI.

Poniższa tabela podsumowuje rejestry CSS:

Adres Nazwa Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
0x0F TPIIR Kod identyfikacyjny interfejsu TPI
0x0E
...
0x03
Zarezerwowane
0x02 TPIPCR GT2 GT1 GT0
0x01 Zarezerwowane
0x00 TPISR NVMEN

TPIIR – Tiny Programming Interface Identification Register – Rejestr identyfikacyjny interfejsu TPI

Bit 7 6 5 4 3 2 1 0  
CSS: 0x0F Kod identyfikacyjny interfejsu TPI TPIIR
Zapis/Odczyt O O O O O O O O  
Wartość początkowa 1 0 0 0 0 0 0 0  

Bity 7:0 – TPIIC: Tiny Programming Interface Identification Code – Kod identyfikacyjny interfejsu TPI

Bity te podają kod identyfikacyjny dla interfejsu TPI. Kod ten może zostać użyty przez zewnętrzny programator do identyfikacji interfejsu TPI. Kod jest podany w poniższej tabeli:

Rodzaj kodu Wartość
Identyfikacja interfejsu 0x80

TPIPCR – Tiny Programming Interface Physical Layer Control Register – Rejestr sterujący warstwy fizycznej TPI

Bit 7 6 5 4 3 2 1 0  
CSS: 0x02 - - - - - GT2 GT1 GT0 TPIPCR
Zapis/Odczyt O O O O O Z/O Z/O Z/O  
Wartość początkowa 0 0 0 0 0 0 0 0  

Bity 7:3 – Zarezerwowane

Te bity zostały zarezerwowane i przy odczycie dają wartość zero.

Bity 2:0 – GT[2:0]: Guard Time – Czas ochronny

Te bity określają liczbę dodatkowych bitów bezczynności (stan wysoki, nieaktywny linii TPIDATA), które są wstawiane do transmisji przy zmianie trybu odbiorczego na nadawczy. Dodatkowe opóźnienia nie są wstawiane, gdy następuje zmiana trybu nadawania na tryb odbioru. Całkowity czas bezczynności przy zmianie trybu odbioru na tryb nadawania wynosi czas ochronny plus dwa bity bezczynności. Poniższa tabela przedstawia dostępne ustawienia czasu ochronnego:

GT2 GT1 GT0 Czas ochronny
(liczba bitów bezczynności)
0 0 0 +128 (standardowo)
0 0 1 +64
0 1 0 +32
0 1 1 +16
1 0 0 +8
1 0 1 +4
1 1 0 +2
1 1 1 +0

Standardową wartością czasu ochronnego jest 128 bitów bezczynności. Aby przyspieszyć komunikację, czas ochronny powinien być ustawiony na najkrótszą, lecz wciąż bezpieczną wartość.


TPISR – Tiny Programming Interface Status Register – Rejestr stanu interfejsu TPI

Bit 7 6 5 4 3 2 1 0  
CSS: 0x00 - - - - - - NVMEN - TPISR
Zapis/Odczyt O O O O O O Z/O O  
Wartość początkowa 0 0 0 0 0 0 0 0  

Bity 7:2,0 – Zarezerwowane

Te bity zostały zarezerwowane i przy odczycie dają wartość zero.

Bit 1 – NVMEN: Non-Volatile Memory Programming Enabled – Uaktywnienie programowania pamięci nieulotnej

Programowanie NVM jest aktywne, gdy ten bit jest ustawiony. Zewnętrzny programator może odczytać stan tego bitu, aby zweryfikować, czy interfejs programowania został poprawnie aktywowany. Programowanie NVM jest wyłączane przez zapis tego bitu stanem zero.

Na początek:  podrozdziału   strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2021 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.

Informacje dodatkowe.