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

©2021 mgr Jerzy Wałaszek
I LO w Tarnowie

obrazek

Mikrokontrolery

ATtiny20

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

Rozdział ten opisuje pamięci w mikrokontrolerze ATtiny20, który posiada dwa główne obszary pamięciowe, przestrzeń pamięci programu (ang. program memory space) i przestrzeń pamięci danych (ang. data memory space).

Pamięć programu

Mikrokontroler ATtiny20 posiada 2 KB wewnętrznej, reprogramowalnej w układzie pamięci FLASH do przechowywania programu. Ponieważ wszystkie instrukcje AVR mają długość 16 lub 32 bitów, pamięć FLASH zorganizowana jest jako 1024 x 16 bitów.

Pamięć FLASH wytrzymuje co najmniej 10.000 cykli zapisu/kasowania. Rejestr licznika rozkazów (PC) w ATtiny20 ma długość 10 bitów, co pozwala mu adresować 1024 komórek pamięci, począwszy od 0x000. W rozdziale "Programowanie pamięci" znajduje się szczegółowy opis ładowania zawartości pamięci FLASH poprzez interfejs szeregowy.

Tablice stałych można umieszczać w obrębie całej przestrzeni adresowej pamięci programu. Ponieważ dostęp do tej pamięci nie jest bezpośredni, została odwzorowana w pamięci danych. Odwzorowanie pamięci programu rozpoczyna się od adresu bajtowego 0x4000 w pamięci danych. Chociaż programy są wykonywane poczynając od adresu 0x000 w pamięci programu, to musi być ona adresowana od 0x4000, gdy dostęp do niej odbywa się poprzez pamięć danych.

Wewnętrzne operacje zapisu do pamięci programu FLASH zostały zablokowane i dlatego pamięć programu wygląda jak pamięć tylko do odczytu. Pamięć FLASH może wciąż być zapisana zewnętrznie, lecz wewnętrzne próby zapisu do pamięci programu nie odniosą żadnego skutku.

Na początek:  podrozdziału   strony 

Pamięć danych

Obszar pamięci danych obejmuje pamięć we/wy, wewnętrzną pamięć SRAM, bity blokowania pamięci nieulotnej oraz obraz pamięci FLASH.

Mapa pamięci danych
obrazek

Pierwsze 64 adresy są zarezerwowane dla pamięci we/wy, natomiast następne 128 adresów odnosi się do wewnętrznej pamięci danych SRAM (od 0x0040 do 0x00BF).

Bity blokowania pamięci nieulotnej oraz cała pamięć FLASH są odwzorowane w przestrzeni pamięci danych. Dla programów komórki te są widoczne jako tylko do odczytu.

Cztery różne tryby adresowania pamięci danych to: bezpośredni (ang. direct), pośredni (ang. indirect), pośredni z wczesnym zmniejszaniem adresu (ang. indirect with pre-decrement) oraz pośredni z późnym zwiększaniem adresu (ang. indirect with post-increment). W zestawie rejestrów rejestry od R26 do R31 pełnią dodatkową rolę rejestrów indeksowych do adresowania pośredniego.

Instrukcje IN i OUT mają dostęp do wszystkich 64 adresów pamięci we/wy. Adresowanie bezpośrednie przy użyciu instrukcji LDS i STS osiąga 128 komórek o adresach pomiędzy 0x0040 i 0x00BF.
Adresowanie pośrednie obejmuje zasięgiem całą przestrzeń pamięci danych. Gdy jest używane adresowanie pośrednie z automatyczną predekrementacją i postinkrementacją, zwiększane lub zmniejszane są rejestry adresowe X, Y lub Z.

Czasy dostępu do pamięci danych

Dostęp do pamięci SRAM wykonywany jest w dwóch taktach zegarowych clkCPU, co pokazuje poniższy rysunek:

obrazek

Na początek:  podrozdziału   strony 

Pamięć we/wy

Definicja obszaru we/wy mikrokontrolerów ATtiny20 jest pokazana w rozdziale “Rejestry”.

Wszystkie składniki we/wy mikrokontrolerów ATtiny20 są umieszczone w przestrzeni we/wy. Wszystkie komórki we/wy mogą być użyte w rozkazach LD i ST, co pozwala na przesył danych pomiędzy 16 rejestrami ogólnego przeznaczenia a przestrzenią we/wy. Poszczególne bity rejestry we/wy w zakresie adresów 0x00 - 0x1F są bezpośrednio dostępne za pomocą instrukcji SBI i CBI. W rejestrach tych wartość pojedynczych bitów można sprawdzać używając instrukcji SBIS i SBIC.  Zobacz do rozdziałów "Instrukcje AVR" oraz "Zestaw instrukcji". Gdy używane są specyficzne instrukcje we/wy IN i OUT, muszą z nimi być używane adresy 0x00 - 0x3F.

Dla kompatybilności z przyszłymi mikrokontrolerami zarezerwowane bity należy zapisywać zerem, jeśli jest do nich dostęp. Zarezerwowane obszary pamięci we/wy nie powinny nigdy być zapisywane.

Niektóre znaczniki stanu są zerowane przez zapis do nich logicznej jedynki. Zwróć uwagę, iż instrukcje CBI i SBI będą zmieniały tylko określony bit i z tego powodu mogą być stosowane dla rejestrów zawierających takie znaczniki stanu. Instrukcje CBI i SBI pracują na rejestrach w zakresie adresów jedynie od 0x00 do 0x1F.

Rejestry sterujące modułami peryferyjnymi mikrokontrolera są wyjaśnione w dalszych rozdziałach.

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
©2021 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.