программа написанная в AVR Studio na CVAVR

Обсуждаем контроллеры компании Atmel.
sirga
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Чт фев 14, 2013 21:32:55

программа написанная в AVR Studio na CVAVR

Сообщение sirga »

добрый день, изучаю микроконтроллеры, пишу на CVAVR и вот нашёл программу написанную на AVR Studio, которая работает, хотел дополнить её в свой проект, но закомпилить на CV AVR его не могу, кидает ошибки, с ошибками вроде как справился, закомпилил без них но она не работает.

можно ли не имея опыта большого ее как то переписать к CVAVR и в чём вообще отличия этих компиляторов?
Реклама
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: программа написанная в AVR Studio na CVAVR

Сообщение ibiza11 »

1)можно.
2)много чем, например описанием векторов прерываний.

Вы бы лучше сюда код выложили, местные коты при наличии времени и желания обычно помогают.
Ставим плюсы: )
Реклама
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: программа написанная в AVR Studio na CVAVR

Сообщение ChipKiller »

можно ли не имея опыта большого ее как то переписать к CVAVR и в чём вообще отличия этих компиляторов?
... не имея опыта вообще - сложно. Основные отличия в библиотеках, + CV AVR имеет "вольности", которых в стандартном С нет.
sirga
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Чт фев 14, 2013 21:32:55

Re: программа написанная в AVR Studio na CVAVR

Сообщение sirga »

вот по началу было куча ошибок, понял что дело в библиотеках

#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
Реклама
Эиком - электронные компоненты и радиодетали
Vov123
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Re: программа написанная в AVR Studio na CVAVR

Сообщение Vov123 »

ChipKiller писал(а):.. CV AVR имеет "вольности", которых в стандартном С нет.



Имя поля структуры не может начинаться с цифры?



Если появится желание почитать книжки,то есть 2 замечательные,по WinAVR автор Шпак(1 издание),по CVAVR автор Лебедев
Последний раз редактировалось Vov123 Вс май 05, 2013 14:14:01, всего редактировалось 1 раз.
Реклама
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: программа написанная в AVR Studio na CVAVR

Сообщение YS »

тогда осталось только 3 ошибки


Первая - объявление функции main должно выглядеть как

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

void main(void)
{
  ...
}


Дело в том, что GCC позволяет определять main с возвращаемым значением int. Для МК это бессмысленно, но ревнителям стандарта нравится. Хотя да, можно и в AVR передавать в main() аргументы и использовать ее возвращаемое значение. :))) Но это уже чисто ради лулзов.

Вторая лечится так:

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

#define _BV(VALUE)       (1<<(VALUE))


Третья - надо переписать вектора прерываний в стиле CVAVR.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Реклама
sirga
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Чт фев 14, 2013 21:32:55

Re: программа написанная в AVR Studio na CVAVR

Сообщение sirga »

дописал строчку

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

#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 раза.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: программа написанная в AVR Studio na CVAVR

Сообщение YS »

дописал строчку


Куда дописали-то? Надо в начало интересующего модуля.

так мне это ... менять на это?


Вам нужно описать прерывание таймера 1 по захвату в стиле CVAVR. Гуглим. Находим, что формат прерывания в CV такой:

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

interrupt [<вектор>] void <произвольное имя>(void)
{
}


Дальше гуглим, какой вектор присвоен прерыванию захвата первого таймера. Оказывается, TIM1_CAPT (неожиданно, да?). Ну и переписываем...

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

interrupt [TIM1_CAPT] void TIM1_capture(void)
{
  ...
}


К слову, сам я адепт AVR-GCC. Но гугл мне помог.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
sirga
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Чт фев 14, 2013 21:32:55

Re: программа написанная в AVR Studio na CVAVR

Сообщение sirga »

ну это я и писал ранее 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 _BV(VALUE)       (1<<(VALUE))
дописал в начало где все define
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: программа написанная в AVR Studio na CVAVR

Сообщение YS »

теперь после этого тут ошибки


Ну так все биты прописаны в стилистике AVR-GCC. Понятное дело, надо, разобравшись в сути конфигурации, либо в лоб задефайнить их соответствующими числовыми значениями (по даташиту), либо найти их эквиваленты в заголовочниках CVAVR, тут уж документауия в помощь.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
sirga
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Чт фев 14, 2013 21:32:55

Re: программа написанная в AVR Studio na CVAVR

Сообщение sirga »

спасибо за подсказку, нашел в нете файл "Определения всех битов для микроконтроллеров", подключил и все ошибки о которых писал пропали, прикрепил его если кому понадобиться. Появилась одна последняя новая ошибка

http://s24.postimg.cc/4n4eitqgl/posledniaja.png
Вложения
197592.h
(54 КБ) 779 скачиваний
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: программа написанная в AVR Studio na CVAVR

Сообщение YS »

Э-э-э, похоже указанная структура определена еще где-то, и это, понятное дело, линкеру не нравится.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
sirga
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Чт фев 14, 2013 21:32:55

Re: программа написанная в AVR Studio na CVAVR

Сообщение sirga »

а как это так? нигде в коде у меня не повторяется такого :dont_know:
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: программа написанная в AVR Studio na CVAVR

Сообщение YS »

А что это за rc5.h ?
Разница между теорией и практикой на практике гораздо больше, чем в теории.
sirga
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Чт фев 14, 2013 21:32:55

Re: программа написанная в AVR Studio na CVAVR

Сообщение sirga »

YS писал(а):А что это за rc5.h ?
rc5.h содержит функции, для работы с RC5 и структуру rc5

и удаляя весь код из .c файлов всё равно кидает этот эррор. ещё заметил, что если жму compile то комилит без ошибок, если жму buil all чтоб создать hex тогда кидает ету ошибку
Вложения
rc5.h
(838 байт) 271 скачивание
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: программа написанная в AVR Studio na CVAVR

Сообщение YS »

А выложите-ка проект целиком...
Разница между теорией и практикой на практике гораздо больше, чем в теории.
sirga
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Чт фев 14, 2013 21:32:55

Re: программа написанная в AVR Studio na CVAVR

Сообщение sirga »

Вот выкладываю изначальный проект рабочий в 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

Сообщение vitalik_1984 »

sirga писал(а):спасибо за подсказку, нашел в нете файл "Определения всех битов для микроконтроллеров", подключил и все ошибки о которых писал пропали

:facepalm: если бы поискали немного в теме про CVAVR, то такого вопроса бы не возникло.
Есть такая опция в настройках проекта "IO bits definition" на ней галку ставите и не нужно никаких лишних движений с файлами.
sirga писал(а):rc5.h содержит функции, для работы с RC5 и структуру rc5
и удаляя весь код из .c файлов всё равно кидает этот эррор.

Так зачем вам тогда в основном файле определение структуры? у вас когда дополнительные файлы подключаются, тогда и начинаются проблемы.
Неплохое правило - нужно чтобы модуль выполнял только те функции, для которых он предназначен. если есть модуль RC5 значит он и должен работать. Не нужна эта структура в основном файле.
sirga
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Чт фев 14, 2013 21:32:55

Re: программа написанная в AVR Studio na CVAVR

Сообщение sirga »

vitalik_1984 писал(а):
sirga писал(а):спасибо за подсказку, нашел в нете файл "Определения всех битов для микроконтроллеров", подключил и все ошибки о которых писал пропали

:facepalm: если бы поискали немного в теме про CVAVR, то такого вопроса бы не возникло.
Есть такая опция в настройках проекта "IO bits definition" на ней галку ставите и не нужно никаких лишних движений с файлами.
sirga писал(а):rc5.h содержит функции, для работы с RC5 и структуру rc5
и удаляя весь код из .c файлов всё равно кидает этот эррор.

Так зачем вам тогда в основном файле определение структуры? у вас когда дополнительные файлы подключаются, тогда и начинаются проблемы.
Неплохое правило - нужно чтобы модуль выполнял только те функции, для которых он предназначен. если есть модуль RC5 значит он и должен работать. Не нужна эта структура в основном файле.

о, круто, у меня была старая версия там не было такой функции. обновил, поставил галочку и без того файла что нашел ошибок не выдаёт. тех... с последней так и осталось хоть и удалил #include <rc5.h> из main.c :? ай во заметил что как удалил от туда тогда ещё и check syntax ошибки выдаёт а с ней нет, так что оставлю
sirga
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Чт фев 14, 2013 21:32:55

Re: программа написанная в AVR Studio na CVAVR

Сообщение sirga »

в общим совсем я отчаился... методом тыка из rc5.h в котором была структура и ошибка перенёс ее в оба .c файла проекта и ошибки пропали, hex создался, но не заработал. ещё 2 warninga появилось http://s23.postimg.cc/60uzcry2j/warnings.png но они наверно на работоспособность не влияют? что то в самой программе не так?
Вложения
remote.zip
вот как сейчас проект, если вдруг кто то поправить захочет
(85.53 КБ) 199 скачиваний
Ответить

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