Перейти к содержанию
    

Не понимаю как работает

Добрый день. Решил изучить 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробую ответить. Причем с конца.

- когда при создании проекта Вам предлагали установить AC244023, то Вам следовало бы сначала выяснить что означает в русском языке глагол "установить". "Установить" совсем не означает "отметить". AC244023 является АППАРАТНЫМ хедером, представляющем из себя печатную плату красного цвета с установленным на ней чипом PIC18F14K50-ICD. Последний суффикс намекает нам о том, что это специальный чип предназначенный для отладки. Для чего в его составе есть специальный аппаратный модуль отладки и для удобства пользователя выводы ICSP отделены от стандартной распиновки обычного чипа PIC18F14K50 так, что освобождены выводы модуля USB. В стандартном чипе общего применения модуля аппаратной отладки НЕ ВООБЩЕ. О чем явно сообщается в даташите на этот контроллер. Естественно, что ID на эти два разных чипа отличаются, о чем Вам среда и сообщает.

- "загружать программу" через IPE при созданном проекте в IDE нет никакой необходимости. Есть необходимость прочесть мануал на среду разработки, чтобы выяснить порядок создания проекта и порядок использования инструментов среды. При выбранном  при создании проекта или после его создания инструменте программирования и обеспечении питания таргета либо через этот инструмент или внешним источником, Вам будет доступна функция программирования таргета путем нажатия на пиктограмму "зеленая стрелка вниз" в меню. При этом сначала происходит компиляция проекта, затем коннект с таргетом, программирование и верификация. За процессом можно наблюдать в специально открывающемся окне инструмента. Однако при использовании симулятора как инструмента, программатор будет недоступен, поэтому нужно переключать инструмент в свойствах проекта.

- насчет зажигания светодиода. Во первых, нет никакой необходимость подключать скрипт линкера в ASM проектах с 8-ми битниками. Достаточно исходника и inc-файла. Во вторых, Вы генерируете импульсы на выходе, а не уровень. Причина по которой у Вас не выводится высокий уровень на двух пинах не очень понятна. Применять следует вывод на LATC, чтобы исключить баги связанные с RMW, но для байтных инструкций это не принципиально.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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, чтобы он стал синим.

image.thumb.png.330571686ca24cdd301e700045a1a44b.png

Далее, для программирования вашего МК нажимать такую кнопочку

image.png.1a83d1ab1e9b958d473e2f6d37712002.png

Если в списке Hardware Tools не видно PicKit3, то можно поробовать закрыть MPLAB и запустить ее при подключенном программаторе. Т.е. программатор подключить к компу раньше, чем вы запустите MPLAB.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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.

Это же следует из приведенной в разделе схемы типового порта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20.09.2020 в 12:32, my504 сказал:

когда при создании проекта Вам предлагали установить AC244023, то Вам следовало бы сначала выяснить что означает в русском языке глагол "установить". "Установить" совсем не означает "отметить". AC244023 является АППАРАТНЫМ хедером, представляющем из себя печатную плату красного цвета с установленным на ней чипом PIC18F14K50-ICD.

Благодарю за ценное разъяснение. Как только из проекта убрал "галочку" все стало работать замечательно. Стоит заметить, что я еще допустил одну "типовую" ошибку, а именно, в китайском документе к плате не усмотрел, что светодиоды на питание подключены, т.е. логика управления из программы инверсная. Сейчас работает и программа на ассемблере и на С, я испытал счастье). Хотелось бы еще понять делает ли PICkit 3 аппаратную отладку (кроме симулятора оболочки) и как это сделать? Может вы знаете? Китайцев и амер. больше не ругаю, хотя китайские товарищи могли бы прислать и доку на английском, а то с китайским грустно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

20.09.2020 в 15:09, dimka76 сказал:

И в разделе Hardware Tools отметить PicKit3, чтобы он стал синим.

Благодарю за участие - у меня все заработало , когда я выполнил совет my504, но в процессе "борьбы" до этого я впал в неистовство) и снес все. После чего скачал оболочку 5.40 и был несколько удивлен. Может быть вы разъясните мне. Дело в том, что во первых в этой, более свежей оболочке стало другое окно свойств , не такое как любезно привели вы (такое было в 5.10), а вот такое

797200024_.thumb.png.d51f501a6f24aab5929f2e9685154cb7.png

Почему изменилось и возможен ли переход к виду из 5.10? Кроме того перестали видиться компиляторы MPASM. Как с этим бороться? Когда я дополнительно установил предыдущую версию MPLAB X IDE 5.10 (она встала без вопросов о наличии новой версии) то в ней (5.10) все привычно, как и на вашей картинке. Может это ошибки разработчиков? Таким образом я на компе имею сейчас 2 оболочки (да и еще старую 8.53) и вроде все работают .

 

изображение.png

Изменено пользователем AndronSPB
лишняя картинка

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 hours ago, AndronSPB said:

Почему изменилось и возможен ли переход к виду из 5.10? Кроме того перестали видиться компиляторы MPASM. Как с этим бороться? Когда я дополнительно установил предыдущую версию MPLAB X IDE 5.10 (она встала без вопросов о наличии новой версии) то в ней (5.10) все привычно, как и на вашей картинке. Может это ошибки разработчиков? Таким образом я на компе имею сейчас 2 оболочки (да и еще старую 8.53) и вроде все работают .

 

Не знаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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.

Что это за бит такой? - вроде я его не устанавливал или просто не обращать на это внимание?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 hours ago, AndronSPB said:

XC8 - имеет ограничение по использованию, т.е. можно установить только на пробу, а дальше нужно заплатить? Я правильно понимаю?

Не правильно. XC8 имеет ТРИ варианта лицензии. Free - с уровнями оптимизации 0 и 1. Eval - все уровни оптимизации на 90 дней. Полная версия - все уровни оптимизации - платная. Лицензия выбирается при установке.

15 hours ago, AndronSPB said:

Что это за бит такой?

В конфиге исходника "кто-то" активировал бит DEBUG. Этот бит вообще не надо упоминать в исходнике (словно его нет вообще). Он взводится АВТОМАТИЧЕСКИ при включении отладчика. Если в исходнике его включить, релиз залитый через программатор работать не будет.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 - тем более она полная версия.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Диагностика выхода говорит об установленном бите DEBUG в загружаемом коде. Возможно вы компилируете что то не то, что думаете.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

08.10.2020 в 12:19, my504 сказал:

Диагностика выхода говорит об установленном бите DEBUG в загружаемом коде. Возможно вы компилируете что то не то, что думаете.

Вы меня озадачили. Проект при компиляции только один, в окне проектов. Подключаю только 2 стандартных хидера: delays.h и p18f14k50.h .
При загрузке в контроллер предупреждение выдается, но этот бит программатор обнуляет и поэтому все работает. Текст учебной программки привожу. Как хоть должна выглядеть строчка с этим битом?

nano_c3.c

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 10/9/2020 at 9:42 PM, AndronSPB said:

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

Мы сейчас обсуждаем не ошибку, а предупреждение. Warning. И в условиях, когда в ДАННОМ ЧИПЕ нет никакого дебага по определению. К тому же, даже если бы дебаг был, загрузка МК из среды разработки (IDE) автоматически сбросит бит отладки в конфиге. Проблема возникает только при заливке хекса из оболочки программатора. 

Что касается исходного кода, то он тут не слишком пригоден для выяснения причины warning-а. Нужен хекс (точнее его последние несколько строк с конфигом).

К тому же, на warning можно и не обращать внимания, если конечно понимаете о чем он...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...