Страница 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];  
}
Но при попытке использовать в таком виде:

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

eeprom_write_block (   ee_buf,  buffer);
компилятор выдает ошибку

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

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

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

*(ee_buf++)=*(buffer++); 
так я думаю правильнее будет.нам ведь не нужно увеличивать значения буфера.А вот значение указателя не помешало бы :-)

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'
Вот и как поэлементно скопировать структуру в структуру, если непонятно как к элементу структуры обращаться по его порядковому номеру в структуре??