1 / 26

Rodzina AVR wykład 6

Rodzina AVR wykład 6. AVR 2 /30. Pamięć EEPROM Tryby oszczędzania energii Programowanie Bity konfiguracyjne. AVR - pamięć EEPROM danych ATtiny2313 / ATmega8515 3 /30. EEPROM

annot
Download Presentation

Rodzina AVR wykład 6

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Rodzina AVRwykład 6

  2. AVR 2/30 Pamięć EEPROMTryby oszczędzania energiiProgramowanieBity konfiguracyjne

  3. AVR - pamięć EEPROM danych ATtiny2313 / ATmega85153/30 • EEPROM • 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. EEDR 3Dh rejestr buforowy danych EEPROM 1Dh EEARH 3Fh EEAR8 1Fh EEAR 3Eh adres dostępu do EEPROM6..0 1Eh EEARL 3Eh adres dostępu do EEPROM EEAR7..0 1Eh AVR - pamięć EEPROM danych ATtiny2313 / ATmega85154/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: Rejestr buforujący odczyt i zapis komórek EEPROM:

  5. EECR 3Ch EERIE EEMWE EEWE EERE 1Ch AVR - pamięć EEPROM danych ATtiny2313 / ATmega85155/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.

  6. EECR 3Ch EEPM1 EEPM0 EERIE EEMPE EEPE EERE 1Ch AVR - pamięć EEPROM danych ATtiny2313 / ATmega85156/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

  7. AVR - pamięć EEPROM danych ATtiny2313 / ATmega85157/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 / ATmega85158/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 / ATmega85159/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 / ATmega851510/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 / ATmega851511/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) lubprzerwaniem od zmiany stanu wejść (PCINT) lubodebranie bitu startu przez USI w ATtiny2313 lubprzerwaniem INT2

  12. EMCUCR 56h SM0 SRL2 SRL1 SRL0 SRW01 SRW00 SRW11 ISC2 36h MCUCSR 54h SM2 WRDF BORF EXTRF PORF 34h AVR - oszczędzanie energii ATtiny2313 / ATmega851512/30 Sterowanie pracą z obniżonym poborem prądu: MCUCR 55h PUD SM1 SE SM0 ISC11 ISC10 ISC01 ISC00 35h MCUCR 55h SRE SRW10 SE SM1 ISC11 ISC10 ISC01 ISC00 35h 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 / ATmega851513/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 / ATmega851514/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. CKDIV8 CKOUT SUT1 SUT0 CKSEL3 CKSEL2 CKSEL1 CKSEL0 DWEN EESAVE SPIEN WDTON BODLEVEL2 BODLEVEL1 BODLEVEL0 RSTDISBL AVR - programowanie mikrokontrolera ATtiny2313 / ATmega851515/30 Bity konfiguracyjne ATtiny2313:- młodszy bajt CKDIV8 - włącza podzielnik generatora taktu przez 8CKOUT - włącza wyjście na zewnątrz sygnału generatora taktuSUT1,SUT0 - określają szybkość restartu mikrokontroleraCKSEL3..CKSEL0 - wskazują źródło taktowania mikrokontrolera - starszy bajt: DWEN - włącza interfejs DebugWire; SPIEN - włącza interfejs programujący SPIEESAVE - włącza ochronę EEPROMu podczas kasowania FLASHWDTON - włącza na stałe watchdogBODLEVEL2..BODLEVEL0 - określają próg zadziałania obwodu brown-out detectorRSTDISBL - wyłącza wejście zewn. RESETU - dodatkowy bajt: SELFPRGEN SELFPRGEN - włącza mechanizm samoprogramowania FLASH

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

  17. AVR - programowanie mikrokontrolera ATtiny2313 / ATmega851517/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 / ATmega851518/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 / ATmega851519/30 Organizacja stron pamięci FLASH na potrzeby samoprogramowania: PAGEEND=0Fh PCWORD=PC3..0 PCPAGE=PC9..4 PCMSB=9 64 strony PAGEEND=1Fh PCWORD=PC4..0 PCPAGE=PC11..5 PCMSB=11 128 stron na podstawie danych katalogowych Atmela

  20. SPMCSR 57h CTPB RFLB PGWRT PGERS SELFPRGEN 37h AVR - programowanie mikrokontrolera ATtiny2313 / ATmega851520/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;

  21. SPMCSR 57h CTPB RFLB PGWRT PGERS SELFPRGEN 37h AVR - programowanie mikrokontrolera ATtiny2313 / ATmega851521/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.

  22. SPMCR 57h SPMIE RWWSB RWWSRE BLBSET PGWRT PGERS SPMEN 37h AVR - programowanie mikrokontrolera ATtiny2313 / ATmega851522/30 Rejestr sterujący ATmega8515: 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 SPMENumożliwia programowi odczyt bajtów konfiguracyjnych;

  23. SPMCR 57h SPMIE RWWSB RWWSRE BLBSET PGWRT PGERS SPMEN 37h AVR - programowanie mikrokontrolera ATtiny2313 / ATmega851523/30 Rejestr sterujący ATmega8515: 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. SPMCR 57h SPMIE RWWSB RWWSRE BLBSET PGWRT PGERS SPMEN 37h AVR - programowanie mikrokontrolera ATtiny2313 / ATmega851524/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.

  25. AVR - programowanie mikrokontrolera ATtiny2313 / ATmega851525/30 Dostępne są dwie procedury samoprogramowania FLASH: I wariant 1. przygotowanie nowej zawartości tymczasowego bufora strony pamięci; R1R0:=słowo_rozkazoweiZ:=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 / ATmega851526/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_rozkazoweiZ:=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

More Related