|
|
  |
создание переменной в EEPROM |
|
|
|
Jun 4 2006, 00:32
|

Местный
  
Группа: Свой
Сообщений: 293
Регистрация: 14-03-06
Пользователь №: 15 254

|
Если я правильно понимаю то следующая запись Код eeprom char fraza[5] = {0x0d,0x0a,0x0d,0x0a,0xFF}; должна создать переменную в eeprom, типа char c именем fraza и длинной 5 символов но запуская хекс файл в протеусе, нечяего похожего в еепром я не вижу и даже кода записываю туда другие данные. В чем прикол ????
|
|
|
|
|
Jun 4 2006, 01:05
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(TamTam @ Jun 4 2006, 03:32)  должна создать переменную в eeprom, типа char c именем fraza и длинной 5 символов так она и создается с указанными именем и длиной. А вы что ждете? Чтобы она еще была проинициализирована вашими данными? дык "прикол" в том, что 1. proteus - "фтопку"; 2. созданный компилятором *.eep файл содержит данные инициализации eeprom и его надо зашивать в eeprom отдельно от основной прошивки.
|
|
|
|
|
Jun 4 2006, 16:47
|

Местный
  
Группа: Свой
Сообщений: 293
Регистрация: 14-03-06
Пользователь №: 15 254

|
Цитата(defunct @ Jun 4 2006, 05:05)  Цитата(TamTam @ Jun 4 2006, 03:32)  должна создать переменную в eeprom, типа char c именем fraza и длинной 5 символов
так она и создается с указанными именем и длиной. А вы что ждете? Чтобы она еще была проинициализирована вашими данными? дык "прикол" в том, что 1. proteus - "фтопку"; 2. созданный компилятором *.eep файл содержит данные инициализации eeprom и его надо зашивать в eeprom отдельно от основной прошивки. Огромное спавсибо за ответ. а то я уж начал думать что тут что то не так. и еще один вопрос, Подскажите а как создать в eeprom переменную которая хранилабы записи о ключах, тоесть как массив со влажением к примеру мне нужно записать 3 ключа у которых длинна 4 байта чтобы получило примерно так key[1][3] первый ключь 3 байт
|
|
|
|
|
Jun 4 2006, 17:22
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(TamTam @ Jun 4 2006, 19:47)  Подскажите а как создать в eeprom переменную которая хранилабы записи о ключах, ... к примеру мне нужно записать 3 ключа у которых длинна 4 байта чтобы получило примерно так key[1][3] можно объявить тип "ключ" как массив из 4 символов, и объявить переменную "массив ключей" из трех элементов: Код typedef __eeprom char TKey[4]; static TKey keys[3]; можно по другому.. Например объявить тип структуру "ключ" и переменную массив - ключей: Код typedef __eeprom struct { // поля структуры char str[4]; } TKey; static TKey keys[3]; Второй путь мне нравится больше.. т.к. доступ будет более наглядный: keys[0].str = "xxx"..
|
|
|
|
|
Jun 4 2006, 17:56
|

Местный
  
Группа: Свой
Сообщений: 293
Регистрация: 14-03-06
Пользователь №: 15 254

|
Цитата(defunct @ Jun 4 2006, 21:22)  можно по другому.. Например объявить тип структуру "ключ" и переменную массив - ключей: Код typedef __eeprom struct { // поля структуры char str[4]; } TKey; static TKey keys[3]; Второй путь мне нравится больше.. т.к. доступ будет более наглядный: keys[0].str = "xxx".. да я с вами обсолютно согласен второй способ удобнее, но вот незадача, я юзаю CVAVR и он мне написал Цитата structure mast de stored in the same memory class as defined как мне с этим быть ???
|
|
|
|
|
Jun 4 2006, 18:07
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(TamTam @ Jun 4 2006, 20:56)  Цитата structure must be stored in the same memory class as defined
как мне с этим быть ??? Ух может static __eeprom TKey keys[3]; (сорри нет у меня CV чтобы проверить)
|
|
|
|
|
Jun 4 2006, 18:44
|

Местный
  
Группа: Свой
Сообщений: 293
Регистрация: 14-03-06
Пользователь №: 15 254

|
Цитата(kertis @ Jun 4 2006, 22:26)  Цитата(WHALE @ Jun 4 2006, 14:32)  proteus ,может и "фтопку",а VMLAB инициализирует EEPROM в соответствии с eep файлом.
песенка ... и протеус тоже ... как я рекомендую в заперщенном курсе, изучение прграмы начинайте с изучения примеров к ней - к протеусу их около 70 ! Есть там пример и с еепром. откройте его и посмотрите как и что надо делать. Читаю ваш курс, но вот последняя статья разочеровала (та что про USART) хотелось бы видеть там Какой нибудъ пример обмена данными с компьютером. Ну к примеру получил МК данные и запихнул их в несколько переменных а потом по запросу вернул 1 из этих переменных, а то както слишком уж поверхностно получилось. Спасибо Вам за то что вы у нас есть (новичков). с нетерпением жду продолжения. Цитата(defunct @ Jun 4 2006, 22:07)  Цитата(TamTam @ Jun 4 2006, 20:56)  Цитата structure must be stored in the same memory class as defined
как мне с этим быть ??? Ух может static __eeprom TKey keys[3]; (сорри нет у меня CV чтобы проверить) Да именно так только это ( __ ) ЯРОВСАКЯ ШТУЧКА В CVAVR такого нет. Огромное всем спасибо. МК рулез.
|
|
|
|
|
Jun 5 2006, 00:32
|
Частый гость
 
Группа: Участник
Сообщений: 146
Регистрация: 16-05-05
Пользователь №: 5 069

|
Цитата TamTam Да именно так только это ( __ ) ЯРОВСАКЯ ШТУЧКА В CVAVR такого нет. __________ Действительно в CodeVisionAVR двойной подчерк ненужен возле eeprom, но работает и с ним. А мешает static. __________ Вот так будет компилироваться: Код //это будет в еепром typedef eeprom struct { char eestr[4]; } eeTKey; eeprom eeTKey eekeys[3] = {{0x11,0x12,0x13,0x14},{0x21,0x22,0x23,0x24},{0x31,0x32,0x33,0x34}}; //инициализация необязательна, но без нее будут нули //буквы ee (eestr, eeTKey и тд) необязательны //просто так сразу видно что эта переменная в еепром _______________ _______________ Цитата defunct ... Второй путь мне нравится больше.. т.к. доступ будет более наглядный: keys[0].str = "xxx".. _________ Ну, не знаю, как так просто присвоить в CodeVisionAVR. По моему только по байту: Код //эти переменные будут в RAM typedef struct{ char str[4]; } TKey; TKey keys[3];
//....
void main(void) { //...
//допустим надо передать например группу 1 из еепром в рам unsigned char c1; for(c1=0; c1<4; c1++){ keys[1].str[c1] = eekeys[1].eestr[c1]; }
//... в AVR Studio все выглядит вроде нормально. __________ Александр 2006 06 05
|
|
|
|
|
Jun 5 2006, 01:27
|

Местный
  
Группа: Свой
Сообщений: 293
Регистрация: 14-03-06
Пользователь №: 15 254

|
у меня вот так, и вроде все ок. Код typedef eeprom struct { char key_value[4]; } TKey; static eeprom TKey Keys[3] = {{0x11,0x12,0x13,0x14},{0x21,0x22,0x23,0x24},{0x31,0x32,0x33,0x34}}; И кстати может кто знает как в CVAVR объявить неинециализированную переменную вроде в яре есть no__init или както так в хелпе покапался не нашол.
|
|
|
|
|
Jun 5 2006, 04:12
|

Знающий
   
Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768

|
Цитата(TamTam @ Jun 5 2006, 05:27)  у меня вот так, и вроде все ок. Код typedef eeprom struct { char key_value[4]; } TKey; static eeprom TKey Keys[3] = {{0x11,0x12,0x13,0x14},{0x21,0x22,0x23,0x24},{0x31,0x32,0x33,0x34}}; И кстати может кто знает как в CVAVR объявить неинециализированную переменную вроде в яре есть no__init или както так в хелпе покапался не нашол. Епром зачем статическим обзывать? CV в старт-апе по дефолту всем неинициализированным переменным присваивает 0.А зачем неинициализированная-там-же мусор.Но в принципе можно в конфигурации пректа в опциях компилятора поставить галочку-использовать внешний старт-ап и наваять самому.
--------------------
"Hello, word!" - 17 errors 56 warnings
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|