Поклонники продукции Microchip Technology Inc тусуются тут.
Вс окт 08, 2017 08:25:19
Да нет, это предупреждение должно возникать еще на уровне парсинга, а не кодогенерации. Вот сейчас я его подставлял в функцию, которая еще не используется - и получал предупреждения задолго до того, как получал предупреждение, что функция не используется и никакого кода для неё не сгенерено.
И собственно, уже понятно, что при выполнении c = (c << 1) - c преобразуется в int и выскакивает предупреждение. Устранить его можно кастингом, как в вами упомянутой теме и предложили: c = (unsigned char)(c << 1). Скорее вопрос, почему не выскакивает при (c <<= 1).
Вс окт 08, 2017 10:34:30
Скорее вопрос, почему не выскакивает при (c <<= 1).
Возможно потому, что compound операторы работают непосредственно с исходной переменной.
Пн окт 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
Пн окт 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мкс
Вт окт 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
Вт окт 10, 2017 05:24:11
Не совсем понял - в PIC16f676 временная настройка делается не в ADCON0, а в ADCON1 - 4, 5, 6 битом.
Я виноват, Вы правы.
Тогда, вроде все правильно сделали.
Конечно пробуйте в железе, там все по другому. Но и на Протеус ругаться не нужно. Я много раз на него грешил, но в итоге- каждый раз проблема была во мне!! Хотя откуда он взял ошибку с PIC12 - даже догадок нет.
Ср ноя 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) - тот даташит еще в старом стиле и там этот регистр есть.
Сб дек 02, 2017 08:02:12
Теперь такие "нюенсы" с даташитами все чаще попадаться будут...
Приходится по несколько версий хранить (и не только для ПИКов, но и для остальных семейств...)
Сб дек 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 раз.
Сб дек 02, 2017 16:12:58
Железячники, выручайте, написал простенькую программку для МК PIC18F1230 в MPLAB X 4.05. Программка должна на выходе давать случайную импульсную последовательность. За крутоть кода не поясню, я новичек в программировании МК и мог выпустить т.н. быдло-код.
Вот код:Ошибки и предупреждения:Сам проект прикладываю
- Вложения
-
- Programm.X.rar
- Файл проекта
- (33.9 KiB) Скачиваний: 280
Сб дек 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. Там их устанавливаете и там же есть кнопка сгенерить. Сгенеренный текст копируете в исходник.
Вс дек 03, 2017 07:04:17
Спасибо, помогло.
Вопрос про MPLAB:
Как сделать поддержку русских комментариев?
Вс дек 03, 2017 07:16:48
Включив соответствующий код раскладки. Например:
Вс дек 03, 2017 10:58:21
Кодировку можно выбрать какой-нибудь по-умолчанию во всех проектах :
Чтобы потом не мучиться каждый раз при выборе.
Вс янв 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 - пока не разбирался.
Ср мар 07, 2018 12:04:46
Вышла новая MPLAB X IDE v4.15 (добавили поддержку программирования Atmel-ов из IDE)
Не рекомендую её ставить.
Эта падла не сохраняет положение окон. Каждый раз, при запуске, приходилось открывать текст программы вручную.
"Откатился" на v4.10.
Ср мар 07, 2018 14:00:40
У меня на xp она вообще не запустилась. То есть 4.10 получается последняя версия с поддержкой xp.
Чт мар 29, 2018 00:26:30
Доброе время суток уважаемые коты, только на днях порвал с виндус ХР, MPLAB 8.40 PROTEUS 7.7, и шагнул в мир виндус 7, PROTEUS 8, и MPLAB XC8, вот хотелось спросить, ссылки где можно скачать рабочий MPLAB XC8 и Си компилятор к нему с лекарствами, без лекарств то полно....?
заранее спасибо.
Чт мар 29, 2018 08:12:11
скачать рабочий MPLAB XC8 и Си компилятор к нему с лекарствами
А разве они не бесплатные?! Все на оффициальном сайте есть.
Или нужны с самый лучшей оптимизацией кода?
http://www.microchip.com/mplab/compilers
Сб мар 31, 2018 22:45:21
Хорошо, установил всё бесплатное, но ужас..., не могу соединить MPLAB X и PROTEUS 8, более того MPLAB X не генерирует файл "cof" поэтому отладить программу в пошаговом режиме с PROTEUS 8 не получится, подскажите кто как это победил ?
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.