Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Rodzina AVR wykład 6. AVR 2/30 Pamięć EEPROM Tryby oszczędzania energii Programowanie Bity konfiguracyjne.

Podobne prezentacje


Prezentacja na temat: "Rodzina AVR wykład 6. AVR 2/30 Pamięć EEPROM Tryby oszczędzania energii Programowanie Bity konfiguracyjne."— Zapis prezentacji:

1 Rodzina AVR wykład 6

2 AVR 2/30 Pamięć EEPROM Tryby oszczędzania energii Programowanie Bity konfiguracyjne

3 AVR - pamięć EEPROM danych ATtiny2313 / ATmega8515 3/30 EEPROM Cechy pamięci: pojemność 128B / 512B; żywotność 10 5 cykli zapisu; czas zapisu 2,5 (Vcc=5V) 4 (Vcc=2,7V) ms / 8,5ms; operacja zapisu wstrzymuje wykonywanie rozkazów na 2 takty zegara systemowego, a odczytu - na 4 takty; dostęp do pamięci realizowany za pośrednictwem 3 / 4 rejestrów; możliwość wyboru trybu zapisu do EEPROM.

4 AVR - pamięć EEPROM danych ATtiny2313 / ATmega8515 4/30 Rejestry pośredniczące w dostępie do EEPROM: adres dostępu do EEPROM 6..0 EEAR 1Eh 3Eh Rejestr, do którego należy wpisać adres komórki EEPROM, która ma być odczytana lub zaprogramowana: rejestr buforowy danych EEPROM EEDR 1Dh 3Dh Rejestr buforujący odczyt i zapis komórek EEPROM: EEAR 8 EEARH1Fh 3Fh adres dostępu do EEPROM EEAR 7..0 EEARL1Eh 3Eh

5 AVR - pamięć EEPROM danych ATtiny2313 / ATmega8515 5/30 Rejestr sterujący odczytem i zapisem komórek EEPROM w ATmega8515. EEMWE - bit zabezpieczenia przed przypadkowym zapisem do EEPROM, gdy =0 zapis jest zablokowany, po zmianie na 1 w ciągu 4 taktów zegara systemowego musi nastąpić ustawienie EEWE=1 by zainicjować zapis - po upływie tego czasu EEMWE jest automatycznie zerowany; EEWE - bit inicjujący zapis do EEPROM danej uprzednio wpisanej do rejestru EEDR pod adres ustawiony w rejestrze EEAR, po zakończeniu zapisu bit ten jest automatycznie kasowany, przed zainicjowaniem zapisu program musi sprawdzać warunek EEWE=0 i czekać gdy nie jest on spełniony (trwa jeszcze poprzedni zapis); EERE - bit inicjujący odczyt z EEPROM danej do rejestru EEDR spod adresu uprzednio ustawionego w rejestrze EEAR, po zakończeniu odczytu bit ten jest automatycznie kasowany, a rejestrze EEDR jest dostępna dana. EERIEEEMWEEEWEEERE EECR1Ch 3Ch

6 AVR - pamięć EEPROM danych ATtiny2313 / ATmega8515 6/30 Rejestr sterujący odczytem i zapisem komórek EEPROM w ATtiny2313. EEPE - działa jak EEWE w ATmega8515; EEMPE - działa jak EEMWE w ATmega8515; EERIE - ustawiony zezwala na zgłaszanie przerwania sygnalizującego gotowość pamięci do programowania; EEPM1, EEPM0 - wybór trybu programowania: 00 - kasowanie i zapis w jednej operacji (3,4ms) 01 - tylko kasowanie (1,8ms) 10 - tylko zapis (1,8ms) 11 - zarezerwowane EEPM1EEPM0EERIEEEMPEEEPEEERE EECR1Ch 3Ch

7 AVR - pamięć EEPROM danych ATtiny2313 / ATmega8515 7/30 Zainicjowanie odczytu wstrzymuje mikrokontroler na 4 cykle maszynowe - zawartość czytanej komórki jest wtedy od razu dostępna w EEDR. Zainicjowanie zapisu (ustawienie EEPE) powoduje wstrzymanie pracy mikrokontrolera na 2 cykle maszynowe. Wybranie trybu wyłącznie kasowania nie wymaga wpisu do rejestru EEDR. Jeżeli w trakcie zapisu do EEPROM pojawi się RESET to zapis danej trafi pod adres 00h - dlatego zaleca się nie wykorzystywać komórki o adresie 00h

8 AVR - pamięć EEPROM danych ATtiny2313 / ATmega8515 8/30 przykład zapisu do EEPROMu: ;parametry:r17=adres ;r16=dana do zapisu EEwr:sbicEECR,EEPE;oczekiwanie na koniec rjmpEEwr;poprzedniej operacji outEEAR,r17;przygotowanie adresu out EEDR,r16;przygotowanie danej cli;zablokowanie przerwan sbi EECR,EEMPE;ustawienie EEMPE sbiEECR,EEPE;start zapisu sei;odblokowanie przerwan ret

9 AVR - pamięć EEPROM danych ATtiny2313 / ATmega8515 9/30 przykład odczytu z EEPROMu: ;parametry:r17=adres ;wyniki:r16=odczytana dana EErd:sbicEECR,EEPE;oczekiwanie na koniec rjmpEErd;poprzedniej operacji outEEAR,r17;przygotowanie adresu sbiEECR,EERE;start odczytu inr16,EEDR;odczyt danej do r16 ret

10 AVR - oszczędzanie energii ATtiny2313 / ATmega8515 10/30 W ATtiny2313 dostępne są 3 tryby pracy z obniżonym poborem prądu: tryb czuwania (ang. idle) SM1,SM0=00 - procesor przestaje wykonywać rozkazy, ale system przerwań, watchdog oraz timery/liczniki pozostają aktywne - pojawienie się niezablokowanego przerwania wewnętrznego lub zewnętrznego wyprowadza procesor z trybu czuwania; po zakończeniu procedury obsługi tego przerwania wykonywany jest rozkaz następny po ostatnio wykonanym rozkazie SLEEP; tryb wyłączenia (ang. power down) SM1,SM0=x1 - procesor przestaje wykonywać rozkazy i wyłączony zostaje zewnętrzny oscylator, watchdog może pozostać aktywny, wyjście z trybu wyłączenia następuje pod wpływem: resetu od watchdoga lub resetu zewnętrznego lub aktywnego niskim poziomem przerwania zewnętrznego - w reakcji na te zdarzenia uruchomiona zostaje odpowiednia procedura obsługi.

11 AVR - oszczędzanie energii ATtiny2313 / ATmega8515 11/30 tryb uśpienia (ang. standby) SM1,SM0=10 - tryb bardzo podobny do wyłączenia: nie można korzystać z wewnętrznego oscylatora RC; działa generator taktu z zewnętrznym oscylatorem; wyjście z tego trybu następuje pod wpływem: resetu od watchdoga lub resetu zewnętrznego lub aktywnego niskim poziomem przerwania zewnętrznego (INT0 i INT1) lub przerwaniem od zmiany stanu wejść (PCINT) lub odebranie bitu startu przez USI w ATtiny2313 lub przerwaniem INT2

12 AVR - oszczędzanie energii ATtiny2313 / ATmega8515 12/30 Sterowanie pracą z obniżonym poborem prądu: W ATtiny2313: SM1,SM0 - wybierają jeden z dostępnych trybów: =00 - tryb czuwania =x1 - tryb uśpienia =10 - tryb wyłączenia W ATmega8515: SM2,SM1,SM0 - wybierają jeden z dostępnych trybów: =000 - tryb czuwania =010 - tryb uśpienia =110 - tryb wyłączenia - pozostałe kombinacje są zastrzeżone PUDSM1SESM0ISC11ISC10ISC01ISC00 MCUCR35h 55h SRESRW10SESM1ISC11ISC10ISC01ISC00 MCUCR35h 55h SM2WRDFBORFEXTRFPORF MCUCSR34h 54h SM0SRL2SRL1SRL0SRW01SRW00SRW11ISC2 EMCUCR36h 56h

13 AVR - oszczędzanie energii ATtiny2313 / ATmega8515 13/30 Inne możliwości oszczędzania energii: wyłączanie nieużywanego komparatora analogowego; wyłączenie nieużywanego układu brown-out detector; wyłączenie wewnętrznego źródła V REF gdy nie jest używane; wyłączenie nieużywanego watchdoga; właściwe wysterowanie zewnętrznych pinów portów. SE - ustawiony umożliwia użycie rozkazu SLEEP Wejście w tryb pracy z obniżonym poborem mocy następuje poprzez wykonanie rozkazu SLEEP, ale warunkiem skuteczności tego rozkazu jest wcześniejsze ustawienie bitu SE w rejestrze MCUCR.

14 AVR - programowanie mikrokontrolera ATtiny2313 / ATmega8515 14/30 W AVR dostępne są przynajmniej 2 tryby programowania pamięci FLASH programu i EEPROM danych: programowanie równoległe, w programatorze (szybszy proces); programowanie szeregowe, w programatorze albo w układzie (ang. ISP), nieco wolniej, ale bez demontażu C z systemu. W trybie równoległym możliwe jest przeprogramowanie bitu: SPIEN - jego wyzerowanie zezwala na późniejsze użycie szeregowego trybu programowania.

15 AVR - programowanie mikrokontrolera ATtiny2313 / ATmega8515 15/30 Bity konfiguracyjne ATtiny2313: - młodszy bajt CKDIV8CKOUTSUT1SUT0CKSEL3CKSEL2CKSEL1CKSEL0 CKDIV8 - włącza podzielnik generatora taktu przez 8 CKOUT - włącza wyjście na zewnątrz sygnału generatora taktu SUT1,SUT0 - określają szybkość restartu mikrokontrolera CKSEL3..CKSEL0 - wskazują źródło taktowania mikrokontrolera - starszy bajt: DWENEESAVESPIENWDTON BODLEVEL2BODLEVEL1BODLEVEL0 RSTDISBL DWEN - włącza interfejs DebugWire; SPIEN - włącza interfejs programujący SPI EESAVE - włącza ochronę EEPROMu podczas kasowania FLASH WDTON - włącza na stałe watchdog BODLEVEL2..BODLEVEL0 - określają próg zadziałania obwodu brown-out detector RSTDISBL - wyłącza wejście zewn. RESETU - dodatkowy bajt: SELFPRGEN SELFPRGEN - włącza mechanizm samoprogramowania FLASH

16 AVR - programowanie mikrokontrolera ATtiny2313 / ATmega8515 16/30 Bity konfiguracyjne ATmega8515: - młodszy bajt BODLEVEL BODENSUT1SUT0CKSEL3CKSEL2CKSEL1CKSEL0 BODLEVEL - wybiera jeden z dwóch poziomów zadziałania dla brown-out detector BODEN - włącza obwód brown-out detector SUT1,SUT0 - określają szybkość restartu mikrokontrolera CKSEL3..CKSEL0 - wskazują źródło taktowania mikrokontrolera - starszy bajt: S8515WDTONSPIENCKOPTEESAVEBOOTSZ1BOOTSZ0BOOTRST S8515 - włącza kompatybilność z AT90S8515; WDTON - włącza na stałe watchdog SPIEN - włącza interfejs programujący SPI CKOPT - włącza pracę oscylatora taktu w pełnym zakresie napięć (powinien być zaprogramowany dla f OSC > 8MHz) EESAVE - włącza ochronę EEPROMu podczas kasowania FLASH BOOTSZ1,BOOTSZ0 - określają rozmiar boot-sektora na końcu pamięci flash BOOTRST - włącza restart od początkowego adresu w boot-sektorze.

17 AVR - programowanie mikrokontrolera ATtiny2313 / ATmega8515 17/30 Bity zabezpieczające: LB2,LB1 = 1 1 - brak zabezpieczenia FLASH, EEPROM i bitów konfig.; 1 0 - programowanie FLASH i EEPROM zabronione, ale możliwa ich weryfikacja/odczyt, bity konfiguracyjne zabezpieczone; 0 0 - programowanie oraz odczyt/weryfikacja FLASH i EEPROM zabronione, bity konfiguracyjne zabezpieczone; BLB02,BLB01 - określają poziom zabezpieczenia sektora aplikacji w pamięci FLASH BLB12,BLB11 - określają poziom zabezpieczenia boot-sektora w pamięci FLASH: =11 - rozkazy SPM i LPM bez ograniczeń =10 - wpis do danego sektora rozkazem SPM zabroniony =01 - odczyt z danego sektora rozkazem LPM z drugiego sektora zabroniony =00 - połączenie trybów 10 i 01 w trybach 01 i 00 niemożliwe jest między-sektorowe korzystanie z przerwań.

18 AVR - programowanie mikrokontrolera ATtiny2313 / ATmega8515 18/30 W ATtiny2313 / ATmega8515 dostępne jest ponadto: tzw. samoprogramowanie pamięci FLASH wykorzystuje się rozkaz SPM, parę Z rejestrów do adresowania komórek pamięci oraz rejestr sterujący. Pamięć FLASH jest podzielona na strony (1kW = 64 strony x 16W).

19 AVR - programowanie mikrokontrolera ATtiny2313 / ATmega8515 19/30 Organizacja stron pamięci FLASH na potrzeby samoprogramowania: PAGEEND=0Fh PCWORD=PC 3..0 PCPAGE=PC 9..4 PCMSB=9 64 strony PAGEEND=1Fh PCWORD=PC 4..0 PCPAGE=PC 11..5 PCMSB=11 128 stron na podstawie danych katalogowych Atmela

20 AVR - programowanie mikrokontrolera ATtiny2313 / ATmega8515 20/30 Rejestr sterujący: CTPB - ustawiony jednocześnie z SELFPRGEN umożliwia wyzerowanie tymczasowego bufora programowanej strony pamięci, wyzwalane rozkazem SPM, kasowany automatycznie po zakończeniu zerowania tej strony; RFLB - ustawiony jednocześnie z SELFPRGEN umożliwia programowi odczyt bajtów konfiguracyjnych; PGWRT - ustawiony jednocześnie z SELFPRGEN umożliwia zainicjowanie rozkazem SPM procesu programowania strony pamięci FLASH informacją umieszczoną w buforze tymczasowym, kasowany automatycznie po zakończeniu wpisu do FLASH; CTPBRFLBPGWRTPGERS SELFPRGEN SPMCSR37h 57h

21 AVR - programowanie mikrokontrolera ATtiny2313 / ATmega8515 21/30 Rejestr sterujący: PGERS - ustawiony jednocześnie z SELFPRGEN umożliwia zainicjowanie rozkazem SPM procesu kasowania strony pamięci FLASH wskazanej przez starsze bity pary Z, kasowany automatycznie po zakończeniu kasowania strony FLASH; SELFPRGEN - zezwala na użycie rozkazu SPM w ciągu 4 (!) taktów zegara, ustawiony wraz z CTPB, RFLB, PGWRT, PGERS umożliwia uruchomienie rozkazem SPM odpowiedniej operacji, ustawiony jako jedyny w rej. SPMCSR powoduje zapisanie do tymczasowego bufora pamięci stanu rejestrów R1R0 pod adresem wskazanym przez parę Z, kasowany automatycznie po zakończeniu operacji zainicjowanej rozkazem SPM, pozostaje ustawiony podczas operacji kasowania lub programowania strony pamięci. CTPBRFLBPGWRTPGERS SELFPRGEN SPMCSR37h 57h

22 AVR - programowanie mikrokontrolera ATtiny2313 / ATmega8515 22/30 Rejestr sterujący ATmega8515: SPMIE RWWSBRWWSREBLBSET PGWRTPGERSSPMEN SPMCR37h 57h SPMIE - włączenie przerwania od zakończenia realizacji operacji zapoczątkowanej wykonaniem rozkazu SPM RWWSB - ustawiony sygnalizuje zajętość układu samoprogramowania RWWSRE - jego ustawienie razem z SPMEN umożliwia wyzwolenie rozkazem SPM odczytu strony pamięci; BLBSET - ustawiony jednocześnie z SPMEN umożliwia programowi odczyt bajtów konfiguracyjnych;

23 AVR - programowanie mikrokontrolera ATtiny2313 / ATmega8515 23/30 Rejestr sterujący ATmega8515: SPMIE RWWSBRWWSREBLBSET PGWRTPGERSSPMEN SPMCR37h 57h PGWRT - ustawiony jednocześnie z SPMEN umożliwia zainicjowanie rozkazem SPM procesu programowania strony pamięci FLASH informacją umieszczoną w buforze tymczasowym, kasowany automatycznie po zakończeniu wpisu do FLASH; PGERS - ustawiony jednocześnie z SPMEN umożliwia zainicjowanie rozkazem SPM procesu kasowania strony pamięci FLASH wskazanej przez starsze bity pary Z, kasowany automatycznie po zakończeniu kasowania strony FLASH;

24 AVR - programowanie mikrokontrolera ATtiny2313 / ATmega8515 24/30 Rejestr sterujący ATmega8515: SPMEN - zezwala na użycie rozkazu SPM w ciągu 4 (!) taktów zegara, ustawiony wraz z RWWSRE, BLBSET, PGWRT, PGERS umożliwia uruchomienie rozkazem SPM odpowiedniej operacji, ustawiony jako jedyny w rej. SPMCR powoduje zapisanie do tymczasowego bufora pamięci stanu rejestrów R1R0 pod adresem wskazanym przez parę Z, kasowany automatycznie po zakończeniu operacji zainicjowanej rozkazem SPM, pozostaje ustawiony podczas operacji kasowania lub programowania strony pamięci. SPMIE RWWSBRWWSREBLBSET PGWRTPGERSSPMEN SPMCR37h 57h

25 Dostępne są dwie procedury samoprogramowania FLASH: I wariant 1. przygotowanie nowej zawartości tymczasowego bufora strony pamięci; R1R0:=słowo_rozkazowe i Z:=adres_w_buforzeN razy SPMCSR:=01h wykonanie SPM 2. uruchomienie procesu kasowania wybranej strony pamięci FLASH; SPMCSR:=03h wykonanie SPM 3. uruchomienie procesu zapisu skasowanej strony pamięci FLASH zawartością tymczasowego bufora SPMCSR:=05h wykonanie SPM AVR - programowanie mikrokontrolera ATtiny2313 / ATmega8515 25/30

26 II wariant 1. uruchomienie procesu kasowania wybranej strony pamięci FLASH; SPMCSR:=03h wykonanie SPM 2. przygotowanie nowej zawartości tymczasowego bufora strony pamięci; R1R0:=słowo_rozkazowe i Z:=adres_w_buforzeN razy SPMCSR:=01h wykonanie SPM 3. uruchomienie procesu zapisu skasowanej strony pamięci FLASH zawartością tymczasowego bufora SPMCSR:=05h wykonanie SPM AVR - programowanie mikrokontrolera ATtiny2313 / ATmega8515 26/30

27 AVR - bity konfiguracyjne 27/30 Bity konfiguracyjne zebrane są w 4 bajtach: zabezpieczenie dostępu do pamięci: LB2,LB1 = 1 1 - brak zabezpieczenia; 1 0 - programowanie zabronione, możliwa weryfikacja/odczyt; 0 0 - programowanie oraz odczyt/weryfikacja zabronione. LB2LB1 1. bajt zabezpieczeń:

28 AVR - bity konfiguracyjne 28/30 zezwolenie na samoprogramowanie: SELFPRGEN = 1 - samoprogramowanie zabronione; 0 - samoprogramowanie dozwolone. SELFPRGEN 2. bajt dodatkowy:

29 AVR - bity konfiguracyjne 29/30 DWEN - włączenie interfejsu debugWIRE; EESAVE - ochrona EEPROMu podczas kasowania pamięci FLASH; SPIEN - włączenie szeregowego interfejsu programującego ISP; WDTON - włączenie watchdoga na stałe; BODLEVEL2..0 - wybór poziomu napięcia resetu brown-out; RSTDISBL - wyłączenie zewnętrznego resetu DWENEESAVESPIENWDTONBODLEVEL2BODLEVEL1BODLEVEL0RSTDISBL 3. starszy bajt:

30 AVR - bity konfiguracyjne 30/30 CKDIV8 - włączenie podzielnika generatora taktu; CKOUT - wyjście generatora taktu na końcówkę CKOUT; SUT1, SUT0 - wybór czasu resetu; CKSEL3..0 - wybór źródła przebiegu taktującego; CKDIV8CKOUTSUT1SUT0CKSEL3CKSEL2CKSEL1CKSEL0 4. młodszy bajt:


Pobierz ppt "Rodzina AVR wykład 6. AVR 2/30 Pamięć EEPROM Tryby oszczędzania energii Programowanie Bity konfiguracyjne."

Podobne prezentacje


Reklamy Google