Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Для начинающих (http://zx-pk.ru/forumdisplay.php?f=43)
-   -   PIC-микроконтроллеры, изучение, и всё что с ними связано. (http://zx-pk.ru/showthread.php?t=22761)

Viktor2312 27th February 2014 22:57

Quote:

Originally Posted by krotan (Post 679080)
А чё обязательно си, он бейсик знает, так пусть на бейсике и программирует. Все равно, хоть с си, хоть с бейсика на выходе практически один и тот же код будет. Если надо какие-то участки кода оптимизировать, ассемблерные вставки допускаются...

Мне ближе и роднее Ассемблер, как-то более понятен для меня, поэтому остановлюсь я на нём, нужно всё, что учил раньше вспомнить.

krotan 27th February 2014 23:28

Quote:

Originally Posted by Viktor2312 (Post 680432)
Мне ближе и роднее Ассемблер...

ассемблер pic радикально отличается от ассемблера z80 для спека, гарвардская архитектура, risc-процессор, 3-4 вида памяти, в которые отображаются регистры, для программирования на нём придётся вникать в особенности архитектуры pic, тем более pic-ов очень много всяко-разно и архитектура у них-большой зоопарк. С высот си, бейсика или форта как-то проще с этим совладать...

dosikus 27th February 2014 23:37

И ничего сложного там нет . Все грабли уже обсосаны давным-давно.
Применительно к Base и Midle range : банки, страницы, RMW .

Viktor2312 27th February 2014 23:55

Quote:

Originally Posted by krotan (Post 680456)
ассемблер pic радикально отличается от ассемблера z80 для спека, гарвардская архитектура, risc-процессор, 3-4 вида памяти, в которые отображаются регистры, для программирования на нём придётся вникать в особенности архитектуры pic, тем более pic-ов очень много всяко-разно и архитектура у них-большой зоопарк. С высот си, бейсика или форта как-то проще с этим совладать...

Я уже вник, ещё когда в первый раз начал изучать, сейчас просто нужно немного всё вспомнить. И переходить к практике, на выходных наверное дочитаю теорию и начну что нибудь писать, чтобы светодиодами помигать для разминки.

krotan 28th February 2014 00:26

Quote:

Originally Posted by dosikus (Post 680465)
И ничего сложного там нет . Все грабли уже обсосаны давным-давно.

Посоветуйте, пожалуйста, где почитать? Только не посылайте меня на 6 букв (google), пожалуйста. Там информации очень много, рыться неохота, если знаете что из этого стоит читать - скажите...

Viktor2312 28th February 2014 00:33

И начну я пожалуй с самого простого микроконтроллера, на мой взгляд PIC16F84. Я его считаю, как бы отправной точкой, поняв его можно и более сложные изучать.

Вот и datasheet на него скачал: datasheet на PIC16F84, там на стр.8 есть прекрасная табличка, как в нём банки расположены, всего два банка Банк0 и Банк1, и описание слева как переключать 5-й бит регистра STATUS переключает банки 0 - нулевой банк, 1 - первый банк. Как-то проще всё же в ассемблере, открываешь datasheet хоть и английский, а я с ним совсем не дружу без переводчиков, но даже из картинок становится понятно, что да как.

dosikus 28th February 2014 01:17

Code:

banksel TRISA
clrf  TRISA


Viktor2312 28th February 2014 01:20

Quote:

Originally Posted by krotan (Post 680492)
Посоветуйте, пожалуйста, где почитать?

Сходи в раздел "Техническая литература", в теме "Техническая литература, отечественные ЭВМ, разное" начиная примерно со страницы 22, с поста 214, выложил кучу книжек по PIC микроконтроллерам, может что-то понравится.

dosikus 28th February 2014 01:22

krotan, http://www.pic24.ru/doku.php/osa/art...asm_formatting
И уже приводил ссылку , уроки - http://www.gooligum.com.au/tutorials.html

Viktor2312 28th February 2014 01:32

Quote:

Originally Posted by dosikus (Post 680520)
banksel TRISA clrf TRISA

А это вы к чему написали? Понятно сменили банк на 1й, так как регистр TRISA находится в первом банке, после чего сбросили все его биты в 00h, а Z установился в 1.

psb 28th February 2014 02:52

Viktor2312, купи ардуину, не мучайся!

krotan 28th February 2014 03:16

Quote:

Originally Posted by psb (Post 680574)
Viktor2312, купи ардуину, не мучайся!

Ага! А вместо Спека купи РС и не мучайся:smile:
Quote:

Originally Posted by Viktor2312 (Post 680497)
PIC16F84. Я его считаю, как бы отправной точкой, поняв его можно и более сложные изучать.

Думаю, это неправильно, он не самый простой для изучения. Главное, устарел - если его ещё не сняли с производства, то скоро снимут.
Есть достойные альтернативы, такие же простые, но с б'ольшими возможностями и производительностью, дешевле и более доступные в продаже.
Например PIC16F628A

psb 28th February 2014 04:28

Quote:

Originally Posted by krotan (Post 680579)
Ага! А вместо Спека купи РС и не мучайся

некорректное сравнение. это вместо пентагона купи пентеву.

Quote:

Originally Posted by krotan (Post 680579)
Есть достойные альтернативы, такие же простые, но с б'ольшими возможностями и производительностью, дешевле и более доступные в продаже.

например стм32ф0.

krotan 28th February 2014 04:52

Quote:

Originally Posted by psb (Post 680574)
купи ардуину, не мучайся!

Поясню. Допустим, ТС купит ардуину и сделает на ней, к примеру, контроллер PS2 клавиатуры. Кому это надо? Много найдётся желающих это повторить? Впустую потраченное время и деньги.
Если ТС вместо этого сделает его на ПИКе, то принесёт огромную пользу себе и людям!

Viktor2312 28th February 2014 05:47

Quote:

Originally Posted by psb (Post 680574)
Viktor2312, купи ардуину, не мучайся!

А я и не мучаюсь, я занимаюсь саморазвитием.


Quote:

Originally Posted by krotan (Post 680579)
Думаю, это неправильно, он не самый простой для изучения.

Может и не самый простой, но на мой взгляд "золотая середина".

Quote:

Originally Posted by krotan (Post 680579)
Главное, устарел - если его ещё не сняли с производства, то скоро снимут.

Это не важно, так как я его изучать собираюсь, а не осваивать на его основе многомиллионные производства каких-то изделий. Внутреннее устройство последующих микроконтроллеров не сильно от него отличается.

Quote:

Originally Posted by krotan (Post 680579)
Есть достойные альтернативы, такие же простые, но с б'ольшими возможностями и производительностью, дешевле и более доступные в продаже.

Не считаю, что 50...100 руб. за микроконтроллер это дорого, вполне приемлемая цена, для изучения и проведения экспериментов, вполне хватит 10 шт., это 1000 руб. уж как нибудь, где нибудь найду 1000 руб. для экспериментов. К тому же парочка лежит из старых запасов.
С достоваемостью проблем не наблюдал пока, можно заказать хоть 100, хоть 1000 штук, нет проблем с их доступностью, даже у нас в магазине они есть в наличии.
Quote:

Originally Posted by krotan (Post 680579)
Например PIC16F628A

Хороший микроконтроллер, он следующий на изучении будет, и после освоения PIC16F84A, думаю на него у меня уйдёт времени не более 1...2 недель, чтобы разобраться в тех дополнениях которые в него добавили относительно F84 -го.


Quote:

Originally Posted by krotan (Post 680593)
Поясню. Допустим, ТС купит ардуину и сделает на ней, к примеру, контроллер PS2 клавиатуры. Кому это надо? Много найдётся желающих это повторить? Впустую потраченное время и деньги.
Если ТС вместо этого сделает его на ПИКе, то принесёт огромную пользу себе и людям!

Правильно мыслите, для того, чтобы управлять десятью светодиодами, не нужно 12-ти ядерного микропроцессора, с 20-ю терабайтами памяти и ещё кучи наворотов и прибамбасов, которые всё равно при реализации задачи будут простаивать.

dosikus 28th February 2014 12:24

Viktor2312, Не верно ты мыслишь.
Надо взять один из линейки с полным фаршем и пару тройку дешевых но с функционалом нужным тебе .
пЫк 84 это даже не гАвно маонта, это ее хуже .
Если все таки решил на 16ых зависнуть - вот тебе список с дип корпусами ( я бы смд взял)
PIC16F887-I/P
PIC16F1459-I/SO
PIC16F1829-I/SO
PIC16F630-I/P
PIC16F690-I/P
PIC12F683-I/P
Здесь цены самые вкусные http://trt.ru/Stock.php?Manf=3
И крайне обязательно pickit2, или оригинал или клон китайский - но его допиливать придется , но не особо дорого.

---------- Post added at 11:24 ---------- Previous post was at 10:51 ----------

Quote:

Originally Posted by krotan (Post 680593)
Если ТС вместо этого сделает его на ПИКе, то принесёт огромную пользу себе и людям!

Весьма сомнительный аргумент :
Во первых ресурсов на пЫк16 маловато да и дорого, во вторых программатор .
В итоге есть шанс быть посланным людьми. :biggrin:
Идеальный вариант STМ32 в плане стоимости и прошивании, но есть нюансы с ресурсами.

Viktor2312 28th February 2014 13:11

Quote:

Originally Posted by dosikus (Post 680697)
Надо взять один из линейки с полным фаршем и пару тройку дешевых но с функционалом нужным тебе .
пЫк 84 это даже не гАвно маонта, это ее хуже .

Жаль, что наши мысли не совпадают, а я вот так мыслю. На 84-ом уже собирал, как писал выше готовые устройства, всё легко и просто и мне очень понравилось, работали просто отлично. Программирование его также изучал, не могу сказать, что совсем легко, но хоть понятно. Да и нравится он мне, для некоторых конструкций он идеально подходит моих.


Quote:

Originally Posted by dosikus (Post 680697)
Если все таки решил на 16ых зависнуть - вот тебе список с дип корпусами ( я бы смд взял)
PIC16F887-I/P
PIC16F1459-I/SO
PIC16F1829-I/SO
PIC16F630-I/P
PIC16F690-I/P
PIC12F683-I/P
Здесь цены самые вкусные http://trt.ru/Stock.php?Manf=3
И крайне обязательно pickit2, или оригинал или клон китайский - но его допиливать придется , но не особо дорого.

Список хороший и вполне меня устраивает, но вот с SMD связываться опять таки не хочется, с DIP -ом у меня ну вообще никаких проблем нет, а при монтаже ещё и удовольствие получаю, а от SMD только плююсь, не нравится мне поверхностный монтаж.
Можно конечно, например параллельно изучать два микроконтроллера, например, для себя, для души 84-й как один в списке: и пару тройку дешевых но с функционалом нужным тебе, но кто меня этому навороченному: с полным фаршем будет обучать или направлять в обучении? это вопрос, так как сам я такой навороченный и за год не осилю.

И всё же интересно, если выбирать из этого списка, но только в DIP, навороченный, то какой лучше? Раз уж выбирать самый нафаршированный.


Quote:

Originally Posted by dosikus (Post 680697)
И крайне обязательно pickit2, или оригинал или клон китайский - но его допиливать придется , но не особо дорого.

Это сделаю обязательно, но чуть попозже.

И вы там выше написали две команды, над регистром TRISA, к чему? Я так и не понял, может объясните, что имели в виду и для чего?

dosikus 28th February 2014 13:36

Quote:

Originally Posted by Viktor2312 (Post 680741)
И вы там выше написали две команды, над регистром TRISA, к чему? Я так и не понял, может объясните, что имели в виду и для чего?

Как пример выбора банка ,только и всего ...

Viktor2312 28th February 2014 14:47

Quote:

Originally Posted by dosikus (Post 680755)
Как пример выбора банка ,только и всего ...

Спасибо, так как я о такой возможности выбора не знал. Теперь знаю, да и в "MPASM как правильно оформлять программы на ассемблере для PIC-микроконтроллеров" сейчас как раз прочитал об этой директиве BANKSEL, что лучше её применять, а не вручную устанавливать биты RP0, RP1.

psb 28th February 2014 15:35

Quote:

Originally Posted by krotan (Post 680593)
Поясню. Допустим, ТС купит ардуину и сделает на ней, к примеру, контроллер PS2 клавиатуры. Кому это надо? Много найдётся желающих это повторить? Впустую потраченное время и деньги.
Если ТС вместо этого сделает его на ПИКе, то принесёт огромную пользу себе и людям!

че-то ваще фигня какая-то... на ардуйне и сделать и повторить проще, для того она и придумана. кто хочет попаять - просто пает себе такую же, но свою плату и нет проблем. надоела ардуино-иде - пиши под то же хоть на асме. идеальный вариант для играния. стм-дискавери тоже оч хорошо для играния.

BYTEMAN 28th February 2014 15:42

Quote:

Originally Posted by psb (Post 680849)
стм-дискавери тоже оч хорошо для играния.

у нас в институте когда делаем какое штучное производство и впадлу/дорого разводить плату, то просто шлёпаем туды STM-овский кит (либо дискавери, либо, что чаще, TE-STM32Fx07) :)

psb 28th February 2014 17:23

Quote:

Originally Posted by BYTEMAN (Post 680861)
то просто шлёпаем туды STM-овский кит

для того оно и придумано. но не всем нужен легкий путь, некоторые любят моск ... помучать:)

Starchenko 28th February 2014 23:37

А будет ли, на фоне изучения, спроектировано какое нибудь устройство ? :) помимо светодиодной мигалки

Viktor2312 28th February 2014 23:49

Quote:

Originally Posted by Starchenko (Post 681183)
А будет ли, на фоне изучения, спроектировано какое нибудь устройство ? помимо светодиодной мигалки

Зависит от того, получится ли выучить на более или менее достойном уровне. Если получится, то будет, хотя уже почти всё что только можно было из стандартного, давно разработано, я имею в виду вольтметры, частотометры, RLC-метры и так далее.

Quote:

Originally Posted by Starchenko (Post 681183)
А будет ли, на фоне изучения, спроектировано какое нибудь устройство ?

Предложите свой вариант устройства, или идею, какое устройство можно было бы реализовать.

Я для начала, после всяких мигалок и свистелок, хотел попробовать реализовать для себя, коммутатор входов для УМЗЧ на PIC16F84A, для пробы.

Starchenko 1st March 2014 00:08

Quote:

Originally Posted by Viktor2312 (Post 681190)
коммутатор входов для УМЗЧ на PIC16F84A, для пробы.

Хороший вариант :)

Tronix 1st March 2014 09:40

А я с i8035 заморочился :) А вы говорите пики, древность... )))

Viktor2312 1st March 2014 12:44

Quote:

Originally Posted by Tronix (Post 681308)
А я с i8035 заморочился А вы говорите пики, древность... )))

Я не знаю кто говорит, что пики древность, видно этот человек не разбирается, Пики постоянно производятся, выпускаются новые серии и модели.

Они говорят, что я выбрал для изучения слишком древний ПИК, А я вот не понимаю, зачем мне брать супер навороченный, в котором полно всевозможных встроенных модулей и при этом в 95% устройств, которые я возможно разработаю, 90% этих встроенных модулей применяться не будет.

PIC-микроконтроллеры - это настоящее, и будущее.

dosikus 1st March 2014 13:33

Quote:

Originally Posted by Viktor2312 (Post 681339)
А я вот не понимаю, зачем мне брать супер навороченный, в котором полно всевозможных встроенных модулей и при этом в 95% устройств, которые я возможно разработаю, 90% этих встроенных модулей применяться не будет.

Когда пройдешь этап "поиграться" и захочется сделать в самом деле что-то стоящее, окажется что одним ногодрыгом сего не добиться . Приспичит использовать аппаратные возможности коих в пЫк84 просто нет.
К примеру i2c , SPI,ADC,UART ...

Quote:

PIC-микроконтроллеры - это настоящее, и будущее.
- ты опоздал лет этак на 10 ...

Starchenko 1st March 2014 14:43

Все мы куда-то не успеваем :)

Viktor2312 1st March 2014 14:48

Quote:

Originally Posted by dosikus (Post 681358)
Когда пройдешь этап "поиграться" и захочется сделать в самом деле что-то стоящее, окажется что одним ногодрыгом сего не добиться . Приспичит использовать аппаратные возможности коих в пЫк84 просто нет.
К примеру i2c , SPI,ADC,UART ...

А я и не собираюсь если мне потребуется i2c , SPI,ADC,UART использовать для этого 84-й. Хотя i2C на 84 реализуется, но да ладно.

Quote:

Originally Posted by dosikus (Post 681358)
- ты опоздал лет этак на 10 ...


То есть современные новые пики, которые будут выпускаться в 2014 году, это старые пики, железная логика.


И вообще превратили тему из изучения PIC микроконтроллеров во флейм.
Если кто-то хочет изучать, разбираться, милости просим в эту тему, а если пофлеймить и поспорить, идите во флейм. Семь страниц ни о чём. Нет взять и написать маленькую статеечку, например "Как пользоваться MPLAB v8.92 для начинающих", нет же проще пофлеймить, думать не нужно утруждать себя тоже.

dosikus 1st March 2014 15:07

Quote:

Originally Posted by Viktor2312 (Post 681381)
Нет взять и написать маленькую статеечку, например "Как пользоваться MPLAB v8.92 для начинающих", нет же проще пофлеймить, думать не нужно утруждать себя тоже.

А что толку?
Я дал ссылку на уроки , где в том числе и мЫПЫлаб расписана ...
http://www.gooligum.com.au/tutorials.html
http://www.gooligum.com.au/tutorials...C_Base_A_1.pdf

Tronix 1st March 2014 15:22

Quote:

Originally Posted by dosikus (Post 681358)
окажется что одним ногодрыгом сего не добиться . Приспичит использовать аппаратные возможности коих в пЫк84 просто нет.
К примеру i2c , SPI,ADC,UART ...

- ты опоздал лет этак на 10 ...

Это есть неправда. i2c, SPI, UART влегкую реализуются софтово на младших моделях, к примеру на восьминогой pic12f675. Правда ADC у нее аппаратный, да. И что значит старый? Мы вообще на каком сайте то? Z80 чтоле современный на пару с ВГ75 или ВГ93? А пик до сих пор выпускается, значит нифига он не устаревший. Просто кто-то не умеет его готовить скорее всего.

Не, я конечно понимаю, чем рыть суть, можно взять stm32 о пицот ногах на несколько гигагерц, поднять на нем линупс, запулить туда питон и на нем моргать лампочкой. Да. А можно то же самое сделать на пике, а в некоторых случаях на 2-3 микросхемах логики. Только тут уже требуется немного подумать.

Viktor2312 1st March 2014 15:52

Quote:

Originally Posted by dosikus (Post 681391)
http://www.gooligum.com.au/tutorials.html

Там всё на английском, я его не понимаю вообще. Учить уже поздно, поэтому буду сам потихоньку как нибудь разбираться по той литературе, что есть на русском.

Кстати вспомнился Карабельников, нашёл, всё описывает максимально понятно, поэтому его я советую начинающим, но только ни как истина в последней инстанции, если что-то не понятно, то можно его почитать, понимание приходит сразу. Хотя он очень мутарно, долго и нудно пишет, военщина, что с него взять.

Quote:

Originally Posted by dosikus (Post 681391)
http://www.gooligum.com.au/tutorials...C_Base_A_1.pdf

Вторая ссылка, тоже самое, что на китайском она будет написано, что на английском, мне лично всё равно, я языками не владею, кроме русского.

Продолжу изучать сам потихоньку...

---------- Post added at 15:52 ---------- Previous post was at 15:46 ----------

Чтобы нормальный русский человек нормально воспринимал информацию, и хоть что-то в ней понимал, она должна быть представлена на родном языке в большей своей части, а иначе это пустая трата времени.
Вот например микроконтроллер PIC16F690, чтобы понять, что в нём есть и насколько он отличается от PIC16F84A нужно иметь нормальное описание его внутреннего устройства, на русском языке, а не на тарабарском. Например такое: PIC16F631/6xx/690_rus.

dosikus 1st March 2014 16:04

Quote:

Originally Posted by Tronix (Post 681397)
Просто кто-то не умеет его готовить скорее всего.
....
Только тут уже требуется немного подумать.

Ну да, 20 лет пЫководства и куча работающих девайсов, для вас это мелочи - "не умею готовить"
И здесь действительно "требуется немного подумать" - у нас разные уровни и точки зрения.
Я смотрю на пЫк , как на пройденный этап , где уже нечего ловить даже в контексте DIY.
Вы же, как восторженные новички, только еще примеряющие шкурку пЫк...

Viktor2312, осмелюсь напоследок, так как удаляюсь, ибо действительно не вижу смысла помогать тому кто этого не хочет и решил самостоятельно собрать всевозможные грабли, уже пройденные другими, дать пару советов.

Карабельников это путь в некуда, бесполезная трата времени, так же как и многие другие "писатели" .
Намного полезней - да же с переводчиком , изучить тот материал что дал я.

Всего наилучшего ...

krotan 1st March 2014 18:48

Quote:

Originally Posted by Viktor2312 (Post 681381)
Нет взять и написать маленькую статеечку, например "Как пользоваться MPLAB v8.92 для начинающих"...

MPLAB IDE
MPASM
pic16
pic16f62x
pic16f87x
Дешёвые pic16-микропроцессоры в dip-корпусе с интерфейсами и без в порядке возрастания количества i/o:
PIC16F54-I/P 69 руб
PIC16F84A-04/P 100 руб
PIC16F628A-I/P 71 руб USART
PIC16F690-I/P 100 руб SPI/I2C/USART
PIC16F818-I/P 99 руб I2C/SPI
PIC16C55-XT/P 89 руб
PIC16C57C-04I/SP 93 руб
PIC16F876A-I/SP 146 руб I2C/SPI/USART
PIC16C73B-04I/SP 62 руб I2C/SPI
PIC16F883-I/SP 82 руб I2C/SPI
(цены по прайсу терраэлектроники, не сочтите за рекламу)

Viktor2312 3rd March 2014 00:41

Для тех кто хочет изучать семейство PIC24 добавлю эту книжечку сюда, сам попробовал, всё отлично получается.

Магда Ю. С. Микроконтроллеры PIC. Архитектура и программирование. (2009г.) Скачать

http://img-fotki.yandex.ru/get/6727/...ebba8611_M.jpg

В книге рассматривается широкий круг вопросов, связанных с практическим применением популярных 16-битных микроконтроллеров PIC24 в системах обработки данных и управления оборудованием. Приводятся многочисленные примеры программирования несложных аппаратно-программных систем обработки аналоговой и цифровой информации с применением периферийных модулей микроконтроллеров PIC24F. В контексте разработанных примеров приводятся необходимые сведения из теории, что способствует лучшему пониманию материала книги. Все приведенные в книге аппаратно-программные проекты разработаны и проверены на отладочном модуле Explorer 16 Development Board фирмы Microchip и могут служить основой для создания собственных проектов.

Viktor2312 3rd March 2014 14:56

Теория_001
 
Теория_001

Итак, давайте не будем тянуть кота за яйца, а займёмся вплотную и серьёзно изучением PIC микроконтроллеров среднего семейства.
Основной упор, я буду делать на микроконтроллер PIC16F84A, так как с точки зрения программирования все устройства с одним и тем же ядром полностью идентичны. Те небольшие аппаратные различия, которые имеются, не влияют на общую картину, они заключены в большем объёме поддерживаемой памяти или в построении схем сброса. Отличия более продвинутых моделей заключаются в дополнительных возможностях ввода/вывода, например во включении, в состав микроконтроллера аналого-цифрового преобразователя или аналогова компаратора и 16 – битного таймера/счётчика, однако существует много идентичных модулей.

Память

Рассмотрим память нашего микроконтроллера. Вся память нашего микроконтроллера разделена на память программ, и память данных. И является энергонезависимой, то есть записанная информация сохраняется и после отключения питания. Соответственно программа, которая исполняется при работе микроконтроллера, записывается в память программ. Для микроконтроллера PIC16F84A, например, объём памяти программ составляет 1024 слова, обратите внимание, именно слова, а не байта. Так как разрядность памяти программ составляет 14 бит. Каждая ячейка памяти программ может содержать только одну команду, соответственно максимальное количество команд, которое может содержаться в программе 1024, для микроконтроллера PIC16F84A. Каждая ячейка имеет свой адрес, выставляемый счётчиком команд на шину адреса памяти программ. Условный внешний вид памяти программ представлен на рис. 1.
Память данных.
В отличие от памяти программ, память данных состоит из ячеек, которые содержат 1 байт (восемь бит) данных. Её ещё называют EEPROM память данных. Байты, хранящиеся в памяти данных, предназначены для их считывания в стандартные 8 – битные регистры. Данные из этих регистров также могут быть записаны в EEPROM память данных, то есть, может быть организован обмен данными между памятью данных и регистрами. Шина адреса и данных, памяти данных совершенно независимы от одноимённых шин памяти программ, что позволяет одновременно обращаться к обеим областям памяти. Условный внешний вид памяти программ представлен на рис. 2.


Память данных нашего микроконтроллера можно представить в виде картотечного шкафа, который в данном случае имеет два отделения (банка). Внутри каждого отделения имеется некоторое количество папок, или файлов, так же можно сказать регистров, каждый из которых содержит восемь битов данных.

Вот, пожалуй, и всё, что нам нужно знать о памяти на первом этапе, хотя сразу предупрежу, если разбираться более детально, то там всё намного сложнее, но для понимания общей сути и написания программ, на данном этапе этой информации вполне достаточно.
И ещё добавлю, всё, что я пишу, это моё ИМХО, в чем-то я могу и ошибаться, поэтому критика приветствуется.

Viktor2312 3rd March 2014 17:08

Quote:

Originally Posted by vlad (Post 682660)
Надеюсь, что это Вам поможет [1].

Нет, это мне не поможет, особенно книги на английском. Опять начинается переливание из пустого в порожнее.


Quote:

Originally Posted by vlad (Post 682660)
Заниматься копипастом думаю лишнее, достаточно ведь ссылки?

Я читаю 2...3 книги и потом, то что понял формулирую своими словами либо цитатами, если не нравится или вы это всё уже знаете, не читайте. А я буду создавать такой маленький своего рода процесс изучения и думаю начинающим, это поможет.


Quote:

Originally Posted by vlad (Post 682660)
достаточно ведь ссылки?

Идите в раздел техническая литература и читайте, там есть около 10 книг на русском, и якобы там всё супер идеально расписано. Но к сожалению этот весь объём информации сначала осмыслить необходимо.
Я выдаю его так, чтобы я сам потом мог зайти глянуть прочитать и быстро всё понять и осмыслить, если что-то забылось, а не лазить по сотням ссылок.

В общим я продолжу...

Tronix 3rd March 2014 17:47

Продолжайте, с удовольствием читаю.

Viktor2312 3rd March 2014 21:29

Теория_002
 
Продолжим.

Теория_002.

Теперь, когда мы немного ознакомились в общих чертах с памятью нашего микроконтроллера, но ещё не перешли к изучению страшных и ужасных регистров. Нужно немного остановиться на общих вопросах, чтобы прояснить некоторые детали. В Теория_001 упоминался счётчик команд. Поэтому давайте его немного повнимательнее рассмотрим.

Счётчик команд.

Команды обычно располагаются в памяти программ последовательно, а счётчик команд РС является обычным счётным регистром, определяющим место положения текущей команды. Этот суммирующий счётчик иногда называют указателем команд. Так, например, если команда простая, то счётчик просто инкрементируется (инкремент – увеличение на единицу), если же и далее в программе не встречаются команды условного или безусловного перехода, то РС так и будет в дальнейшем после исполнения очередной команды инкрементироваться, увеличивая своё содержимое на единицу. И таким образом, переберёт все ячейки памяти последовательно. Но программы, не имеющие условных или безусловных переходов или обращений к подпрограммам, встречаются крайне редко.
Поскольку счётчик команд подключён через внутреннюю шину данных, то можно использовать АЛУ для управления счётчиком команд и изменения предопределённой последовательности исполнения команд.
Счётчик команд имеет разрядность 13 бит и состоит из двух регистров. Называются они PCL младший и PCH старший. В младшем регистре PCL находятся младшие 8 битов адреса команды, а в старшем регистре PCH находятся остальные 5 битов адреса. Старшие 3 бита регистра PCH не используются. Регистр PCL находится по адресу 02h и на него можно воздействовать непосредственно, а воздействие на содержимое регистра PCH происходит косвенным образом, через регистр PCLATH находящийся по адресу 0Ah. Для простоты рассмотрения, можно представлять РС как целый 13 битный регистр и что при выполнении очередной команды происходит его инкремент, то есть после переполнения PCL происходит инкремент PCH, но за исключением процедуры вычисляемого перехода, которой сейчас мы не будем касаться.
Таким образом, как мы видим волей не волей, но мы коснулись регистров специального назначения РСН. Вот те два регистра, которых мы коснулись из всего их разнообразия:

PCL (02h)
Регистр PCL расположенный по адресу 02h, физически является младшим байтом счётчика команд. Этот регистр доступен как для чтения, так и для записи.

PCLATH (0Ah)
Регистр PCLATH расположенный по адресу 0Ah, является регистром-защёлкой для хранения данных, которые должны быть загружены в старший байт счётчика команд. Регистр PCLATH используется только в качестве буфера, поэтому значение, считанное из него, не будет соответствовать текущему состоянию старшего байта счётчика команд.

Так как старший байт счётчика команд имеет только 5 бит использующихся, то соответственно не сложно определить и максимальный объём памяти программ, к которому может адресоваться РС, это 8192 слова. Но не во всех микроконтроллерах используются все 5 бит. Например, в микроконтроллере PIC16F84A используется 10 бит, и как уже говорилось выше, его объём памяти составляет 1024 слова. А, например, в микроконтроллере PIC16F877 задействованы все 13 бит и соответственно памятьпрограмм имеет объём 8192 слова. Или же PIC16F628 в нём задействовано 11 бит и объём памяти программ его составляет 2048 слов.

Теперь давайте немного подробнее рассмотрим случай, когда нам непосредственно из программы необходимо изменить содержимое счётчика команд РС с наглядными рисунками, для большего понимания.

http://img-fotki.yandex.ru/get/9829/...72484e0_XL.jpg
Теория_002_рис_001

Для непосредственного изменения содержимого РС, напрямую доступен младший байт через регистр специального назначения PCL. А для изменения всех 13 бит требуется дополнительный регистр. Регистр-защёлка старшего байта PCLATH не является в действительности старшим байтом РС, а служит в качестве буфера. Изменение содержимого регистра PCLATH не влияет на старший байт счётчика команд, однако одновременно с записью в регистр PCL новое значение PCLATH загружается в старший байт 13-битного счётчика команд. Таким образом, все 13 бит счётчика команд обновляются одновременно.
Осталось только добавить, что при подаче питания на микроконтроллер и его сбросе счётчик команд очищается. То есть, первая выполняемая команда всегда находится по адресу 0000h. Этот адрес называется вектором сброса.


All times are GMT +4. The time now is 00:04.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.