Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
20.03.2012, 10:42
|
|
Прописка
Регистрация: 24.08.2005
Сообщений: 139
Сказал спасибо: 18
Сказали Спасибо 16 раз(а) в 15 сообщении(ях)
|
Неясный -- warning
имеется строка в программе
при условии формируется (изменяется) уставка ust1 которая сразу записывается в EEPROM и там сохраняется по адресу add1 , но копилятор выдает все время ошибку
../prog5.c:279: warning: passing argument 1 of '__eewr_word_m8535' discards qualifiers from pointer target type
программа вринципи работает нормально и с этой ошибкой но хотелось бы разобратся что не так
, компилятор AVRStudio4
кстати когда последущем данные записываются обратно в из памяти в параметр уставки ust1 ошибок нету
PHP код:
|
PHP:
#include ‹avr/iom8535.h›
...
const unsigned int add1 EEMEM = 32764; //адрес в EEPROM
...
...
/*ругается на эту строку*/
if (stv_1==1) {stv_1=0; ++ust1; eeprom_write_word(&add1, ust1); if(ust1›1200){ust1=1200;}}
...
...
ust1 = eeprom_read_word(&add1); //прочитать данные из EEPROM
|
Последний раз редактировалось vvkka; 20.03.2012 в 10:48.
|
|
|
|
20.03.2012, 11:09
|
|
Вид на жительство
Регистрация: 14.06.2009
Адрес: Україна Київська обл. м.Буча
Сообщений: 327
Сказал спасибо: 104
Сказали Спасибо 105 раз(а) в 69 сообщении(ях)
|
Re: Неясный -- warning
Убери const.
|
|
|
Сказали "Спасибо" Djakovskij
|
|
|
20.03.2012, 11:17
|
|
Прописка
Регистрация: 24.08.2005
Сообщений: 139
Сказал спасибо: 18
Сказали Спасибо 16 раз(а) в 15 сообщении(ях)
|
Re: Неясный -- warning
да предупреждение изчезло , спасибо но если можно коментарий , почему адрес нельзя обьявить как константу, в некоторых примерах я встречал такую форму записи и ошибок небыло
|
|
|
|
20.03.2012, 11:57
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Неясный -- warning
Сообщение от vvkka
|
и там сохраняется по адресу add1
|
Может, все-таки не "по адресу add1", а по адресу хранения переменной addr1 ? Т.е. переменной addr1, хранящейся в EEPROM по неизвестному адресу, присвоено значение NNNN. Это будет для понимания проще.
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
20.03.2012, 13:02
|
|
Гражданин KAZUS.RU
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
|
Re: Неясный -- warning
по моему это косяк в программе - зачем неизменный адрес передавать ссылкой?
|
|
|
|
20.03.2012, 13:29
|
|
Заблокирован
Регистрация: 27.03.2007
Сообщений: 1,328
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
|
Re: Неясный -- warning
И потом, зачем объявлять переменную, которая будет константой? Объявите константу через #define
PHP код:
|
#include ‹avr/iom8535.h›
...
#define EE_ADDRESS (unsigned int *)32764 //адрес в EEPROM
...
...
if (stv_1==1) {stv_1=0; ++ust1; eeprom_write_word(EE_ADDRESS, ust1); if(ust1›1200){ust1=1200;}}
...
...
ust1 = eeprom_read_word(EE_ADDRESS);
|
|
|
|
Сказали "Спасибо" Yurkin2007
|
|
|
20.03.2012, 17:36
|
|
Прописка
Регистрация: 24.08.2005
Сообщений: 139
Сказал спасибо: 18
Сказали Спасибо 16 раз(а) в 15 сообщении(ях)
|
Re: Неясный -- warning
Сообщение от Yurkin2007
|
И потом, зачем объявлять переменную, которая будет константой? Объявите константу через #define
PHP код:
|
#include ‹avr/iom8535.h›
...
#define EE_ADDRESS (unsigned int *)32764 //адрес в EEPROM
...
...
if (stv_1==1) {stv_1=0; ++ust1; eeprom_write_word(EE_ADDRESS, ust1); if(ust1›1200){ust1=1200;}}
...
...
ust1 = eeprom_read_word(EE_ADDRESS);
|
|
а если таких переменных будет большое количество , возможноли создать массив указателей или констант адресации, возможно у кого есть такие примеры
|
|
|
|
20.03.2012, 20:16
|
|
Вид на жительство
Регистрация: 21.10.2009
Сообщений: 343
Сказал спасибо: 181
Сказали Спасибо 64 раз(а) в 56 сообщении(ях)
|
Re: Неясный -- warning
Сообщение от vvkka
|
но копилятор выдает все время ошибку
../prog5.c:279: warning: passing argument 1 of '__eewr_word_m8535' discards qualifiers from pointer target type
|
Правильный вариант примерно так:
Код:
|
eeprom_write_word((uint16_t *)&add1, ust1); |
|
|
|
|
20.03.2012, 20:36
|
|
Вид на жительство
Регистрация: 21.10.2009
Сообщений: 343
Сказал спасибо: 181
Сказали Спасибо 64 раз(а) в 56 сообщении(ях)
|
Re: Неясный -- warning
Сообщение от vvkka
|
а если таких переменных будет большое количество , возможноли создать массив указателей или констант адресации, возможно у кого есть такие примеры
|
Какой то сложный путь выбираете.
Если данные неосмысленные то типа так
Код:
|
uint8_t masiv_bait[20] EEMEM; |
Запись всего блока eeprom_write_block или eeprom_update_block
Удобнее пользоваться структурой.
И писать весь блок eeprom_update_block
запишет только измененные значения.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:07.
|
|