Програмирование pic на СИ.

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
Нашел транзистор. Понюхал.
Сообщения: 160
Зарегистрирован: Пт мар 29, 2013 23:53:14

Сообщение ALEKS1102X »

Забанить хотите ?
Ну что ж - это реальный итог того, что вы не знаете пики :)
Реклама
Друг Кота
Аватара пользователя
Сообщения: 25399
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4471603#p4471603"]Забанить хотите ?[/uquote]
Помилуй Бог! Я не модератор.
Но ты уже наговорил столько, что месяц отдыха покажутся мигом.
А насчет ПИКов ты себя уже проявил. Трудно найти что либо более нелепое... :facepalm: Практически всё, о чем ты тут рассказывал, оказалось пургой. Ну разве только #pragma попала в масть, да и то это легко находится в онлайн мануале на 18-е... #pragma - это костыль компилятора для реализации ненативных для компилятора сущностей.
Реклама
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

[uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4471417#p4471417"]Это какую структуру Вы имеете ввиду?
Ту - которую объявили при создании проекта?

#include <p24EP256GP204.h>

Так ДА! я с ней работаю :) а иначе - проц не поймёт даже названия своих SFR регистров.
А в современных даташитах на процы - не во всех есть описание (физическое) расположение этих регистров, поэтому, без такого файла - ВЫ ЛИЧНО хрен даже проц проинициализируете :)[/uquote] :))) :facepalm: :)))
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 25399
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="Martian",url="/forum/viewtopic.php?p=4471612#p4471612"]:facepalm:[/uquote] Интересно, какие такие "рабочие блоки" он делает при такой квалификации? :)))
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

Ну, смотря какого уровня. Да и гугл сейчас выдаст массу вариантов готовых каких-то решений, достаточно немного усилий и поверхностных знаний чтобы собрать что-то, удовлетворяющее заказчика.
Контактная информация:
Реклама
Нашел транзистор. Понюхал.
Сообщения: 160
Зарегистрирован: Пт мар 29, 2013 23:53:14

Сообщение ALEKS1102X »

Не, ну вообще - молодцы!
Сами с собой тут перепихнули (сь), любому, кто вошёл туфту втёрли :)
А если кто-то со своим мнением, то можно налечь, и убедить что неправ,
при этом - необязательно доказать физически, достаточно рейтинга :) да, КРАБ ? :)
Ладно, не нравиться правда, больше не буду приходить в течение года :)
Мне же по барабану :)
А кому нужна будет помощь, найдёте по адресу: aleks1102x@yandex.by
Реклама
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

Зачем что-либо доказывать? :dont_know: приведенная мною цитата из Вашего сообщения сама всё доказывает. Помимо остального текста. А КРАМ старательно пытался объяснить, но тщетно... И небольшой совет: не публикуйте адрес почты в явном виде.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 25399
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4471619#p4471619"]А если кто-то со своим мнением[/uquote] Любезный, мнение - это когда про художественную литературу или про девушку. В технике (и науке, тоже) не бывает мнений. Бывает предположение, доказательство, аксиома, норма и т.п. сущности, которые противоречат мнению. Разве только могут быть предпочтения при выборе интерфейса программ...
Но когда ты начинаешь нести ахинею про структуры, прикрываясь "мнением", то это выглядит просто клоунадой неадекватного персонажа.
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 162
Зарегистрирован: Чт ноя 26, 2015 23:22:35
Откуда: не с Уфы

Сообщение Родэрик »

[uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4471619#p4471619"]Ладно, не нравиться правда, больше не буду приходить в течение года :)[/uquote]
Не впадай в крайности. Мне вот лично нравится правда. Создай свою тему и рули там. Что-то в стиле "советы мастера ", "правда о блоках"...... итд. Уверен, мало кто пройдёт мимо.
Контактная информация:
Нашел транзистор. Понюхал.
Сообщения: 160
Зарегистрирован: Пт мар 29, 2013 23:53:14

Сообщение ALEKS1102X »

[uquote="Martian",url="/forum/viewtopic.php?p=4471618#p4471618"]Ну, смотря какого уровня. Да и гугл сейчас выдаст массу вариантов готовых каких-то решений, достаточно немного усилий и поверхностных знаний чтобы собрать что-то, удовлетворяющее заказчика.[/uquote]

Извините, влезу последний раз в этом году.
Уровень у меня ниже плинтуса, я ленивый, поэтому, если что-то закажут, тогда новый модуль использую в мк, а иначе никак :)
Поэтому, MCCP, USART, ADC, DAC, Vref, PWM, Timers, ну и тому подобное использую.
Более новое - нет, потому как никто пока ничего не заказывал.
https://drive.google.com/file/d/103Df9O ... drive_link
И там в архиве только то, что ну с индикаторами, потому как на автосервисы много делаю простых платок, и смысла показывать нету ...
И мне по барабану тот Гугел :) Если есть непонятки по какому-то модулю, то в помойке под названием "интернет" обычно ничего не найдёшь - спасают только даташиты, и
https://www.translate.ru/ - плохо я знаю англицкий :)
Ну бывает - нарвёшься на что-то путное, но я всё равно - прочитаю, в смысл вникну, и сделаю по своему.
Вот как-то так ...
Друг Кота
Аватара пользователя
Сообщения: 25399
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4472275#p4472275"]если что-то закажут, тогда новый модуль использую в мк, а иначе никак :)
Поэтому, MCCP, USART, ADC, DAC, Vref, PWM, Timers, ну и тому подобное использую.
Более новое - нет, потому как никто пока ничего не заказывал.
..[/uquote]
Модули не заказывают. Заказывают функционал изделия. А как он реализован и на каких модулях - дело разработчика.
Поэтому, например, при реализации генератора с высоким разрешением один ставит внешний DDS, а другой использует внутренний NCO в сочетании с PWM.
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 162
Зарегистрирован: Чт ноя 26, 2015 23:22:35
Откуда: не с Уфы

Сообщение Родэрик »

Уважаемые спецы, помогите разрешить непонятку.
вот этот код все делает верно:

Код: Выделить всё

//xc8
const uint8_t R1 @0x18D0=0xAA;
EEADR=(uint8_t)&R1;
EEADRH=((uint16_t)&R1)>>8;
но без абсолютного размещения:

Код: Выделить всё

const uint8_t R1=0xAA;
пишется мусор. Что я упускаю?
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 25399
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Константа глобальная?
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 162
Зарегистрирован: Чт ноя 26, 2015 23:22:35
Откуда: не с Уфы

Сообщение Родэрик »

Да, определена вне всего.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 25399
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Нужны подробности.
1. Куда линкер размешает константу без абсолютного адреса?
2. Какой контроллер?
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 162
Зарегистрирован: Чт ноя 26, 2015 23:22:35
Откуда: не с Уфы

Сообщение Родэрик »

Сейчас переместил определение в основной цикл - ничего не изменилось, даже хэш тот же. В принципе оно и справедливо. Это же const. Как его видимость может на что-то влиять.......

Вообще, на этот феномен натолкнулся случайно. Решил немножко подмодифицировать старый код и в числе прочего перенести всё из eeprom во flash ..... и вот на копировании в EEADR остановился. Разумеется, пробовал разное, что в голову приходило, попутно делал и другие изменения, адреса менялись, но проблема оставалась.......
На данный момент, например, компилятор эту константу разместил по 0x7C5

вот такой код в начале основного цикла:

Код: Выделить всё

IMP=(uint16_t)&R1;
EEADR=(uint8_t)&R1;
EEADRH=((uint16_t)&R1)>>8;
дает в итоге:
IMP== 0x8006 // иногда бывает 0x8005, как-то зависит от других изменений в коде
EEADR==0xC5 //что правильно, но бывает и 0x05||0x06
в EEADRH нули // что не правильно, но бывало и 0x80

чип 16f886

Но стоит только зафиксировать адрес, скажем на 0x7D0, то сразу получаю в тех регистрах 0x87D0, что абсолютно верно.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 25399
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="Родэрик",url="/forum/viewtopic.php?p=4473213#p4473213"]Как его видимость может на что-то влиять...[/uquote]
Легко. Он может вообще перекочевать в ОЗУ, если не будет квалификатора static.
Нашел транзистор. Понюхал.
Сообщения: 160
Зарегистрирован: Пт мар 29, 2013 23:53:14

Сообщение ALEKS1102X »

[uquote="Родэрик",url="/forum/viewtopic.php?p=4473159#p4473159"]Уважаемые спецы, помогите разрешить непонятку.
вот этот код все делает верно:

Код: Выделить всё

//xc8
const uint8_t R1 @0x18D0=0xAA;
EEADR=(uint8_t)&R1;
EEADRH=((uint16_t)&R1)>>8;
но без абсолютного размещения:

Код: Выделить всё

const uint8_t R1=0xAA;
пишется мусор. Что я упускаю?[/uquote]

Может лучше вот так:

volatile const R1 __at(0x18D0) = 0x00AA;

EEADR = (uint8_t)(R1);
EEADRH = (uint8_t)(R1 >> 8);

Только для Родэрик:
https://disk.yandex.ru/d/qeZEpqHLQdg1cw

Добавлено after 36 minutes 3 seconds:
[uquote="Родэрик",url="/forum/viewtopic.php?p=4471651#p4471651"][uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4471619#p4471619"]Ладно, не нравиться правда, больше не буду приходить в течение года :)[/uquote]
Не впадай в крайности. Мне вот лично нравится правда. Создай свою тему и рули там. Что-то в стиле "советы мастера ", "правда о блоках"...... итд. Уверен, мало кто пройдёт мимо.[/uquote]

Нет времени темы возглавлять.
Проще - зайти пару раз в неделю/месяц, и помочь кому-то, ну, если есть возможность помочь ...
Друг Кота
Аватара пользователя
Сообщения: 25399
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4475279#p4475279"]volatile const R1 __at(0x18D0) = 0x00AA;[/uquote]
Ты же ничего не изменил... :)))
У него и без volatile все нормально работает.
Вопрос был про отсутствие абсолютного адреса.
А ты просто заменил символ @ на __at.
Нашел транзистор. Понюхал.
Сообщения: 160
Зарегистрирован: Пт мар 29, 2013 23:53:14

Сообщение ALEKS1102X »

[uquote="КРАМ",url="/forum/viewtopic.php?p=4475327#p4475327"][uquote="ALEKS1102X",url="/forum/viewtopic.php?p=4475279#p4475279"]volatile const R1 __at(0x18D0) = 0x00AA;[/uquote]
Ты же ничего не изменил... :)))
У него и без volatile все нормально работает.
Вопрос был про отсутствие абсолютного адреса.
А ты просто заменил символ @ на __at.[/uquote]

В адресе _ почти ничего : :))) если не считать что там была ошибка - адрес для пик16-18 в любом случае это не "uint8_t", и значение он собирался сохранить 16-ти значное ...
А вот после ... человек обращается к значению того адреса - младшего, ну в принципе - нормально ...
А вот дальше !!! :)
Он пытается считать старший байт ВОСЬМИ-битного регистра :) Даже не так ! Там написана БЕЛЕБЕРДА :)
Есть желание (КРАМ), то расшифруйте - что там написано :)

А в остальном - ДА! - одно и то же :)

const uint8_t R1 @0x18D0=0xAA; - вот это ЧТО? По адресу 0x18D0 записать значение 0хАА ? правильно ?

ну понятно, что:
следующая команда будет корректной - будет считано 0хАА,
а вот следующая команда - это НЕЧТО!
В восьмибитный байт "ADRESH" загрузить 16-ти битную пародию .... константы, которая уже закончилась (она была восьмибитной) ... да там вообще не читаемо ....

Немного может не в тему, но чем отличается "@" и "__at() :
Я не уверен, что просто объявив адрес напрямую "@" - после компиляции - проц запустится ?!?
Просто к примеру, в том месте ПЗУ на данный момент находилась уже прошивка (некий код, который туда кинул ХС8) ...
Вот через "__at" я точно уверен, что МПЛАБ подвинется, а через прямую вставку адреса ... да хер его знает ...
Последний раз редактировалось ALEKS1102X Вс сен 10, 2023 16:47:20, всего редактировалось 1 раз.
Ответить

Вернуться в «PIC»