программа написанная в AVR Studio na CVAVR
программа написанная в AVR Studio na CVAVR
добрый день, изучаю микроконтроллеры, пишу на CVAVR и вот нашёл программу написанную на AVR Studio, которая работает, хотел дополнить её в свой проект, но закомпилить на CV AVR его не могу, кидает ошибки, с ошибками вроде как справился, закомпилил без них но она не работает.
можно ли не имея опыта большого ее как то переписать к CVAVR и в чём вообще отличия этих компиляторов?
можно ли не имея опыта большого ее как то переписать к CVAVR и в чём вообще отличия этих компиляторов?
- Реклама
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: программа написанная в AVR Studio na CVAVR
1)можно.
2)много чем, например описанием векторов прерываний.
Вы бы лучше сюда код выложили, местные коты при наличии времени и желания обычно помогают.
2)много чем, например описанием векторов прерываний.
Вы бы лучше сюда код выложили, местные коты при наличии времени и желания обычно помогают.
Ставим плюсы: )
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: программа написанная в AVR Studio na CVAVR
... не имея опыта вообще - сложно. Основные отличия в библиотеках, + CV AVR имеет "вольности", которых в стандартном С нет.можно ли не имея опыта большого ее как то переписать к CVAVR и в чём вообще отличия этих компиляторов?
Re: программа написанная в AVR Studio na CVAVR
вот по началу было куча ошибок, понял что дело в библиотеках
#include <avr/io.h>
#include <avr/interrupt.h>
#include "main.h"
поменял на
#include <mega8.h>
#include <delay.h>
#include <stdio.h>
#include <stdlib.h>
тогда осталось только 3 ошибки вот такие (сделал скрееншот):
http://s21.postimg.cc/ntrm55ul3/osybki.png
#include <avr/io.h>
#include <avr/interrupt.h>
#include "main.h"
поменял на
#include <mega8.h>
#include <delay.h>
#include <stdio.h>
#include <stdlib.h>
тогда осталось только 3 ошибки вот такие (сделал скрееншот):
http://s21.postimg.cc/ntrm55ul3/osybki.png
Re: программа написанная в AVR Studio na CVAVR
ChipKiller писал(а):.. CV AVR имеет "вольности", которых в стандартном С нет.
Имя поля структуры не может начинаться с цифры?
Если появится желание почитать книжки,то есть 2 замечательные,по WinAVR автор Шпак(1 издание),по CVAVR автор Лебедев
Последний раз редактировалось Vov123 Вс май 05, 2013 14:14:01, всего редактировалось 1 раз.
- Реклама
Re: программа написанная в AVR Studio na CVAVR
тогда осталось только 3 ошибки
Первая - объявление функции main должно выглядеть как
Код: Выделить всё
void main(void)
{
...
}
Дело в том, что GCC позволяет определять main с возвращаемым значением int. Для МК это бессмысленно, но ревнителям стандарта нравится. Хотя да, можно и в AVR передавать в main() аргументы и использовать ее возвращаемое значение.
Вторая лечится так:
Код: Выделить всё
#define _BV(VALUE) (1<<(VALUE))
Третья - надо переписать вектора прерываний в стиле CVAVR.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: программа написанная в AVR Studio na CVAVR
дописал строчку но не помогло.
вычитал в нете что прерывания отличаутся так:
так мне это
ISR(TIMER1_CAPT_vect)
{//прерывание по захвату состояния таймера
// sei();
capture=ICR1;
if ( rc5.flag & FL_SAMPLE )
менять на это?
interrupt [TIM1_CAPT] void tim1_capt_isr(void)
поменяв те ошибки пропали но появились такие http://s23.postimg.cc/xiog535t7/teper_takoe.jpg
Код: Выделить всё
#define _BV(VALUE) (1<<(VALUE))вычитал в нете что прерывания отличаутся так:
в CodeVision:
interrupt [прерывание] void adc_isr(void)
{
код выполняемый при возникновении разрешенного локально и глобально прерывания
}
в WinAVR:
#include <avr/interrupt.h>
ISR(прерывание_vect)
{
код выполняемый при возникновении разрешенного локально и глобально прерывания
}
В примерах слово "прерывание" нужно заменить на название прерывания из ДатаШита либо из заголовочного файла *.h для используемого МК.
так мне это
ISR(TIMER1_CAPT_vect)
{//прерывание по захвату состояния таймера
// sei();
capture=ICR1;
if ( rc5.flag & FL_SAMPLE )
менять на это?
interrupt [TIM1_CAPT] void tim1_capt_isr(void)
поменяв те ошибки пропали но появились такие http://s23.postimg.cc/xiog535t7/teper_takoe.jpg
- Вложения
-
- rc5.c
- (3.8 КБ) 495 скачиваний
Последний раз редактировалось sirga Вс май 05, 2013 18:13:40, всего редактировалось 2 раза.
Re: программа написанная в AVR Studio na CVAVR
дописал строчку
Куда дописали-то? Надо в начало интересующего модуля.
так мне это ... менять на это?
Вам нужно описать прерывание таймера 1 по захвату в стиле CVAVR. Гуглим. Находим, что формат прерывания в CV такой:
Код: Выделить всё
interrupt [<вектор>] void <произвольное имя>(void)
{
}
Дальше гуглим, какой вектор присвоен прерыванию захвата первого таймера. Оказывается, TIM1_CAPT (неожиданно, да?). Ну и переписываем...
Код: Выделить всё
interrupt [TIM1_CAPT] void TIM1_capture(void)
{
...
}
К слову, сам я адепт AVR-GCC. Но гугл мне помог.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: программа написанная в AVR Studio na CVAVR
ну это я и писал ранее interrupt [TIM1_CAPT] void tim1_capt_isr(void) получается правильно я догадался, но теперь после этого тут ошибки Error: undefined symbol 'ICES1'
if (!CheckBit(TCCR1B,ICES1)) receive|=1;// если прер. было по падающему фронту то бит==1
ibi(TCCR1B,ICES1);// ICESn = 1, то нарастающий фронт. ICESn =0, то падающий фронт
sbi(TCCR1B,ICES1);//ICESn =0, падающий фронт, ICESn = 1, нарастающий фронт.
cbi(TCCR1B,ICES1);//ICESn =0, падающий фронт; ICESn = 1, нарастающий фронт.
дописал в начало где все define
if (!CheckBit(TCCR1B,ICES1)) receive|=1;// если прер. было по падающему фронту то бит==1
ibi(TCCR1B,ICES1);// ICESn = 1, то нарастающий фронт. ICESn =0, то падающий фронт
sbi(TCCR1B,ICES1);//ICESn =0, падающий фронт, ICESn = 1, нарастающий фронт.
cbi(TCCR1B,ICES1);//ICESn =0, падающий фронт; ICESn = 1, нарастающий фронт.
Код: Выделить всё
#define _BV(VALUE) (1<<(VALUE))Re: программа написанная в AVR Studio na CVAVR
теперь после этого тут ошибки
Ну так все биты прописаны в стилистике AVR-GCC. Понятное дело, надо, разобравшись в сути конфигурации, либо в лоб задефайнить их соответствующими числовыми значениями (по даташиту), либо найти их эквиваленты в заголовочниках CVAVR, тут уж документауия в помощь.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: программа написанная в AVR Studio na CVAVR
спасибо за подсказку, нашел в нете файл "Определения всех битов для микроконтроллеров", подключил и все ошибки о которых писал пропали, прикрепил его если кому понадобиться. Появилась одна последняя новая ошибка
http://s24.postimg.cc/4n4eitqgl/posledniaja.png
http://s24.postimg.cc/4n4eitqgl/posledniaja.png
- Вложения
-
- 197592.h
- (54 КБ) 779 скачиваний
Re: программа написанная в AVR Studio na CVAVR
Э-э-э, похоже указанная структура определена еще где-то, и это, понятное дело, линкеру не нравится.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: программа написанная в AVR Studio na CVAVR
а как это так? нигде в коде у меня не повторяется такого 

Re: программа написанная в AVR Studio na CVAVR
А что это за rc5.h ?
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: программа написанная в AVR Studio na CVAVR
rc5.h содержит функции, для работы с RC5 и структуру rc5YS писал(а):А что это за rc5.h ?
и удаляя весь код из .c файлов всё равно кидает этот эррор. ещё заметил, что если жму compile то комилит без ошибок, если жму buil all чтоб создать hex тогда кидает ету ошибку
- Вложения
-
- rc5.h
- (838 байт) 271 скачивание
Re: программа написанная в AVR Studio na CVAVR
А выложите-ка проект целиком...
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: программа написанная в AVR Studio na CVAVR
Вот выкладываю изначальный проект рабочий в Atmel Studio и мой переделанный в CVAvr/ Так же проект в протеусе рабочий с тем кодом AT Studio.
Очень надеюсь что почините мне его, в дипломную надо дистанционное управление добавить и защита скоро
Вся надежда на вас 
Очень надеюсь что почините мне его, в дипломную надо дистанционное управление добавить и защита скоро
- Вложения
-
- remote_cvavr.zip
- (54.84 КБ) 256 скачиваний
-
- remote_atmelstudio.zip
- (21.45 КБ) 261 скачивание
-
- proteus.zip
- (40.97 КБ) 300 скачиваний
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: программа написанная в AVR Studio na CVAVR
sirga писал(а):спасибо за подсказку, нашел в нете файл "Определения всех битов для микроконтроллеров", подключил и все ошибки о которых писал пропали
если бы поискали немного в теме про CVAVR, то такого вопроса бы не возникло.Есть такая опция в настройках проекта "IO bits definition" на ней галку ставите и не нужно никаких лишних движений с файлами.
sirga писал(а):rc5.h содержит функции, для работы с RC5 и структуру rc5
и удаляя весь код из .c файлов всё равно кидает этот эррор.
Так зачем вам тогда в основном файле определение структуры? у вас когда дополнительные файлы подключаются, тогда и начинаются проблемы.
Неплохое правило - нужно чтобы модуль выполнял только те функции, для которых он предназначен. если есть модуль RC5 значит он и должен работать. Не нужна эта структура в основном файле.
Re: программа написанная в AVR Studio na CVAVR
vitalik_1984 писал(а):sirga писал(а):спасибо за подсказку, нашел в нете файл "Определения всех битов для микроконтроллеров", подключил и все ошибки о которых писал пропали
если бы поискали немного в теме про CVAVR, то такого вопроса бы не возникло.
Есть такая опция в настройках проекта "IO bits definition" на ней галку ставите и не нужно никаких лишних движений с файлами.
sirga писал(а):rc5.h содержит функции, для работы с RC5 и структуру rc5
и удаляя весь код из .c файлов всё равно кидает этот эррор.
Так зачем вам тогда в основном файле определение структуры? у вас когда дополнительные файлы подключаются, тогда и начинаются проблемы.
Неплохое правило - нужно чтобы модуль выполнял только те функции, для которых он предназначен. если есть модуль RC5 значит он и должен работать. Не нужна эта структура в основном файле.
о, круто, у меня была старая версия там не было такой функции. обновил, поставил галочку и без того файла что нашел ошибок не выдаёт. тех... с последней так и осталось хоть и удалил #include <rc5.h> из main.c
Re: программа написанная в AVR Studio na CVAVR
в общим совсем я отчаился... методом тыка из rc5.h в котором была структура и ошибка перенёс ее в оба .c файла проекта и ошибки пропали, hex создался, но не заработал. ещё 2 warninga появилось http://s23.postimg.cc/60uzcry2j/warnings.png но они наверно на работоспособность не влияют? что то в самой программе не так?
- Вложения
-
- remote.zip
- вот как сейчас проект, если вдруг кто то поправить захочет
- (85.53 КБ) 199 скачиваний


