Страница 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 раз
Я так понимаю, компилятор сам будет обращаться к еепром, при обращении к этим переменным.
Тогда теперь не вижу никаких проблем

В начале программы инициализируйте их как душе угодно, можно циклом, чтобы писанины было меньше.
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 незя хранить константы ?

Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср авг 20, 2014 17:15:11
Аlex
FreshMan писал(а):а разве во
flash незя хранить константы ?

Кто такое сказал ?
Из тарелки тоже можно пиво пить, но она не для этого предназначена

Не вводите человека в заблуждение, он и так не понимает что для чего нужно

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

Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср авг 20, 2014 17:47:57
Аlex
FreshMan писал(а):
из опыта знаю
правда делал я это не из под 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 обращаетесь уже Вы, за своими данными.
Вот и вся разница

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