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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

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

ЗЫ: typedef :)
jazz393
Встал на лапы
Сообщения: 118
Зарегистрирован: Ср фев 05, 2014 18:54:39

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

Сообщение jazz393 »

добавил

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

typedef struct st state_in_memory;
__eeprom state_in_memory structProg[100];

пишет ту же самую ошибку
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

А так

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

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

__eeprom  t_state  structProg[100];

?
jazz393
Встал на лапы
Сообщения: 118
Зарегистрирован: Ср фев 05, 2014 18:54:39

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

Сообщение jazz393 »

Аlex писал(а):А так

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

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

__eeprom  t_state  structProg[100];

?

так тоже =(
a_skr
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

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

Сообщение a_skr »

На какую строчку?
jazz393
Встал на лапы
Сообщения: 118
Зарегистрирован: Ср фев 05, 2014 18:54:39

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

Сообщение jazz393 »

a_skr писал(а):На какую строчку?

__eeprom t_state structProg[100];
a_skr
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

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

Сообщение 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}}; 
jazz393
Встал на лапы
Сообщения: 118
Зарегистрирован: Ср фев 05, 2014 18:54:39

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

Сообщение 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 раз
edj90
Открыл глаза
Сообщения: 70
Зарегистрирован: Ср апр 09, 2014 13:53:14
Откуда: Владивосток

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

Сообщение edj90 »

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

Сорри если было.
Когда дойдет до ума, так и перестану задавать глупые вопросы!!!
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

jazz393 писал(а):Хотелось бы ещё узнать как это 100 переменных инициилизировать только 1 раз
Я так понимаю, компилятор сам будет обращаться к еепром, при обращении к этим переменным.
Тогда теперь не вижу никаких проблем :dont_know: В начале программы инициализируйте их как душе угодно, можно циклом, чтобы писанины было меньше.
jazz393
Встал на лапы
Сообщения: 118
Зарегистрирован: Ср фев 05, 2014 18:54:39

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

Сообщение jazz393 »

первый раз сталкиваюсь с работой eeprom, имею ввиду следующее - я 1 раз инициилизирую всё это и зашиваю и после я меняю прогу, но эти данные остаются неизменными... (как надо прошивать eeprom для этого ?) использхую asisp 11.62, там есть 2 варианта - program Flash - собственно этим я всегда прошиваю контроллер и program eeprom - это я никогда не трогал(т.к. не знаю что это), и я так понимаю что этим и надо будет прошивать мои переменные...
Последний раз редактировалось ibiza11 Пт авг 22, 2014 15:11:54, всего редактировалось 1 раз.
Причина: 2.7 Запрещается бездумное вложенное цитирование, цитирование огромных объёмов текста без сокрытия его под спойлер, а так же полное, бессмысленное цитирование предыдущего поста.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

Совершенно ничего непонятно из Вашего поста ... Что значит прошивать переменные, это как ?
Сначала Вы говорите про инициализацию переменных, потом про их зашитие при программировании. Это совершенно разные вещи :)
Вы просто сами, похоже, не разобрались что конкретно хотите, отсюда и вопрос не можете нормально сформулировать :)

я 1 раз инициилизирую всё это и зашиваю
Не знаю как в АВРах, я их никогда не прошивал, но в PIC'ах можно при прошивке вбить любые данные в EEPROM и они зальются в МК вместе с программой.
jazz393
Встал на лапы
Сообщения: 118
Зарегистрирован: Ср фев 05, 2014 18:54:39

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

Сообщение jazz393 »

Спойлер
Аlex писал(а):Совершенно ничего непонятно из Вашего поста ... Что значит прошивать переменные, это как ?
Сначала Вы говорите про инициализацию переменных, потом про их зашитие при программировании. Это совершенно разные вещи :)
Вы просто сами, похоже, не разобрались что конкретно хотите, отсюда и вопрос не можете нормально сформулировать :)
да я криво выразился...
ладно впинципе попробую сам разобраться или по крайней мере сформулировать...)
...зачем там program eeprom и program flash - не понимаю, в чём разница
Последний раз редактировалось ibiza11 Пт авг 22, 2014 15:12:23, всего редактировалось 1 раз.
Причина: 2.7 Запрещается бездумное вложенное цитирование, цитирование огромных объёмов текста без сокрытия его под спойлер, а так же полное, бессмысленное цитирование предыдущего поста.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

jazz393 писал(а):...зачем там program eeprom и program flash - не понимаю, в чём разница
Во flash лежит исполняемая программа, а в eeprom - пользовательские данные, которые нужно энерго-независимо хранить.
К flash обращается микроконтроллер, читая последовательно инструкции для выполнения, а к eeprom обращаетесь уже Вы, за своими данными.
Вот и вся разница :)
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

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

Сообщение FreshMan »

Аlex писал(а):К flash обращается микроконтроллер, читая последовательно инструкции для выполнения, а к eeprom обращаетесь уже Вы, за своими данными.

а разве во flash незя хранить константы ? :wink:
Tell Me The Truth
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

FreshMan писал(а):а разве во flash незя хранить константы ? :wink:
Кто такое сказал ?
Из тарелки тоже можно пиво пить, но она не для этого предназначена :)
Не вводите человека в заблуждение, он и так не понимает что для чего нужно :)
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

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

Сообщение FreshMan »

Аlex писал(а):Кто такое сказал ?

из опыта знаю :wink:
правда делал я это не из под CV , а в Eclipse
Аlex писал(а):Не вводите человека в заблуждение

Боже упаси !
просто хотелось маленькую ремарку сделать :)
Tell Me The Truth
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

FreshMan писал(а):из опыта знаю :wink:
правда делал я это не из под CV , а в Eclipse

Вы меня не поняли :) Я имел ввиду - кто сказал, что нельзя хранить ? Речь шла об основном назначении flash, а она, в первую очередь, предназначена для хранения исполняемых данных (программы).
Ну а константы можно хранить и в RAM, и в ROM, и в EEPROM, ... Где угодно. Главное, чтобы компилятор знал, что это константа и не дал её изменить :)
a_skr
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

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

Сообщение 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 (или как там в Вашем МК)
jazz393
Встал на лапы
Сообщения: 118
Зарегистрирован: Ср фев 05, 2014 18:54:39

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

Сообщение jazz393 »

Аlex писал(а):Во flash лежит исполняемая программа, а в eeprom - пользовательские данные, которые нужно энерго-независимо хранить.
К flash обращается микроконтроллер, читая последовательно инструкции для выполнения, а к eeprom обращаетесь уже Вы, за своими данными.
Вот и вся разница :)

Спасибо, я так собственно и думал, хотел убедится что правильно понимаю)
Ответить

Вернуться в «AVR»