Автор Тема: PIC За начинаещи.  (Прочетена 52641 пъти)

DataMatrix

  • Заклет Роботостроител
  • *****
  • Публикации: 308
    • Профил
    • http://datamatrix-bg.net/
PIC За начинаещи.
« -: Юли 02, 2007, 11:27:20 am »
Здравейте!
В тази тема ще започна да развивам статия за работата с PIC микроконтролерите и по-специално PIC16F84A.

Малко обща информация:
 От какво се състои един микроконтролер:
  -CPU - централен процесор
  -RAM - памет за данни. Съдържа регистрите, нужни за изчисленията, извършвани от процесора и регистите с работните параметри на контролера.
  -ROM - програмна памет. Тя съдържа програмата, която ще се изпълнява.
  -периферни устройства - най-често това са портове, които позволяват на микроконтролера да общува с външният свят, подобно на монитора, мишката, клавиатурата, мрежата и CD ROM-и за един персонален компютър.
  Микро контролерите често се срещат в литературата с името едночипов микрокомпютър, тъй като съставящите го блокове са характерни и за всеки един компютър. Има още начини да отъждествим микроконтролера с компютъра. Например за работата на един компютър е нужна операционна система, както при микро контролера е нужен програма, която да го управлява.
Димитър Бояджиев, гр. София

pisko

  • Новодошъл
  • *****
  • Публикации: 1
    • Профил
PIC За начинаещи.
« Отговор #1 -: Юли 24, 2007, 01:11:29 am »
RAM-та е енерго зависеща памет.Няма ток данните се губат.Има ток,данните се запазват.Затова ако отворите един файл и рестартирате или удасите компютъра редакцийте по този файл няма да се запазат ако не влезнат в ROM.Ram oзначава Random Access Memory
RAM-та бива два вида  SRAM - Статична памет
и Dram - която е динамична.
SRAM(img)
DRAM(img)

ROM-енерго независеща памет.При Ром паметта се пазват данните с функция за много кратно четене и презаписване.
CPU :> Central processing unit
Всеки процес минава през него.Състо и се от две главни части (алу и куу) Аритметико логическо устройство  и kонтролно управляващо  устройство.
CUP(img)
Това са уводните думи в първият час по информатика за 9-ти клас.
Надявам се не се сърдиш за поясненията който съм дал.

DataMatrix

  • Заклет Роботостроител
  • *****
  • Публикации: 308
    • Профил
    • http://datamatrix-bg.net/
PIC За начинаещи.
« Отговор #2 -: Август 31, 2007, 10:34:45 pm »
Всеки микроконтролер работи по зададена му от разработчика (това сме ние) за да прави каквото ние искаме.

Какво е програмата, която изпълнява микроконтролера?
Програмата, която е вложена в микроконтролера е средство, което ни позволява да му кажем какво искаме той да направи. Програмата се състои от инструкции. Характерното за всеки различен контролер е, че инструкциите са точно определен набор, който е зададен от производителя и е заложен в процесора при производството, т.е. те не могат да се променят. Инструкциите си имат точно определен формат:
име-на-инструкцията параметър(параметри)
С инструкцийте ще се занимаем подробно по-късно.
Инстукциите за 16F84A се състоят от 14 битови думи (14броя 0 или 1) и са 35 на брой.

 :!: Има разлика между микроконтролер и микропроцесор - микроконтролера съдържа в себе си микропроцесор. На микропроцесора са му нужни допълнителни модули за да функционира нормално - оперативна памет, тактов генератор, и периверни устройства за вход/изход (комуникация с останалият свят един вид). Следователно, микроконтролерът е една завършена система, подобно на персоналния компютър, в която микропроцесора е един от основните модули.

Всяко устройство, базирано на микроконтролерна техника има 2 етапа на разработка: апаратна (хардуерна) част и изработването на софтуера за да оперира това устройство според очакванията ни.
Какво ни е нужно за разработването на софтуерната част?
 1)Персонален компютър.
 2)Програми за проектиране на софтуера:
 2) 1)Текстови редактор за писане на програмния код
 2) 2)Транслатор/Компилатор/ за превеждане на програмата в разбираем за контролера формат
 2) 3)Симулатор - той позволява изтестването на програмния код
 2) 4)Емулатор - той имитира контролера, като създава условия, близки до реалните.
 2) 5)Програма за записване на готовия (компилиран) код в контролера
 3)Устройство за запис на програмата от компютъра в контролера - програматор.
 Първите 4 подточки от точка 2 често се срещат като отделни модули в по-голям софтуерен пакет, наречен развойна среда. Често производителите на микроконтролери разработват такива пакети за своите продукти.Развойната среда за PIC микроконтролерите е MPLAB IDE и се предоставя от Microchip за безплатно ползване.
Димитър Бояджиев, гр. София

DataMatrix

  • Заклет Роботостроител
  • *****
  • Публикации: 308
    • Профил
    • http://datamatrix-bg.net/
PIC За начинаещи.
« Отговор #3 -: Август 31, 2007, 11:42:07 pm »
Програматора...
Това е устройстово, с което се осъществява връзка с микроконтролера, за да можете да запишете на него програмата си или данни или да ги прочетете. Програматора се свързва с компютъра чрез серийня или паралелния порт (в редки случаи USB)

Върху повърхността на програматора (върху самата платка или върху външния панел, ако той е в кутия) има цокъл, в който се поставя микроконтролера.

Първо микроконтролера се поставя в цокъла, след което чрез кабел (или директно) програматорът се включва в компютъра. Ако има отделно захранване за програматора, то се активира (включва) след като програматора се вкл. в компютъра. Изключването е в точно обратната последователност.
Само програматор обаче не е достатъчен за записване на програмата в програмната памет на микроконтролера - нужен ни е и съответният софтуер за компютъра. Това обикновенно са програми като IC-Prog (препоръчвам я), PonyProg, ProPic2 или друга по ваш избор (повечето развойни среди имат вграден модул за тази операция). Не се отчайвате, описаното до тук всъщност никак не е слижно и нуждата от допълнителни програми и цената на устройството не трябва да ви притеснява - повечето такива програми са доста малки и доста често безплатни, а програматорите са от порядъка на 9-10-12лв, като в интернет има и много схеми, които съвсем лесно може сами да изпълните.
Димитър Бояджиев, гр. София

INF1n1t

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 139
    • Профил
PIC За начинаещи.
« Отговор #4 -: Септември 01, 2007, 12:54:51 am »
От какви блокове се състои микроконтролера?



Следващият път ще ви бъдат разяснени тези блокове един по един. Картинката е дадена само ориентировъчно, за да помогне в разбирането на блоковете. Доста пъти, по-надолу в статията, ще става въпрос за тази картинка и бих ви препоръчал да я попоглеждате.
Иван Занев - град София

INF1n1t

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 139
    • Профил
PIC За начинаещи.
« Отговор #5 -: Септември 05, 2007, 11:44:08 pm »
Започваме с този блок, поради причината, че според мен е по-важен от който и да било друг. Той е в лявата част на картинката и се казва: "Блок за НУ и контрол".

Блок за начално установяване и контрол:

Начално установяване на PIC микроконтролера:
 По-рано беше дадена аналогията с персонален компютър. А сега мисля да я продължа. Защото процесорът в РС също се подлага на начално установяване. Всеедно, ставаш от леглото сутринта и отиваш да се измиеш, да се наядеш и чак тогава излизаш. По дефиниция: Началното установяване (НУ или Reset) е събитие, което установява микроконтролера в изходна позиция (предварително известно състояние). НУ може да настъпи при подаване на външен сигнал към микроконтролера (на определен извод), или при подаване на сигнал от вътрешни блокове.
 При НУ, записаната програма започва изпълнението си отначало. Какво става когато натиснете копчето за рестарт на компютъра? Ами аналогично е и тук. НУ е важно свойство на микроконтролера. По-късно ще ви бъде разяснено по-добре.

 Проблемът е как PIC-а знае къде се намира в паметта, първата инструкция от записаната програма. Решението се нарича, вектор на НУ. Това нещо указва адреса на клетката от оперативната памет. От този адрес ще бъде заредена първата инструкция на програмата.

 Но при какви обстоятелства възниква НУ?
   - При подаване на захранващо напрежение, блок POR (Power-On-Reset) в микроконтролера подава сигнал за НУ.
   - При подаване на активиращо ниво на извод MCLR. Хората често свързват бутон към този извод, за да могат да контролират НУ по този начин. (виж по-долу)
   - Понякога микроконтролера не е нужно да консумира на пълна мощност. Затова има режим SLEEP, при който нашият PIC "заспива" - той е на по-ниска консумация. Представете си, че сте заспали. Будилникът звъни - време е за ставане, трябва да ходите на училище. Вие ставате и отивате да се измиете, което е НУ. Така и PIC-а - подаваме му сигнал на MCLR и той се събужда от режим SLEEP.
   - WDT - това е блок, който се грижи за коректното изпълнение на програмата. В случай, че има програмна грешка, смущение в захранването или друга дестабилизация, WDT генерира НУ сигнал. За повече информация, виж следващото мнение.
   - Brown-Out-Reset - генериране на НУ при спад в захранващото напрежение.

Свързване на бутон към MCLR извод на PIC микроконтролера:
 


 Виждате, че MCLR се активира при ниско ниво, а не при високо. За да се активира, трябва да му подадеме логическа нула. Кондензаторът служи за филтрация - да не би някакви кратки входни смущения да рестартират микроконтролера.
 Сложен е резистор със съпротивление 10 килоома, за да ограничи токът през извода. Абсолютно задължително е да се слага такъв токоограничаващ резистор, за да не протече прекалено голям ток и повреди извода на интегралната схема (в случая - на микроконтролера).
Иван Занев - град София

INF1n1t

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 139
    • Профил
PIC За начинаещи.
« Отговор #6 -: Септември 07, 2007, 12:04:26 am »
Продължаваме нашата дискусия за блока за начално установяване и контрол. Този път ще ви разкажа какво ще рече WDT, OST и PWRT. Това най-общо казано са таймери, които спомагат и наглеждат правилната работа на микроконтролера.

Какво представлява стражевият таймер - WDT?
 Невинаги условията за идеални. В някои случаи е съвсем възможно програмата да зацикли. Стражевият таймер дебне за такива проблеми и предпазва централния процесор от зацикляния. Зациклянето е събитие при което процесорът започва безкрайно изпълнение на едно и също нещо. Например, играете си една игра и изведнъж компютърът ви забие. Е тук е същото, но стражевият таймер ще предпази микроконтролера. Всъщност, идеята е следната: когато се случи някакво програмно зацикляне, стражевият таймер ще генерира начално установяване, защото това е единственият начин за оправяне на проблема.

 Как работи стражевият таймер? Този таймер е снабден със собствен RC генератор, чрез който се отмерват равни интервали от време с предварително зададена продължителност. В край на всеки интервал, WDT генерира сигнал за начално установяване. Този сигнал трябва да бъде нулиран преди изтичането на отмервания интервал. Ако не бъде нулиран, настъпва началното установяване. Но как става нулирането на сигнала? То става чрез специална инструкция, която се разполага между останалите редове на нашата програма. Ако по някаква причина се получи зацикляне, тази инструкция няма да бъде изпълнена и ще настъпи НУ.

 Също така, стражевият таймер може да се ползва за извеждане на микроконтролера от режим SLEEP, като тук това става без начално установяване.

Как работи PWR таймера?
 PWR е Power-up - включване на захранване. Това е таймер на включване захранването. При такова събитие, микроконтролерът ще бъде задържан в НУ за определено време - около 72 милисекунди. Идеята е захранващото напрежение да стигне приемливо ниво, преди да започне нормалната работа на микроконтролера.

Какво е OST?
 Oscillator Start-Up Timer - стартов таймер на генератора. След като закъснението на PWRT приключи, този таймер ще осигури 1024 цикъла  за тактовият генератор. За това време, би трябвало тактовият генератор да е започнал работа и параметрите му да са стабилизирани.
Иван Занев - град София

Borislav

  • Administrator
  • *****
  • Публикации: 1010
    • Профил
    • http://robotics-bg.com
PIC За начинаещи.
« Отговор #7 -: Септември 11, 2007, 10:32:46 am »
Митко, браво за статиите! Също браво и на останалите! Лично за мен това е много полезна тема! :) Следя я с интерес! Браво, още веднъж!!
Роботиката не е хоби - тя е начин на живот!

INF1n1t

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 139
    • Профил
PIC За начинаещи.
« Отговор #8 -: Септември 12, 2007, 02:26:58 pm »
Вече приключихме с блока за начално установяване и контрол. Той беше най-отляво на голямата картинка. Тя представи блок-схема (обща) на микроконтролера. Сега нека продължим с нашата дискусия и минем на "Тактовия генератор", който е отдясно на блока за НУ и контрол.

Тактов Генератор:

Какво е тактов генератор?
 Всеки микропроцесор се нуждае от тактов генератор. Това е блок, който генерира "правоъгълни" импулси честотата на които (нарича се тактова честота) определя времето за изпълнение на една инструкция. Тоест, колкото по-малко е времето (значи колкото по-голяма е честотата), толкова по-производителен е нашият микропроцесор. Оттам имаме по-голямо бързодействие на микроконтролера. Когато се каже, че микроконтролерът работи с тактова честота 10MHz, трябва да се разбира, че това е честотата на импулсите, получавани от тактовия генератор. Абсолютно същото е и при компютърните процесори, но там честотата е много по-висока. Например един компютърен процесор работи с честота 2 GHz, а микроконтролерът може да работи с честота до 20MHz.

16F84A разполага с вграден тактов генератор. За да се ползва този генератор, към специално предвидени изводи на микроконтролера трябва да се включи честнотнозадаващ елемент (кварцов резонатор, RC група и др.) Тези честотнозадаващи елементи ще оставя за по-късно, тъй-като сега разглеждаме блоковете най-общо.

Типове тактови генератори:
 Микроконтролерът може да бъде конфигуриран за работа с четири различни типа генератори, в зависимост от вида на честотнозадаващия елемент, а именно:

 - LP - кварцов резонатор с ниска консумация
 - XT - кварцов резонатор
 - HS - високо скоростен кварцов резонатор
 - RC - RC верига.

 Основното предимство на RC генераторът е, че изграждащите го елементи са с малка себестойност, но пък недостатъкът е доста голям и се състои в невисоката стабилност на честотата.

 Кварцовият резонатор се свързва успоредно към специални изводи на микроконтролера. Това са два извода с имена: OSC1/CLKIN и OSC2/CKLOUT. Последователно на всеки от тях се свързват кондензатори, както е показано на схемата.



 Колкото по-голяма стойност имат кондензаторите, толкова по-голяма стабилност ще има генератора. Но при големи стойности се получава нежелан ефект на голямо стартово време. Когато сте решили да ползвате кварцов резонатор, погледнете в datasheet-а му. Там хората са си написали достатъчно ясно какви са долните и горните граници за капацитетите.
Иван Занев - град София

INF1n1t

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 139
    • Профил
PIC За начинаещи.
« Отговор #9 -: Септември 12, 2007, 02:48:46 pm »
Няма какво повече да се каже за тактовия генератор. Поне засега. Но пък ние си продължаваме по плана и отиваме на следващият блок: "Прекъсвания".

Прекъсвания:

Какво е прекъсването?
 Ако сме реалистични, в повечето случаи към нашият микроконтролер са свързани различни датчици, клавиатури и т.н. Процесорът непрекъснато трябва да проверява за наличието на сигнал от тях. Тук има два проблема:

 1. Тези проверки губят процесорно време. Тоест, за това време може да се свърши някаква полезна работа.

 2. Процесорът проверява прекалено бързо, а в повечето случаи няма нужда от това.

 Този подход на английски се нарича "pooling". Гореуказаните проблеми са причината да се създадат прекъсванията. Вместо процесорът постоянно да проверява, защо самите датчици не го "уведомяват" за наличието на информация? Ами точно така, това се прави. Чрез блокът за прекъсвания, процесорът бива уведомен за наличието на информация от някакъв датчик или нещо друго. Тогава процесорът спира изпълнението на текущата програма и изпълнява специален код.
 След всичко това се разбира, че всъщност ние пишеме този специален код. Например, важно ни е, при информация от някакъв датчик да се случва нещо друго. Затова пишем определения код и когато се случи прекъсване, процесорът ще изпълни този код. Всъщност този код се нарича: програма за обслужване на прекъсванията.. При съставяне на цялата програма, тук се указват функциите, които да изпълнява микроконтролера при възникване на конкретното прекъсване.
 Устройството, което генерира прекъсването (например: датчик) се нарича източник на прекъсване.
 Не всички прекъсвания са ни нужни. За това, те могат да бъдат забранени. Тогава процесорът няма да реагира, дори такива да възникнат. На забранени прекъсвания казваме, че са маскирани.
 
Какво е вектор на прекъсване?
 Това е адресът на първата инструкция, която процесорът изпълнява при наличие на прекъсване. При PIC-овете, векторът на прекъсване винаги има адрес 0004. Там трябва да се разположи първата инструкция от програмата, обслужваща прекъсването.
Иван Занев - град София

shaka zulu

  • Новодошъл
  • *****
  • Публикации: 2
    • Профил
продължение
« Отговор #10 -: Декември 30, 2007, 03:59:38 pm »
Случайно попаднах на тази статия и от известно време следя форума .За жалост тази статия няма продължение.Даже се регнах за да си напиша мнението -да нее анонимно.Щесе радвам ако продължите с обясненията защото представляват интерес за мен, предполагам и за другите.

DarkLordTed

  • Робо-Новак
  • *****
  • Публикации: 33
    • Профил
PIC За начинаещи.
« Отговор #11 -: Май 17, 2008, 03:31:38 am »
Специално напомням на @DataMatrix47, че и ние сме хора и ние искаме да четем :) Предполагам, че просто си забравил, че си почнал темата, затова припомням, че съществува такава тема, а също и хора дето искат да се ограмотят по въпроса.

BuGomix

  • Новодошъл
  • *****
  • Публикации: 7
    • Профил
PIC За начинаещи.
« Отговор #12 -: Ноември 23, 2008, 07:07:03 pm »
Функции на програмна памет, паметта за данни, стека и програмния брояч

Кратко представяне на микроконтролерите:
Работата на микроконтролера е да получава, обработва и предава информация, също така съхранява информацията за изпълнението на даден алгоритъм. Той казва на всички механизми (двигателчета, светодиоди, дисплеи и тн.) кога какво да правят, като получава информация как да управлява тези механизми от програмата заложена в неговата памет.

За да сте наясно с означенията ще ги разясня преди да почна да обяснявам. За да покажем че дадено число е в дадена бройна система ще използвам 2 начина. Единият е с главна буква пред самото число ето така:H-heximal 16, B-binary 2, D-decimal 10. Например числото А1 е в 16бройна система и ще го означаваме така H'A1', числото 100110 е в двоична броина система: B'100110'. Вторият начин е като след числото с малка буква означим бройната система. Напр. A1h, 100110b, 256d.
Под програма се има на предвид инструкции изпълнени по определен ред(алгоритъм)

Как работи МК:
МК изпълнява инструкции, кото са съхранени в паметта му. Всички инструкции се изпълняват за едно и също време, което зависи от самия контролер и най-вече от честотата която ние подаваме. Да приемем че подаваме на контролера честота 4MHz, периода на тази честота ще бъде T=1/F , тоест T=1/4000000Hz T=0,00000025 секунди (250ns), за да получим периода за които ще се изпълни една инструкция трябва да умножим периода на подаваната честота по 4: 250ns * 4 = 1us(микро секунда). От това следва че за 1s МК ще изпълнява 1милион инструкции:shock: . Така се определя и скоростта на процесора, тя се измерва във милиони инструкции за секунда - MIPS. На МК PIC16F84A можем да подаваме честота максимум 20MHz, тоест МК ще изпълнява 5MIPS(има и доста по-бързи)

Елементи на микроконтролерите:
Главните елементи без които не може да работи МК са:
Програмна памет
В програмната памет се записва програмата която ще изпълнява процесора. Представете си я като една страница с редове.

(паметта е долната част на картинката от 0000h до 1FFFh, а отгоре са стека и програмния брояч PC- program counter. Нас ни интересува само бялото поле от 0000h до 3FFh)
Всеки ред(дума) се състои от 14 бита. Един бит може да е 1 или 0. Информацията, която може да се съхранява в 1 ред(дума) може да изглежда например така: 00011101001100
Всеки дума си има адрес, които представлява шестнадесетично число.
Например първия ред има адрес H'0000'(относно това H прочети по-горе). В един ред може да се съхранява една инструкция. На картинката са показани 2 специални вектора(думи, редове). Те са със адрес 000h и 0004h, във тях ще се съхраняват инструкциите, които ще се изпълнят при определени ситуации. В нашия МК имаме на разположение 1К(1024) думи. Следователно нашите програми може да са дълги максимум 1024 инструкции. Както казах всяка дума си има адрес, като на последната адреса е : 3FFh, а например на 20 адреса е : 14h.

Съвместна работа на програмния брояч, стека и програмната памет.
Процесора изпълнява по 1 инструкция едновременно, тоест не може да изпълнява по 2, именно ПБ казва на процесора коя да е тази инструкция. Програмния брояч(ПБ) извлича подред всички инструкции, като започне от адрес 0000h. По този начин се постига последователност на програмата. Тази последователност може да бъде разкъсана чрез определени инструкции. Това става чрез стека. Да приемем че на адрес 0010h има инструкция CALL H'00A0', това означава че трябва да се изпълни инструкция на адрес 00A0h, следователно в ПБ трябва да се извлече инструкцията съхранявана на адрес 00A0h. В това няма проблем, но преди да заредим инструкцията на въпросния адрес трябва да запишем някъде докъде е стигнало изпълнението на програмата преди да сме извикали инструкция CALL H'00A0', за да не се получава прекъсване на програмата. Адреса точно след инструкция CALL H'00A0' трябва да бъде записан в стека, зада може след това да се върнем на него. В нашия случай стека може да съхранява до 8 такива адреса. Това означава че ще можем да правим 8 прекъсвания на текущата програма и после да се връщаме във всяка предишна докато не стигнем до началната. Ако сега не ви се е изяснила работата на стека при описанието на инструкциите ще я разберете.

Памет за данни(RAM)
В Паметта за данни се съхраняват стойности, необходими за изпълнението на програмата(променливи). В PIC16F84A тази памет е реализирана в 2 банки(банка0 и банка1)

Представете си отново листа. Този път са 2 листа(2 банки). При тях всеки ред е един регистър от 8 бита(1байт) 8 битова дума, докато при програмната памет беше 14 битова дума. Тези регистри се адресират по същия начин, като думите от програмната памет, като тук трябва преди да се обърнем към даден адрес да посочим в коя от двете банки се намира нашия регистър(на картинката не е точно така, по-нататък ще разберете). За да конфигурираме нашия контролер да работи както ние искаме трябва някъде да съхраняваме нашите настройки, това може да е например дали даден извод да е вход или изход. Нашите настройки и друга важна информация за работата на МК се съхранява в специални регистри, които се намират в паметта за данни. Това са регистрите с адреси 00h - 0Ch и в двете банки, някои от тях са STATUS, PORTA, TRISA(вижтеги на картинката). Тези специални регистри се означават с SFR, а останалите достъпни за потребителя - регистри с  общо предназначение или GPR. В нашия МК имаме 80 регистъра, 12 от кото са резервирани за SFR. Останалите 68 регистъра(от 0Ch до 4Fh) са на разположение за потребителя. В тях той може да съхранява различни стойности, кото са нужни за функционирането на програмата. Относно адресирането. Когато се обръщаме към SFR регистър трябва преди да извлечем информацията от адреса да посочим в коя банка е регистъра. Например ако преди сме работили с банка 1 и без да сме избрали банка 0, ако се обърнем към регистър PORTA, ще получим съобщение за грешка. По-нататък ще обясня функцията на всички SFR регистрите.
Но паметта за данни има един недостатък. За разлика от програмната памет паметта за данни е енергозависима, тоест когато МК не работи информацията съхранявана в паметта се изтрива. Затова трябва всеки път преди да започне изпълнението на главната програма трябва да конфигурираме МК. Ако се нуждаем от някаква информация, която да е достъпна винаги, можем да използваме енергонезависимата памет EEPROM. За нея и останалите неща по-нататък в темата.

DataMatrix

  • Заклет Роботостроител
  • *****
  • Публикации: 308
    • Профил
    • http://datamatrix-bg.net/
...EEPROM
« Отговор #13 -: Ноември 24, 2008, 08:43:52 pm »
EEPROM, известна още като E-квадрат-PROM е вид енергонезависима памет, удобна за съхраняване на малки обеми информация, като данни за калибриране на устройство, настройки или съхраняване на работни параметри за DEBUGGING (изкосуряване) на устройството. EEPROM означава Electrically Erasable Programmable Read-Only Memory (Електрически Заличаема Програмируема Памет за четене (read-only)). EEPROM паметите са базирани на масиви от мосфет транзистрори свързани по метода "плаващ портал" (floating gate). Но как може да се съхранява информация в транзистор така, че да не се загуби информацията като спрем тока?! В същност не е толкова сложно: тези транзистори са изключително малки и съответно загубите им са много малки. Този масив може да се представи като най-обикновенно сито за брашно или ситна мрежа за комари- напръскайте я(го) с вода и на малките дупчици се задържа вода. Естестенно, ако оставим ситото по-дълко навън, то изсъхва. Същото се случва и с EEPROM паметите, но за доста по-дълго време.
EEPROM технологията е изобретена от Джордж Перлегос през 1983.
Отначало EEPROM чиповете са имали един основен недостатък - било е нужно по-високо напрежение (по-високо от това на което оперират контролерите и другите елементи в устройството), заради което е било нужно да се поставят драйвери, чрез които се е програмирал чипа с памет.
EEPROM паметите най-често поддържат 2 типа комуникация: сериина и паралелна. При сериината данните се подават бит след бит по един и същи кабел, като един байт (8 бита) се прехвърля за 8 предавания; паралелната комуникация е по-бърза, защото по една 8-битова шина един байт минава за 1 предаване, но за сметка на което са ни нужни цели 8 проводника за трансвер. В момента по-разпространена е сериината комуникация посредством I2C протокол, за който ще обясня друг път.
Димитър Бояджиев, гр. София

hunter

  • Направо Робот! :)
  • *****
  • Публикации: 638
    • Профил
PIC За начинаещи.
« Отговор #14 -: Февруари 16, 2009, 07:02:18 pm »
Моля да се продължи темата ако е възможно, и също тъка да се засегне в нея PIC16F877 и серията 18F пак ако е възможно :)
Цвятко Цветков/ Бургас

http://www.youtube.com/watch?v=I1y67hzRWQY&feature=related