Форум » Для начинающих. » чем больше читаю самоучитель тем больше возникает вопросов » Ответить

чем больше читаю самоучитель тем больше возникает вопросов

олег: сразу говорю что к ассемблеру и языку СИ я никакого отношения не имел.но когда_то на синклере немного програмировал на бейсике.это и все мои знания. решил разобраться с ПИКами в принципе с командами,регистрами и т.д. разобраться можно.НО я никак не могу понять как программу привязывают к саммому контролеру,даже толком не могу объяснить т.к.сам этого немного не понимаю. вот к примеру программа: ;*********************************************************************************************** ; Multi.asm ; Автоколебательный мультивибратор. ; PIC16F84A Кварц 4 мГц. ;=============================================================================================== LIST p=16F84A ; Установка типа микроконтроллера. __CONFIG 03FF1H ; Бит защиты выключен, WDT выключен, ; стандартный XT - генератор. ;=============================================================================================== ; Определение положения регистров специального назначения. ;=============================================================================================== Status equ 03h ; Регистр выбора банка. TrisB equ 06h ; Регистр выбора направления работы выводов порта В. PortB equ 06h ; Регистр управления защелками порта В. __CONFIG 03FF1H ; что такое __CONFIG я понял,а откуда и из чего береться 03FF1H вот этого я не понял. Status equ 03h ; Регистр выбора банка. TrisB equ 06h ; Регистр выбора направления работы выводов порта В. PortB equ 06h 03h,06h почему присваивают именно эти значения? или их берут от фонаря? movlw .0 ; Записать константу 0 в аккумулятор (W). вот еще .0 это начало отсчета понятно,а что такое аккумулятор W в самоучителе я ясного ответа что-то не нашел.это память или в ПИКе какое-то устройство? и почему надо именно через него вносить все константы. дальше идем movlw .32 ; Записать в регистр W константу .32 откуда взялась константа.32?почему именно .32? movlw .30 ; Записать в регистр W константу .30 а теперь она стала .30,откуда взялась .30 что это в десятичной системе это я понял. .30 чего? микросекунд, секунд,минут,колебаний ,полупериодов,или еще чего? ну и куча других вопросов хотябы разобраться с этой прогой ? может я и тупой, но такое придумать нормальный человек точно не сможет. у нас в городе этого спросить не у кого. поэтому своими вопросами обращаюсь к вам.

Ответов - 40

Алексей: олег пишет: __CONFIG 03FF1H ; что такое __CONFIG я понял,а откуда и из чего береться 03FF1H вот этого я не понял. Откройте даташит на странице биты конфигурации и все поймете, например на контроллер 16F628A на русском. олег пишет: 03h,06h почему присваивают именно эти значения? или их берут от фонаря? Эти регистры берут не от фонаря, это их физический адрес, он кстати указан даже в самом MPLAB меню вид\файл регистер. Это регистры специального назначения. Пользовательские регистры которые нужны вам в программе можете задавать любой, лишь бы только это не был адрес регистров спецначзначения олег пишет: movlw .0 ; Записать константу 0 в аккумулятор (W). Просто это некий виртуальный или м б. физический регистр, который просто необходим для пересылки числа из одного регистра в другой. Зачем это нужно? Пожалуй знают только сами микрочиповцы. Все остальные вопросы, все зависит от конкретной программы и от замысла программиста. Скорее всего это величина задержки, но не обязательно это число в милисекундах, в машинных циклах, все зависит от конкретной программы. В самоучителе этот вопрос рассмотрен до нельзя. Лучше еще раз перечитать, лучше объяснить по моему просто нельзя.

Пётр: олег пишет: что такое аккумулятор W Это специальный временный регистр. олег пишет: movlw .32 ; Записать в регистр W константу .32 откуда взялась константа.32?почему именно .32? Команда movlw это запись константы в аккумулятор (регистр W), в данном случае "32" это константа, она может быть любая в пределах 0...255 в десятичном формате или 00...0FF в шестнадцатиричном формате и зависит от конкретного случая. олег пишет: такое придумать нормальный человек точно не сможет. Но почему-же, просто Вы пока ещё не совсем всё поняли, на начальном этапе обучения, такое бывает. А какой раздел самоучителя Вы сейчас читаете?

RW1ZK: олег пишет: movlw .32 ; Записать в регистр W константу .32 откуда взялась константа.32?почему именно .32? В данном случае программист сам решает, какую константу записать в аккумулятор w(это может быть любое число, как выше указал Пётр, от 0 до 255). Чтобы Вам было понятней: Скажем так, что по замыслу вашей программы в каких-либо 2 регистра (Temp и Temp1) Вам необходимо загрузить два числа для дальнейшей работы с ними. Это может быть сложение, умножение и т.д. (не важно). Например в регистр Temp необходимо записать число 32, а врегистр Temp1 число 33. Делается это через аккумулятор w (и только так, другого не дано). movlw .32 ; Загрузить число .32 в регистр w movwf Temp ; Скопировать из регистра w число .32 в регистр Temp movlw .33 ; Загрузить число .33 в регистр w movwf Temp1 ; Скопировать из регистра w число .33 в регистр Temp1 Результат работы вышеуказанного кода: в регистр Temp загружено число 32 в регистр Temp1 загружено число .33. Важное замечание: происходит именно копирование из одного регистра в другой! Т.е. в регистре w (аккумуляторе) останется число 33!


MAZ: Я сильно, извиняюсь, но мне кажется вы не читаете самоучитель, а смотрите сразу на программу, а зря. Считайте, что Вы ничего не знаете, даже, чем отличается 0Х16 от .16 и от D16. Самоучитель научит основам, и с нулевого уровня знаний по программированию,и если конечно есть желание. У меня сын, 14 лет, после прочтения самоучителя, ( раньше не знал, чем триггер отличается от регистра) уже пишет сам простые программы и даже объясняет как они работают. Думаю, это наивысшия оценка труда автора.

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

Evgeny Korabelnikov: Олег, ответы на все заданные Вами вопросы есть в "Самоучителе...". Мало того, по мере его прочтения, они дублируются и "склоняются на все лады". Не получилось с 1-го захода, зайдите на второй (и т.д.), и это не есть какой-то плохой признак, так как такого рода дела "кавалерийским наскоком" не делаются и "попахать" однозначно придется. Для "упертого" человека, не боящегося переработать, это абсолютно нормально. Будет труд, будут и "девиденды". Все остальное - от лукавого. Надеюсь на то, что те объективные трудности, с которыми Вы столкнулись, не поставят крест на Вашем желании, а наоборот, раззадорят.

Alberto: олег пишет: 03h,06h почему присваивают именно эти значения? или их берут от фонаря? Все что ниже это цитаты: Раздел 4. Что такое программа и правила ее составления. Пример создания программы автоколебательного мультивибратора. Директивы. "Обратите внимание на то, что регистры TrisB и PortB "прописаны" директивой EQU по одинаковым адресам (06h). С нулевым банком все понятно: регистр PortB имеет в области оперативной памяти адрес 06h, а вот регистр TrisB (первый банк) вместо адреса 86h прописан все по тому же адресу 06h. В чем дело? А дело в том, что после перехода в 1-й банк, по факту, нумерация адресов регистров специального назначения в нем такая же, как и в нулевом банке. Адреса с восьмеркой проще всего воспринять как некую "заморочку"." олег пишет: а что такое аккумулятор W в самоучителе я ясного ответа что-то не нашел.это память или в ПИКе какое-то устройство? Раздел 2. Что такое микроконтроллер, и как он работает "И, наконец, самый часто используемый регистр - регистр W или его еще называют аккумулятором. Если по простому, то это тот же самый регистр общего назначения, только с определенным названием (в том смысле, что оно заранее определено так же, как и названия регистров специального назначения). Его адрес, в отличие от регистра общего назначения, знать не обязательно и прописывать его адрес не нужно. Стоит только обратиться к регистру W, и адрес автоматически поставится ему в соответствие. Он также является 8-битным и выполняет функцию буферной памяти, обычно, на время одного, двух, трех машинных циклов (а также и более). Наиболее часто он применяется по той простой причине, что большое количество команд ориентировано именно на операции с этим регистром (буква W входит в состав этих команд). Например, чтобы перегрузить данные из одного регистра в другой, сначала данные из регистра-отправителя загружаются в регистр W, а затем из W загружаются в регистр-получатель, так как команды "прямой переправки" байта из одного регистра в другой, в списке команд нет." и т.д. Не хочу перепечатывать все. У меня такая ситуация была до знакомства с сайтом Корабельникова: что берется, зачем берется, ничего не понимал. А потом наткнулся на "Самоучитель" и все пошло. Главное не перескакивать через какие-то куски (мол это я и так знаю), надо просто читать все. Я года два пытался начать работать с МК, книг накупил, по интернету лазил, но ничего более толкового чем "Самоучитель" так и не нашел. Перечитайте все еще раз внимательно и неспеша. Не гонитесь за количеством, один раздел в день (два) - более чем достаточно для начального въезда.

MAZ: и все таки Вы не горячитесь, а почитайте. Спрашиватьхорошо, но обычно не помогают. Лучше разобраться самому. Это 100% важнее, прежде всего для Вас. И удовлетворение от того, что ты сам понял, лучшая награда за труд. А Евгений Александрович постарался, лучше не бывает. Я лично, настраивал себя, ну не тупой же я совсем, перечитавал по десять раз один и тот же урок. И прочкнулось, даже сам себе удивляюсь, пишу сейчас сложную программу, но не возникает проблемм с контроллером, а только с моим алгоритмом. Считаю это нормальным. Это уже начинает попахивать, как это не громко сказано, творчеством. Тяжело, но мне это сильно нравится. Вы не первый, кому тяжело въезжать, но надо немного напречься. .И ОБЯЗАТЕЛЬНО САМОМУ. Первые 20 уроков и спрашивать нечего, уж поверьте.

олег: решил прошить pic программой из самоучителя мультивибратор . казалось бы все просто подал питание, подключил кварц, и ногу 4 MCLR конечно. но не тут то было везде на ножках picа тишина, генерации тоже нет.брал другой pic ,другой кварц.мертво! вычитал в инете кто-то сказал что не все кварцы подходят,не знаю верить или нет. у кого-то может быть было? честно говоря у меня с контролерами одни косяки.что-то они в руку не идут.

Алексей: Для начала проверить биты конфигурации, плюс прямо на ноге MCLR проверить присутствие лог. 1. Кварц то на какую частоту, и значение битов конфигурации?

олег: на ноге MCLR логическая 1 присутствует кварц на 4мгц. ;*********************************************************************************************** ; Multi.asm ; Автоколебательный мультивибратор. ; PIC16F84A Кварц 4 мГц. ;============================================================================================ LIST p=16F84A ; Установка типа микроконтроллера. __CONFIG 03FF1H ; Бит защиты выключен, WDT выключен, ; стандартный XT - генератор. ;============================================================================================

Алексей: Я имел ввиду шили тоже с этими битами, ничего не меняли? Программа рабочая. Считайте его на всякий случай. Кондеры с ног кварца стоят на землю если да то какой? можно попробовать уменьшить или увеличить, должно быть в райное 22 пикофарад, при слишком большой емкости генератор не запустится.

RW1ZK: олег пишет: решил прошить pic Какой программатор и программа? Вы точно уверены, что прошили ПИК?

Evgeny Korabelnikov: Пример из жизни (из моей переписки). Некоторые люди ставили вместо 15пф 15нф. Результат соответствующий - генерации нет.

RW1ZK: Evgeny Korabelnikov пишет: Некоторые люди ставили вместо 15пф 15нф Бывает... После праздников...

олег: контролер прошился точно. емкости подкидывал разные,10пф,15пф,18пф,20пф,22пф,даже без емкостей пробовал,ничего! единственно если пальцем прикоснуться к 16 ноге контролера то появляется генерация и мультивибратор начинает работать. только не стабильно работает со срывами. программу прошивал в том виде в каком она в самоучителе есть, ничего не менял.

RW1ZK: Попробуйте заменить кварц.

олег: кварцев аж 3 штуки подставлял. кварцы любые туда идут, или может какие хитрые надо?

Sergey Roslik: олег пишет: кварцев аж 3 штуки подставлял. кварцы любые туда идут, или может какие хитрые надо? Попробуйте после прошивки Пика считать его конфигурацию.

igor: Олег. Не спеши шить PICи. Ничего хорошего из этого не получится без полного и досконального понимания того что ты в него зашиваешь. Читай внимательно "Самоучитель..." там есть ответы на все твои вопросы. "Журнал мод" можно проглядывать и с середины и через несколько страниц не вникая в суть написанного. "Самоучитель требует знания ранее усвоенного и, без этого обязательного условия движение вперёд невозможно. Ты должен читать программу и представлять себе в уме на каких ногах пика какие сигналы появляются и исчезают по ходу программы.

Evgeny Korabelnikov: Обращаю Ваше внимание на то, что в аппаратной части ПИКов, тактовый генератор это наиболее слабое "звено". Он очень критичен к "экспериментам" над ним, особенно по 16-й ноге. К ней не нужно подключать длинные проводники, стучать по ней пинцетом и т.д., а тем паче делать это при отключенном кварце. Например, я, пытаясь выяснить причину отсутствия такта в своем самом первом PIC16F84A, просто напросто его "запорол". Лиха беда начало. за одного битого двух не битых дают.

Alberto: олег пишет: везде на ножках picа тишина у меня похожее было когда при включении блока питания очень медленно (все относительно) нарастало напряжение и только установка схемы сброса (конденсатор и резистор) спасла. Попробуйте, может причина в этом. И еще был один JDM-программатор который в паре с ICProg устанавливал RC-генератор в независимости от слова конфигурации.

олег: спасибо Alberto подсказал, вместо кварца поставил RC цепочку и мультивибратор заработал. сразу вопрос ,каким образом программатор путает биты конфигурации,у меня программатор ORANGE-4 с платой расширения под пики. программатор не пиратский официально приобретен.

RW1ZK: олег пишет: у меня программатор ORANGE-4 Пользуюсь этим программатором в связке с IC-Prog. Пока проблем не было.

Пётр: олег пишет: программатор не пиратский официально приобретен. Я вообще не понимаю зачем их покупать, ведь самодельные неплохо работают. Я пользуюсь этим программатором http://pic.borda.ru/?1-4-0-00000005-000-0-0-1168701083

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

Alberto: олег пишет: вместо кварца поставил RC цепочку и мультивибратор заработал больших проблем нет, просто я, наученный горьким опытом, каждый раз, независимо от бита конфигурации, выставлял ХТ-генератор (или то что мне нужно). А потом просто перешел на программатор, ссылку на который уже дал Пётр. Программирую все, что имеется в наличии. Хотя до этого тоже была мыслишка купить фирменный Микрочиповский. Спасибо, здесь на форуме "вправили мозги" .

MAZ: Вот вот и дорого и проблем хватает. Два года работаю с EXTRAPIC от Десси. Лень было самому делать. Никаких вопросов с программатором не возникают.

kaligraf: Когда первая из схем часов была мною собрана и включена, она категорически отказывалась нормально работать. Индикаторы непонятно мерцали, но совершенно не хотели показывать то, что от них ожидалось. После многократной проверки монтажа, напряжения в разных точках платы и измерения тока, совершенно случайно решил попробовать изменить один из битов в слове конфигурации, и чудо свершилось...ЗАРАБОТАЛО! Причём заработало устойчиво и так как надо. В соответствии с таблицей 14 на странице 90 даташита PIC16F62X при частоте кварцевого резонатора частотой 4 МГц нужно выставить бит XT_OSC. Вот здесь и была "зарыта собака". Всё наладилось только после того, как этот бит был изменён на HS_OSC.

vadglebov: Все прояснится ,не кипятись!А наберись терпения ,и возьми в инете книгу Яценков м"Микроконтроллеры микрочип-практическое руководство"на стр 38 ,параграф слово конфигурации!написано слово конфигурации содержит именно для pic16f84!!!содержит 14БИТ!!! т.е 00000000000000 бит,и ниже на странице биты с 13 по 8,это СР биты защиты програмного кода.Если ты хочешь поставить защиту на код программы то устанавливаешь в 0 (ноль) биты с13 по 8,если нехочешь ставить защиту ставишь 1.Итак далее по тексту книги . для каждого бита ,WDTE например и тд.Потом у тебя получается 14 битный набор нулей и единиц, с помощью программы конвертора системы исчисления переводишь 14 бит из двоичного в шестнадцатиричную систему исчисления и у тебя получится код 03FF1H !!! Status equ 03h ; Регистр выбора банка. TrisB equ 06h ; Регистр выбора направления работы выводов порта В. PortB equ 06h 03h,06h почему присваивают именно эти значения? или их берут от фонаря? Это адреса специальных регистров ! Они жестко прописаны в памяти контроллера создателями фирмы микрочип,и их адреса именно таковы какие они есть . Это в области регистров общего назначения можно ячейки регистров (1 ячейка 8бит ) называть от фонаря . -может я и тупой, но такое придумать нормальный человек точно не сможет. Запомни !Все мы рождаемся с приблизительно одной массой тела ,конечностями, обьёмом серого вещества в черепной коробке . Если какое-либо устройство ,вещество ,действие было сделано, произведено живым человеком,а не инопланетянином,то другой живой человек всегда сможет это повторить .При условии наличия у него знаний,терпения , возможности,желания.Самое главное желания!Ибо это есть основная движущая сила человека.Как говорится -захочеш, сделаешь! Ты не являешься тупым,или особо одаренным .Ты такой какими являются здесь большенство,человеком ищущим ответы на свои вопросы. Судя по твоим вопросам ,складывается впечатление что ты читал самоучитель не внимательно,и спешил.Я тебе советую прочитать ещё раз соответствующие параграфы,и думаю что найдешь ответы на свои вопросы ,наберись терпения ! Если опять будет непонятно ,задавай вопросы . Я сам пока не волшебник ,я только учусь!Чем смогу помогу.

galrad: олег пишет: я его покупал по причине того что с ним шли большие базы прошивок Здравствуйте, Олег! У меня много знакомых, которые занимаются ЧИП-тюннингом, очень уж "любят" этот программатор. Я брал у них попользоваться на некоторое время - шьет нормально, проблем не было. Я буквально недавно стал изучать самоучитель, до этого было много книг разных авторов и попытки писать программы, но увы, не было реального учителя, который мог бы подсказать, где кроются ошибки и в чем они заключаются. Начав изучать самоучитель - понял первая часть основа основ, там нет ни единой лишней строки, притом все лаконично и доступно. Перечитывал несколько раз и еще перечитываю, потому, что всю содержащуюся там информацию освоить "сходу" невозможно, хотя до этого я был уверен, что начальная база у меня есть. Я очень благодарен Евгению Александровичу и участникам форума за предоставленный материал и поддержку. Все остальное зависит от ваших усилий, терпения и желания. Удачи вам!

AleksScrewdriver: олег, даташит на PIC16F84A, а еще лучше Справочник по среднему семейству микроконтроллеров PICmicro почитать и все встанет на свои места!

nick458: Все прояснится ,не кипятись!А наберись терпения ,и возьми в инете книгу Яценков м"Микроконтроллеры микрочип-практическое руководство"на стр 38 ,параграф слово конфигурации!написано слово конфигурации содержит именно для pic16f84!!!содержит 14БИТ!!! т.е 00000000000000 бит,и ниже на странице биты с 13 по 8,это СР биты защиты програмного кода.Если ты хочешь поставить защиту на код программы то устанавливаешь в 0 (ноль) биты с13 по 8,если нехочешь ставить защиту ставишь 1.Итак далее по тексту книги . для каждого бита ,WDTE например и тд.Потом у тебя получается 14 битный набор нулей и единиц, с помощью программы конвертора системы исчисления переводишь 14 бит из двоичного в шестнадцатиричную систему исчисления и у тебя получится код 03FF1H !!! вот самый исчерпывающий ответ. а эти ваши "ЧИТАЙ ДАТАШИТ" до лампочки!!! если не хотите людям помогать то не надо ничего писать вобще!!!

Dmitry Dubrovenko: Не прошло и пяти лет...

Admin: nick458 Вообщето осень 2011 на дворе Когда пьёшь, закусывай, новичок.

nick14: Admin пишет: nick458 Вообщето осень 2011 на дворе Когда пьёшь, закусывай, новичок. Человек просто не посмотрел дату.

Admin: Человек просто попонтоваться решил.

nick14: Admin пишет: Человек просто попонтоваться решил. Очевидно так оно и есть.

SanSanich: Зря вы так, nick458 просто подчеркнул, что значит конструктивный совет.

Admin: SanSanich пишет: Зря вы так, nick458 просто подчеркнул, что значит конструктивный совет. Добрый ты :) А мне сдаётся, что он хотел кого-то обидеть. :)



полная версия страницы