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

©2022 mgr Jerzy Wałaszek
I LO w Tarnowie

obrazek

Mikrokontrolery

ATtiny15

Programowanie pamięci

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

Bity blokowania pamięci programu i danych

Mikrokontroler ATtiny15L udostępnia dwa bity blokujące, które można pozostawić w stanie niezaprogramowanym "1" lub można je zaprogramować w stan "0", aby otrzymać dodatkowe opcje wymienione w poniższej tabeli. Bity blokowania mogą zostać wyzerowane tylko rozkazem kasowania układu (ang. Chip Erase command).

Tryby zabezpieczeń bitów blokujących

Bity blokowania pamięci Typ ochrony
Tryb LB1 LB2
1 1 1 Brak ochrony pamięci
2 0 1 Zablokowanie programowania FLASH i EEPROM
3 0 0 Jak w trybie 2, lecz zablokowana weryfikacja
Na początek:  podrozdziału   strony 

Bity bezpiecznikowe

ATtiny15 posiada sześć bitów bezpiecznikowych (BODLEVEL, BODEN, SPIEN, RSTDSBL i CKSEL1:0). Wszystkie bity bezpiecznikowe można programować zarówno w trybie wysokonapięciowym jak i niskonapięciowym programowania szeregowego. Programowanie bitów bezpiecznikowych nie zmienia ich funkcji w trakcie programowania.

Stan bitów bezpiecznikowych nie jest zmieniany podczas kasowania układu (ang. Chip Erase).

Uwaga:   Jeśli zostanie zaprogramowany bit RSTDISBL, to programator powinien przyłożyć napięcie +12V do końcówki PB5, gdy ATtiny znajduje się w trybie resetu przy włączaniu (ang. Power-on Reset). Jeśli tego nie zrobi, to mikrokontroler może nie wejść w tryb programowania z powodu konfliktu bufora na końcówce PB0 i/lub PB5.
Na początek:  podrozdziału   strony 

Bajty sygnaturowe

Wszystkie mikrokontrolery firmy Atmel posiadają trzybajtowy kod sygnatury, który identyfikuje dany model. Te trzy bajty są umieszczone w oddzielnej przestrzeni adresowej i dla ATtiny15L posiadają następujące wartości:
  1. 0x000 : 0x1E (oznacza produkt firmy Atmel).
  2. 0x001 : 0x90 (oznacza 1 KB pamięci FLASH).
  3. 0x002 : 0x06 (Oznacza mikrokontroler ATtiny15L, jeśli bajt pod adresem 0x001 ma wartość 0x90).
Na początek:  podrozdziału   strony 

Bajt kalibracyjny

ATtiny15L posiada jednobajtową wartość kalibracyjną dla wewnętrznego oscylatora RC. Bajt ten jest umieszczony w górnym bajcie słowa pod adresem 0x000 w przestrzeni adresowej sygnatur. Aby skorzystać z tego bajtu, należy go odczytać z tego miejsca i wpisać do normalnej pamięci programu FLASH. Przy starcie oprogramowanie użytkownika musi odczytać tę komórkę FLASH i zapisać jej zawartość w rejestrze OSCCAL.
Na początek:  podrozdziału   strony 

Programowanie FLASH

Mikrokontroler  ATtiny15L oferuje 1KB reprogramowalnej pamięci FLASH dla programu oraz 64 B reprogramowalnej pamięci EEPROM dla danych. Układy ATtiny15L są sprzedawane z wyzerowanymi pamięciami FLASH i EEPROM (wszystkie ich bajty mają stan 0xFF), które są gotowe do zaprogramowania. Mikrokontroler ten obsługuje programowanie szeregowe w trybie wysoko- i niskonapięciowym. Napięcie +12V używane jest tylko do aktywacji trybu programowania wysokonapięciowego i nie jest przy tym pobierany prawie żaden prąd (mniej niż 100 μA). Niskonapięciowy tryb programowania szeregowego udostępnia wygodny sposób ładowania programu i danych do ATtiny15L w systemie użytkownika.

W obu trybach programowania pamięci programu i danych w ATtiny15L są programowane bajt po bajcie. Pamięć EEPROM posiada automatyczny cykl kasowania poprzedniej zawartości, który jest wykonywany podczas instrukcji zapisu w trybie szeregowego programowania niskonapięciowego. Podczas programowania napięcie zasilania musi być zgodne z poniższą tabelą:

Napięcie zasilające podczas programowania

Układ Niskonapięciowe
programowanie szeregowe
Wysokonapięciowe
programowanie szeregowe
ATtiny15L 2,7...5,5V 4,5...5,5V
Na początek:  podrozdziału   strony 

Wysokonapięciowe programowanie szeregowe

Ten podrozdział opisuje sposób programowania i weryfikacji pamięci programu FLASH, pamięci danych EEPROM, bitów blokujących oraz bitów bezpiecznikowych w ATtiny15L.

obrazek

Algorytm wysokonapięciowego programowania szeregowego

W celu zaprogramowania i weryfikacji ATtiny15L w trybie programowania wysokonapięciowego zaleca się następujący ciąg operacji (zobacz do tabeli z formatami instrukcji, którą znajdziesz poniżej):

  1. Sekwencja włączania:
    Przyłóż napięcie 4,5...5,5 pomiędzy końcówki  VCC i GND. Ustaw na końcówkach PB5 i PB0 stan logiczny “0” i odczekaj przynajmniej 30 μs.
    Ustaw na końcówce PB3 stan "0" i odczekaj przynajmniej 100 ns.
    Przyłóż napięcie 12V do PB5 i odczekaj przynajmniej 100 ns przed zmianą PB0. Odczekaj 8 μs przed wysłaniem jakichkolwiek instrukcj.
  2. Pamięć FLASH programowana jest po jednym bajcie naraz przez podanie najpierw adresu, a następnie dolnego i górnego bajtu danych. Instrukcja zapisu sama mierzy swój czas; odczekaj aż końcówka PB2 (RDY/BSY) przejdzie w stan wysoki.
  3. Pamięć EEPROM jest programowana naraz po jednym bajcie przez dostarczenie najpierw adresu, a następnie bajtu danych. Instrukcja zapisu sama odmierza sobie czas; odczekaj aż końcówka PB2 (RDY/BSY) przejdzie w stan wysoki.
  4. Każda komórka pamięci może zostać zweryfikowana przez użycie instrukcji odczytu Read, która zwraca zawartość spod wybranego adresu poprzez wyjście szeregowe PB2.
  5. Sekwencja wyłączania:
    Ustaw PB3 na “0”.
    Ustaw PB5 na “0”.
    Wyłącz napięcie zasilające VCC.

Przy zapisie lub odczycie danych szeregowych z ATtiny15L dane są taktowane od ósmego narastającego zbocza 16 cykli zewnętrznego zegara potrzebnych do generacji zegara wewnętrznego. Przeanalizuj podane niżej przebiegi czasowe.

Przebiegi przy wysokonapięciowym programowaniu szeregowym
obrazek

Instrukcja Format Instrukcji Uwagi na temat operacji
Instr.1 Instr.2 Instr.3 Instr.4
Chip Erase
Kasowanie układu
PB0
PB1
PB2
0_1000_0000_00
0_0100_1100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_0100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_1100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0100_1100_00
x_xxxx_xxxx_xx
Po instr.3 czekaj, aż PB2 przejdzie w stan wysoki, aby cykl kasowania się zakończył.
Write FLASH High and Low Address
Zapis górnego i dolnego bajtu adresu
PB0
PB1
PB2
0_0001_0000_00
0_0100_1100_00
x_xxxx_xxxx_xx
0_0000_000a_00
0_0001_1100_00
x_xxxx_xxxx_xx
0_bbbb_bbbb_00
0_0000_1100_00
x_xxxx_xxxx_xx
  Powtarzaj Instr.2 dla nowej 256-bajtowej strony. Powtarzaj Instr.3 dla każdego nowego adresu.
Write FLASH Low Byte
Zapis dolnego bajtu FLASH
PB0
PB1
PB2
0_ i i i i_i i i i _00
0_0010_1100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_0100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_1100_00
0_0000_0000_00
  Po Instr.3 czekaj, aż PB2 przejdzie w stan wysoki. Powtarzaj Instr.1,2 i 3 dla każdego nowego adresu.
Write FLASH High Byte
Zapis górnego bajtu FLASH
PB0
PB1
PB2
0_ i i i i_i i i i _00
0_0011_1100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0111_0100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0111_1100_00
0_0000_0000_00
  Po Instr.3 czekaj, aż PB2 przejdzie w stan wysoki. Powtarzaj Instr.1,2 i 3 dla każdego nowego adresu.
Read FLASH High and Low
Address

Odczyt górnego i dolnego bajtu adresu
PB0
PB1
PB2
0_0000_0010_00
0_0100_1100_00
x_xxxx_xxxx_xx
0_0000_000a_00
0_0001_1100_00
x_xxxx_xxxx_xx
0_bbbb_bbbb_00
0_0000_1100_00
x_xxxx_xxxx_xx
  Powtarzaj Instr.2 i 3 dla każdego nowego adresu.
Read FLASH Low Byte
Odczyt dolnego bajtu FLASH
PB0
PB1
PB2
0_0000_0000_00
0_0110_1000_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_1100_00
o_oooo_ooox_xx
    Powtarzaj Instr.1 i 2 dla każdego nowego adresu.
Read FLASH High Byte
Odczyt górnego bajtu FLASH
PB0
PB1
PB2
0_0000_0000_00
0_0111_1000_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_1100_00
o_oooo_ooox_xx
    Powtarzaj Instr.1 i 2 dla każdego nowego adresu.
Write EEPROM Low Address
Zapis dolnego bajtu adresu EEPROM
PB0
PB1
PB2
0_0001_0001_00
0_0100_1100_00
x_xxxx_xxxx_xx
0_00bb_bbbb_00
0_0000_1100_00
x_xxxx_xxxx_xx
    Powtarzaj Instr.2 dla każdego nowego adresu.
Write EEPROM Byte
Zapis bajtu EEPROM
PB0
PB1
PB2
0_ i i i i_i i i i _00
0_0010_1100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_0100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_1100_00
0_0000_0000_00
  Po Instr.3 czekaj, aż PB2 przejdzie w stan wysoki.
Read EEPROM Low Address
Odczyt dolnego bajtu adresu EEPROM
PB0
PB1
PB2
0_0000_0011_00
0_0100_1100_00
x_xxxx_xxxx_xx
0_00bb_bbbb_00
0_0000_1100_00
x_xxxx_xxxx_xx
    Powtarzaj Instr.2 dla każdego nowego adresu.
Read EEPROM Byte
Odczyt bajtu EEPROM
PB0
PB1
PB2
0_0000_0000_00
0_0110_1000_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_1100_00
o_oooo_ooox_xx
    Powtarzaj Instr.2 dla każdego nowego adresu.
Write Fuse Bits
Zapis bitów bezpiecznikowych
PB0
PB1
PB2
0_0100_0000_00
0_0100_1100_00
x_xxxx_xxxx_xx
0_8765_1143_00
0_0010_1100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_0100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_1100_00
0_0000_0000_00
Po Instr.4 czekaj, aż PB2 przejdzie w stan wysoki. Ustaw bity 8...3 na 0, aby je zaprogramować.
Write Lock Bits
Zapis bitów blokujących
PB0
PB1
PB2
0_0010_0000_00
0_0100_1100_00
x_xxxx_xxxx_xx
0_0000_0210_00
0_0010_1100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_0100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_1100_00
0_0000_0000_00
Po Instr.4 czekaj, aż PB2 przejdzie w stan wysoki. Ustaw bity 2...1 na 0, aby je zaprogramować.
Read Fuse Bits
Odczyt bitów bezpiecznikowych
PB0
PB1
PB2
0_0000_0100_00
0_0100_1100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_1000_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_1100_00
8_765x_x43x_xx
  Odczyt bitów 8...3 = 0 oznacza, że bity te są zaprogramowane.
Read Lock Bits
Odczyt bitów blokujących
PB0
PB1
PB2
0_0000_0100_00
0_0100_1100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0111_1000_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0111_1100_00
x_xxxx_21xx_xx
  Odczyt bitów 2...1 = 0 oznacza, że bity te są zaprogramowane.
Read Signature Bytes
Odczyt bajtów sygnaturowych
PB0
PB1
PB2
0_0000_1000_00
0_0100_1100_00
x_xxxx_xxxx_xx
0_0000_00bb_00
0_0000_1100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_1000_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0110_1100_00
o_oooo_ooox_xx
Powtarzaj Instr.2,3 i 4 dla każdego adresu bajtu sygnatury.
Read Calibration Byte
Odczyt bajtu kalibracyjnego
PB0
PB1
PB2
0_0000_1000_00
0_0100_1100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0000_1100_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0111_1000_00
x_xxxx_xxxx_xx
0_0000_0000_00
0_0111_1100_00
o_oooo_ooox_xx
 
Uwaga:   a = górne bity adresu
b = dolne bity adresu
i = dane wejściowe
o = dane wyjściowe
x = stan bez znaczenia
1 = Bit blokujący 1
2 = Bit blokujący 2
3 = Bit bezpiecznikowy CKSEL0
4 = Bit bezpiecznikowy CKSEL1
5 = Bit bezpiecznikowy RSTDSBL
6 = Bit bezpiecznikowy SPIEN
7 = Bit bezpiecznikowy BODEN
8 = Bit bezpiecznikowy BODLEVEL
Bity blokujące można skasować tylko rozkazem Chip Erase.

Parametry programowania wysokonapięciowego

Przebiegi w programowaniu wysokonapięciowym
obrazek

Parametry wysokonapięciowego programowania szeregowego, TA = 25°C ± 10%, VCC = 5,0V ± 10%

Symbol Parametr Min Typowo Max Jednostka
tSHSL Szerokość impulsu wysokiego SCI (PB3) 25,0     ns
tSLSH Szerokość impulsu niskiego SCI (PB3) 25,0     ns
tIVSH Ważność SDI (PB0) i SII (PB1) względem ósmego zbocza narastającego SCI (PB3) 50,0     ns
tSHIX Podtrzymanie SDI (PB0) i SII (PB1) po ósmym zbocza narastającym SCI (PB3) 50,0     ns
tSHOV Ważność SDO (PB2) po dziewiątym zboczu narastającym SCI (PB3)   10,0 16,0 32,0 ns
Na początek:  podrozdziału   strony 

Niskonapięciowe programowanie szeregowe

Obie pamięci FLASH i EEPROM można programować korzystając z szeregowej magistrali SPI, gdy końcówka RESET jest wysterowana stanem niskim GND.  Interfejs szeregowy składa się z końcówek SCK, MOSI (wejście) i MISO (wyjście).

obrazek

Po ustawieniu RESET w stan niski, należy wykonać instrukcję włączającą programowanie zanim operacje programowania/wymazywania będą mogły być wykonywane.

Przy programowaniu EEPROM w operacji programowania wbudowany jest cykl samokasowania i nie ma potrzeby wcześniejszego wykonywania instrukcji kasowania układu (ang. Chip Erase instruction). Operacja kasowania układu zamienia zawartość każdej komórki w obu pamięciach programu i EEPROM w 0xFF.

Mikrokontroler jest taktowany z wewnętrznego zegara przy minimalnej, nieskalibrowanej częstotliwości (0,8 ... 1,6 MHz). Minimalny czas trwania okresów niskich i wysokich  dla wejściowego zegara szeregowego (SCK) są zdefiniowane następująco:

Stan niski: > 2 cykle zegarowe mikrokontrolera
Stan wysoki: > 2 cykle zegarowe mikrokontrolera

Algorytm programowania szeregowego

Gdy dane szeregowe są zapisywane do ATtiny15L, ich odczyt przez mikroprocesor następuje na narastającym zboczu sygnału zegarowego SCK. Gdy dane są odczytywane z ATtiny15L, ich próbkowanie następuje przy opadającym zboczu sygnału SCK. Szczegóły znajdziesz poniżej.

Aby zaprogramować i zweryfikować mikrokontroler ATtiny15L w trybie programowania szeregowego, zaleca następujący ciąg operacji:

  1. Sekwencja włączenia zasilania (ang. power-up sequence):
    Przyłóż napięcie zasilające pomiędzy końcówki VCC i GND, jednocześnie wymuszając stan niski "0" na końcówkach RESET i SCK. W niektórych systemach programator nie może zagwarantować utrzymania końcówki SCK w stanie niskim. W takim przypadku na wejście RESET należy podać dodatni impuls po ustawieniu SCK na "0". Długość tego impulsu nie może być niższa od dwóch cykli zegarowych mikrokontrolera..
  2. Odczekaj co najmniej 20 ms i uaktywnij programowanie szeregowe przez wysłanie instrukcji włączającej je na końcówkę MOSI.
  3. Instrukcje programowania szeregowego nie będą działać, jeśli komunikacja nie zostanie zsynchronizowana. Gdy nastąpi synchronizacja, to drugi bajt (0x53) zostanie zwrócony w trakcie przesyłania trzeciego bajtu instrukcji włączającej programowanie. Bez względu na to, czy zwrócony bajt jest poprawny lub nie, wszystkie cztery bajty instrukcji muszą zostać przesłane. Jeśli nie zostanie zwrócone 0x53, wyślij na RESET dodatni impuls i ponów przesłanie instrukcji włączającej. Jeśli po 32 próbach bajt 0x53 nie zostanie zwrócony poprawnie, to do programatora nie podłączono działającego mikrokontrolera.
  4. Jeśli jest wykonywane kasowanie układu (ang. Chip Erase)(musi być wykonane, aby wymazać pamięć FLASH), odczekaj przez okres tWD_ERASE po tej instrukcji, wyślij na RESET dodatni impuls i zacznij jeszcze raz od kroku 2. Wartość czasu oczekiwania znajdziesz poniżej.
  5. Pamięci FLASH i EEPROM są programowane naraz po jednym bajcie przez wspólne podanie adresu i danych w odpowiedniej instrukcji zapisu. Komórka pamięci EEPROM jest najpierw automatycznie wymazywana przed zapisem w niej nowych danych. Użyj podglądu danych, aby wykryć, kiedy może zostać zapisany kolejny bajt we FLASH lub w EEPROM. Jeśli nie stosujesz podglądu danych, odczekaj odpowiednio przez okres tWD_PROG_FL lub tED_PROG_EE przed wysłaniem następnej instrukcji. W wykasowanym układzie nie ma potrzeby programowania danych o wartościach 0xFF.
  6. Dowolna pozycja w pamięci może zostać zweryfikowana przez instrukcję odczytu, która zwraca zawartość pod wybranym adresem poprzez szeregowe wyjście MISO.
  7. Na końcu sesji programowania końcówka RESET może zostać ustawiona w stan wysoki, aby przywrócić normalne działanie mikrokontrolera.
  8. Sekwencja wyłączenia zasilania (jeśli jest potrzebna):
    Ustaw RESET na "1".
    Wyłącz napięcie VCC.

Podgląd danych

Gdy bajt jest programowany w pamięci FLASH lub EEPROM, odczyt komórki pod tym adresem da wartość 0xFF. Gdy będzie można zapisać następny bajt, odczyt zwróci poprawną wartość. W ten sposób można określić, czy pamięci są gotowe na nowe dane. Nie zadziała to dla wartości 0xFF, zatem przy programowaniu tej wartości należy odczekać przynajmniej przez okres tWD_PROG_FL przed zapisem nowego bajtu w pamięci FLASH lub tWD_PROG_EE przed zapisem nowego bajtu w pamięci EEPROM. Ponieważ po skasowaniu układu wszystkie komórki obu pamięci zawierają wartość 0xFF, zatem programowanie komórek z tą zawartością można pominąć. Nie ma to zastosowania, jeśli EEPROM jest ponownie programowana bez kasowania układu. W takim przypadku nie można użyć podglądu danych i należy odczekać przez okres co najmniej tWD_PROG_EE przed zaprogramowaniem następnego bajtu.

Przebiegi przy programowaniu niskonapięciowym
obrazek

Zestaw instrukcji dla programowania niskonapięciowego

Instrukcja Format instrukcji Operacja
Bajt 1 Bajt 2 Bajt 3 Bajt 4
Programming Enable
Uaktywnienie programowania
1010 1100  0101 0011 xxxx xxxx xxxx xxxx Uaktywnienie programowania szeregowego, gdy RESET jest w stanie niskim.
Chip Erase
Kasowanie układu
1010 1100 100x xxxx xxxx xxxx xxxx xxxx Kasowanie zawartości FLASH i EEPROM.
Read Program Memory
Odczyt pamięci programu
0010 H000 xxxx xxxa bbbb bbbb oooo oooo Odczyt (górnego:H=1, lub dolnego:H=0) bajtu o z pamięci programu spod adresu a:b.
Write Program Memory
Zapis pamięci programu
0100 H000 xxxx xxxa bbbb bbbb i i i i  i i i i Zapis (górnego:H=1, lub dolnego:H=0) bajtu i w pamięci programu pod adres a:b.
Read EEPROM Memory
Odczyt pamięci EEPROM
1010 0000 xxxx xxxx xxbb bbbb oooo oooo Odczyt bajtu o z pamięci EEPROM spod adresu b.
Write EEPROM Memory
Zapis pamięci EEPROM
1100 0000 xxxx xxxx xxbb bbbb i i i i  i i i i Zapis bajtu i w pamięci EEPROM pod adres b.
Write Lock Bits
Zapis bitów blokujących
1010 1100 1111 1211 xxxx xxxx xxxx xxxx Ustaw bity 1,2 na 0, aby je zaprogramować.
Read Lock Bits
Odczyt bitów blokujących
0101 1000 xxxx xxxx xxxx xxxx xxxx x21x "0" oznacza bit zaprogramowany. "1" oznacza bit niezaprogramowany.
Read Signature Bytes
Odczyt bitów sygnaturowych
0011 0000 xxxx xxxx 0000 00bb oooo oooo Odczyt bajtu sygnaturowego o spod adresu b.
Write Fuse Bits
Zapis bitów bezpiecznikowych
1010 1100 101x xxxx xxxx xxxx 8765 1143 Ustaw bity 8...3 na 0, aby je zaprogramować.
Read Fuse Bits
Odczyt bitów bezpiecznikowych
0101 0000 xxxx xxxx xxxx xxxx 8765 xx43 "0" oznacza bit zaprogramowany. "1" oznacza bit niezaprogramowany.
Read Calibration Byte
Odczyt bajtu kalibracyjnego
0011 1000 xxxx xxxx 0000 0000 oooo oooo  
Uwaga:   a = górne bity adresu
b = dolne bity adresu
H = 0 – dolny bajt, 1 – górny bajt
o = dane wyjściowe
i = dane wejściowe
x = wartość obojętna
1 = Bit blokujący 1
2 = Bit blokujący 2
3 = Bit bezpiecznikowy CKSEL0
4 = Bit bezpiecznikowy CKSEL1
5 = Bit bezpiecznikowy RSTDISBL
6 = Bit bezpiecznikowy SPIEN
7 = Bit bezpiecznikowy BODEN
8 = Bit bezpiecznikowy BODLEVEL

Parametry niskonapięciowego programowania szeregowego

Czasy w programowaniu niskonapięciowym
obrazek

Parametry programowania niskonapięciowego, TA = od -40°C do 85°C, VCC = 2,7 ... 5,5V

Symbol Parametr Min Typowo Max Jednostka
1/tCLCL Częstotliwość  oscylatora RC (VCC = 2,7 ... 5,5V) 0,8 1,6   MHz
tCLCL Okres oscylatora RC (VCC = 2,7 ... 5,5V)   625,0 1250,0 ns
tSHSL Szerokość impulsu wysokiego SCK 2,0tCLCL     ns
tSLSH Szerokość impulsu niskiego SCK 2,0tCLCL     ns
tOVSH Ustalanie MOSI do zbocza narastającego SCK tCLCL     ns
tSHOX Utrzymanie MOSI po zboczu narastającym SCK 2,0tCLCL     ns
tSLIV Zbocze opadające SCK do ważności MISO 10,0 16,0 32,0 ns

Minimalny czas oczekiwania po instrukcji kasowania układu (ang. Chip Erase)

Symbol Minimalne opóźnienie
tWD_ERASE 8,2ms
Minimalny czas oczekiwania po instrukcji zapisu FLASH lub EEPROM
Symbol Minimalne opóźnienie
tWD_PROG_FL 4,1ms
tWD_PROG_EE 8,2ms
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
©2022 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.