AVR studio в вопросах и ответах
Что-то вы в оффтоп свалились, товарищи.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Реклама
Gudd-Head, прошу прощения.
А AVR Studio только к протеусу можно подключить? С Микрокапом она не дружит? А то не охото новую программу осваивать, а моделировать работу МК в виртуальном железе очень хотелось бы.
А AVR Studio только к протеусу можно подключить? С Микрокапом она не дружит? А то не охото новую программу осваивать, а моделировать работу МК в виртуальном железе очень хотелось бы.
Где это вы такой Z80 нашли? В те времена он работал на максимальной частоте 2.5Мгц, потом появились его высокоскоростные аналоги на Z80A 4Мгц, 6Мгц, 8Мгц и даже Z80H на 12Мгц.
14Мгц это вероятно была системная частота которая делилась формируя необходимые частоты в схеме и в том числе нужные для процессора 3.5мгц, потом эти 3.5Мгц тактируют внутренний конвеер в процессоре, и каждая команда выполняется минимум за 4 таких такта, даже NOP.
3000 тактов на бит это не перебор, их можно потратить на помехоустойчивый алгоритм.
14Мгц это вероятно была системная частота которая делилась формируя необходимые частоты в схеме и в том числе нужные для процессора 3.5мгц, потом эти 3.5Мгц тактируют внутренний конвеер в процессоре, и каждая команда выполняется минимум за 4 таких такта, даже NOP.
3000 тактов на бит это не перебор, их можно потратить на помехоустойчивый алгоритм.
Доброго времени суток! Подскажите а как в студии писать в еепром собственные структуры? С байтами то все понятно, а вот по аналогии со структурами не получается работать. Структура имеет следующий вид
Необходимо записать в еепром массив из 10 таких структур. Ткните мордой пожалуйста
Заранее благодарен 
Спойлер
Код: Выделить всё
typedef struct {
unsigned char R;
unsigned char G;
unsigned char B;
} TColor;есть стандартные макросы для работы с EEPROM. в определении структуры просто указываете ее принадлежность к памяти EEPROM - все должно работать автоматом. Как правильно это записать не подскажу - предпочитаю использовать собственноручно написанные функции для работы с переферией. Поищите в просторах инета. В Code Vision это выглядит так: eeprom char x = 0; где eeprom - модификатор памяти.
или eeprom TColor x {0,1,2};
или eeprom TColor x {0,1,2};
Fucking static initialization order fiasco
- Реклама
С кодевижном так и есть, обозвал еепромом и работай как с обычной переменной, но в студии так не прокатит, я то ставлю описание EEMEM для переменной структуры НО, для работы с памятью нужно делать eeprom_update_xxx делать, я так понимаю что мне блок нужен но я не могу правильно описать эти функции
Напишите функцию, которая будет брать элементы структур и запихивать их в EEPROM - тем более, что структуры у Вас однотипные.
Fucking static initialization order fiasco
Но это ведь будет костыль. Разве нет? Должен же быть способ делать это без "посредников"?
В студии по моему такого нет. А библиотеки - это не те же костыли?
Просто Вы их пользуете по умолчанию. )) Да и Code Vision это все в соответствующий код преобразует, хотя и запись проще.
Fucking static initialization order fiasco
Меня просто смущает наличие функции eeprom_update_block, а точнее что я не знаю как ей правильно воспользоваться, там то указывается размер того что мы пишем, значит можно вписать что-то свое...
Посмотрел, там есть какой-то eeprom_write_block с тремя параметрами. куда писать, откуда и скока байт. А update_block - там еще проверка на соответствие данных идет. Если равны - не пишет, если нет - перезаписывает.
http://www.atmel.com/webdoc/AVRLibcRefe ... 4bc4d.html
Т.е. Вы указываете адрес памяти ОЗУ, откуда писать (почему-то он с модификатором const) - адрес Вашей структуры, адрес памяти в EEPROM и скока байт писать (размер структуры sizeof)
http://www.atmel.com/webdoc/AVRLibcRefe ... 4bc4d.html
Т.е. Вы указываете адрес памяти ОЗУ, откуда писать (почему-то он с модификатором const) - адрес Вашей структуры, адрес памяти в EEPROM и скока байт писать (размер структуры sizeof)
Fucking static initialization order fiasco
Вот вот, кто бы ткнул носом как надо и не надо делать)))
пока будете ждать, что кто-то ткнет - сами бы уже натыкались в сласть и разобрались. 
Fucking static initialization order fiasco
Да и так не первый день сижу, правда до этого труднее было, инета не было)
Спойлер
И свет только с генератором, хорошо нетбук с батареей)))) Фаллаут отдыхает)- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
нашел у себя, вроде с аврфрекса, может подойдет, сам не пробовал:
As for the structures, suppose we have structure ST like this:
we have to define a EEPROM variable of ST type
and also an ordinary variable of type ST
Now, suppose we initiate mystructure like this:
We can write the whole structure to eeprom without bothering with the size, individual members, etc. by calling this function:
like this: (note the sizeof(ST) statement in the function)
like this:
As for the structures, suppose we have structure ST like this:
Код: Выделить всё
typedef struct SStructure{
int8_t varintbyte;
int16_t varintword;
double vardouble;
char varchar[10];
}ST;
Код: Выделить всё
ST EEMEM EEStruct;Код: Выделить всё
ST mystructure;Код: Выделить всё
mystructure.varintbyte=10;
mystructure.varintword=516;
mystructure.vardouble=123.45;
strcpy(mystructure.varchar,"Share it");Код: Выделить всё
void WriteStructureToEeprom(ST a){
eeprom_write_block((const void*)&a, (void*)&EEStruct, sizeof(ST));
}
Код: Выделить всё
WriteStructureToEeprom(mystructure);
and read the whole structure back from eeprom by calling this function:
ST ReadStructureFromEeprom(void){
ST temp;
eeprom_read_block((void*)&temp, (const void*)&EEStruct, sizeof(ST));
return(temp);
}Код: Выделить всё
mystructure=ReadStructureFromEeprom();О, благодарю, попробую реализовать 
Подскажите, пожалуйста, можно ли отключить подбивку нулями ("padding") между подряд идущими в сегменте кода директивами .db с нечётным количеством байт? Количество директив чётное, так что память будет заполнена "без дырки", а вот лишние нули между данными не нужны. В Гугле ничего подобного найти не удалось. Заранее спасибо.
Нет нельзя. Эта добивалка - аппаратная, контроллер в памяти программ может хранить только 16-битные значения и соответственно каждая новая строка в исходнике это новый адрес в памяти программ а он указывает только на слова.
B@R5uk, не совсем понял, что вы хотите.
Но я храню графическое изображение цифр (по 5 байт на символ) без пробелов в ПП вот так (с помощью "\"):
Но я храню графическое изображение цифр (по 5 байт на символ) без пробелов в ПП вот так (с помощью "\"):
Код: Выделить всё
numbers: .DB 0b00111110, 0b01010001, 0b01001001, 0b01000101, 0b00111110,/*0*/\
0b00000000, 0b01000010, 0b01111111, 0b01000000, 0b00000000,/*1*/\
0b01000010, 0b01100001, 0b01010001, 0b01001001, 0b01000110,/*2*/\
0b00100001, 0b01000001, 0b01000101, 0b01001011, 0b00110001,/*3*/\
0b00011000, 0b00010100, 0b00010010, 0b01111111, 0b00010000,/*4*/\
0b00100111, 0b01000101, 0b01000101, 0b01000101, 0b00111001,/*5*/\
0b00111100, 0b01001010, 0b01001001, 0b01001001, 0b00110000,/*6*/\
0b00000001, 0b01110001, 0b00001001, 0b00000101, 0b00000011,/*7*/\
0b00110110, 0b01001001, 0b01001001, 0b01001001, 0b00110110,/*8*/\
0b00000110, 0b01001001, 0b01001001, 0b00101001, 0b00011110;/*9*/[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Gudd-Head, то что надо!
Спасибо.
А то я уж начал писать программу, которая переформатирует мне все данные в слова с разным числом слов в строке.
Спасибо.А то я уж начал писать программу, которая переформатирует мне все данные в слова с разным числом слов в строке.




