AndronSPB 0 16 сентября, 2020 Опубликовано 16 сентября, 2020 · Жалоба Добрый день. Решил изучить PIC, для чего приобрел на Ali отладочную плату "nano" (ядро PIC18F14K50), учебник Бари Брэй "Применение микроконтроллеров PIC18", прогррамматор PICKit 3 (тоже с Ali). Установил 2 программы MPLAB X IDE v5.10 и MPLAB X IPE v5.10. MPLAB X IPE v5.10 работает , т.е. видит контроллер (ID=1) и загружает откомпилированные программы , что сделаные на MPASM (v 5.54) так и на С18(v 3.47). Решил начать с простейшего, поуправлять 2 светодиодами на плате (RC0 , RC1). Соответственно в проекте на asm ADCON1 = 0x0F , TRISC = 0x00 и далее в PORTC или LATC. Результат удивил : если в PORTC вгоняю 0x01 или 0x02 , то светодиоды загораются, как надо, а если 0x03 (т.е хочу зажечь оба) не горят, причем на симуляторе 0x03 проходят и должны зажигать.!!! Что бы зажечь 2 светодиода - нужно один раз в PORTC кинуть 0x01 и затем 0x02 - разве так должно быть? Почему я не могу сразу 0x03 выдать? Это первый вопрос. Да, еще уточню действия по проекту : в папку header я в ручную вставил файл p18f14k50.inc , а в папку Linker поместил p18f14k50_g.lkr . Второй вопрос: почему среда не генерит проет сама? в книге описан какой-то мастер, но в этой версии я его не вижу. Вопрос 3: Почему я не могу загрузить прямо из оболочки IDE программу и мне приходится ее загружать через IPE, вроде при нажатии на загрузку откомпилированного файла в IDE все начинает идти, как и в IPE, но процесс не проходит и появляется сообщение Cannot program a production build to a debug header. Я так понимаю что жалуется на отладочный хидер, но при создании проекта мне предлагали установить AC244023 я его и отметил. Что не так? Опять же вопрос с отладкой на плате,т.е. если я компилирую в IDE для отладки и пытаюсь начать внутрисхемно отлаживать , то все идет как и в IPE но затем появляется Target Device ID (0x4760) is an Invalid Device ID. Please check your connections to the Target Device.Замечу , что IPE дает ID =1 . Что бы это могло быть. В с18 все еще хуже , т.е могу зажигать только по 1 из 2х светодиодов , а 2 сразу вообще не получается. Вот сижу обалдевший и кляну америкосов и китайцев вместе с ними. Помогите разобраться. nano2.ASM Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
my504 2 20 сентября, 2020 Опубликовано 20 сентября, 2020 · Жалоба Попробую ответить. Причем с конца. - когда при создании проекта Вам предлагали установить AC244023, то Вам следовало бы сначала выяснить что означает в русском языке глагол "установить". "Установить" совсем не означает "отметить". AC244023 является АППАРАТНЫМ хедером, представляющем из себя печатную плату красного цвета с установленным на ней чипом PIC18F14K50-ICD. Последний суффикс намекает нам о том, что это специальный чип предназначенный для отладки. Для чего в его составе есть специальный аппаратный модуль отладки и для удобства пользователя выводы ICSP отделены от стандартной распиновки обычного чипа PIC18F14K50 так, что освобождены выводы модуля USB. В стандартном чипе общего применения модуля аппаратной отладки НЕ ВООБЩЕ. О чем явно сообщается в даташите на этот контроллер. Естественно, что ID на эти два разных чипа отличаются, о чем Вам среда и сообщает. - "загружать программу" через IPE при созданном проекте в IDE нет никакой необходимости. Есть необходимость прочесть мануал на среду разработки, чтобы выяснить порядок создания проекта и порядок использования инструментов среды. При выбранном при создании проекта или после его создания инструменте программирования и обеспечении питания таргета либо через этот инструмент или внешним источником, Вам будет доступна функция программирования таргета путем нажатия на пиктограмму "зеленая стрелка вниз" в меню. При этом сначала происходит компиляция проекта, затем коннект с таргетом, программирование и верификация. За процессом можно наблюдать в специально открывающемся окне инструмента. Однако при использовании симулятора как инструмента, программатор будет недоступен, поэтому нужно переключать инструмент в свойствах проекта. - насчет зажигания светодиода. Во первых, нет никакой необходимость подключать скрипт линкера в ASM проектах с 8-ми битниками. Достаточно исходника и inc-файла. Во вторых, Вы генерируете импульсы на выходе, а не уровень. Причина по которой у Вас не выводится высокий уровень на двух пинах не очень понятна. Применять следует вывод на LATC, чтобы исключить баги связанные с RMW, но для байтных инструкций это не принципиально. ЗЫ. Всегда сначала предполагайте собственную некомпетентность, а не кляните создателей железа. Это гораздо более продуктивно... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 43 20 сентября, 2020 Опубликовано 20 сентября, 2020 · Жалоба On 9/16/2020 at 11:05 PM, AndronSPB said: Результат удивил : если в PORTC вгоняю 0x01 или 0x02 , то светодиоды загораются, как надо, а если 0x03 (т.е хочу зажечь оба) не горят, причем на симуляторе 0x03 проходят и должны зажигать.!!! Цитата из datasheet на PIC18 • TRIS register (data direction register)• PORT register (reads the levels on the pins of the device)• LAT register (output latch) Т.е. ригистр PORT предназначен для получения информации о состоянии вывода и писать в него не следует. Если вы хотите изменить состояние вывода, то писать надо в LAT. On 9/16/2020 at 11:05 PM, AndronSPB said: Вопрос 3: Почему я не могу загрузить прямо из оболочки IDE программу и мне приходится ее загружать через IPE, вроде при нажатии на загрузку откомпилированного файла в IDE все начинает идти, как и в IPE, но процесс не проходит и появляется сообщение Cannot program a production build to a debug header. Вы не настроили проект. Подключите ваш программатор к компьютеру. Правой кнопкой мыши щелкните по названию вашего проекта в среде MPLAB и в выпадающем списке выбрать Properties. И в разделе Hardware Tools отметить PicKit3, чтобы он стал синим. Далее, для программирования вашего МК нажимать такую кнопочку Если в списке Hardware Tools не видно PicKit3, то можно поробовать закрыть MPLAB и запустить ее при подключенном программаторе. Т.е. программатор подключить к компу раньше, чем вы запустите MPLAB. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
my504 2 20 сентября, 2020 Опубликовано 20 сентября, 2020 · Жалоба 2 hours ago, dimka76 said: • PORT register (reads the levels on the pins of the device)регистр PORT предназначен для получения информации о состоянии вывода и писать в него не следует. Не следует - не значит, что невозможно. Для преемственности с младшими семействами 8-битников архитектура сохранила возможность записи в порт через PORTx: Quote 9.1 PORTA, TRISA and LATA Registers ............................. ............................. Reading the PORTA register reads the status of the pins, whereas writing to it, will write to the PORT latch. Это же следует из приведенной в разделе схемы типового порта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndronSPB 0 1 октября, 2020 Опубликовано 1 октября, 2020 · Жалоба 20.09.2020 в 12:32, my504 сказал: когда при создании проекта Вам предлагали установить AC244023, то Вам следовало бы сначала выяснить что означает в русском языке глагол "установить". "Установить" совсем не означает "отметить". AC244023 является АППАРАТНЫМ хедером, представляющем из себя печатную плату красного цвета с установленным на ней чипом PIC18F14K50-ICD. Благодарю за ценное разъяснение. Как только из проекта убрал "галочку" все стало работать замечательно. Стоит заметить, что я еще допустил одну "типовую" ошибку, а именно, в китайском документе к плате не усмотрел, что светодиоды на питание подключены, т.е. логика управления из программы инверсная. Сейчас работает и программа на ассемблере и на С, я испытал счастье). Хотелось бы еще понять делает ли PICkit 3 аппаратную отладку (кроме симулятора оболочки) и как это сделать? Может вы знаете? Китайцев и амер. больше не ругаю, хотя китайские товарищи могли бы прислать и доку на английском, а то с китайским грустно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndronSPB 0 1 октября, 2020 Опубликовано 1 октября, 2020 (изменено) · Жалоба 20.09.2020 в 15:09, dimka76 сказал: И в разделе Hardware Tools отметить PicKit3, чтобы он стал синим. Благодарю за участие - у меня все заработало , когда я выполнил совет my504, но в процессе "борьбы" до этого я впал в неистовство) и снес все. После чего скачал оболочку 5.40 и был несколько удивлен. Может быть вы разъясните мне. Дело в том, что во первых в этой, более свежей оболочке стало другое окно свойств , не такое как любезно привели вы (такое было в 5.10), а вот такое Почему изменилось и возможен ли переход к виду из 5.10? Кроме того перестали видиться компиляторы MPASM. Как с этим бороться? Когда я дополнительно установил предыдущую версию MPLAB X IDE 5.10 (она встала без вопросов о наличии новой версии) то в ней (5.10) все привычно, как и на вашей картинке. Может это ошибки разработчиков? Таким образом я на компе имею сейчас 2 оболочки (да и еще старую 8.53) и вроде все работают . Изменено 1 октября, 2020 пользователем AndronSPB лишняя картинка Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 43 2 октября, 2020 Опубликовано 2 октября, 2020 · Жалоба 9 hours ago, AndronSPB said: Почему изменилось и возможен ли переход к виду из 5.10? Кроме того перестали видиться компиляторы MPASM. Как с этим бороться? Когда я дополнительно установил предыдущую версию MPLAB X IDE 5.10 (она встала без вопросов о наличии новой версии) то в ней (5.10) все привычно, как и на вашей картинке. Может это ошибки разработчиков? Таким образом я на компе имею сейчас 2 оболочки (да и еще старую 8.53) и вроде все работают . Не знаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
my504 2 3 октября, 2020 Опубликовано 3 октября, 2020 · Жалоба On 10/1/2020 at 10:06 PM, AndronSPB said: Хотелось бы еще понять делает ли PICkit 3 аппаратную отладку (кроме симулятора оболочки) и как это сделать? PICkit 3 аппаратную отладку делает. Но только тогда, когда отлаживаемый МК имеет на борту блок отладки. Не все МК имеют такой блок. И те, которые не имеют, требуют для отладки тот самый хедер, о котором я выше говорил. Для чего хедер включают ВМЕСТО целевого МК в схему. Для чего у хедера есть специальный разъем в формфакторе DIP. On 10/1/2020 at 10:39 PM, AndronSPB said: Кроме того перестали видиться компиляторы MPASM. Как с этим бороться? Бороться с этим не надо. Патамушта MPASM, начиная с версии 5.40, более не поддерживается. Вместо него используется интегрированный в компилятор ХС8 ассемблер pic-as. Если хотите использовать MPASM, вам придется остановиться на версии 5.35. Ее можно скачать из архива: https://www.microchip.com/development-tools/pic-and-dspic-downloads-archive Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndronSPB 0 5 октября, 2020 Опубликовано 5 октября, 2020 · Жалоба 03.10.2020 в 19:19, my504 сказал: PICkit 3 аппаратную отладку делает. Но только тогда, когда отлаживаемый МК имеет на борту блок отладки. Не все МК имеют такой блок. И те, которые не имеют, требуют для отладки тот самый хедер, о котором я выше говорил. Для чего хедер включают ВМЕСТО целевого МК в схему. Для чего у хедера есть специальный разъем в формфакторе DIP. Понял, спасибо. Относительно ХС8 (про ассемблер я понял), если можно поясните пожалуйста. Правильно я понимаю, что ранее MPLAB С18 был стандартом и учебник с примерами у меня на нем основан, а теперь надо переходить на XC8 ? Но ведь С18 хоть и ограничен по некоторым функциям , но был бесплатным, а XC8 - имеет ограничение по использованию, т.е. можно установить только на пробу, а дальше нужно заплатить? Я правильно понимаю? И вообще есть ли смысл переходить на XC8 если работает С18? Еще один маленький вопрос: в оболочке компиляция и загрузка идут хорошо, но есть при компиляции раздражающее предупреждение : Warning: The hex file has the debug bit set. The debug bit has been cleared during load to memory. The original hex file has not been modified. Что это за бит такой? - вроде я его не устанавливал или просто не обращать на это внимание? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
my504 2 6 октября, 2020 Опубликовано 6 октября, 2020 · Жалоба 15 hours ago, AndronSPB said: XC8 - имеет ограничение по использованию, т.е. можно установить только на пробу, а дальше нужно заплатить? Я правильно понимаю? Не правильно. XC8 имеет ТРИ варианта лицензии. Free - с уровнями оптимизации 0 и 1. Eval - все уровни оптимизации на 90 дней. Полная версия - все уровни оптимизации - платная. Лицензия выбирается при установке. 15 hours ago, AndronSPB said: Что это за бит такой? В конфиге исходника "кто-то" активировал бит DEBUG. Этот бит вообще не надо упоминать в исходнике (словно его нет вообще). Он взводится АВТОМАТИЧЕСКИ при включении отладчика. Если в исходнике его включить, релиз залитый через программатор работать не будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndronSPB 0 6 октября, 2020 Опубликовано 6 октября, 2020 · Жалоба 7 часов назад, my504 сказал: В конфиге исходника "кто-то" активировал бит DEBUG. Этот бит вообще не надо упоминать в исходнике (словно его нет вообще). Он взводится АВТОМАТИЧЕСКИ при включении отладчика. Если в исходнике его включить, релиз залитый через программатор работать не будет. Как я понял вы имеете ввиду, что в файле "сишного" исходника , где описываются биты конфигурации, а именно у меня #pragma config FOSC = HS #pragma config WDTEN = OFF #pragma config LVP = OFF #pragma config MCLRE = ON //#pragma config DEBUG = OFF я попытался вставить DEBUG , но компилятор выдает ошибку. В тексте исходника такого нет. Тоже и в ассемблерной программе - может это не бит DEBUG, а бит , а как-нибудь по другому называется , может это BKBUG ? За разъяснение по XC8 - спасибо, но мне кажется, что проще пользоваться С18 - тем более она полная версия. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
my504 2 8 октября, 2020 Опубликовано 8 октября, 2020 · Жалоба Диагностика выхода говорит об установленном бите DEBUG в загружаемом коде. Возможно вы компилируете что то не то, что думаете. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndronSPB 0 9 октября, 2020 Опубликовано 9 октября, 2020 · Жалоба 08.10.2020 в 12:19, my504 сказал: Диагностика выхода говорит об установленном бите DEBUG в загружаемом коде. Возможно вы компилируете что то не то, что думаете. Вы меня озадачили. Проект при компиляции только один, в окне проектов. Подключаю только 2 стандартных хидера: delays.h и p18f14k50.h . При загрузке в контроллер предупреждение выдается, но этот бит программатор обнуляет и поэтому все работает. Текст учебной программки привожу. Как хоть должна выглядеть строчка с этим битом? nano_c3.c Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
my504 2 11 октября, 2020 Опубликовано 11 октября, 2020 · Жалоба On 10/9/2020 at 9:42 PM, AndronSPB said: При загрузке в контроллер предупреждение выдается, но этот бит программатор обнуляет и поэтому все работает. Мы сейчас обсуждаем не ошибку, а предупреждение. Warning. И в условиях, когда в ДАННОМ ЧИПЕ нет никакого дебага по определению. К тому же, даже если бы дебаг был, загрузка МК из среды разработки (IDE) автоматически сбросит бит отладки в конфиге. Проблема возникает только при заливке хекса из оболочки программатора. Что касается исходного кода, то он тут не слишком пригоден для выяснения причины warning-а. Нужен хекс (точнее его последние несколько строк с конфигом). К тому же, на warning можно и не обращать внимания, если конечно понимаете о чем он... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться