Страница 320 из 421

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср авг 20, 2014 14:02:50
Аlex
jazz393 писал(а):с обычными переменными всё компилируется
Так вот и сделайте свою структуру "обычной переменной", говоря Си-шным языком - создайте свой тип, с которым потом делайте что угодно - хоть массив создавайте, хоть в еепром пихайте, хоть в функцию параметром передавайте, ... :)

ЗЫ: typedef :)

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср авг 20, 2014 14:09:11
jazz393
добавил

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

typedef struct st state_in_memory;
__eeprom state_in_memory structProg[100];
пишет ту же самую ошибку

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср авг 20, 2014 14:11:31
Аlex
А так

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

typedef struct{
  unsigned char A[8];
  unsigned char B[8];
  unsigned char C[8];
} t_state;

__eeprom  t_state  structProg[100];

?

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср авг 20, 2014 14:13:43
jazz393
Аlex писал(а):А так

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

typedef struct{
  unsigned char A[8];
  unsigned char B[8];
  unsigned char C[8];
} t_state;

__eeprom  t_state  structProg[100];

?
так тоже =(

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср авг 20, 2014 14:16:06
a_skr
На какую строчку?

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср авг 20, 2014 14:25:13
jazz393
a_skr писал(а):На какую строчку?
__eeprom t_state structProg[100];

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср авг 20, 2014 15:16:01
a_skr
В Вашей версии CV Вас спасёт следующее:

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

eeprom struct st
{
unsigned char A[8];
unsigned char B[8];
unsigned char C[8];
};

eeprom struct st structProg[100] = {{0,1},{3}};  

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср авг 20, 2014 15:22:44
jazz393
a_skr писал(а):В Вашей версии CV Вас спасёт следующее:

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

eeprom struct st
{
unsigned char A[8];
unsigned char B[8];
unsigned char C[8];
};

eeprom struct st structProg[100] = {{0,1},{3}};  
огромное спасибо, помогло!

Хотелось бы ещё узнать как это 100 переменных инициилизировать только 1 раз

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср авг 20, 2014 15:34:31
edj90
Ребят не знаю, знаете ли вы, или было уже, вот не плохая книга которой иногда руководствуюсь как начинающий
название: Лебедев М.Б. CodeVisionAVR. Пособие для начинающих (2008)

Сорри если было.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср авг 20, 2014 16:02:57
Аlex
jazz393 писал(а):Хотелось бы ещё узнать как это 100 переменных инициилизировать только 1 раз
Я так понимаю, компилятор сам будет обращаться к еепром, при обращении к этим переменным.
Тогда теперь не вижу никаких проблем :dont_know: В начале программы инициализируйте их как душе угодно, можно циклом, чтобы писанины было меньше.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср авг 20, 2014 16:28:12
jazz393
первый раз сталкиваюсь с работой eeprom, имею ввиду следующее - я 1 раз инициилизирую всё это и зашиваю и после я меняю прогу, но эти данные остаются неизменными... (как надо прошивать eeprom для этого ?) использхую asisp 11.62, там есть 2 варианта - program Flash - собственно этим я всегда прошиваю контроллер и program eeprom - это я никогда не трогал(т.к. не знаю что это), и я так понимаю что этим и надо будет прошивать мои переменные...

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср авг 20, 2014 16:33:00
Аlex
Совершенно ничего непонятно из Вашего поста ... Что значит прошивать переменные, это как ?
Сначала Вы говорите про инициализацию переменных, потом про их зашитие при программировании. Это совершенно разные вещи :)
Вы просто сами, похоже, не разобрались что конкретно хотите, отсюда и вопрос не можете нормально сформулировать :)
я 1 раз инициилизирую всё это и зашиваю
Не знаю как в АВРах, я их никогда не прошивал, но в PIC'ах можно при прошивке вбить любые данные в EEPROM и они зальются в МК вместе с программой.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср авг 20, 2014 16:40:32
jazz393
Спойлер
Аlex писал(а):Совершенно ничего непонятно из Вашего поста ... Что значит прошивать переменные, это как ?
Сначала Вы говорите про инициализацию переменных, потом про их зашитие при программировании. Это совершенно разные вещи :)
Вы просто сами, похоже, не разобрались что конкретно хотите, отсюда и вопрос не можете нормально сформулировать :)
да я криво выразился...
ладно впинципе попробую сам разобраться или по крайней мере сформулировать...)
...зачем там program eeprom и program flash - не понимаю, в чём разница

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср авг 20, 2014 16:45:40
Аlex
jazz393 писал(а):...зачем там program eeprom и program flash - не понимаю, в чём разница
Во flash лежит исполняемая программа, а в eeprom - пользовательские данные, которые нужно энерго-независимо хранить.
К flash обращается микроконтроллер, читая последовательно инструкции для выполнения, а к eeprom обращаетесь уже Вы, за своими данными.
Вот и вся разница :)

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср авг 20, 2014 16:53:59
FreshMan
Аlex писал(а):К flash обращается микроконтроллер, читая последовательно инструкции для выполнения, а к eeprom обращаетесь уже Вы, за своими данными.
а разве во flash незя хранить константы ? :wink:

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср авг 20, 2014 17:15:11
Аlex
FreshMan писал(а):а разве во flash незя хранить константы ? :wink:
Кто такое сказал ?
Из тарелки тоже можно пиво пить, но она не для этого предназначена :)
Не вводите человека в заблуждение, он и так не понимает что для чего нужно :)

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср авг 20, 2014 17:29:30
FreshMan
Аlex писал(а):Кто такое сказал ?
из опыта знаю :wink:
правда делал я это не из под CV , а в Eclipse
Аlex писал(а):Не вводите человека в заблуждение
Боже упаси !
просто хотелось маленькую ремарку сделать :)

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср авг 20, 2014 17:47:57
Аlex
FreshMan писал(а): из опыта знаю :wink:
правда делал я это не из под CV , а в Eclipse
Вы меня не поняли :) Я имел ввиду - кто сказал, что нельзя хранить ? Речь шла об основном назначении flash, а она, в первую очередь, предназначена для хранения исполняемых данных (программы).
Ну а константы можно хранить и в RAM, и в ROM, и в EEPROM, ... Где угодно. Главное, чтобы компилятор знал, что это константа и не дал её изменить :)

Re: CodeVision AVR в вопросах и ответах

Добавлено: Чт авг 21, 2014 07:35:45
a_skr

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

eeprom struct st structProg[100] = 
{  //A[8]               B[8]               C[8]      
  { {1,2,3,4,5,6,7,8}, {8,7,6,5,4,3,2,1}, {2,4,6,8,7,5,3,1} }, // 0-й элемент массива structProg
  { {1,1,1,1,1,1,1,1}, {2,2,2,2,2,2,2,2}, {3,3,3,3,3,3,3,3} }, // 1-й элемент массива structProg
  //.... 
  { {1,1,1,1,1,1,1,1}, {2,2,2,2,2,2,2,2}, {6,6,6,6,6,6,6,6} }  // 99-й элемент массива structProg
}; 
чтобы один раз прошить EEPROM, а потом перепрошивать прогу, не меняя EEPROM, см. фьюз EESAVE (или как там в Вашем МК)

Re: CodeVision AVR в вопросах и ответах

Добавлено: Чт авг 21, 2014 09:31:38
jazz393
Аlex писал(а):Во flash лежит исполняемая программа, а в eeprom - пользовательские данные, которые нужно энерго-независимо хранить.
К flash обращается микроконтроллер, читая последовательно инструкции для выполнения, а к eeprom обращаетесь уже Вы, за своими данными.
Вот и вся разница :)
Спасибо, я так собственно и думал, хотел убедится что правильно понимаю)