|
Вопрос по CV AVR, cvavr |
|
|
|
Feb 22 2011, 21:01
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 21-10-09
Пользователь №: 53 117

|
Добрый день, вечер, ночь! Начал осваивать Си и столкнулся с двумя проблемами 1. Массивы Мне нужно сделать массив в eeprom для хранения настроек моего устройства. У устройства есть три функции имеющие две переменных у каждой. Т.е я создал три массива по десять строк и две ячейки в каждой строке. Когда я попытался создать ссылки на все эти массивы, то получил отлуп. Если делать одномерный массив, то все проходит, но как только добавляется колличество ячеек в строке, все CV ругается вот код Код // Declare your global variables here
eeprom unsigned int m3 [10][2]; eeprom unsigned int m4 [10][2]; eeprom unsigned int m7 [10][2]; eeprom unsigned int *bdz[]={m3,m4,m7}; И еще я не смог найти пример, как мне выдрать от туда нужные данные Например у меня есть две переменные в которых должны считываться ячейки из какого либо массива напр а,б как мне в них загрузить значение из например m3 строки 3??? Понимаю, что вопрос глупый, но я только осваиваю язык, а описания как это сделать так и не нашел. 2. Для вывода на индикатор использую функцию sprintа Код sprintf(lcd_buffer,"Fq:%i.%u",ts/100,ts%100); в итоге если я вывожу значение например 1000 у меня выводится на дисплей 10.0. Как только я начинаю уменьшать или увеличивать это число появляется еще один разряд после запятой. Как сделать, что бы у меня всегда выводилось 10.00??
|
|
|
|
|
 |
Ответов
|
Feb 26 2011, 19:28
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 21-10-09
Пользователь №: 53 117

|
Переполз на IAR и опять те же грабли.. делаю так: Код __eeprom unsigned int m3 [10][2]; __eeprom unsigned int m4 [10][2]; __eeprom unsigned int m7 [10][2]; __eeprom unsigned int *bdz[]={m3,m4,m7}; Код Error[Pe144]: a value of type "unsigned int __eeprom (*)[2]" cannot be used to initialize an entity of type "unsigned int *" Error[Pe144]: a value of type "unsigned int __eeprom (*)[2]" cannot be used to initialize an entity of type "unsigned int *" Error[Pe144]: a value of type "unsigned int __eeprom (*)[2]" cannot be used to initialize an entity of type "unsigned int *" Error while running C/C++ Compiler Что не так??
|
|
|
|
|
Feb 26 2011, 19:55
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (NickSmith @ Feb 26 2011, 22:28)  Что не так?? Что не так, написано черным по белому ТРИ раза подряд. 1) указатель на EEPROM и указатель на RAM это разные указатели. 2) имя двухмерного массива есть указатель на одномерный массив а не на элемент одномерного массива. Думать. Читать K&R и думать. QUOTE (Палыч @ Feb 26 2011, 22:48)  CODE __eeprom unsigned int ** bdz[] = {m3, m4, m7}; или CODE __eeprom unsigned int * bdz[] = {m3[0], m4[0], m7[0]}; в зависимости от того, что Вам нужно Оба неверные  .
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Feb 26 2011, 20:06
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 21-10-09
Пользователь №: 53 117

|
Цитата(zltigo @ Feb 26 2011, 22:55)  Что не так, написано черным по белому ТРИ раза подряд. 1) указатель на EEPROM и указатель на RAM это разные указатели. 2) имя двухмерного массива есть указатель на одномерный массив а не на элемент одномерного массива. Думать. Читать K&R и думать. Оба СОВСЕМ неверные  . K&R читаю постоянно, но пока не все понятно.. Мне нужно организовать три массива для сохранения трех типов параметров. Хочу создать массив с указателями, что бы можно было было работать с массивами через указатели...
|
|
|
|
|
Feb 26 2011, 20:39
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (NickSmith @ Feb 26 2011, 23:06)  Хочу.... хотение надо уметь описать словами: __eeprom unsigned int __eeprom *bdz[] = { m3[0], m4[0], m7[0] }; но для читабельности я бы так то-же самое описал: __eeprom unsigned int __eeprom *bdz[] = { &m3[0][0], &m4[0][0], &m7[0][0] }; QUOTE что бы можно было было работать с массивами через указатели... С вероятностью 95% это очень неудачная мысль хранить в EEPROM рабочие указатели. EEPROM это не RAM. QUOTE K&R читаю постоянно, но пока не все понятно.. Ну тут-то, в сообщении компилятора: QUOTE a value of type "unsigned int __eeprom (*)[2]" cannot be used to initialize an entity of type "unsigned int *" , что непонятно-то что?
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Feb 26 2011, 20:47
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 21-10-09
Пользователь №: 53 117

|
Цитата(zltigo @ Feb 26 2011, 23:39)  хотение надо уметь описать словами: __eeprom unsigned int __eeprom *bdz[] = { m3[0], m4[0], m7[0] };
но для читабельности я бы так то-же самое описал: __eeprom unsigned int __eeprom *bdz[] = { &m3[0][0], &m4[0][0], &m7[0][0] };
С вероятностью 95% это очень неудачная мысль хранить в EEPROM рабочие указатели. EEPROM это не RAM. Т.е это лучше в озу хранить?? И как я понимаю для указателя unsigned char не нужно??
|
|
|
|
|
Feb 26 2011, 21:07
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 21-10-09
Пользователь №: 53 117

|
Цитата(zltigo @ Feb 26 2011, 23:53)  Что "'это" и что "не нужно" для указателя unsigned char я совсем не понял  . Я имел в виду тип данных для хранения указателей unsigned int. Можно ли использовать char? Теперь не могу разобраться как при помощи bdz получить данные из нужнго мне массива.. Например мне нужно записать данные в строку 5 ячейку 1 m4 их temp ... bdz[1][4][1]=temp; Работать не хочет??
|
|
|
|
Сообщений в этой теме
NickSmith Вопрос по CV AVR Feb 22 2011, 21:01 Палыч Цитата(NickSmith @ Feb 23 2011, 00:01) ка... Feb 23 2011, 04:23 NickSmith Цитата(Палыч @ Feb 23 2011, 07:23) Наприм... Feb 23 2011, 10:16  Палыч Цитата(NickSmith @ Feb 23 2011, 13:16) А ... Feb 23 2011, 13:17   NickSmith Цитата(Палыч @ Feb 23 2011, 16:17) А, вот... Feb 23 2011, 15:33    Палыч Цитата(NickSmith @ Feb 23 2011, 18:33) ..... Feb 23 2011, 18:47     NickSmith Цитата(Палыч @ Feb 23 2011, 21:47) Собств... Feb 23 2011, 20:05 Палыч Код__eeprom unsigned int ** bdz[] = {m3, m... Feb 26 2011, 19:48       zltigo QUOTE (NickSmith @ Feb 27 2011, 00:07) Я ... Feb 26 2011, 21:26        NickSmith Цитата(zltigo @ Feb 27 2011, 00:26) Ну и ... Feb 26 2011, 21:34
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|