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

Обсуждаем контроллеры компании Atmel.
R_ura
Грызет канифоль
Сообщения: 293
Зарегистрирован: Сб май 29, 2010 00:08:48
Откуда: Харьков

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

Сообщение R_ura »

Мастер Ломастер писал(а):
R_ura писал(а):Я как-то пытался с ВинАВРом разбираться, как-то сложно и громоздко показалось - редактор один, компилятор другой, отладчик третий.. )))
не смешите мои тапки: WinAVR встраивается в AVR Studio и получается одна среда с редактором, компилятором и отладчиком. а вот в CVAVR для отладки надо что-то стороннее юзать.

Я не смешу. Цепляется, да. Только в 4 студии довольно убогий текстовый редактор. Там даже функции свернуть нельзя. Если программа среднего размера, то крайне неудобно всю простынь прокручивать постоянно..
Поэтому и говорю какой-нибудь Code:Blocks + WinAVR+Studio.. Итого около полгигабайта..))) Хотелось бы что-нибудь поменьше.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

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

Сообщение Мастер Ломастер »

R_ura писал(а):Поэтому и говорю какой-нибудь Code:Blocks + WinAVR+Studio.. Итого около полгигабайта..))) Хотелось бы что-нибудь поменьше.
я пользуюсь Eclipse для написания и компиляции и протеусом со студией для отладки - все вместе получается больше гигабайта и заметно больше - ну и что? меня устраивает :)))
битва с дураками проиграна, победители торжествуют. слава победителям!
R_ura
Грызет канифоль
Сообщения: 293
Зарегистрирован: Сб май 29, 2010 00:08:48
Откуда: Харьков

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

Сообщение R_ura »

Мастер Ломастер писал(а):
R_ura писал(а):Поэтому и говорю какой-нибудь Code:Blocks + WinAVR+Studio.. Итого около полгигабайта..))) Хотелось бы что-нибудь поменьше.
я пользуюсь Eclipse для написания и компиляции и протеусом со студией для отладки - все вместе получается больше гигабайта и заметно больше - ну и что? меня устраивает :)))


Вам к этому набору еще Альтиума не хватает..)))
Если для работы, то это понятно. Мне же для общего развития достаточно и попроще.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

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

Сообщение Мастер Ломастер »

альтиум меня выбивает из колеи своей навороченностью... мой мозг не в состоянии воспринять это все разом.
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
Apparatchik
Держит паяльник хвостом
Сообщения: 908
Зарегистрирован: Вс май 23, 2010 13:55:42
Откуда: Украина, Александрия

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

Сообщение Apparatchik »

Мастер Ломастер писал(а):я пользуюсь Eclipse для написания и компиляции....

Где можно почитать про него для програмирования под AVR?
«И всё-таки она вертится!»
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

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

Сообщение Мастер Ломастер »

Apparatchik писал(а):
Мастер Ломастер писал(а):я пользуюсь Eclipse для написания и компиляции....

Где можно почитать про него для програмирования под AVR?
например, есть три статьи здесь: http://simple-devices.ru/articles/7-soft
битва с дураками проиграна, победители торжествуют. слава победителям!
demiurg301
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

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

Сообщение demiurg301 »

Коты поделитесь генератором кириллицы для символьных дисплеев WINSTAR. А то 2 CVAVR не хотит понимать русский :)))
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

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

Сообщение Мастер Ломастер »

demiurg301 писал(а):Коты поделитесь генератором кириллицы для символьных дисплеев WINSTAR. А то 2 CVAVR не хотит понимать русский :)))
пожалуйста
битва с дураками проиграна, победители торжествуют. слава победителям!
demiurg301
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

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

Сообщение demiurg301 »

Битый архив :(
Аватара пользователя
kot-69
Встал на лапы
Сообщения: 88
Зарегистрирован: Сб апр 19, 2008 12:26:13
Откуда: Херсон
Контактная информация:

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

Сообщение kot-69 »

нормально распаковался.. спасибо Мастер!!
До начала работы над проектом следует тщательно продумать все возможные ошибки и связи между ними.
Это значительно упростит работу над ошибками в самом проекте. (с)
demiurg301
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

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

Сообщение demiurg301 »

Мне говорит - нет файлов для извлечения.
Аватара пользователя
kot-69
Встал на лапы
Сообщения: 88
Зарегистрирован: Сб апр 19, 2008 12:26:13
Откуда: Херсон
Контактная информация:

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

Сообщение kot-69 »

попробуй так..
Вложения
lcd-conv.rar
(49.93 КБ) 166 скачиваний
До начала работы над проектом следует тщательно продумать все возможные ошибки и связи между ними.
Это значительно упростит работу над ошибками в самом проекте. (с)
demiurg301
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

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

Сообщение demiurg301 »

Всё , скачалось вроде, всем спасибо :)
R_ura
Грызет канифоль
Сообщения: 293
Зарегистрирован: Сб май 29, 2010 00:08:48
Откуда: Харьков

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

Сообщение 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 ?? Подозреваю, что
через указатели, но за отсутствием достаточного опыта у самого не получается что-то..
demiurg301
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

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

Сообщение demiurg301 »

void write_block(eeprom unsigned char *ee_buf, unsigned char *buffer,unsigned char L)
{
while (L--)
{
*ee_buf++=*buffer++;
};
};
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

оформите как макрос и вставьте в одном месте.а потом в нескольких скорее всего оптимизатор выделит повторяющийся элемент в функцию.а вообще вы пытаетесь присвоить значения массива чар к массиву инт вот и не проходит

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

*(ee_buf++)=*(buffer++); 

так я думаю правильнее будет.нам ведь не нужно увеличивать значения буфера.А вот значение указателя не помешало бы :-)
В поисках истины человек развивается.
demiurg301
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

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

Сообщение demiurg301 »

vitalik_1984 писал(а): так я думаю правильнее будет.нам ведь не нужно увеличивать значения буфера.А вот значение указателя не помешало бы :-)


У инкремента и так приоритет выше. Скобки там не нужны. А постинкремент добавит к указателю только после присвоения.
R_ura
Грызет канифоль
Сообщения: 293
Зарегистрирован: Сб май 29, 2010 00:08:48
Откуда: Харьков

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

Сообщение 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о структурой не работает? Или в записи цикла что-то не так?
Как тогда быть, если надо структуру сохранить в еепром?
З.Ы. Как определить в еепром структуру ,аналогичную структуре, определенной в рам?
demiurg301
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

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

Сообщение demiurg301 »

R_ura писал(а): З.Ы. Как определить в еепром структуру ,аналогичную структуре, определенной в рам?


eeprom struct ....

wrk[r] - если это структура - почему вы к ней обращаетесь как к массиву?
R_ura
Грызет канифоль
Сообщения: 293
Зарегистрирован: Сб май 29, 2010 00:08:48
Откуда: Харьков

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

Сообщение 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'

Вот и как поэлементно скопировать структуру в структуру, если непонятно как к элементу структуры обращаться по его порядковому номеру в структуре??
Ответить

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