Страница 186 из 421
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср фев 29, 2012 21:38:36
R_ura
Мастер Ломастер писал(а):R_ura писал(а):Я как-то пытался с ВинАВРом разбираться, как-то сложно и громоздко показалось - редактор один, компилятор другой, отладчик третий.. )))
не смешите мои тапки: WinAVR встраивается в AVR Studio и получается одна среда с редактором, компилятором и отладчиком. а вот в CVAVR для отладки надо что-то стороннее юзать.
Я не смешу. Цепляется, да. Только в 4 студии довольно убогий текстовый редактор. Там даже функции свернуть нельзя. Если программа среднего размера, то крайне неудобно всю простынь прокручивать постоянно..
Поэтому и говорю какой-нибудь Code:Blocks + WinAVR+Studio.. Итого около полгигабайта..))) Хотелось бы что-нибудь поменьше.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср фев 29, 2012 22:21:43
Мастер Ломастер
R_ura писал(а):Поэтому и говорю какой-нибудь Code:Blocks + WinAVR+Studio.. Итого около полгигабайта..))) Хотелось бы что-нибудь поменьше.
я пользуюсь Eclipse для написания и компиляции и протеусом со студией для отладки - все вместе получается больше гигабайта и заметно больше - ну и что? меня устраивает

Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср фев 29, 2012 22:39:46
R_ura
Мастер Ломастер писал(а):R_ura писал(а):Поэтому и говорю какой-нибудь Code:Blocks + WinAVR+Studio.. Итого около полгигабайта..))) Хотелось бы что-нибудь поменьше.
я пользуюсь Eclipse для написания и компиляции и протеусом со студией для отладки - все вместе получается больше гигабайта и заметно больше - ну и что? меня устраивает

Вам к этому набору еще Альтиума не хватает..)))
Если для работы, то это понятно. Мне же для общего развития достаточно и попроще.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Чт мар 01, 2012 07:17:36
Мастер Ломастер
альтиум меня выбивает из колеи своей навороченностью... мой мозг не в состоянии воспринять это все разом.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Чт мар 01, 2012 09:48:07
Apparatchik
Мастер Ломастер писал(а):я пользуюсь Eclipse для написания и компиляции....
Где можно почитать про него для програмирования под AVR?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Чт мар 01, 2012 09:54:20
Мастер Ломастер
Apparatchik писал(а):Мастер Ломастер писал(а):я пользуюсь Eclipse для написания и компиляции....
Где можно почитать про него для програмирования под AVR?
например, есть три статьи здесь:
http://simple-devices.ru/articles/7-soft
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт мар 02, 2012 15:33:00
demiurg301
Коты поделитесь генератором кириллицы для символьных дисплеев WINSTAR. А то 2 CVAVR не хотит понимать русский

Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт мар 02, 2012 15:45:13
Мастер Ломастер
demiurg301 писал(а):Коты поделитесь генератором кириллицы для символьных дисплеев WINSTAR. А то 2 CVAVR не хотит понимать русский

пожалуйста
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт мар 02, 2012 16:34:07
demiurg301
Битый архив

Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт мар 02, 2012 16:38:49
kot-69
нормально распаковался.. спасибо Мастер!!
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт мар 02, 2012 16:52:46
demiurg301
Мне говорит - нет файлов для извлечения.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт мар 02, 2012 17:09:41
kot-69
попробуй так..
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт мар 02, 2012 18:48:56
demiurg301
Всё , скачалось вроде, всем спасибо

Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт мар 02, 2012 21:01:58
R_ura
Есть 2 буфера
Код: Выделить всё
char buf[10] = {1,2,3,4,5,6,7,8,9,10}; // ОЗУ
eeprom char ee_buf[]; // EEPROM
Нужно записать buf в ее_buf.
Выше в теме объснили, что сделать это можно так
Код: Выделить всё
for ( r=0; r<(sizeof(buffer)); r++) ee_buf[r]=buffer[r];
Все работает. Но закралась мысль - если скажем 30 раз проделать эту операцию, то в
программе 30 же раз будет сформирован этот цикл, что приведет к росту размера кода.
Поэтому решил это оформить как подпрограмму.
Код: Выделить всё
void eeprom_write_block ( int ee_adr, char ram_adr) {
char r;
for ( r=0; r<(sizeof(buf)); r++) ee_buf[r]=buf[r];
}
Но при попытке использовать в таком виде:
компилятор выдает ошибку
Код: Выделить всё
Error: C:\CV\CV.c(152): function argument #1 of type 'unsigned char [1]' is incompatible
with required parameter of type 'int'
Подскажите, как правильно передать в эту функцию ee_bufer, bufer ?? Подозреваю, что
через указатели, но за отсутствием достаточного опыта у самого не получается что-то..
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт мар 02, 2012 21:36:00
demiurg301
void write_block(eeprom unsigned char *ee_buf, unsigned char *buffer,unsigned char L)
{
while (L--)
{
*ee_buf++=*buffer++;
};
};
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт мар 02, 2012 21:42:30
vitalik_1984
оформите как макрос и вставьте в одном месте.а потом в нескольких скорее всего оптимизатор выделит повторяющийся элемент в функцию.а вообще вы пытаетесь присвоить значения массива чар к массиву инт вот и не проходит
так я думаю правильнее будет.нам ведь не нужно увеличивать значения буфера.А вот значение указателя не помешало бы

Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт мар 02, 2012 22:08:42
demiurg301
vitalik_1984 писал(а):
так я думаю правильнее будет.нам ведь не нужно увеличивать значения буфера.А вот значение указателя не помешало бы

У инкремента и так приоритет выше. Скобки там не нужны. А постинкремент добавит к указателю только после присвоения.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт мар 02, 2012 23:27:22
R_ura
demiurg301 писал(а):void write_block(eeprom unsigned char *ee_buf, unsigned char *buffer,unsigned char L)
{
while (L--)
{
*ee_buf++=*buffer++;
};
};
Спасибо, теперь понятно.
Вот еще вопрос возник .
Вот такой цикл без проблем копирует данные из одного буфера в другой .
Код: Выделить всё
for ( r=0; r<(sizeof(buf)); r++) buf[r]=ee_buf1[r];
Вставил это в программу,
Код: Выделить всё
for ( r=0; r<(sizeof(wrk)); r++) wrk[r]=ee_buf1[r];
где wrk определена как структура и тут же посыпались на каждую такую строчку ошибки
Код: Выделить всё
Error: C:\MARBLE\CodeVision_2012\CodeVision_2012.c(1379): '[' not expected
Cо структурой не работает? Или в записи цикла что-то не так?
Как тогда быть, если надо структуру сохранить в еепром?
З.Ы. Как определить в еепром структуру ,аналогичную структуре, определенной в рам?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб мар 03, 2012 00:16:49
demiurg301
R_ura писал(а):
З.Ы. Как определить в еепром структуру ,аналогичную структуре, определенной в рам?
eeprom struct ....
wrk[r] - если это структура - почему вы к ней обращаетесь как к массиву?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб мар 03, 2012 08:41:13
R_ura
demiurg301 писал(а):
eeprom struct ....
Т.е. и тело самой структуры для eeprom надо указывать?
Код: Выделить всё
volatile struct {
int cnt_X ; //рабочий счетчик X
int cnt_Y ; //рабочий счетчик Y
int cnt_Z ; //рабочий счетчик Z
unsigned char cnt_c ; //размер основных врезок
unsigned char cnt_n ; //кол-во отрезов
unsigned char cnt_t ; //пауза стола
}
wrk;
eeprom struct {
int cnt_X ; //рабочий счетчик X
int cnt_Y ; //рабочий счетчик Y
int cnt_Z ; //рабочий счетчик Z
unsigned char cnt_c ; //размер основных врезок
unsigned char cnt_n ; //кол-во отрезов
unsigned char cnt_t ; //пауза стола
}
ee_wrk;
Если тело не указываю, а только eeprom struct ee_wrk то компилятор выдает ошибку.
wrk[r] - если это структура - почему вы к ней обращаетесь как к массиву
Переписал как для структуры ( в моем понимании )
Код: Выделить всё
for ( r=0; r<(sizeof(wrk)); r++) ee_wrk.r=wrk.r;
Компилятор выдал ошибку
Код: Выделить всё
Error: C:\CV\CV.c(175): undefined member 'r'
Вот и как поэлементно скопировать структуру в структуру, если непонятно как к элементу структуры обращаться по его порядковому номеру в структуре??