Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

Re: MPLAB в вопросах и ответах

Вс окт 08, 2017 08:25:19

Да нет, это предупреждение должно возникать еще на уровне парсинга, а не кодогенерации. Вот сейчас я его подставлял в функцию, которая еще не используется - и получал предупреждения задолго до того, как получал предупреждение, что функция не используется и никакого кода для неё не сгенерено.

И собственно, уже понятно, что при выполнении c = (c << 1) - c преобразуется в int и выскакивает предупреждение. Устранить его можно кастингом, как в вами упомянутой теме и предложили: c = (unsigned char)(c << 1). Скорее вопрос, почему не выскакивает при (c <<= 1).

Re: MPLAB в вопросах и ответах

Вс окт 08, 2017 10:34:30

Скорее вопрос, почему не выскакивает при (c <<= 1).

Возможно потому, что compound операторы работают непосредственно с исходной переменной.

Re: MPLAB в вопросах и ответах

Пн окт 09, 2017 17:02:18

Хотел бы спросить еще непонятку (хоть к данной теме относится косвенно, но все же рискну спросить сдесь) - домучал код до двухканального вольтметра (во вложении). При проверке в протеусе - протеус работает, все показывает но выводит восклицательный знак с ошибкой:
[PIC12 ADC] PC=0x02EA. ADC conversion clock period (5e-07) is possibly invalid for device clock frequency. [U1]
Ошибка исчезает, если выставить в протеусе частоту м/к 1.25МГц и ниже. (А мне надо 4МГц) - Вопрос - что сделать, чтобы не было этой ошибки? Все значения делителя от 2-х до 64 и внутренн генерат 500КГц A/D Clock Source (TAD) я перепробовал, значение задержки после включения АЦП пробовал от 10 до 1000 мкс.
Может быть это фишка протеуса? Он на мой м/к pic 16f676 пишет PIC12.
Вложения
vm_lcd.zip
Файл протеуса
(7.25 KiB) Скачиваний: 283
vm_lcd.c
Файл си
(5.46 KiB) Скачиваний: 652

Re: MPLAB в вопросах и ответах

Пн окт 09, 2017 17:51:08

[PIC12 ADC] PC=0x02EA. ADC conversion clock period (5e-07) is possibly invalid for device clock frequency. [U1]

Я не знаю СИ. В программе не увидел настройки регистра ADCON0, а точнее битов 7-6, которые выбираются в зависимости от тактовой частоты. Для этого нужно обратится к таблице 11-1:
Изображение

И прочитать раздел 11.1, или просто поставить задержку в 20мкс

Re: MPLAB в вопросах и ответах

Вт окт 10, 2017 04:45:54

Не совсем понял - в PIC16f676 временная настройка делается не в ADCON0, а в ADCON1 - 4, 5, 6 битом.
6, 7 бит ADCON0 отвечают за:
7: Формат сохранения 10-разрядного результата
1=правое выравнивание
0=левое выравнивание
6: Выбор источника опорного напряжения
1=вывод VREF
0=напряжение питания VDD
Я пользовался вот этой таблицей:
Изображение
Для 4МГц время должно быть 2 или 4 мкс, а делитель соответственно на 8 или на 16 - код 001 или 101 - я перепробовал все 7 вариантов из таблицы - все та же ошибка.
Про время задержки я писал - перепробовал от 10 до 1000мкс - ошибка не уходит. Видимо дело в протеусе - попробую в железе.
Файл прошивки hex во вложении.
В коде настройки регистров такие:
ADCON0 = 0b11000001;
ADCON1 = 0b01010000;
У меня версия протеуса 8.5 SP0 professional - если есть возможность - попробуйте в своем протеусе проверить.
Вложения
vm_lcd.X.production.hex
Файл прошивки мк hex
(3.68 KiB) Скачиваний: 662

Re: MPLAB в вопросах и ответах

Вт окт 10, 2017 05:24:11

Не совсем понял - в PIC16f676 временная настройка делается не в ADCON0, а в ADCON1 - 4, 5, 6 битом.

Я виноват, Вы правы.
Тогда, вроде все правильно сделали.
Конечно пробуйте в железе, там все по другому. Но и на Протеус ругаться не нужно. Я много раз на него грешил, но в итоге- каждый раз проблема была во мне!! Хотя откуда он взял ошибку с PIC12 - даже догадок нет.

Re: MPLAB в вопросах и ответах

Ср ноя 29, 2017 21:50:12

Подскажите, какие параметры надо указать в PSECT, чтобы переменные _error и _next_correction легли в один банк с остальными переменными (конкретно _correction, так как в конце в зависимости от старшего бита _correction мне надо увеличить или уменьшить _next_correction). Сейчас, судя по дизассемблеру они находятся в самом начале ОЗУ 0 и 1 адрес в нулевом банке

Распределение памяти выглядит так, но я в дизассемблере вижу, что _next_correction берётся с нулевого адреса, а _error накладывается на _unixtime по адресу 1 и 2.
Код:
Psect Usage Map:

 Psect      | Contents                   | Memory Range      | Size
----------|----------|----------|----------
 reset_vec  |                            | 000000h - 000003h |  4 bytes 
 intcode    | Interrupt service routine  | 000008h - 00000Bh |  4 bytes 
 init       | Initialization code        | 00000Ch - 00000Fh |  4 bytes 
 isr_routin |                            | 000010h - 00006Bh | 92 bytes 
 text0      | Program and library code   | 00006Ch - 0000C5h | 90 bytes 
 cinit      |                            | 0000C6h - 0000D7h | 18 bytes 
----------|----------|----------|----------
 bssCOMRAM  |                            | 000001h - 000007h |  7 bytes 
----------|----------|----------|----------
 config     | Device configuration words | 300000h - 30000Bh | 12 bytes 
----------|----------|----------|----------
 idloc      | User ID registers          | 200000h - 20000Fh | 16 bytes 
----------|----------|----------|----------


Чёрт... убил целый час в поисках что такое регистр CCPTMRS в pic18f25k40. Упоминание есть, описания - нет. Посмотрел в хидерах XC8 - есть. Даже адрес есть. Ищу по адресу в дашите - Reserved. Гуглопоиск - ничего. Эррата - ничего. Потом в поиске наткнулся на предыдущую версию (40001843c.pdf против 40001843d.pdf) - тот даташит еще в старом стиле и там этот регистр есть.

Re: MPLAB в вопросах и ответах

Сб дек 02, 2017 08:02:12

Теперь такие "нюенсы" с даташитами все чаще попадаться будут...
Приходится по несколько версий хранить (и не только для ПИКов, но и для остальных семейств...)
:(

Re: MPLAB в вопросах и ответах

Сб дек 02, 2017 08:53:58

а, кажется, разобрался. не хватало поля space=1. А если я размещаю в секции COMRAM - оно точно будет до 0x5F адреса? и можно ли тогда до неё добраться через ACCESS?

Похоже, что так и есть:
COMRAM — consists of a single memory range that covers the common (unbanked) RAM, if present, for all PIC18 devices
Но надо будет одним глазом поглядывать на адреса выделенные моей секции.
Последний раз редактировалось uldemir Сб дек 02, 2017 19:58:32, всего редактировалось 1 раз.

Re: MPLAB в вопросах и ответах

Сб дек 02, 2017 16:12:58

Железячники, выручайте, написал простенькую программку для МК PIC18F1230 в MPLAB X 4.05. Программка должна на выходе давать случайную импульсную последовательность. За крутоть кода не поясню, я новичек в программировании МК и мог выпустить т.н. быдло-код.

Вот код:



Ошибки и предупреждения:



Сам проект прикладываю
Вложения
Programm.X.rar
Файл проекта
(33.9 KiB) Скачиваний: 280

Re: MPLAB в вопросах и ответах

Сб дек 02, 2017 16:49:13

А при чём тут железячники? Ошибка типа софтверная. Уберите последний инклюд, думаю он и так из первого должен вызываться. А... похоже, компилятор не поддерживает ваш ПИК?
А что за компилятор вы пользуете? MPLAB - это IDE, а не компилятор.
Если PIC C18, то наоборот, первый инклюд выкиньте.

и нахрена вам в микроконтроллере argv argc? Как вы их передавать собираетесь? Если там поставить просто void, то может, и stdlib вам не нужен будет.

Добавлено after 29 minutes 3 seconds:
Аха, Всё же XC8. Ну, тогда все инклюды долой, делаем один #include <xc.h>
И не забываем, что надо еще конфигурационное слово сделать...
Ладно, подскажу: Window -> PIC Memory Views -> Configuraton bits. Там их устанавливаете и там же есть кнопка сгенерить. Сгенеренный текст копируете в исходник.

Re: MPLAB в вопросах и ответах

Вс дек 03, 2017 07:04:17

Спасибо, помогло.

Вопрос про MPLAB:

Как сделать поддержку русских комментариев?

Re: MPLAB в вопросах и ответах

Вс дек 03, 2017 07:16:48

Включив соответствующий код раскладки. Например:
Изображение

Re: MPLAB в вопросах и ответах

Вс дек 03, 2017 10:58:21

Кодировку можно выбрать какой-нибудь по-умолчанию во всех проектах :
Изображение
2017-12-03_11-57-25.png
(68.96 KiB) Скачиваний: 1303

Чтобы потом не мучиться каждый раз при выборе.

Re: MPLAB в вопросах и ответах

Вс янв 21, 2018 21:13:31

Меня сегодня прозрело немного по поводу "implicit signed to unsigned conversion" при выполнении сдвигов. Надо мне обрабатывать отдельно младший и старший ниббл. Ну, скажем из БКД получить двоичное. Надо старший ниббл умножить на 10 и прибавить младший. С младшим проблем нет: temp & 0x0Fu - и все дела. А вот со старшим есть нюанс: (temp >> 4) * 10 - даёт предупреждение, ((temp>>4) & 0x0Fu) * 10 - даёт предупреждение, а вот ((temp & 0xF0u) >> 4) * 10 - отрабатывает чисто. Правда, это в случае, если переменная temp имеет тип unsigned char. Что будет с unsigned int - пока не разбирался.

Re: MPLAB в вопросах и ответах

Ср мар 07, 2018 12:04:46

Вышла новая MPLAB X IDE v4.15 (добавили поддержку программирования Atmel-ов из IDE) :kill:
Не рекомендую её ставить.
Эта падла не сохраняет положение окон. Каждый раз, при запуске, приходилось открывать текст программы вручную. :kill:
"Откатился" на v4.10.

Re: MPLAB в вопросах и ответах

Ср мар 07, 2018 14:00:40

У меня на xp она вообще не запустилась. То есть 4.10 получается последняя версия с поддержкой xp.

Re: MPLAB в вопросах и ответах

Чт мар 29, 2018 00:26:30

Доброе время суток уважаемые коты, только на днях порвал с виндус ХР, MPLAB 8.40 PROTEUS 7.7, и шагнул в мир виндус 7, PROTEUS 8, и MPLAB XC8, вот хотелось спросить, ссылки где можно скачать рабочий MPLAB XC8 и Си компилятор к нему с лекарствами, без лекарств то полно....?
заранее спасибо.

Re: MPLAB в вопросах и ответах

Чт мар 29, 2018 08:12:11

скачать рабочий MPLAB XC8 и Си компилятор к нему с лекарствами

А разве они не бесплатные?! Все на оффициальном сайте есть.
Или нужны с самый лучшей оптимизацией кода?
http://www.microchip.com/mplab/compilers

Re: MPLAB в вопросах и ответах

Сб мар 31, 2018 22:45:21

Хорошо, установил всё бесплатное, но ужас..., не могу соединить MPLAB X и PROTEUS 8, более того MPLAB X не генерирует файл "cof" поэтому отладить программу в пошаговом режиме с PROTEUS 8 не получится, подскажите кто как это победил ?
Ответить