Serwis Edukacyjny w I-LO w Tarnowie Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej Autor artykułu: mgr Jerzy Wałaszek |
©2024 mgr Jerzy Wałaszek |
https://www.microchip.com/about-us/legal-information/copyright-usage-guidelines
Mikrokontroler PIC10F200/202/204/206 wymaga zasilania na końcówce VDD (5,0V) oraz na końcówce VPP (12V).
Tryb programowania/weryfikacji (ang. Program/Verify mode) dla mikrokontrolera PIC10F200/202/204/206 pozwala na programowanie pamięci użytkownika w jego obszarze ID, tworzenia kopii rejestru OSCCAL oraz słowa konfiguracyjnego.
Schematy końcówek PIC10F200/202/204/206 | |
Nazwa końcówki | Podczas programowania | ||
Funkcja | Rodzaj | Opis | |
GP1 | ICSPCLK | we | Wejście zegara – wejście Schmitta |
GP0 | ICSPDAT | we/wy | We/wy danych – wejście Schmitta |
MCLR/VPP | Tryb prg/wer | P(1) | Wybór trybu programowania |
VDD | VDD | P | Zasilanie |
VSS | VSS | P | Masa |
Przestrzeń pamięci użytkownika rozciąga się od 0x000 do 0x0FF w mikrokontrolerach PIC10F200/204 oraz od 0x000 do 0x1FF w PIC10F202/206. W trybie Programowania/Weryfikacji przestrzeń pamięci programu rozciąga się od 0x000 do 0x1FF w PIC10F200/204 oraz od 0x000 do 0x3FF w PIC10F202/206. Pierwsza połowa, odpowiednio 0x000-0x0FF i 0x000-0x1FF, jest pamięcią programu użytkownika. Druga połowa, odpowiednio 0x100-0x1FF i 0x200-0x3FF, jest pamięcią konfiguracji. Licznik rozkazów PC jest zwiększany odpowiednio od 0x000 do 0x0FF i od 0x000 do 0x1FF, a następnie odpowiednio do 0x100 i 0x200, a nie do 0x000. W przestrzeni pamięci konfiguracji zaimplementowane są fizycznie komórki pod adresami 0x100-0x13F w PIC10F200/204 i 0x200-0x23F w PIC10F202/206. Jednakże dostępne są tylko adresy 0x100-0x103 i 0x200-0x203. Pozostałe są zarezerwowane.
Mapa pamięci programu PIC10F200/204
Mapa pamięci programu PIC10F202/206
Użytkownik może zapisać informacje identyfikacyjne (ang. identification information , ID) w czterech komórkach ID użytkownika, które posiadają odpowiednio adresy [0x100:0x103] lub [0x200:0x203]. Zaleca się, aby użytkownik używał tylko czterech najmniej znaczących bitów (ang. Least Significant bits, LSb) każdej z tych komórek, a 8 górnych bitów aby zaprogramował jako "1". Komórki ID użytkownika odczytywane są normalnie nawet po włączeniu ochrony kodu. Zatem informacje identyfikacyjne użytkownika powinny być zapisywane w postaci ‘1111 1111 bbbb’, gdzie ‘bbbb’ jest informacją ID.
Rejestr słowa konfiguracji (ang. Configuration Word register) jest fizycznie umieszczony pod adresem odpowiednio 0x1FF lub 0x3FF. Staje się on dostępny tylko po wejściu w tryb programu. Po wysłaniu polecenia zwiększenia adresu (ang. Increment Address command), słowo konfiguracji przestaje być dostępne bez względu na adres licznika programu.
Uwaga:
Zgodnie z konwencją rejestr słowa konfiguracji jest umieszczany pod logicznym adresem 0xFFF wewnątrz generowanego pliku hex dla mikrokontrolera PIC10F200/202/204/206. Adres ten może nie odzwierciedlać rzeczywistego adresu fizycznego samego mikrokontrolera. Odpowiedzialność pobrania rejestru słowa konfiguracji z logicznego adresu wewnątrz pliku hex i zamiany tego adresu na właściwy adres fizyczny spoczywa na oprogramowaniu programującym mikrokontroler.
Bity kalibracyjne oscylatora (ang. oscillator calibration bits) są zapamiętywane w wektorze Resetu jako argument instrukcji MOVLW. Interfejsy programowania muszą umożliwiać użytkownikom samodzielne programowanie bitów kalibracyjnych w celu dopasowania częstotliwości pracy INTOSC. Dla kompatybilności wstecznej musi również być utrzymana możliwość programowania bitów kalibracyjnych w trakcie programowania całej pamięci.
Zapamiętana wartość OSCCAL pod adresem 0x104/0x204 jest umieszczona w zarezerwowanej fabrycznie komórce pamięci. Wartość OSCCAL jest określana podczas testowania INTOSC. Komórka ta nie jest wymazywana przy standardowym kasowaniu układu mikrokontrolera, lecz zostaje skasowana, jeśli licznik rozkazów przesunie się do pamięci konfiguracji przed wywołaniem rozkazu kasowania układu. Jeśli wartość dla OSCCAL zostanie skasowana, to do użytkownika należy odtworzenie jej dla przyszłego zastosowania.
Wejście w tryb programowania/weryfikacji (ang. Program/Verify mode) następuje po przyłożeniu niskiego stanu do końcówek ICSPCLK i ICSPDAT, jednocześnie zmieniając napięcie na końcówce VDD z VIL na VDD, a następnie podnosząc napięcie końcówki VPP z VIL na VIHH. Po wejściu w ten tryb pamięć programu użytkownika oraz pamięć konfiguracji stają się dostępne i można je programować w sposób szeregowy. Wejścia zegara i danych są wejściami Schmitta w tym trybie.
Sekwencja wprowadzająca mikrokontroler w tryb programowania/weryfikacji powoduje przejście wszystkich pozostałych modułów w stan resetu (końcówka MCLR była początkowa pod napięciem VIL). Oznacza to, iż wszystkie układy we/wy mikrokontrolera są w stanie resetu (wejścia przechodzą w stan wysokiej impedancji).
Sekwencja programująca wprowadza słowo, programuje je, weryfikuje i na koniec zwiększa licznik rozkazów PC.
Tryb programowania/weryfikacji ustawi adres PC na 0x1FF w PIC10F200/204 i na 0x3FF w PIC10F202/206. Rozkaz zwiększenia adresu (ang. Increment Address command) zwiększy stan licznika rozkazów PC. Dostępne rozkazy pokazuje tabela 3.1:
Rys.3.1 Wejście w tryb
wysokonapięciowego programowania/weryfikacji
Końcówka ICSPCLK używana jest jako wejście zegarowe a końcówka ICSPDAT używana jest jako we/wy danych podczas operacji szeregowych. Aby wprowadzić rozkaz, końcówka zegarowa otrzymuje sześć cyklów zegara. Każdy bit rozkazu jest zatrzaskiwany przy opadającym zboczu sygnału zegarowego, jako pierwszy przesyłany jest najmłodszy bit rozkazu. Dane muszą być kompatybilne z czasami ustalania (TSET1) i podtrzymania (THLD1) względem zbocza opadającego sygnału zegara (zobacz do tabeli 6.1).
Rozkazy, które nie posiadają stowarzyszonych z nimi danych muszą odczekać minimum przez czas TDLY2 licząc od opadającego zbocza ostatniego taktu zegara rozkazu do narastającego zbocza zegara następnego rozkazu (zobacz do tabeli 6.1). Rozkazy posiadające stowarzyszone z nimi dane (Read i Load) również muszą odczekać przez czas TDLY2 pomiędzy zakończeniem przesyłu rozkazu a rozpoczęciem segmentu danych mierzony od opadającego zbocza ostatniego taktu zegara rozkazu do narastającego zbocza pierwszego taktu zegara danych. Segment danych, złożony z 16 taktów zegara, może się rozpocząć po tym opóźnieniu.
Uwaga: Po każdym rozkazie
End Programming (koniec programowania)
wymagane jest opóźnienie TDIS. |
Pierwszy i ostatni takt zegara podczas segmentu danych odnoszą się odpowiednio do bitów Start i Stop. Stan linii danych jest nieistotny podczas taktów Start i Stop. 14 taktów zegara pomiędzy taktami Start i Stop odnosi się do 14 bitów danych we/wy. Dane są przesyłane od najmłodszego bitu.
Podczas rozkazów Read (odczyt), w których dane są transmitowane od mikrokontrolera PIC10F200/202/204/206, końcówka ICSPDAT przechodzi ze stanu wysokiej impedancji wejścia w stan niskiej impedancji wyjścia przy narastającym zboczu drugiego taktu zegara danych (pierwsze zbocze zegara po takcie Start). Końcówka ICSPDAT wraca do stanu wysokiej impedancji przy narastającym zboczu szesnastego taktu zegara danych (pierwsze zbocze taktu Stop). Zobacz na rys.3.3. Dostępne rozkazy pokazuje tabela 3.1
Po otrzymaniu rozkazu Load Data mikrokontroler załaduje 14-bitowe słowo danych przy zastosowaniu 16 taktów zegarowych opisanych poprzednio. Ponieważ rdzeń mikrokontrolera jest 12-bitowy, to dwa najstarsze bity słowa danych są ignorowane. Wykres czasowy rozkazu Load Data pokazuje poniższy rysunek:
Rys. 3.2
Rozkaz Load Data (programowanie/weryfikacja)
Po otrzymaniu rozkazu Read Data mikrokontroler prześle bity danych z bieżąco adresowanej pamięci programu (użytkownika lub konfiguracyjnej), poczynając od drugiego narastającego zbocza na wejściu zegarowym. Końcówka danych przejdzie w tryb wyjścia (ang. Output mode) przy drugim narastającym zboczu zegara, a wróci do trybu wejścia (ang. Input mode – tryb wysokiej impedancji) po 16-tym zboczu narastającym. Ponieważ mikrokontroler posiada rdzeń 12-bitowy, to dwa najstarsze bity 14-bitowego słowa będą wyzerowane. Jeśli pamięć programu ma włączoną ochronę kodu (CP = 0), to fragmenty pamięci zostaną odczytane jako zera. Zobacz do podrozdziału 5 "Ochrona kodu", gdzie znajdziesz więcej szczegółów na ten temat.
Rys.3.3
Rozkaz Read Data
Gdy zostanie odebrany ten rozkaz, mikrokontroler zwiększa zawartość licznika programu (ang. Program Counter, PC). Przebiegi czasowe tego rozkazu pokazuje rys.3.4.
Rys.3.4
Rozkaz Increment Address
Licznika tego nie można zmniejszyć. Aby zresetować licznik, użytkownik musi albo wyjść i ponownie wejść w tryb programowania/weryfikacji lub zwiększyć PC spod adresu 0x1FF w mikrokontrolerze PIC10F200/204 lub 0x3FF w PIC10F202/206, co spowoduje ustawienie PC na adres 0x000.
Rozkaz Load należy przesłać przed każdym rozkazem Begin Programming. Programowanie rozpocznie się po odebraniu i zdekodowaniu tego rozkazu. Programowanie wymaga czasu TPROG i jest kończone przy pomocy rozkazu End Programming. Rozkaz programuje bieżącą komórkę pamięci bez wcześniejszego wymazywania jej zawartości.
Rys.3.5
Rozkaz Begin Programming
Rozkaz End Programming kończy proces programowania. Opóźnienie TDIS (zobacz do tab.6.1) jest wymagane przed następnym rozkazem, aby umożliwić rozładowanie wewnętrznego napięcia programowania (zobacz na rys.3.6).
Rys.3.6
Rozkaz End Programming
Po wykonaniu tego rozkazu (ang. Bulk Erase Program Memory command) cała pamięć programu oraz słowo konfiguracji zostają wymazane.
Uwagi:
Aby skasować całą pamięć programu oraz bity bezpiecznikowe konfiguracji, należy wykonać następującą sekwencję operacji (zobacz na rys.3.12).
Aby wykonać kasowanie całej pamięci programu, bitów bezpiecznikowych konfiguracji, ID użytkownika oraz wartości zapasowej OSCAL, należy wykonać następującą sekwencję operacji (zobacz na rys.3.13).
PC = | Przestrzeń pamięci programu | Przestrzeń pamięci konfiguracji | |||
Pamięć programu | Wektor Reset | Słowo konfiguracji | ID użytkownika | Wartość zapasowa OSCCAL | |
Słowo konfiguracji lub przestrzeń pamięci programu | E | E | E | U | U |
Pierwsza komórka ID użytkownika | E | E | E | E | E |
Legenda: E - skasowane, U - bez zmian
Rys.3.7 Rozkaz Bulk Erase
Program Memory
Rys.3.8 Odczyt i tymczasowe
zapamiętanie bitów kalibracji OSCCAL
Rys.3.9
Odtwarzanie/programowanie bitów kalibracji OSCCAL
Rys.3.10 Programowanie
pamięci programu mikrokontrolera PIC10F200/202/204/206
Rys.3.11 Programowanie
pamięci konfiguracji mikrokontrolera PIC10F200/202/204/206
Rys.3.12 Wymazanie pamięci
programu i słowa konfiguracji
Rys.3.13 Wymazywanie pamięci
programu, słowa konfiguracji i ID użytkownika
bity 11...5 | niezaimplementowane: Odczyt daje '1' |
bit 4 | MCLRE: Bit aktywacji resetu (ang. Master Clear
Enable bit) 1 = końcówka GP3/MCLR działa jako MCLR 0 = końcówka GP3/MCLR działa jako GP3, MCLR wewnętrznie połączona z VDD |
bit 3 | CP:
bit ochrony kodu (ang. Code Protection bit) 1 = ochrona wyłączona 0 = ochrona włączona |
bit 2 | WDTE: Bit uaktywniania licznika zegarowego
(ang. Watchdog Timer Enable bit) 1 = WDT włączony 0 = WDT wyłączony |
bity 1...0 | niezaimplementowane: Odczyt daje '1' |
Uwaga 1: | W mikrokontrolerze PIC10F200/202/204/206 jedyną dostępną prędkością oscylatora jest 4MHz INTOSC. Dlatego bity FOSC[1:0] są niezaimplementowane. |
Zaleca się wykonanie następującej procedury przed jakąkolwiek próbą programowania. Możliwe jest również wyłączenie ochrony kodu przy jej pomocy (CP = 1). Jednakże po jej wykonaniu wszystkie dane wewnątrz pamięci programu zostaną skasowane, aby nie naruszyć bezpieczeństwa kodu.
Aby wyłączyć ochronę kodu:
Uwaga:
Umożliwienie przenośności kodu wymaga, aby programator odczytał
słowo konfiguracji i komórki ID użytkownika z pliku HEX przy
odczycie tego pliku. Jeśli słowa konfiguracji nie ma w pliku HEX,
wtedy można wyświetlić proste ostrzeżenie. Podobnie przy zapisie
pliku HEX należy w nim zawrzeć słowo konfiguracji oraz
informację o ID użytkownika. Można udostępnić opcję o
niedołączaniu tej informacji. Firma Microchip Technology
Incorporated mocno wierzy, iż takie rozwiązanie jest korzystne
dla końcowego klienta. |
Suma kontrolna (ang. Checksum) obliczana jest przez odczytywanie zawartości komórek pamięci mikrokontrolera PIC10F200/202/204/206 i sumowanie kodów operacyjnych (ang. opcodes) zawartych w maksymalnym obszarze adresowalnym przez użytkownika (t.j. do 0x1FF dla PIC10F202/206). Przeniesienia poza 16 bitów są ignorowane. Na koniec słowo konfiguracji (odpowiednio wymaskowane) jest dodawane do tej sumy kontrolnej. Obliczanie sumy kontrolnej dla PIC10F200/202/204/206 pokazuje Tab.5.2.
Suma kontrolna jest obliczana przez sumowanie:
Najmniej znaczące 16 bitów tej sumy jest sumą kontrolną.
Poniższa tabela opisuje sposób obliczania sumy kontrolnej dla każdego mikrokontrolera.
Uwaga:
Obliczanie sumy kontrolnej różni się w zależności od ustawienia
ochrony kodu. Słowo konfiguracji oraz komórki ID użytkownika
zawsze mogą być odczytywane bez względu na ustawienie ochrony
kodu. |
Charakterystyki AC/DC |
Standardowe warunki pracy (o ile nie określono
inaczej) Temperatura robocza: 10°C ≤ TA ≤ 40°C Napięcie robocze: 4,5V ≤ VDD ≤ 5,5V |
|||||
Symbol | Charakterystyka | Min. | Typ. | Max. | Jednostki | Warunki |
Ogólnie | ||||||
VDDPROG | Poziom VDD przy operacjach programowania/weryfikacji, pamięć programu | TBD | — | 5,5 | V | |
VDDERA | Poziom VDD przy operacjach kasowania całościowego/zapisu, pamięć programu | 4,5 | — | 5,5 | V | |
IDDPROG | Poziom IDD przy operacjach odczytu/zapisu, pamięć programu | TBD | TBD | mA | ||
IDDERA | Poziom IDD przy operacjach kasowania całościowego/zapisu, pamięć programu | TBD | TBD | mA | ||
VIHH | Wysokie napięcie na końcówce MCLR przy wejściu w tryb programowania/weryfikacji | 12,5 | — | 13,5 | V | |
IIHH | Prąd końcówki MCLR podczas trybu programowania/weryfikacji | 0,5 | TBD | mA | ||
TVHHR | Czas narastania napięcia na końcówce MCLR w trybie programowania/weryfikacji (VSS na VIHH) | — | — | 1,0 | μs | |
TPPDP | Czas podtrzymania po wzroście VPP | 5 | — | — | μs | |
VIH1 | Wysoki poziom wejściowy (ICSPCLK, ICSPDAT) | 0,8 VDD | — | — | V | |
VIL1 | Niski poziom wejściowy (ICSPCLK, ICSPDAT) | — | — | 0,2 VDD | V | |
TSET0 | Czas ustalania ICSPCLK, ICSPDAT przed wzrostem napięcia na końcówce MCLR | 100 | — | — | ns | |
THLD0 | Czas podtrzymania ICSPCLK, ICSPDAT po wzroście napięcia na końcówce MCLR | 5 | — | — | μs | |
Szeregowe programowanie/weryfikacja | ||||||
TSET1 | Czas ustalania wejścia danych po zboczu opadającym zegara | 100 | — | — | ns | |
THLD1 | Czas podtrzymania wejścia danych po zboczu opadającym zegara | 100 | — | — | ns | |
TDLY1 | Czas opóźnienia pomiędzy rozkazem/danymi lub rozkazem/rozkazem | 1,0 | — | — | μs | |
TDLY2 | Czas opóźnienia pomiędzy zboczem opadającym a narastającym zegara następnego rozkazu lub danych | 1,0 | — | — | μs | |
TDLY3 | Czas zbocza narastającego zegara do ważności wyjścia danych (podczas odczytu danych) | — | 80 | ns | ||
TERA | Czas cyklu kasowania | — | 6 | 10(1) | ms | |
TPROG | Czas cyklu programowania (odmierzany zewnętrznie) | — | 1 | 2(1) | ms | |
TDIS | Czas rozładowania wewnętrznego napięcia programowania | 100 | — | — | μs | |
TRESET | Czas pomiędzy wyjściem z trybu programowania z VDD i VPP na poziomie masy, a ponownym wejściem w ten tryb przez zastosowanie VDD | — | 10 | — | ms |
Legenda: | TBD = To Be Determined, do określenia | |
Uwaga: | 1 | Minimalny czas zapewniający poprawne zakończenie danej funkcji przy wariacjach napięcia, temperatury i parametrów fabrycznych mikrokontrolera. |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2024 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:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.