CodeVision AVR в вопросах и ответах
Re: CodeVision AVR в вопросах и ответах
понятно.. значит придется через неопределенный указатель делать..
еще один вопрос
есть структура
typedef struct {
unsigned par1:1,
par2:2,
par3:3;
unsigned int par4;
} NEW_STRUCT;
теперь хочу ее объявить как массив переменных в eeprom
eeprom NEW_STRUCT NS[3];
получаю ошибку declaration char is incompatible with previous one: eeprom NEW_STRUCT [3];
это тоже особенность кодевижена или по стандарту такая запись не верна ?
кстати, сейчас проверил, структуру
typedef struct {
unsigned char par123;
unsigned int par4;
} NEW_STRUCT;
тоже нельзя объявить eeprom NEW_STRUCT NS[3];
может есть какой то другой синтаксис или в eeprom просто нельзя размещать структуры а можно только простые типы данных типа char или int ?
еще один вопрос
есть структура
typedef struct {
unsigned par1:1,
par2:2,
par3:3;
unsigned int par4;
} NEW_STRUCT;
теперь хочу ее объявить как массив переменных в eeprom
eeprom NEW_STRUCT NS[3];
получаю ошибку declaration char is incompatible with previous one: eeprom NEW_STRUCT [3];
это тоже особенность кодевижена или по стандарту такая запись не верна ?
кстати, сейчас проверил, структуру
typedef struct {
unsigned char par123;
unsigned int par4;
} NEW_STRUCT;
тоже нельзя объявить eeprom NEW_STRUCT NS[3];
может есть какой то другой синтаксис или в eeprom просто нельзя размещать структуры а можно только простые типы данных типа char или int ?
Re: CodeVision AVR в вопросах и ответах
ARV писал(а):avr-gcc не ругается, на сколько я понял, такая запись укладывается в стандарт Си.ВитГо писал(а):в строчке struct tag * nextitem;
ругается на tag
acr-gcc - это в IDE WinAVR ?
боюсь начинать религиозную войну - но что можно почитать относительно сильных сторон WinAVR и CodeVisionAVR ?
самый главный аргумент я уже понял (WinAVR freeware).. еще есть чтото ?
ааа, второй - более точное следование стандарту GNU C тоже уже не первый раз вы мне показываете..
тогда какие есть минусы ? (чтобы не узнать о них после того как новый проект будет написан на половину)
p.s. сейчас начинаю новый проект кодера для радиоуправления моделями.. самое время определяться со средой (пока ничего особо не написано - пара драйверов (экран, органы управления, генерация сигналов) - это перепишется быстро)
- lacvel
- Первый раз сказал Мяу!
- Сообщения: 23
- Зарегистрирован: Пт сен 03, 2010 08:59:21
- Откуда: Москва
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
ВитГо писал(а):начинаю новый проект кодера для радиоуправления моделями..
Вы уже посмотрели существующий открытый прожект на CVAVR ATmega128 на rcdesign.ru ?
Re: CodeVision AVR в вопросах и ответах
lacvel писал(а):ВитГо писал(а):начинаю новый проект кодера для радиоуправления моделями..
Вы уже посмотрели существующий открытый прожект на CVAVR ATmega128 на rcdesign.ru ?
Да, конечно...
просто в существующем проекте предлагается модернизировать имеющийся пульт аппаратна и потом залить прошивку..
я же пишу прошивки для аппаратур Turnigy\Eurgle\FlySky 9x... - то есть аппаратно аппаратуры уже существуют, у них заводской корпус, экран, кнопки меню, цифровые триммеры... - и все по цене около 60$ (без доставки)
мой проект на rcdesign находиться здесь -> http://forum.rcdesign.ru/blogs/50021/blog9239.html
это первая версия прошивки..
сейчас задумал написать вторую (другой подход к программированию моделей).. вот и не хочеться ошибиться с выбором IDE и компилятора для программирования..
в avr-gcc - можно структуры сохранять в eeprom ?
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
сложно указать на минусы, если с плюсами других компиляторов не знакомВитГо писал(а):тогда какие есть минусы ? (чтобы не узнать о них после того как новый проект будет написан на половину)
WinAVR - это по-настоящему бесплатный компилятор, его не надо ломать. Есть ему альтернативы по этому качеству?
WinAVR - по-настоящему кроссплатформенное средство, то есть этот самый компилятор имеется для всех известных ОС, значит, ваши исходники смогут использовать пользователи Линуха, БСД-ишники или даже яблочники (по поводу последнего - не уверен, что яблочники что-то компилируют: имхо, они все больше рисуют и пишут музыку)
для WinAVR написано море библиотек, есть форумы, на которых отвечают на вопросы не дилетанты, а профессионалы и сами разработчики компилятора, причем оперативно отвечают.
WinAVR достаточно строго соблюдает требования стандартов, о чем я вечно всем надоедаю
WinAVR дает весьма компактный код. IAR дает получше - но см.п.1
WinAVR создает файлы, пригодные для отладки в AVR Studio и Протеусе.
WinAVR не имеет нормальной IDE для разработки - Programmers Notepad я не считаю за серьезное средство, хотя он неплох для первого знакомства. Зато WinAVR отлично взаимодействует с IDE AVR Studio и многими другими, в том числе бесплатными. Лично я пользуюсь Eclipse и очень-очень-очень доволен.
WinAVR поддерживает GNU-ассемблер, возможности которого несоизмеримо выше тех, что имеет встроенный в студию.
WinAVR генерирует листинг, в котором подчас невозможно понять, какой оператор Си на какие команды ассемблера распадается. Но это следствие работы оптимизатора.
WinAVR имеет ряд глюков разной степени "страшности" (во-всяком случае, известных), эти глюки описаны на сайте разработчиков и обсуждаются на форумах. Большая часть из них приводит к неоптимальности кода, некоторые глюки могут дать "опасный" код, т.е. код с ошибками, но в реальности я за два года активной работы ни разу ни с одним опасным глюком не столкнулся. Во всяком случае, ошибки исправляются постепенно, пути их обхода известны.
WinAVR поддерживает С++.
Собственно, пока это все, что вспомнил, сравнить с альтернативами вы сможете и сам и
ВитГо писал(а):в avr-gcc - можно структуры сохранять в eeprom ?
да, конечно, все что угодно и где угодно
P.S. работа с WinAVR позволяет быстро понять уровень собственных знаний языка Си, как раз потому, что действуя строго по стандарту не прощает ошибок. volatile-переменные - это первые грабли, которые стукают по лбу каждого начинающего работать с WinAVR
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- lacvel
- Первый раз сказал Мяу!
- Сообщения: 23
- Зарегистрирован: Пт сен 03, 2010 08:59:21
- Откуда: Москва
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Забыл добавить про цикл твоих статей по WinAVR 
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
lacvel писал(а):Забыл добавить про цикл твоих статей по WinAVR
я не рекламирую свои статьи, я рекламирую WinAVR, причем с искренней верой в свою правоту
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: CodeVision AVR в вопросах и ответах
ARV писал(а):lacvel писал(а):Забыл добавить про цикл твоих статей по WinAVR
я не рекламирую свои статьи, я рекламирую WinAVR, причем с искренней верой в свою правоту
ООО!! дайте ссылку на статьи !
пожалуй я попробую пересесть на WinAVR.. не люблю пользоваться нелегальным софтом...
я так понимаю по WinAVR мне нужно будет писать в другой раздел форума...
Re: CodeVision AVR в вопросах и ответах
В MEGA88 нужно посчитать период и синхронизироваться с внешним сигналом.
Не работает код с внешним прерыванием INT0 от первого импульса, по которому запускаю таймер1, а по второму пытаюсь посчитать период. Но работает код, если запускаю от INT0, а останавливаю счет по INT1 (сигнал подаю и на INT0, и INT1). Пробовал и на MEGA8515, то же самое.
Подскажите, в чем засада?
Вот код:
Не работает...
interrupt [EXT_INT0] void ext_int0_isr(void)
{
if (START_TC == 1) // if FC
{
if (TCCR1B == 0)
{
TCNT1H = 0;
TCNT1L = 0;
TCCR1A = 0;
TCCR1B = 0x01; // 50 ns
}
else
{
TCCR1B = 0; //stop
EICRA=0x00;
EIMSK=0x00;
TC1 = ((int)TCNT1H << 8) | TCNT1L ; // data
//FC = 10000000/(TC1*5);
};
}
else
{
EICRA=0x00;
EIMSK=0x00;
for (r=0; r<N_DEL; r++)
{
#asm("nop")
};//for l
CAMERA=1;
#asm("nop")
LASER=1;
for (r=0; r<L_DEL; r++)
{
#asm("nop")
};//for l
#asm("nop")
LASER=0;
#asm("nop")
CAMERA=0;
EICRA=0x02;
EIMSK=0x01;
EIFR=0x01;
};
}
Работает...
interrupt [EXT_INT0] void ext_int0_isr(void)
{
if (START_TC == 1) //if FC
{
TCNT1H = 0;
TCNT1L = 0;
TCCR1A = 0;
TCCR1B = 0x01; // 50 ns
FC_bit=0;
EICRA=0x08;//1
EIMSK=0x02;
EIFR=0x02;
}
else
{
EICRA=0x00;
EIMSK=0x00;
for (r=0; r<N_DEL; r++)
{
#asm("nop")
};//for l
CAMERA=1;
#asm("nop")
LASER=1;
for (r=0; r<L_DEL; r++)
{
#asm("nop")
};//for l
#asm("nop")
LASER=0;
#asm("nop")
CAMERA=0;
EICRA=0x02;
EIMSK=0x01;
EIFR=0x01;
};
} //int0
interrupt [EXT_INT1] void ext_int1_isr(void)
{
TCCR1B = 0; //Stop
EICRA=0x00;
EIMSK=0x00;
TC1 = ((int)(TCNT1H << 8)) | TCNT1L ; // data
// FC = 10000000/(TC1*5);
FC_bit=1;
EICRA=0x02;
EIMSK=0x01;
EIFR=0x01;
}//int1
Не работает код с внешним прерыванием INT0 от первого импульса, по которому запускаю таймер1, а по второму пытаюсь посчитать период. Но работает код, если запускаю от INT0, а останавливаю счет по INT1 (сигнал подаю и на INT0, и INT1). Пробовал и на MEGA8515, то же самое.
Подскажите, в чем засада?
Вот код:
Не работает...
interrupt [EXT_INT0] void ext_int0_isr(void)
{
if (START_TC == 1) // if FC
{
if (TCCR1B == 0)
{
TCNT1H = 0;
TCNT1L = 0;
TCCR1A = 0;
TCCR1B = 0x01; // 50 ns
}
else
{
TCCR1B = 0; //stop
EICRA=0x00;
EIMSK=0x00;
TC1 = ((int)TCNT1H << 8) | TCNT1L ; // data
//FC = 10000000/(TC1*5);
};
}
else
{
EICRA=0x00;
EIMSK=0x00;
for (r=0; r<N_DEL; r++)
{
#asm("nop")
};//for l
CAMERA=1;
#asm("nop")
LASER=1;
for (r=0; r<L_DEL; r++)
{
#asm("nop")
};//for l
#asm("nop")
LASER=0;
#asm("nop")
CAMERA=0;
EICRA=0x02;
EIMSK=0x01;
EIFR=0x01;
};
}
Работает...
interrupt [EXT_INT0] void ext_int0_isr(void)
{
if (START_TC == 1) //if FC
{
TCNT1H = 0;
TCNT1L = 0;
TCCR1A = 0;
TCCR1B = 0x01; // 50 ns
FC_bit=0;
EICRA=0x08;//1
EIMSK=0x02;
EIFR=0x02;
}
else
{
EICRA=0x00;
EIMSK=0x00;
for (r=0; r<N_DEL; r++)
{
#asm("nop")
};//for l
CAMERA=1;
#asm("nop")
LASER=1;
for (r=0; r<L_DEL; r++)
{
#asm("nop")
};//for l
#asm("nop")
LASER=0;
#asm("nop")
CAMERA=0;
EICRA=0x02;
EIMSK=0x01;
EIFR=0x01;
};
} //int0
interrupt [EXT_INT1] void ext_int1_isr(void)
{
TCCR1B = 0; //Stop
EICRA=0x00;
EIMSK=0x00;
TC1 = ((int)(TCNT1H << 8)) | TCNT1L ; // data
// FC = 10000000/(TC1*5);
FC_bit=1;
EICRA=0x02;
EIMSK=0x01;
EIFR=0x01;
}//int1
Последний раз редактировалось Ildus Сб сен 11, 2010 14:35:53, всего редактировалось 1 раз.
- lacvel
- Первый раз сказал Мяу!
- Сообщения: 23
- Зарегистрирован: Пт сен 03, 2010 08:59:21
- Откуда: Москва
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Отключи смайлы в сообщении.
И скачай PROTEUS - увидишь что не так.
И скачай PROTEUS - увидишь что не так.
- lacvel
- Первый раз сказал Мяу!
- Сообщения: 23
- Зарегистрирован: Пт сен 03, 2010 08:59:21
- Откуда: Москва
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Реклама бесплатного - это ПРИКОЛЬНО ! Да еще в топике про CVAVRARV писал(а):я рекламирую WinAVR

- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
бесплатная реклама бесплатного - обратите вниманиеlacvel писал(а):Реклама бесплатного - это ПРИКОЛЬНО ! Да еще в топике про CVAVR
народ дошел до ручки: чтобы он взял бесплатное надо ему это всячески рекламировать...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: CodeVision AVR в вопросах и ответах
кто работал в программе LSD EDIT? откликнитесь
- avreal
- Опытный кот
- Сообщения: 842
- Зарегистрирован: Чт дек 31, 2009 19:27:45
- Откуда: Бровари, Україна
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Ну!ARV писал(а):народ дошел до ручки: чтобы он взял бесплатное надо ему это всячески рекламировать...
Слоган к рекламе - "ГНУтое - не ломанное!"
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
- Antol.St
- Нашел транзистор. Понюхал.
- Сообщения: 163
- Зарегистрирован: Вт окт 14, 2008 11:29:03
- Откуда: Алтайский край, Бийск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Привет всем! Помогите пжалста, перевожу проектик из под WinAVR в CodeVisionAVR. Знает кто нибудь где взять функцию strncasecmp для CodeVision?
Re: CodeVision AVR в вопросах и ответах
Привет. Пишу программу для проверки ид1.
А она чего то не компилится. Компилятор говорит, что в строке 126 не хватает символа "(".
Файл прилагается.
А она чего то не компилится. Компилятор говорит, что в строке 126 не хватает символа "(".
Файл прилагается.
- Вложения
-
- тестер.c
- (10.4 КБ) 546 скачиваний
Этот пост оказался полезен? Не поленись, нажми
слева!

Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
слева!Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
*Trigger* писал(а):Привет. Пишу программу для проверки ид1.
А она чего то не компилится. Компилятор говорит, что в строке 126 не хватает символа "(".
Файл прилагается.
вы посчитайте все фигурные скобки в вашем проекте... у вас там наворочено куча лишних... в частности, в строке 121 закрывающая фигурная скобка с точкой запятой (что б вы были в курсе - после закрывающей скобки в теле функции точка с запятой не требуется) - так вот, эта самая скобка ЗАКРЫВАЕТ оператор while(1), а значит нижеследующие else ни к селу ни к городу...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
-
Saadov
- Нашел транзистор. Понюхал.
- Сообщения: 155
- Зарегистрирован: Вт авг 19, 2008 23:39:59
- Откуда: г.Смоленск
Re: CodeVision AVR в вопросах и ответах
Antol.St писал(а):Привет всем! Помогите пжалста, перевожу проектик из под WinAVR в CodeVisionAVR. Знает кто нибудь где взять функцию strncasecmp для CodeVision?
Код: Выделить всё
signed char strncmp(char *str1, char *str2, unsigned char n)
compares at most n characters of the string str1 with the string str2.
Returns <0, 0, >0 according to str1<str2, str1=str2, str1>str2.
Вроде так
Re: CodeVision AVR в вопросах и ответах
ARV писал(а):*Trigger* писал(а):Привет. Пишу программу для проверки ид1.
А она чего то не компилится. Компилятор говорит, что в строке 126 не хватает символа "(".
Файл прилагается.
вы посчитайте все фигурные скобки в вашем проекте... у вас там наворочено куча лишних... в частности, в строке 121 закрывающая фигурная скобка с точкой запятой (что б вы были в курсе - после закрывающей скобки в теле функции точка с запятой не требуется) - так вот, эта самая скобка ЗАКРЫВАЕТ оператор while(1), а значит нижеследующие else ни к селу ни к городу...
Всё решилось. Спасибо. Дело было в скобках...
Этот пост оказался полезен? Не поленись, нажми
слева!

Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
слева!Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
-
Knife_1987
- Родился
- Сообщения: 1
- Зарегистрирован: Пн сен 13, 2010 02:55:40
Re: CodeVision AVR в вопросах и ответах
доброго времени суток.
скиньте пожалуйсто в ЛС варианты схем подключения диодов для кубика 5х5х5.
в наличии имеется:
atmega32 -1шт
74hc595 -4шт
схему не обязательно на этих деталях, главное в схеме это возможность управлять отдельными диодами. а то уже видел пару схем в которых при некоторых комбинациях загорались промежуточные.
или дайте ссылки на схемы. описание приветствуется.
спасибо
скиньте пожалуйсто в ЛС варианты схем подключения диодов для кубика 5х5х5.
в наличии имеется:
atmega32 -1шт
74hc595 -4шт
схему не обязательно на этих деталях, главное в схеме это возможность управлять отдельными диодами. а то уже видел пару схем в которых при некоторых комбинациях загорались промежуточные.
или дайте ссылки на схемы. описание приветствуется.
спасибо