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

ATmega64

Skanowanie ścieżki krawędziowej IEEE 1149.1

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

Łańcuch skanowania ścieżki krawędziowej (ang. Boundary-scan Chain) posiada możliwość ustawiania i odczytywania poziomów logicznych na cyfrowych końcówkach we/wy oraz na granicy pomiędzy logiką cyfrową i analogową dla obwodów analogowych, które posiadają połączenia poza układem mikrokontrolera. Na poziomie systemu wszystkie układy scalone posiadające interfejsy JTAG są połączone szeregowo sygnałami TDI/TDO w celu utworzenia długiego rejestru przesuwającego. Zewnętrzny kontroler ustawia układy tak, aby na ich wyjściach pojawiły się pożądane wartości, a następnie obserwuje wartości wejściowe otrzymywane z innych układów. Kontroler porównuje otrzymane dane z wynikiem oczekiwanym. W ten sposób skanowanie ścieżki krawędziowej dostarcza mechanizmu testowania wzajemnych połączeń i integralności składników na płytkach drukowanych używając jedynie sygnałów TAP.

Do testowania płytek drukowanych można używać czterech obowiązkowo zdefiniowanych instrukcji JTAG standardu IEEE 1149.1: IDCODE, BYPASS, SAMPLE/PRELOAD i EXTEST, jak również specyficznej, publicznej instrukcji AVR JTAG: AVR_RESET. Początkowe skanowanie ścieżki rejestru danych pokaże kod identyfikacyjny (ID-code) mikrokontrolera, ponieważ IDCODE jest standardową instrukcją JTAG. Może być pożądane utrzymywanie mikrokontrolera AVR w stanie resetu podczas trybu Testu. Jeśli nie ma resetu, to stany wejść mikrokontrolera mogą być określone za pomocą operacji skanowania, a wewnętrzne oprogramowanie może znaleźć się w stanie nieokreślonym przy wyjściu z trybu testu. Wchodząc w reset, wyjścia każdej końcówki portu natychmiast przejdą w stan wysokiej impedancji, co czyni zbędą instrukcję HIGHZ. Jeśli zajdzie potrzeba, można wysłać instrukcję BYPASS, aby wykonać najkrótszy możliwy łańcuch skanowania poprzez mikrokontroler. Mikrokontroler można ustawić w stan resetu albo przez wymuszenie stanu niskiego na zewnętrznej końcówce RESET, albo przez wysłanie instrukcji AVR_RESET z odpowiednim ustawieniem rejestru danych resetu (ang. Reset Data Register).

Instrukcja EXTEST jest używana do próbkowania zewnętrznych końcówek i ładowania końcówek wyjścia danymi. Dane wyjściowe latch (przerzutniki zatrzaskowe) zostaną wstawione na końcówki, gdy tylko instrukcja EXTEST zostanie załadowana do rejestru JTAG IR. Z tego powodu należy również użyć SAMPLE/PRELOAD do ustawienia początkowych wartości w pierścieniu skanowania, aby zapobiec uszkodzenia płyty z mikroprocesorem przy pierwszym wydawaniu instrukcji EXTEST. SAMPLE/PRELOAD można również używać do szybkich ujęć stanu końcówek podczas normalnej pracy układu.

Bit bezpiecznikowy JTAGEN musi być zaprogramowany oraz bit JTD w rejestrze we/wy MCUCSR musi być wyzerowany, aby uaktywnić port dostępu testowego JTAG.

Gdy używany jest interfejs JTAG do skanowania ścieżki krawędziowej, możliwe jest stosowanie wyższej częstotliwości zegara JTAG TCK od wewnętrznej częstotliwości układu. Zegar układu nie musi pracować.

Na początek:  podrozdziału   strony 

Rejestry danych

Rejestry danych istotne dla operacji skanowania ścieżki krawędziowej to:

Rejestr pomijania (ang. Bypass Register)

Rejestr pomijania składa się z pojedynczego stopnia rejestru przesuwającego. Gdy rejestr pomijania zostanie wybrany jako ścieżka pomiędzy TDI i TDO, to jest on resetowany na 0 przy opuszczaniu stanu kontrolnego Capture-DR. Rejestru pomijania można używać do skracania łańcucha skanowania w systemie, gdy inne mikrokontrolery mają być testowane.

Rejestr identyfikacji mikrokontrolera (ang. Device Identification Register)

Poniższy rysunek przedstawia strukturę rejestru identyfikacyjnego:

Wersja

Wersja jest 4-bitowym numerem określającym odmianę modelu mikrokontrolera. Numery wersji: 0x0 dla wersji A, 0x1 dla B itd.

Numer elementu

Jest to 16-bitowy kod identyfikujący model mikrokontrolera. Dla ATmega64 numer elementu JTAG wynosi 0x9602 (szesnastkowo).

Identyfikator producenta

Jest to 11-bitowy kod identyfikujący wytwórcę danego elementu. Dla firmy ATMEL kod ten jest równy 0x01F (szesnastkowo).

Rejestr resetowania (ang. Reset Register)

Jest to rejestr danych testu (ang. Test Data Register) używany do resetowania mikrokontrolera. Ponieważ w czasie resetu mikroprocesor AVR wprowadza końcówki portów w stan wysokiej impedancji, to rejestr resetowania może również zastąpić działanie opcjonalnej, niezaimplementowanej instrukcji JTAG HIGHZ.

Wysoka wartość w rejestrze resetowania odpowiada wymuszeniu stanu niskiego na zewnętrznej końcówce RESET. Mikrokontroler jest resetowany tak długo, jak wysoka wartość jest obecna w rejestrze resetowania. Zależnie od ustawień bitów bezpiecznikowych mikroprocesor pozostanie w stanie resetu przez okres upływu czasu resetowania (ang. Reset Time-Out Period) (zobacz do podrozdziału "Źródła zegarowe") po zwolnieniu rejestru resetowania. Wyjście z tego rejestru danych nie jest zatrzaskiwane, zatem reset będzie miał miejsce natychmiast, jak pokazano na poniższym rysunku:

Łańcuch skanowania ścieżki krawędziowej (ang. Boundary-scan Chain)

Łańcuch skanowania ścieżki krawędziowej posiada możliwość sterowania poziomami logicznymi i obserwowania ich na cyfrowych końcówkach we/wy jak również na granicy pomiędzy logiką cyfrową i analogową dla obwodów analogowych, które posiadają pozaukładowe połączenia.

Pełny opis znajdziesz w podrozdziale "Łańcuch skanowania ścieżki krawędziowej".


Instrukcje JTAG specyficzne dla skanowania ścieżki krawędziowej

Rejestr instrukcji ma szerokość 4 bitów, wspierając 16 instrukcji. Poniżej wymienione zostały instrukcje JTAG użyteczne w operacji skanowania ścieżki krawędziowej. Zauważ, iż opcjonalna instrukcja HIGHZ nie została zaimplementowana, lecz wszystkie końcówki posiadające możliwość przejścia w stan wysokiej impedancji mogą być ustawione w ten stan przez wykorzystanie instrukcji AVR_RESET, ponieważ początkowym stanem dla wszystkich końcówek portów jest stan wysokiej impedancji.

Z definicji w tym rozdziale, najmłodszy bit LSB (ang. Least Significant Bit) jest pierwszym wsuwanym i pierwszym wysuwanym dla wszystkich rejestrów przesuwających.

Kod operacyjny każdej instrukcji jest pokazany za jej nazwą w formacie szesnastkowym. Tekst opisuje, który rejestr danych zostaje wybrany jako ścieżka pomiędzy TDI i TDO dla każdej instrukcji.

EXTEST; $0

Obowiązkowa instrukcja JTAG do wyboru łańcucha skanowania ścieżki krawędziowej jako rejestru danych do testowania obwodów zewnętrznych dla obudowy mikrokontrolera AVR. W łańcuchu skanowania dostępne jest dla końcówek portów wyłączanie oporników podciągających, sterowanie wyjściem, dane wyjściowe i wejściowe. Dla obwodów analogowych posiadających połączenia pozaukładowe interfejs pomiędzy logiką analogową a cyfrową znajduje się w łańcuchu skanowania. Zawartości zatrzaśniętych wyjść są wyprowadzane na zewnątrz, gdy tylko rejestr instrukcji JTAG (ang. JTAG IRregister) zostanie załadowany instrukcją EXTEST.

Aktywne stany:

IDCODE; $1

Opcjonalna instrukcja JTAG wybierająca 32-bitowy rejestr identyfikacji jako rejestr danych. Rejestr identyfikacji składa się z numeru wersji, numeru mikrokontrolera oraz kodu producenta wybranego przez JEDEC. Jest to standardowa instrukcja po włączeniu zasilania.

Aktywne stany:

SAMPLE_PRELOAD; $2

Obowiązkowa instrukcja JTAG do wstępnego załadowania zatrzasków wyjściowych oraz zrobienia ujęcia stanu końcówek we/wy bez wpływania na pracę systemu. Jednakże zatrzaski wyjściowe nie są połączone z końcówkami. Jako rejestr danych zostaje wybrany łańcuch skanowania ścieżki krawędziowej.

Aktywne stany:

AVR_RESET; $C

Publiczna instrukcja JTAG specyficzna dla AVR wymuszająca stan resetu w mikrokontrolerze AVR lub zwalniająca źródło resetu JTAG. Kontroler TAP nie jest resetowany przez tą instrukcję. Jednobitowy rejestr resetu zostaje wybrany jako rejestr danych. Zwróć uwagę, iż reset ten będzie aktywny tak długo, jak w łańcuchu resetu znajduje się logiczna jedynka. Wyjście z tego łańcucha nie jest przepuszczane przez przerzutnik zatrzaskowy latch.

Aktywne stany:

BYPASS; $F

Obowiązkowa instrukcja JTAG wybierająca rejestr pomijania (ang. Bypass Register) na rejestr danych.

Aktywne stany:

Na początek:  podrozdziału   strony 

Łańcuch skanowania ścieżki krawędziowej

Łańcuch skanowania ścieżki krawędziowej (ang. Boundary-scan chain) posiada możliwość sterowania poziomami logicznymi i obserwowania ich na cyfrowych końcówkach we/wy, jak również na granicy logiki cyfrowej i analogowej dla analogowych obwodów posiadających pozaukładowe połączenia.

Skanowanie cyfrowych końcówek portów

Komórka skanowania ścieżki krawędziowej dla dwukierunkowej końcówki portu z opornikiem podciągającym

Powyższy rysunek pokazuje komórkę skanowania ścieżki krawędziowej dla dwukierunkowej końcówki portu z funkcją podciągania. Komórka składa się ze standardowej komórki skanowania ścieżki krawędziowej dla funkcji włączania podciągania (ang. Pull-up Enable, PUExn) oraz z komórki dwukierunkowej końcówki, która łączy trzy sygnały: Output Control – OCxn (sterowanie wyjściem), Output Data – ODxn (dane wyjściowe) i Input Data – IDxn (dane wejściowe) w dwustopniowy rejestr przesuwający. Indeksy portu i końcówki nie są używane w dalszym opisie.

Logika skanowania ścieżki krawędziowej nie jest pokazana na rysunkach w tym rozdziale. Poniższy rysunek przedstawia prostą końcówkę portu cyfrowego, jak opisano w rozdziale "Porty we/wy".

Schemat ogólnej końcówki portu z wydzieleniem obszaru skanowania ścieżki krawędziowej

PUD Wyłączanie podciągania         WDx Zapis DDRx
PUExn Włączanie podciągania dla końcówki Pxn   RDx Odczyt DDRx
OCxn Sterowanie wyjściem końcówki Pxn   WPx Zapis PORTx
ODxn Dane wyjściowe do końcówki Pxn   RRx Odczyt rejestru PORTx
IDxn Dane wejściowe z końcówki Pxn   RPx Odczyt końcówki PORTx
SLEEP     Sterowanie uśpieniem   CLKI/O     Zegar we/wy

Obwód skanowania ścieżki krawędziowej z poprzedniego rysunku zastępuje zielony obszar ograniczony kreskowaną linią. Jeśli nie jest obecna żadna alternatywna funkcja portu, to dane wejściowe ID odpowiadają wartości rejestru PINxn (lecz ID nie ma synchronizatora), dane wyjściowe OD odpowiadają rejestrowi PORT, sterowanie wyjściem OC odpowiada rejestrowi kierunku danych DD, a włączanie podciągania POExn odpowiada wyrażeniu logicznemu PUD · DDxn · PORTxn.

Cyfrowe funkcje alternatywne są podłączone poza obszarem zielonym, aby umożliwiać łańcuchowi skanowania odczyt aktualnej wartości końcówki. Przy funkcji analogowej występuje bezpośrednie połączenie od końcówki zewnętrznej do obwodu analogowego, a łańcuch skanowania jest wstawiony w interfejs pomiędzy logiką cyfrową a modułem analogowym.

Skanowanie ścieżki krawędziowej a interfejs 2-przewodowy

Końcówki SCL i SDA należące do 2-przewodowego interfejsu posiadają jeden dodatkowy sygnał sterujący w łańcuchu skanowania: włączanie interfejsu 2-przewodowego (ang. Two-wire Interface Enable, TWIEN).

Dodatkowy sygnał dla 2-przewodowego interfejsu

Jak pokazano na powyższym rysunku sygnał TWIEN włącza trójstanowy bufor z kontrolą szybkości narastania sygnału równolegle ze zwykłą cyfrową końcówką portu. Do sygnału TWIEN dołączona zostaje ogólna komórka skanowania (pokazana dalej).

Uwagi: 1. Nie ma oddzielnej komórki skanowania dla filtru szpilkowego 50 ns na wejściu. Zwykłe wsparcie skanowania dla cyfrowych końcówek portu wystarcza do testów połączeń. Jedynym powodem posiadania TWIEN na ścieżce skanowania jest umożliwienie odłączenia bufora sterowania ograniczeniem szybkości przy wykonywaniu skanowania ścieżki krawędziowej.
  2. Upewnij się, że sygnały OC i TWIEN nie pojawiają się jednocześnie, ponieważ doprowadzi to do sprzeczności sterowania portu.

Skanowanie końcówki RESET

Końcówka RESET akceptuje 5V przy aktywności w stanie niskim oraz 12V przy aktywności w stanie wysokim dla równoległego programowania wysokonapięciowego (ang. High Voltage Parallel Programming). Komórka obserwująca, pokazana na rysunku poniżej, jest wstawiona zarówno dla 5V sygnału resetu RSTT jak i dla 12V sygnału resetu RSTHV.

Komórka tylko obserwująca

Skanowanie końcówek zegarowych

Mikrokontrolery AVR posiadają wiele opcji zegarowych wybieranych przez bity bezpiecznikowe. Są to: wewnętrzny oscylator RC, zewnętrzny oscylator RC, zewnętrzny zegar, oscylator kwarcowy (wysokiej częstotliwości), oscylator kwarcowy niskiej częstotliwości i rezonator ceramiczny.

Poniższy rysunek pokazuje, jak każdy oscylator z zewnętrznym połączeniem jest wspierany w łańcuchu skanowania.

Komórki skanowania ścieżki krawędziowej dla oscylatorów i opcji zegarowych

Sygnał włączania (ang. Enable) jest wspierany przez ogólną komórkę skanowania ścieżki krawędziowej, natomiast wyjście oscylatora/zegara (ang. Output) jest podłączone do komórki tylko obserwującej. Oprócz głównego zegara, timer oscylatora jest skanowany w ten sam sposób. Wyjście wewnętrznego oscylatora RC nie jest skanowane, ponieważ ten oscylator nie ma zewnętrznych połączeń.

Poniższa tabelka podsumowuje rejestry skanowania dla zewnętrznej końcówki zegarowej XTAL1, oscylatorów z połączeniami XTAL1/XTAL2 jak również timera oscylatora 32 kHz.

Sygnał włączania Skanowana linia zegarowa Opcja zegarowa Skanowana linia zegarowa, gdy nie jest używana
EXTCLKEN EXTCLK (XTAL1) Zegar zewnętrzny 0
OSCON OSCCK Zewnętrzny kwarc
Zewnętrzny rezonator ceramiczny
0
RCOSCEN RCCK Zewnętrzny oscylator RC 1
OSC32EN OSC32CK Zewnętrzny kwarc niskiej częstotliwości 0
TOSKON TOSCK Timer oscylatora 32 kHz 0
Uwagi: 1. Nie włączaj na główny zegar więcej niż jednego źródła zegarowego naraz.
  2. Skanowanie wyjścia oscylatora daje nieprzewidywalne wyniki, ponieważ występuje dryft częstotliwości pomiędzy oscylatorem wewnętrznym, a zegarem JTAG TCK. Jeśli jest możliwe, należy raczej skanować zegar zewnętrzny.
  3. Konfiguracja zegarowa jest programowana za pomocą bitów bezpiecznikowych. Ponieważ bit bezpiecznikowy nie jest zmieniany w trakcie pracy programu, konfigurację zegarową uważa się za ustaloną dla danej aplikacji. Radzi się użytkownikowi skanować tę samą opcję zegarową, jaka będzie używana w ostatecznym systemie. Sygnały włączające są wspierane w łańcuchu skanowania, ponieważ układy logiczne systemu mogą wyłączać opcje zegarowe w trybach uśpienia, odłączając w ten sposób końcówki oscylatora od ścieżki skanowania. Bit bezpiecznikowy INTCAP nie jest wspierany w łańcuchu skanowania, zatem łańcuch skanowania ścieżki krawędziowej nie może uruchamiać oscylatora XTAL wymagającego wewnętrznych kondensatorów, o ile ten bit bezpiecznikowy nie zostanie poprawnie zaprogramowany.

Skanowanie komparatora analogowego

Istotne sygnały komparatora dotyczące skanowania ścieżki krawędziowej pokazuje poniższy rysunek.

Do każdego z tych sygnałów dołączona jest przedstawiona poniżej komórka skanowania ścieżki krawędziowej.

Sygnały te opisuje poniższa tabelka. Nie ma potrzeby wykorzystywania komparatora do czystych testów połączeń, ponieważ wszystkie jego wejścia analogowe są również współdzielone z końcówkami portu cyfrowego.

Nazwa sygnału Kierunek widziany z komparatora Opis Zalecane wejście, gdy nieużywane Wartości wyjściowe, gdy zalecane wejścia są używane
AC_IDLE Wejście Wyłącza komparator, gdy w stanie 1 1 Zależy od wykonywanego kodu mikroprocesora
ACO Wyjście Wyjście komparatora analogowego Stanie się wejściem dla wykonywanego kodu 0
ACME Wejście W stanie 1 używa sygnału wyjścia z multipleksera przetwornika analogowo/cyfrowego 0 Zależy od wykonywanego kodu mikroprocesora
ACBG Wejście Włączanie napięcia odniesienia 0 Zależy od wykonywanego kodu mikroprocesora

Skanowanie przetwornika A/C

Poniżej przedstawiono schemat blokowy przetwornika A/C ze wszystkimi istotnymi sygnałami kontrolnymi i śledzącymi.

Do każdego z tych sygnałów dołączona jest poniższa komórka skanowania ścieżki krawędziowej.

Przetwornik A/C nie musi być używany do czystego testowania połączeń, ponieważ wszystkie wejścia analogowe są również dzielone z końcówkami portu cyfrowego.

Sygnały skanowania ścieżki krawędziowej dla przetwornika A/C

Nazwa sygnału Kierunek od strony przetwornika Opis Zalecane dane wejściowe, jeśli nieużywane Wartości wyjściowe, gdy są używane zalecane wejścia, a mikroprocesor nie używa przetwornika
COMP Wyjście Wyjście komparatora 0 0
ACLK Wejście Sygnał zegara do stopni wzmocnienia zaimplementowane jako filtry z przełączanymi pojemnościami 0 0
ACTEN Wejście Włączanie ścieżki od stopni wzmacniających do komparatora 0 0
ADCBGEN Wejście Włączenie napięcia odniesienia jako wejścia odwracającego dla komparatora 0 0
ADCEN Wejście Sygnał włączania przetwornika A/C 0 0
AMPEN Wejście Sygnał włączania stopni wzmacniających 0 0
DAC_9 Wejście Bit 9 wartości cyfrowej  do przetwornika cyfrowo/analogowego 1 1
DAC_8 Wejście Bit 8 wartości cyfrowej  do przetwornika cyfrowo/analogowego 0 0
DAC_7 Wejście Bit 7 wartości cyfrowej  do przetwornika cyfrowo/analogowego 0 0
DAC_6 Wejście Bit 6 wartości cyfrowej  do przetwornika cyfrowo/analogowego 0 0
DAC_5 Wejście Bit 5 wartości cyfrowej  do przetwornika cyfrowo/analogowego 0 0
DAC_4 Wejście Bit 4 wartości cyfrowej  do przetwornika cyfrowo/analogowego 0 0
DAC_3 Wejście Bit 3 wartości cyfrowej  do przetwornika cyfrowo/analogowego 0 0
DAC_2 Wejście Bit 2 wartości cyfrowej  do przetwornika cyfrowo/analogowego 0 0
DAC_1 Wejście Bit 1 wartości cyfrowej  do przetwornika cyfrowo/analogowego 0 0
DAC_0 Wejście Bit 0 wartości cyfrowej  do przetwornika cyfrowo/analogowego 0 0
EXTCH Wejście Połączenie kanałów 0 - 3 przetwornika cyfrowo/analogowego do ścieżki omijającej stopnie wzmacniające 1 1
G10 Wejście Włączenie wejścia ze wzmocnieniem 10x 0 0
G20 Wejście Włączenie wejścia ze wzmocnieniem 20x 0 0
GNDEN Wejście Gdy ma stan true, zwiera do masy wejście odwracające komparatora 0 0
HOLD Wejście Sygnał próbkowania z podtrzymaniem. Przy stanie niskim próbkuje sygnał analogowy. Podtrzymuje sygnał przy stanie wysokim. Gdy są używane stopnie wzmacniające, sygnał ten musi stać się aktywny, gdy ACLK ma stan wysoki 1 1
IREFEN Wejście Włącza napięcie odniesienia jako sygnał AREF do przetwornika cyfrowo/analogowego 0 0
MUXEN_7 Wejście Bit 7 multipleksera wejść 0 0
MUXEN_6 Wejście Bit 6 multipleksera wejść 0 0
MUXEN_5 Wejście Bit 5 multipleksera wejść 0 0
MUXEN_4 Wejście Bit 4 multipleksera wejść 0 0
MUXEN_3 Wejście Bit 3 multipleksera wejść 0 0
MUXEN_2 Wejście Bit 2 multipleksera wejść 0 0
MUXEN_1 Wejście Bit 1 multipleksera wejść 0 0
MUXEN_0 Wejście Bit 0 multipleksera wejść 0 0
NEGSEL_2 Wejście Bit 2 multipleksera wejść dla wejścia odwracającego sygnału różnicowego 0 0
NEGSEL_1 Wejście Bit 1 multipleksera wejść dla wejścia odwracającego sygnału różnicowego 0 0
NEGSEL_0 Wejście Bit 0 multipleksera wejść dla wejścia odwracającego sygnału różnicowego 0 0
PASSEN Wejście Włączenie bramki przepuszczającej stopni wzmacniających 1 1
PRECH Wejście Wstępne załadowanie zatrzasku wyjściowego komparatora (aktywne w stanie niskim) 1 1
SCTEST Wejście Włączenie TESTU przełączanego kondensatora. Wyjście ze stopnia wzmacniającego 10x wysyłane na końcówkę portu z ADC_4 0 0
ST Wejście Wyjście ze stopni wzmacniających ustali się szybciej, jeśli ten sygnał będzie w stanie wysokim przez pierwsze dwa okresy ACLK po przejściu AMPEN w stan wysoki 0 0
VCCREN Wejście Wybiera Vcc jako napięcie odniesienia ACC 0 0
Uwaga: 1. Nieprawidłowe ustawienie przełączników pokazanych na schemacie przetwornika spowoduje sprzeczność sygnałów i może uszkodzić mikrokontroler. Istnieje kilka wyborów wejść do obwodu próbkowania i podtrzymania na wejściu odwracającym wyjściowego komparatora. Upewnij się, że jest wybrana tylko jedna ścieżka albo z końcówki ADC, albo ze źródła napięcia odniesienia, albo do masy.

Jeśli przetwornik A/C nie ma być używany podczas skanu, to należy użyć wartości wejściowe z tabelki powyżej. Nie zaleca się użytkownikom używania stopni wzmocnienia różnicowego w czasie skanowania. Stopnie wzmacniania oparte na przełączanej pojemności wymagają szybkiej pracy i dokładnego taktowania, co trudno uzyskać w łańcuchu skanowania. Dlatego nie dostarczono szczegółów dotyczących działań różnicowego stopnia wzmacniającego.

Przetwornik A/C AVR oparty jest na pokazanym na schemacie obwodzie analogowym pracującym wg algorytmu kolejnych przybliżeń zaimplementowanego w logice cyfrowej. Gdy jest on używany w skanowaniu ścieżki krawędziowej, to problemem jest zwykle zapewnienie, iż przyłożone napięcie analogowe będzie mierzone w pewnych granicach. Można to łatwo wykonać bez uruchamiania algorytmu kolejnych przybliżeń: użyj dolnej granicy na cyfrowych liniach DAC[9:0], upewnij się, iż na wyjściu komparatora jest stan niski, następnie zastosuj górna granicę na cyfrowych liniach DAC[9:0] i zweryfikuj, iż wyjście z komparatora jest w stanie wysokim.

Przetwornik analogowo/cyfrowy nie musi być używany do testowania połączeń, ponieważ wszystkie wejścia analogowe są dzielone również z końcówkami portu cyfrowego.

Gdy używasz przetwornika A/C, pamiętaj o następujących rzeczach:

Jako przykład rozważ zadanie weryfikowania sygnału wejściowego 1,5V ±5% w kanale 3 przetwornika A/C, gdy napięcie zasilania ma wartość 5,0V i AREF jest zewnętrznie połączone z VCC.

Dolna granica:

Górna granica:

Używane są zalecane wartości z wcześniejszej tabelki, o ile inne wartości nie zostaną podane w algorytmie z tabelki poniżej. Pokazane są jedynie wartości łańcucha skanowania dla  DAC i końcówek portu. Kolumna "Działania" opisuje, jaka instrukcja JTAG ma być użyta przed wypełnieniem rejestru skanowania ścieżki krawędziowej kolejnymi kolumnami. Weryfikacja powinna być wykonana na wysłanych i odczytanych danych skanowania z tego samego wiersza w tabeli.

Algorytm używania przetwornika A/C

Krok Działania ADCEN DAC MUXEN HOLD PRECH Dane PA3 Sterowanie PA3 Pullup_Enable PA3
1 SAMPLE_PRELOAD 1 0x200 0x08 1 1 0 0 0
2 EXTEST 1 0x200 0x08 0 1 0 0 0
3   1 0x200 0x08 1 1 0 0 0
4   1 0x123 0x08 1 1 0 0 0
5   1 0x123 0x08 1 0 0 0 0
6 Weryfikuj wyskanowany bit COMP, który ma być 0 1 0x200 0x08 1 1 0 0 0
7   1 0x200 0x08 0 1 0 0 0
8   1 0x200 0x08 1 1 0 0 0
9   1 0x143 0x08 1 1 0 0 0
10   1 0x143 0x08 1 0 0 0 0
11 Weryfikuj wyskanowany bit COMP, który ma być 1 1 0x200 0x08 1 1 0 0 0

Używając tego algorytmu ograniczenie czasowe na sygnał HOLD ogranicza częstotliwość zegarową TCK. Ponieważ algorytm utrzymuje HOLD w stanie wysokim przez pięć kroków, częstotliwość zegarowa TCK musi wynosić co najmniej pięć razy liczba bitów skanowania podzielona przez maksymalny czas podtrzymywania, thold,max.

Na początek:  podrozdziału   strony 

Kolejność skanowania ścieżki krawędziowej w ATmega64

Tabela poniżej pokazuje kolejność skanowania pomiędzy TDI a TDO, gdy zostaje wybrany łańcuch skanowania ścieżki krawędziowej jako ścieżka danych. Bit 0 oznacza najmłodszy bit LSB, który jest wsuwany jako pierwszy do łańcucha skanowania i wysuwany z niego jako pierwszy. Kolejność skanowania stara się zachować kolejność końcówek w obudowie mikrokontrolera. Stąd  bity portu A są skanowane w odwrotnej kolejności bitów stosunku do pozostałych portów. Wyjątkami od tych reguł są łańcuchy skanowania dla obwodów analogowych. które stanowią najbardziej znaczące bity łańcucha skanowania bez względu na fizyczne końcówki, z którymi są połączone.

Na przedstawionym poprzednio rysunku komórki skanowania ścieżki krawędziowej (który umieściliśmy powyżej dla przypomnienia) PXn.Data odpowiada FF0, PXn.Control odpowiada FF1 i PXn.Pullup_Enable odpowiada FF2. Bity 2, 3, 4 i 5 portu C nie występują w łańcuchu skanowania, ponieważ końcówki te tworzą końcówki TAP, gdy JTAG zostaje uaktywniony.

Numer bitu Nazwa sygnału Moduł
204 AC_IDLE Komparator
203 ACO
202 ACME
201 AINBG
200 COMP Przetwornik A/C
199 PRIVATE_SIGNAL1(1)
198 ACLK
197 ACTEN
196 PRIVATE_SIGNAL2(2)
195 ADCBGEN
194 ADCEN
193 AMPEN
192 DAC_9
191 DAC_8
190 DAC_7
189 DAC_6
188 DAC_5
187 DAC_4
186 DAC_3
185 DAC_2
184 DAC_1
183 DAC_0
182 EXTCH
181 G10
180 G20
179 GNDEN
178 HOLD
177 IREFEN
176 MUXEN_7
175 MUXEN_6
174 MUXEN_5
173 MUXEN_4
172 MUXEN_3
171 MUXEN_2
170 MUXEN_1
169 MUXEN_0
168 NEGSEL_2
167 NEGSEL_1
166 NEGSEL_0
165 PASSEN
164 PRECH
163 SCTEST
162 ST
161 VCCREN
160 PEN Włączenie programowania (tylko do podglądu)
159 PE0.Data Port E
158 PE0.Control
157 PE0.Pullup_Enable
156 PE1.Data
155 PE1.Control
154 PE1.Pullup_Enable
153 PE2.Data
152 PE2.Control
151 PE2.Pullup_Enable
150 PE3.Data
149 PE3.Control
148 PE3.Pullup_Enable
147 PE4.Data
146 PE4.Control
145 PE4.Pullup_Enable
144 PE5.Data
143 PE5.Control
142 PE5.Pullup_Enable
141 PE6.Data
140 PE6.Control
139 PE6.Pullup_Enable
138 PE7.Data
137 PE7.Control
136 PE7.Pullup_Enable
135 PB0.Data Port B
134 PB0.Control
133 PB0.Pullup_Enable
132 PB1.Data
131 PB1.Control
130 PB1.Pullup_Enable
129 PB2.Data
128 PB2.Control
127 PB2.Pullup_Enable
126 PB3.Data
125 PB3.Control
124 PB3.Pullup_Enable
123 PB4.Data
122 PB4.Control
121 PB4.Pullup_Enable
120 PB5.Data
119 PB5.Control
118 PB5.Pullup_Enable
117 PB6.Data
116 PB6.Control
115 PB6.Pullup_Enable
114 PB7.Data
113 PB7.Control
112 PB7.Pullup_Enable
111 PG3.Data Port G
110 PG3.Control
109 PG3.Pullup_Enable
108 PG4.Data
107 PG4.Control
106 PG4.Pullup_Enable
105 TOSC Oscylator timera 32 kHz
(tylko do podglądu)
104 TOSCON
103 RSTT Logika resetu
(tylko do podglądu)
102 RSTHV
101 EXTCLKEN Sygnały włączania głównego zegara/oscylatorów
100 OSCON
99 RCOSCEN
98 OSC32EN
97 EXTCLK (XTAL1) Wejście zegarowe i oscylatory dla głównego zegara
(tylko do podglądu)
96 OSCCK
95 RCCK
94 OSC32CK
93 TWIEN Interfejs 2-przewodowy
92 PD0.Data Port D
91 PD0.Control
90 PD0.Pullup_Enable
89 PD1.Data
88 PD1.Control
87 PD1.Pullup_Enable
86 PD2.Data
85 PD2.Control
84 PD2.Pullup_Enable
83 PD3.Data
82 PD3.Control
81 PD3.Pullup_Enable
80 PD4.Data
79 PD4.Control
78 PD4.Pullup_Enable
77 PD5.Data
76 PD5.Control
75 PD5.Pullup_Enable
74 PD6.Data
73 PD6.Control
72 PD6.Pullup_Enable
71 PD7.Data
70 PD7.Control
69 PD7.Pullup_Enable
68 PG0.Data Port G
67 PG0.Control
66 PG0.Pullup_Enable
65 PG1.Data
64 PG1.Control
63 PG1.Pullup_Enable
62 PC0.Data Port C
61 PC0.Control
60 PC0.Pullup_Enable
59 PC1.Data
58 PC1.Control
57 PC1.Pullup_Enable
56 PC2.Data
55 PC2.Control
54 PC2.Pullup_Enable
53 PC3.Data
52 PC3.Control
51 PC3.Pullup_Enable
50 PC4.Data
49 PC4.Control
48 PC4.Pullup_Enable
47 PC5.Data
46 PC5.Control
45 PC5.Pullup_Enable
44 PC6.Data
43 PC6.Control
42 PC6.Pullup_Enable
41 PC7.Data
40 PC7.Control
39 PC7.Pullup_Enable
38 PG2.Data Port G
37 PG2.Control
36 PG2.Pullup_Enable
35 PA7.Data Port A
34 PA7.Control
33 PA7.Pullup_Enable
32 PA6.Data
31 PA6.Control
30 PA6.Pullup_Enable
29 PA5.Data
28 PA5.Control
27 PA5.Pullup_Enable
26 PA4.Data
25 PA4.Control
24 PA4.Pullup_Enable
23 PA3.Data
22 PA3.Control
21 PA3.Pullup_Enable
20 PA2.Data
19 PA2.Control
18 PA2.Pullup_Enable
17 PA1.Data
16 PA1.Control
15 PA1.Pullup_Enable
14 PA0.Data
13 PA0.Control
12 PA0.Pullup_Enable
11 PF3.Data Port F
10 PF3.Control
9 PF3.Pullup_Enable
8 PF2.Data
7 PF2.Control
6 PF2.Pullup_Enable
5 PF1.Data
4 PF1.Control
3 PF1.Pullup_Enable
2 PF0.Data
1 PF0.Control
0 PF0.Pullup_Enable
Uwagi: 1. PRIVATE_SIGNAL1 powinien zawsze być wstawiany do łańcucha jako zero.
  2. PRIVATE_SIGNAL2 powinien zawsze być wstawiany do łańcucha jako zero.
Na początek:  podrozdziału   strony 

Pliki języka opisu skanowania ścieżki krawędziowej

Oprogramowanie do automatycznego generowania testów używa standardowego formatu dla plików opisujących układy posiadające zaimplementowane skanowanie ścieżki krawędziowej. W plikach tych stosowany jest język opisu skanowania ścieżki krawędziowej (ang. Boundary-scan Description Language, BSDL). W opisie jest zawarta kolejność oraz funkcja bitów w rejestrze danych skanowania ścieżki krawędziowej (ang. Boundary-scan Data Register). Dla mikrokontrolera ATmega64 dostępny jest odpowiedni plik BSDL.
Na początek:  podrozdziału   strony 

Rejestr w pamięci we/wy związany ze skanowaniem ścieżki krawędziowej

MCUCSR – MCU Control and Status Register – Rejestr sterowania i stanu mikrokontrolera

Bit 7 6 5 4 3 2 1 0  
0x34 (0x54) JTD JTRF WDRF BORF EXTRF PORF MCUCSR
Zapis/Odczyt Z/O O O Z/O Z/O Z/O Z/O Z/O  
Wartość początkowa 0 0 0 Zobacz na opis bitów  

Bit 7 – JTD: JTAG Interface Disable – Wyłączenie interfejsu JTAG

Gdy ten bit ma stan zero, to interfejs JTAG będzie włączony, jeśli zaprogramowano bit bezpiecznikowy JTAGEN. Jeśli bit ma stan 1, interfejs JTAG jest wyłączony. Aby zapobiec niezamierzonemu włączeniu lub wyłączeniu interfejsu JTAG, zmiana tego bitu wymaga użycia sekwencji czasowej. Aplikacja musi wpisać pożądaną wartość do tego bitu dwukrotnie w ciągu czterech taktów zegara.

Jeśli interfejs JTAG jest pozostawiony bez podłączenia do innego obwodu JTAG, to bit JTD należy ustawić na jeden. Powodem jest unikanie statycznego prądu na końcówce TDO w interfejsie JTAG.

Bit 4 – JTRF: JTAG Reset Flag – Znacznik resetu JTAG

Ten bit jest ustawiany, jeśli reset był spowodowany logiczną jedynką w rejestrze resetu JTAG wybranego przez instrukcję JTAG AVR_RESET. Bit ten jest resetowany przez reset przy włączeniu lub przez zapis w nim logicznego zera.

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.