реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Перевод программы AVR на PIC.
dxp
сообщение Aug 21 2014, 09:53
Сообщение #16


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



QUOTE (TAPAKAN @ Aug 21 2014, 15:28) *
Компилятор mikroC for PIC mikroElektronika лицензия.
[attachment=86575:mikroc.JPG]

Похоже, что что-то с компилятором не так. Проверил ещё раз на древнем IAR v1.40E от 1998 года, проглотил без единого вопроса. Попробуйте убрать квалификаторы volatile const (для начала оба, если заработает, то потом по отдельности). Есть подозрение, что именно с ними у компилятора нелады (судя по 'cast' в сообщении).


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
TAPAKAN
сообщение Aug 21 2014, 10:48
Сообщение #17


Частый гость
**

Группа: Участник
Сообщений: 93
Регистрация: 13-01-06
Пользователь №: 13 150



Цитата(dxp @ Aug 21 2014, 13:53) *
Попробуйте убрать квалификаторы volatile const (для начала оба, если заработает, то потом по отдельности)

Заработало! Только если везде удалить.
Как минимум ошибки не выдает.
Можно опять писать.
Что получится дальше, еще не знаю.
Спасибо!


Все оказалось еще проще.
В строке
Код
volatile unsigned char Mes8[]={0x3e,0x20,0,0,0,0,0,0,0,0,0};

пропущена const
после добавления все работает.
Go to the top of the page
 
+Quote Post
dxp
сообщение Aug 21 2014, 12:04
Сообщение #18


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



QUOTE (TAPAKAN @ Aug 21 2014, 17:48) *
Все оказалось еще проще.
В строке
CODE
volatile unsigned char Mes8[]={0x3e,0x20,0,0,0,0,0,0,0,0,0};

пропущена const
после добавления все работает.

Ну, тут компилятор, по ходу, не прав: указатель на константный объект разрешено (и это вполне безопасно) инициализировать адресом неконстантного объекта (что и демонстрируют упомянутые компиляторы). Вот наоборот нельзя и это понятно - чтобы исключить изменение константного объекта через указатель. Ваш компилер зачем-то требует полного соответствия. Хорошо, что в данном случае вас это устраивает.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
hd44780
сообщение Aug 22 2014, 07:46
Сообщение #19


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Цитата(dxp @ Aug 21 2014, 18:04) *
Ну, тут компилятор, по ходу, не прав: указатель на константный объект разрешено (и это вполне безопасно) инициализировать адресом неконстантного объекта (что и демонстрируют упомянутые компиляторы). Вот наоборот нельзя и это понятно - чтобы исключить изменение константного объекта через указатель. Ваш компилер зачем-то требует полного соответствия. Хорошо, что в данном случае вас это устраивает.


Он прав. Если у пика гарвардская архитектура, как у авра, то const объекты всегда помещаются во flash, а не const - в RAM.
А это - совершенно разные адресные пространства.
Поэтому компилятор и выдаёт как минимум предупреждения. Даже на архитектурах с единым адресным пространством - фон-Неймана (например, обычные компы), модифицированного Гарварда (например, STM32) или ещё какие-то.
Если Вы хотите подавить эти ошибки/предупреждения, то используйте явное приведение типа. Но при этом имейте в виду все нюансы типа разных адресных пространств. Иначе полезут ошибки времени исполнения.


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 05:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01357 секунд с 7
ELECTRONIX ©2004-2016