Главная Новости Прайс-лист О магазине Как купить? Оплата/Доставка Корзина Контакты  
  Авторизация  
 
Логин
Пароль

Регистрация   |   Мой пароль?
 
     
  Покупателю шин  
  Новости  
Banwar

Наша сеть партнеров Banwar. Новое казино "Пари Матч" приглашает всех азартных игроков в мир больших выигрышей и захватывающих развлечений.

  Опрос  
 
Летние шины какого производителя Вы предпочитаете использовать?
 Michelin
 Continental
 GoodYear
 Dunlop
 Nokian
 Fulda
 Bridgestone
 Hankook
 Kumho
 Другие

Всего ответов: 1035
 
     
  Добро пожаловать в наш новый всеукраинский интернет-магазин!  

Пристрій мікроконтролера: АЛУ і організація пам'яті

  1. 1. Арифметико-логічний пристрій
  2. 2. Пам'ять мікроконтролера (організація пам'яті)
  3. Організація пам'яті в мікроконтролері
  4. Пам'ять програм (FLASH пам'ять)
  5. Пам'ять даних (Статичний ОЗУ, SRAM)
  6. Незалежна пам'ять (EEPROM)

Наша сеть партнеров Banwar

Процесорний ядро мікроконтролерів:
- арифметико-логічний пристрій
- організація пам'яті

Доброго дня шановні радіоаматори!
Вітаю вас на сайті " радіоаматор "

Сьогодні (точніше - в перебігу декількох статей) ми з вами більш докладно розглянемо основу будь-якого мікроконтролера - процесорний ядро.

Основні елементи:

1. Арифметико-логічний пристрій

АЛУ - серце (а може бути і розум, з честю і совістю) мікроконтролера.
Тут ми не будемо входити в роль "маніяка-расчленітеля" і колупатися в нутрощах цього пристрою. Зрозуміємо тільки, що завдяки АЛУ відбувається вся робота мікроконтролера. Якщо у вас коли-небудь з'явиться бажання більш глибше пізнати як працює "серце" мікроконтролера (а буде непогано, якщо воно з'явиться), то в книгах чудових авторів Бєлова, Рюмик, Евстіфеева, Ревича, Баранова і багатьох інших, ви завжди знайдете докладну відповідь .

2. Пам'ять мікроконтролера (організація пам'яті)

Перш ніж розглядати пам'ять мікроконтролера, трохи поговоримо про пам'яті взагалі.
Людська пам'ять - з нею все зрозуміло, - вона буває "твердої" (коли знаходишся в твердій пам'яті, а іноді ще й при здоровому глузді) і, як не сумно, - "дірявим". А вся інформація зберігається в так званих "нейронах" - маленьких комірках пам'яті.
У мікроконтролерів майже все також. Тільки, якщо у людини найменша осередок для зберігання інформації називається "нейрон", то для мікроконтролера найменша комірка пам'яті для зберігання інформації називається "біт".
В одному бите може зберігатися або одна логічна одиниця, або один логічний нуль.
Біт - мінімальна одиниця виміру обсягу пам'яті в мікропроцесорній техніці.
Наступна основна, або найпоширеніша, одиниця виміру пам'яті - байт.
Байт - це вісім біт інформації. В одному байті може зберігатися тільки вісім нулів і одиниць.
Максимальне число яке можна записати в байт - 255. Якщо в програмі ви будете оперувати великими числами то слід знати (щоб знати скільки байт буде потрібно для зберігання числа), що максимальне число, яке можна записати в:
- один байт = 255
- два байта = 65 535
- три байта = 16 777 215
- чотири байти - число величиною понад 4 мільярди (якщо ви не входите хоча б в сотню журналу "Форбс", то чотири байти пам'яті для зберігання чисел вам не знадобляться).
Запис в пам'ять і читання з пам'яті відбувається байтами (можна записати або вважати один біт інформації).
Наступна одиниця виміру - кілобайт.
У кілобайті поміщається 1024 байт інформації (саме 1024, а не 1000 байт).
Є ще і великі величини вимірювання об'єму пам'яті (мегабайт, гігабайт), але в мікроконтролерах вони поки не застосовуються.
Я сподіваюся, що з одиницями вимірювання електронної пам'яті нам все зрозуміло:

Організація пам'яті в мікроконтролері

Мікросхеми AVR мають три види пам'яті:
- пам'ять програм, вона ж FLASH-пам'ять
- пам'ять даних, вона ж ОЗУ (оперативно-запам'ятовуючий пристрій), вона ж SRAM
- незалежна пам'ять, вона ж ЕСППЗУ, вона ж EEPROM
У мікроконтролері виділяється три адресних простору в яких розташовуються вищеперелічені різновиди пам'яті. Пам'ять даних при цьому (в сенсі виділеного адресного простору) виявилася трохи обділеною - їй доводиться ділити свій адресний простір з осередками пам'яті в яких зберігаються регістри загального призначення і регістри введення / виводу (про них ви докладно дізнаєтеся в наступній статті). Ці регістри фізично не відносяться до пам'яті даних, але знаходяться в тому ж адресному просторі. Якщо початкові адреси пам'яті програм і незалежній пам'яті починаються з нульового адреси, то початкова адреса пам'яті даних не почалась з нульового адреси - з нульового адреси займають місця регістри загального призначення і регістри введення / виводу, і тільки за ними слідують адреси осередків пам'яті програм.
У деяких видах МК ATiny пам'ять даних відсутня.

Пам'ять програм (FLASH пам'ять)

Пам'ять програм призначена для зберігання в ній наших програм, а також будь-яких потрібних нам даних, які не змінюються в ході виконання програми (константи). При виключенні живлення мікроконтролера, всі дані в пам'яті програм зберігаються.
Пам'ять програм, природно, мають всі мікроконтролери. Розмір пам'яті програм, в залежності від типу МК, варіюється від 1 кілобайт до 256 кілобайт.
Доступ до пам'яті програм має тільки програміст при програмуванні МК, у самого МК доступ до пам'яті програм теж є, але тільки для читання даних з пам'яті, записати туди він нічого не може (хіба мало що, раптом захоче зіпсувати нашу програму). Правда, у МК сімейства Mega є можливість (з дозволу програміста) вносити зміни в пам'яті програм, але це окрема історія.
Для пам'яті програм є ще два види вимірювання об'єму пам'яті - "слово" і "сторінка".
Справа в тому, що пам'ять програм складається з осередків складаються з двох байт. Така осередок називається "словом". А зроблено це так тому, що майже всі команди МК складаються з двох байт, і, відповідно, для їх запису потрібно два байта в пам'яті програм. Кожна команда МК - це одне "слово". Є кілька команд, для запису яких потрібно 4 байта в пам'яті - два слова, але такі команди зустрічаються в МК у яких пам'ять програм більше 8 кілобайт.
Таким чином, в одну комірку пам'яті програм можна записати:
- будь-яку команду, що складається з двох байт
- половину команди, що складається з 4 байт
- дві константи, кожна з яких вміщується в один байт, або одну шестнадцатіразрядного константу. При цьому, якщо ви записуєте в пам'ять три однобайтових константи, вони все одно займуть в пам'яті чотири байти (два слова).
Крім того, запис в пам'ять програм здійснюється не тільки "словами", але ще і "сторінками". Розмір "сторінки" становить від 64 до 256 байт (чим більший об'єм пам'яті програм, тим більше обсяг "сторінки"). Що це означає. Якщо ви створили маленьку програмку, обсяг якої становить 11 слів (22 байта), в пам'яті програм вона все одно займе місце в одну сторінку, тобто як мінімум 64 байта. "Зайві" 42 байта при цьому будуть заповнені або нулями, або одиницями. Ось такі ось, пироги.
Але і це ще не все.
Пам'ять програм може мати три стани (якщо можна так висловитися):
1. Вся пам'ять знаходиться в розпорядження програміста
У цьому випадку ми можемо забити всю пам'ять повністю своєю програмою і даними. А програма стартуватиме з нульового адреси пам'яті.
2. Частина пам'яті забирає МК
У разі, якщо при роботі МК використовуються переривання (а я сподіваюся - ви пам'ятаєте, що це таке), частина пам'яті МК забирає для потреб обробки переривань і зберігає в ній "вектори переривань".
Що це таке.
Коли ми дозволяємо МК обробляти переривання, він, починаючи з нульового адреси пам'яті, забирає частину осередків для зберігання в них адрес, за якими треба перейти МК для виконання підпрограми переривання. Для кожного переривання МК виділяє два байта пам'яті (одне слово) в яких зберігаються адреси підпрограм обробки переривань. Ось ці адреси, які вказують де знаходиться в пам'яті підпрограма обробки того, чи іншого переривання, називаються "векторами переривань". А вся область пам'яті, в якій зберігаються "вектори переривань", називається таблицею векторів переривань. Кількість зайнятих осередків пам'яті під переривання залежить безпосередньо від кількості можливих переривань даного мікроконтролера (від декількох штук, до декількох десятків). Всі переривання розташовуються на початку пам'яті програм, з нульового адреси, і мають чітку послідовність. За нульовою адресою завжди розташовується вектор переривання по "скидання" (Reset). Коли ми включаємо пристрій, або проводимо скидання кнопкою, спрацьовує переривання по скиданню. МК зчитує з нульового адреси (з осередку) адреса, який вказує де в пам'яті знаходиться початок нашої програми, і перейшовши за цією адресою починає виконувати програму. Сама програма в цьому випадку буде розташовуватися в пам'яті програм відразу за таблицею переривань.
3. МК забирає ще одну частину пам'яті програм (точніше не забирає, а виділяє область в кінці пам'яті, в якій програміст розміщує спеціальну програму - "завантажувач").
Таке можливо в МК сімейства "MEGA", у яких є можливість дозволити МК вносити зміни в пам'яті програм. Що це означає.
Деякі МК мають можливість самопрограмміроваться. У практиці любителів така можливість МК використовується вкрай рідко. Можливість перепрограмувати (самопрограмміроваться) потрібна, в основному, у випадках промислового виробництва якогось пристрою на мікроконтролері, для якого потім може випускатися оновлення програмного забезпечення. Ми цю можливість розглядати не будемо, принаймні поки. Нам досить тільки знати, що в МК, які підтримують самопрограмування, пам'ять програм розділяється на дві частини:
- верхня - секція прикладної програми, де розташовується наша програма і вектори переривань
- нижня - секція завантажувача (Boot Loader Section - англійською), де програміст має свою програму-завантажувач. Розмір секції завантажувача залежить від загального розміру пам'яті програм МК, і може становити від 128 байт до 4096 байт. Якщо можливість самопрограмування МК ми не використовуємо, то ця секція віддається для нашої програми і даних.
Ну а FLASH-пам'яттю пам'ять програм називають тому, що вона робиться по так званій Flash-технології (як і всім нам звичні комп'ютерні "флешки")
Пам'ять програм допускає 10 тисяч циклів перепрограмування.

Пам'ять даних (Статичний ОЗУ, SRAM)

Оперативно-пристрій, воно ж пам'ять даних типу SRAM, призначена для зберігання в ній різних даних, одержуваних в результаті роботи програми.
При виключенні живлення мікроконтролера, всі дані зберігаються в ній губляться.
Пам'ять даних є майже у всіх мікроконтролерах (відсутній у найпростіших МК сімейства Tiny).
У всіх МК сімейства Mega (і частини МК сімейства Tiny) обсяг вбудованої пам'яті даних коливається від 128 байт до 8 кілобайт, і майже вся вона віддана в наше повне розпорядження. Тільки трошки забирає собі МК для організації стека (що це таке дізнаємося пізніше). У деяких МК передбачено підключення зовнішньої пам'яті (вона може бути будь-якого типу - FLASH, SRAM, EEPROM) обсягом до 64 кілобайт. У разі підключення зовнішньої пам'яті в таких МК, вона стає ніби продовженням пам'яті даних.
Запис в пам'ять даних і читання з неї відбувається побайтно, і на відміну від пам'яті програм в ній немає поділу на сторінки і слова.

Незалежна пам'ять (EEPROM)

Незалежна пам'ять також відноситься до пам'яті даних, але на відміну від останньої має кілька особливостей. Призначена вона для зберігання даних і констант, які повинні зберігатися при відсутності харчування.
EEPROM мають всі мікроконтролери.
При виключенні живлення мікроконтролера всі дані, що зберігаються в незалежній пам'яті зберігаються (тому вона і називається енергонезалежною).
Обсяг енергонезалежної пам'яті, в залежності від типу МК, коливається від 64 байт до 4 кілобайт.
Запис і читання інформації в пам'ять проводиться побайтно. Однак в старших моделях сімейства MEGA, незалежна пам'ять, так само як і пам'ять програм, має сторінкову запис. Обсяг сторінки невеликий, становить всього 4 байта. На практиці ця особливість не має значення - і запис, і читання здійснюється все одно побайтно.
Число циклів запису і стирання пам'яті досягає 100 000.
Головна особливість EEPROM полягає в тому, що під час запису в неї даних вона стає дуже "повільної" - запис одного байта може тривати від 2 до 4 мілісекунд (це дуже низька швидкість), і може трапитися, наприклад, що під час запису спрацює яке -або переривання і в цьому випадку процес запису даних буде загублений.
Крім того, не рекомендується записувати дані в незалежну пам'ять з нульового адреси (не пам'ятаю джерела цих відомостей, але точно пам'ятаю, що десь читав) - можливе пошкодження даних в ході роботи МК. Іноді програмісти відступають на кілька байт від початку пам'яті, і тільки в наступних осередках починають запис даних.

Попередні статті:

Мікроконтролер і як його перемогти
Мікроконтролер і системи числення
Мікроконтролер і логічні операції
Загальний пристрій мікроконтролера

Наступні статті:

Регістри загального призначення, регістри введення / виводу, стек, лічильник команд
Регістр стану SREG
Порти введення / виводу мікроконтролера

 
  Обзор категорий  
 
Шины
 
     
 
  Специальное предложение  
   
     
     
Доставка осуществляется в города:
Александрия, Белая Церковь, Белгород-Днестровский, Бердичев, Бердянск, Борисполь, Боярка, Бровары, Бердичев, Васильков, Винница, Вознесенск, Горловка, Днепродзержинск, Днепропетровск, Донецк, Житомир, Запорожье, Евпатория, Ивано-Франковск, Измаил, Изюм, Каменец-Подольский, Керч, Кировоград, Ковель, Комсомольск, Конотоп, Краматорск, Кривой Рог, Кременчуг, Ильичевск, Луганск, Лубны, Луцк, Львов, Павлоград, Мариуполь, Миргород, Мелитополь, Мукачево, Николаев, Нежин, Никополь, Новая Каховка, Новоград - Волынский, Нововолынск, Одесса, Обухов, Павлоград, Пирятин, Прилуки, Полтава, Первомайск, Ровно, Славянск, Симферополь, Смела, Стрий, Сумы, Севастополь, Северодонецк, Тернополь, Ужгород, Умань, Харьков, Хмельницкий, Херсон, Феодосия, Чернигов, Черновцы, Южноукраинск, Ялта.

© 2009 - 2010 Интернет-магазин автотоваров и запчастей авто34

Каталог украинских интернет-магазинов