Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
Rodzina AVR wykład 6
2
AVR /30 Pamięć EEPROM Tryby oszczędzania energii Programowanie Bity konfiguracyjne
3
AVR - pamięć EEPROM danych ATtiny2313 / ATmega8515 3/30
Cechy pamięci: pojemność 128B / 512B; żywotność 105 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: Rejestr, do którego należy wpisać adres komórki EEPROM, która ma być odczytana lub zaprogramowana: adres dostępu do EEPROM6..0 EEAR 1Eh 3Eh EEAR8 EEARH 1Fh 3Fh adres dostępu do EEPROM EEAR7..0 EEARL 1Eh 3Eh Rejestr buforujący odczyt i zapis komórek EEPROM: rejestr buforowy danych EEPROM EEDR 1Dh 3Dh
5
AVR - pamięć EEPROM danych ATtiny2313 / ATmega8515 5/30
Rejestr sterujący odczytem i zapisem komórek EEPROM w ATmega8515. EERIE EEMWE EEWE EERE EECR 1Ch 3Ch 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= 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.
6
AVR - pamięć EEPROM danych ATtiny2313 / ATmega8515 6/30
Rejestr sterujący odczytem i zapisem komórek EEPROM w ATtiny2313. EEPM1 EEPM0 EERIE EEMPE EEPE EERE EECR 1Ch 3Ch 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
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: sbic EECR,EEPE ;oczekiwanie na koniec rjmp EEwr ;poprzedniej operacji out EEAR,r17 ;przygotowanie adresu out EEDR,r16 ;przygotowanie danej cli ;zablokowanie przerwan sbi EECR,EEMPE ;ustawienie EEMPE sbi EECR,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: sbic EECR,EEPE ;oczekiwanie na koniec rjmp EErd ;poprzedniej operacji out EEAR,r17 ;przygotowanie adresu sbi EECR,EERE ;start odczytu in r16,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: SM0 SRL2 SRL1 SRL0 SRW01 SRW00 SRW11 ISC2 EMCUCR 36h 56h MCUCR 55h PUD SM1 SE SM0 ISC11 ISC10 ISC01 ISC00 35h MCUCR 55h SRE SRW10 SE SM1 ISC11 ISC10 ISC01 ISC00 35h SM2 WRDF BORF EXTRF PORF MCUCSR 34h 54h 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
13
AVR - oszczędzanie energii ATtiny2313 / ATmega8515 13/30
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. 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 VREF gdy nie jest używane; wyłączenie nieużywanego watchdoga; właściwe wysterowanie zewnętrznych pinów portów.
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 CKDIV8 CKOUT SUT1 SUT0 CKSEL3 CKSEL2 CKSEL1 CKSEL0 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: DWEN EESAVE SPIEN WDTON BODLEVEL2 BODLEVEL1 BODLEVEL0 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 BODEN SUT1 SUT0 CKSEL3 CKSEL2 CKSEL1 CKSEL0 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: S8515 WDTON SPIEN CKOPT EESAVE BOOTSZ1 BOOTSZ0 BOOTRST S 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 fOSC > 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 = brak zabezpieczenia FLASH, EEPROM i bitów konfig.; programowanie FLASH i EEPROM zabronione, ale możliwa ich weryfikacja/odczyt, bity konfiguracyjne zabezpieczone; 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=PC3..0 PCPAGE=PC PCMSB= strony PAGEEND=1Fh PCWORD=PC4..0 PCPAGE=PC PCMSB= stron na podstawie danych katalogowych Atmela
20
AVR - programowanie mikrokontrolera ATtiny2313 / ATmega8515 20/30
Rejestr sterujący: CTPB RFLB PGWRT PGERS SELFPRGEN SPMCSR 37h 57h 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;
21
AVR - programowanie mikrokontrolera ATtiny2313 / ATmega8515 21/30
Rejestr sterujący: CTPB RFLB PGWRT PGERS SELFPRGEN SPMCSR 37h 57h 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 R1R 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.
22
AVR - programowanie mikrokontrolera ATtiny2313 / ATmega8515 22/30
Rejestr sterujący ATmega8515: SPMIE RWWSB RWWSRE BLBSET PGWRT PGERS SPMEN SPMCR 37h 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 RWWSB RWWSRE BLBSET PGWRT PGERS SPMEN SPMCR 37h 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: SPMIE RWWSB RWWSRE BLBSET PGWRT PGERS SPMEN SPMCR 37h 57h 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.
25
AVR - programowanie mikrokontrolera ATtiny2313 / ATmega8515 25/30
Dostępne są dwie procedury samoprogramowania FLASH: I wariant 1. przygotowanie nowej zawartości tymczasowego bufora strony pamięci; R1R0:=słowo_rozkazowei Z:=adres_w_buforze N 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
26
AVR - programowanie mikrokontrolera ATtiny2313 / ATmega8515 26/30
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_rozkazowei Z:=adres_w_buforze N razy SPMCSR:=01h wykonanie SPM 3. uruchomienie procesu zapisu skasowanej strony pamięci FLASH zawartością tymczasowego bufora SPMCSR:=05h wykonanie SPM
27
AVR - bity konfiguracyjne 27/30
Bity konfiguracyjne zebrane są w 4 bajtach: 1. bajt zabezpieczeń: LB2 LB1 zabezpieczenie dostępu do pamięci: LB2,LB1 = brak zabezpieczenia; programowanie zabronione, możliwa weryfikacja/odczyt; programowanie oraz odczyt/weryfikacja zabronione.
28
AVR - bity konfiguracyjne 28/30
2. bajt dodatkowy: SELFPRGEN zezwolenie na samoprogramowanie: SELFPRGEN = 1 - samoprogramowanie zabronione; samoprogramowanie dozwolone.
29
AVR - bity konfiguracyjne 29/30
3. starszy bajt: DWEN EESAVE SPIEN WDTON BODLEVEL2 BODLEVEL1 BODLEVEL0 RSTDISBL 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; BODLEVEL wybór poziomu napięcia resetu brown-out; RSTDISBL - wyłączenie zewnętrznego resetu
30
AVR - bity konfiguracyjne 30/30
4. młodszy bajt: CKDIV8 CKOUT SUT1 SUT0 CKSEL3 CKSEL2 CKSEL1 CKSEL0 CKDIV8 - włączenie podzielnika generatora taktu; CKOUT - wyjście generatora taktu na końcówkę CKOUT; SUT1, SUT0 - wybór czasu resetu; CKSEL wybór źródła przebiegu taktującego;
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.