ОРГАНИЗАЦИЯ НА ПАМЕТТА НА AVR МИКРОКОНТРОЛЕРИ
След като прочетох нашия форум, стана ясно, че не всеки разбира разликата между фърмуера и изходния код, FLASH и EEPROM. За да не възникват повече тези въпроси, реших да напиша този кратък преглед. Вземете например MK ATMega16. Вътре в този контролер има 2 основни области на паметта: ROM, тя също е програмна памет или флаш памет, и RAM, тя също е памет за данни или SRAM. В допълнение към всичко това има памет за съхранение на данни (EEPROM). |
Програмна памет
Тъй като флаш паметта на контролера е 16 kB (16384 байта), в нея могат да бъдат натъпкани 8192 16-битови инструкции (8K x 16). В допълнение към основната програма във флаш паметта могат да бъдат поставени различни константи, чиито стойности се използват по време на изпълнение на програмата и които не могат да бъдат променяни, а също така може да има раздел за зареждане (вижте статията за битовете на предпазителите). Броят на циклите на препрограмиране на флаш паметта е 10 000. след 10 000 (или повече) цикъла може да има грешки при писане или програмата изобщо да не бъде написана. Не бива да се страхувате, ако броите малко, се оказва, че за да стигнете до това, трябва да шиете контролера всяка минута в продължение на около седем дни, без да спирате за сън, паузи за дим, пиене на бира и други радости от единичен или семеен (някой като него) живот.
Памет за данни
Както се вижда от фигурата, паметта за данни се състои от: регистров файл, който включва 32 регистъра с общо предназначение (RON); 64 периферни регистъра - входно/изходни регистри (I/O регистри); 1024 байта самата RAM. Чрезрегистри. Всички регистри са с капацитет 8 бита - оттук и 8-битовите контролери. Разбира се, има и 16 битови регистри, но те отново се състоят от 2 осем битови. Входно-изходните регистри (RVV) са предназначени да работят с MK периферни устройства и да го конфигурират.
Вземете например I/O портовете (най-простият пример). Има 3 RVV за всеки порт:
1) регистър, който определя посоката на трансфер на данни през щифтовете на порта (вход или изход);
2) регистър, който чете състоянието на щифтовете на порта, ако щифтовете са конфигурирани да получават (въвеждат) информация;
3) регистър, който определя логическото ниво на щифта на порта, ако щифтът е конфигуриран за изход, или управлява вътрешния издърпващ резистор, ако щифтът е конфигуриран за вход.
За да конфигурирате порта според вашите изисквания, както и да подадете информация към порта или да я получите, трябва да прочетете данни от RBB или да заредите данни в тях. Тези данни са 8-цифрени числа, но особеността на MK AVR е, че е невъзможно директно да се заредят данни в RVV или да се прочетат тези данни от RVV. За тези цели е необходимо да се използва RON, т.е. за да пишем в RVV, първо поставяме нашите данни в RON и след това ги изпращаме до RVV. По същия начин, за да прочетем данни от RVV, първо трябва да ги изтеглим от RVV в RON и след това да извършим всякакви непристойности с тях.
Трябва да се отбележи, че блокът RON може да бъде разделен на 2 групи: RON на долната половина на регистърния файл (R0 ... R15) и RON на по-старата половина на регистровия файл (R16 ... R31). Разликата се състои в това, че не всички команди, свързани с горната половина на регистрите, могат да бъдат приложени към долната половина, тоест регистрите R0 ... R15 са леко съкратени в набора от инструкции.
Когато използвате RAM за променливи и стека, трябвауверете се, че едното не преминава върху другото.
EEPROM
Тук можете да запазите всякакви константи, данни, които се използват, когато програмата работи, или трябва да запазите, преди да изключите захранването и т.н. Данните могат да се записват в EEPROM директно по време на изпълнение на програмата или чрез флашване през флашър (eep-файл). Ако четенето от EEPROM по време на работа на MK е много бързо, тогава записът в него отнема много дълго време, няколко милисекунди. Тук трябва да внимавате по време на процеса на писане в EEPROM да не се появи прекъсване, в противен случай ще напишем някакво лошо в резултат. Така че тук трябва да сте по-внимателни. Броят на циклите на запис / изтриване в EEPROM е 100 000. Автор на материала: скейтман.
Статията е за това как да ремонтирате пластмасова китайска електрическа кана.ЕКСПОЗИЦИЯ НА ЕМПЗа връзката между развитието на електротехниката и радиоелектрониката и екологичните проблеми. |
РЕМОНТ на IPAD |