Szybkie linki:
 
Galeria serwisu:

Widzisz łapkę - kliknij w obrazek, aby zobaczyć więcej.

Zmiana funkcji pinu UPDI.

Jak zmienić funkcję pinu UPDI mikrokontrolera?
Pin UPDI - jeden pin do kilku funkcji. W nowszych mikrokontrolerach AVR (np. serie ATtiny 0/1/2, ATmega 0 oraz AVR Dx) to jednopinowy interfejs służący do programowania i debugowania układu. Mikrokontroler UPDI do transmisji danych i sterowania używa tylko jednego wyprowadzenia (często współdzielonego z funkcją resetu lub GPIO). I tu jest pułapka UPDI, ryzyko zablokowania mikrokontrolera poprzez niewłaściwą konfigurację tzw. bezpieczników (fuses) lub błędy w projekcie sprzętowym, zamierzone lub przypadkowe. Opiszemy, Jak odblokować pin UPDI za pomocą High-Voltage (12V)? Jak bezpiecznie zmienić konfigurację bezpieczników (fuses)?
Kiedy i jak ustawiać fuse5 mikrokontrolera UPDI? (o ile dysponujesz programatorem HV(12V)).
Blokada interfejsu w mikrokontrolerach AVR z interfejsem UPDI (Unified Program and Debug Interface) polega na zaprogramowaniu specjalnego bitu w pamięci konfiguracyjnej (FUSE.LOCKBIT) lub zablokowanie dostępu do mikrokontrolera przez zmianę funkcji pinu UPDI na inną niż UPDI (np. RESET, GPIO).
PODSTAWOWE OPERACJE:
1. Jak odblokować pin UPDI za pomocą High-Voltage (12V)? - blokada dostępu do mikrokontrolera przez zmianę funkcji pinu na inną niż UPDI, blokada czasowa możliwa do usunięcia.
Zmiana funkcji pinu UPDI (zamierzona lub przypadkowa) powoduje blokadę dostępu do mikrokontrolera za pomocą pinu UPDI. Nie możesz już zajrzeć do jego wnętrza, odczytać lub wgrać cokolwiek po resecie mikrokontrolera. Prosty programator UPDI odmawia wykonania operacji i wyświetla błędy. Po ustawieniu funkcji pinu jako RESET lub GPIO - pin staje się zwykłym wejściem/wyjściem ogólnego przeznaczenia (jako pin cyfrowy w kodzie). Mikrokontroler działa, ale nie możesz w nim już nic zmienić. Komunikacja UPDI zostaje całkowicie zablokowana. Aby odblokować pin UPDI i przywrócić jego domyślną funkcję (UPDI), będziesz potrzebować programatora UPDI z impulsem 12V - czyli programatora UPDI HV posiadającego możliwość odblokowania dostępu do mikrokontrolera. Dysponując tylko prostym programatorem z przerobionego Arduino lub inny podobny, niestety nie będziesz mógł dalej programować swojego mikrokontrolera, aż nie przywrócisz pinu UPDI do domyślnego stanu. Jeżeli programator UPDI HV przywróci dostęp do mikrokontrolera, wtedy możesz znów używać prostego programatora i zajrzeć do wnętrza mikrokontrolera. Jeszcze jedna uwaga: Programator UPDI HV przywracając dostęp do mikrokontrolera, nie zmienia ustawień rejestru SYSCFG0 (Fuse5), należy je przestawić samodzielnie. Aby odzyskać dostęp do mikrokontrolera należy bity 3-2 ustawić na domyślne UPDI (00).
2. Zmiana funkcji pinu UPDI poprzez ustawienia rejestru SYSCFG0 (fuse5) mikrokontrolera - zmiana ustawień możliwa tylko w określonych warunkach.
Zmiana funkcji pinu UPDI w mikrokontrolerach AVR (np. serii tinyAVR) odbywa się poprzez konfigurację rejestru fuse SYSCFG0 (często oznaczanego jako Fuse5), w którym bit RSTPINCFG[1:0] decyduje o przeznaczeniu tego wyprowadzenia.Moż działać jako UPDI/RESET/GPIO. Zmiana ustawienia fuse5 na tryb GPIO lub /RESET natychmiast odcina możliwość ponownego zaprogramowania mikrokontrolera za pomocą prostego, standardowego programatora UPDI. Powoduje utrata standardowej łączności dostępu do mikrokontrolera. Podstawowa zasada - zmiany funkcji pinu zaczynają obowiązywać po restarcie mikrokonytolera. Zmieniając funkcję pinu UPDI poprzez odpowiedni wpis do rejestru Fuse5, możesz sprawdzić,co tam się znajduje i poprawić wpis jeżeli jest nieodpowiedni. Ale wszystkie operacje możesz wykonać tylko do momentu restartu mikrokontrolera. Restart mikrokontrolera czyta z rejestru ustawienia funkcji pinu UPDI i ustawia go zgodnie z wpisaną wartością. Jeżeli ustawusz pin UPDI na funkcję inną niż UPDI i zrestartujesz mikrokontroler, to tracisz bezpowrotnie dostęp do mikrokontrolera za pomocą prostego programatora. Może uratować sytuację tylko programator wysokonapięciowy UPDI HV z impulsem 12V
Jak poprawnie ustawiać Fuse5 z zamiarem zmiany funkcji pinu UPDI - wykonaj kolejno czynności:
1. Odczytaj Fuse5 - Dostajesz wartość całego rejestru SYSCFG0.
2. Odczytaj wartość dwóch bitów 3-2 RSTPINCFG[1:0]. Mogą mieć wartość: 00 - RESET, 01-UPDI, 10-GPIO. Ponieważ znajdują się na pozycji 3-2 bitów, więc wartość całego rejestru zmienia się odpowiednio do wartości.
Przykładowe wartości rejestru Fuse5:
C5 = 197 11000101, bity 3-2: 01 UPDI
C1 = 193 11000001, bity 3-2: 00 RESET
C9 = 201 11001001, bity 3-2: 10 GPIO
Zwracaj uwagę na bity 3-2. Jednak rejestr SYSCFG0 zawiera także inne bity składowe, ich zmiana wpływa bezpośrednio na jego wartość.
3. Wylicz potrzebną wartość rejestru po zmianach
4. Ustaw wartość rejestru. Jeśli jest poprawna, zrestartuj mikrokontroler.
Zrozumienie ustawień ułatwi kalkulator Windows ustawiony w trybie Programisty. Zobacz jak wygląda rejestr SYSCFG0 - Fuse5, pozwoli zrozumieć ustawienia.


Będziemy dodawać i pokazywać inne opisu związane z UPDI oraz opisywać ich użycie.



Licznik serwisu: 12611 , Aktualnie: 3 , Admin kontakt: admin@progel.pl