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

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

Сообщение sirga »

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

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

Сообщение ibiza11 »

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

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

Сообщение ChipKiller »

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

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

Сообщение Vov123 »

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

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



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

Сообщение YS »

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

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

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

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

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

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

Сообщение 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 КБ) 499 скачиваний
Последний раз редактировалось sirga Вс май 05, 2013 18:13:40, всего редактировалось 2 раза.
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

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

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

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

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

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

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

Сообщение YS »

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

Сообщение sirga »

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

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

Сообщение YS »

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

Сообщение sirga »

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

Сообщение YS »

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

Сообщение sirga »

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

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

Сообщение YS »

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

Сообщение sirga »

Вот выкладываю изначальный проект рабочий в Atmel Studio и мой переделанный в CVAvr/ Так же проект в протеусе рабочий с тем кодом AT Studio.

Очень надеюсь что почините мне его, в дипломную надо дистанционное управление добавить и защита скоро :( Вся надежда на вас :?
Вложения
remote_cvavr.zip
(54.84 КБ) 260 скачиваний
remote_atmelstudio.zip
(21.45 КБ) 265 скачиваний
proteus.zip
(40.97 КБ) 305 скачиваний
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

sirga писал(а):спасибо за подсказку, нашел в нете файл "Определения всех битов для микроконтроллеров", подключил и все ошибки о которых писал пропали
:facepalm: если бы поискали немного в теме про CVAVR, то такого вопроса бы не возникло.
Есть такая опция в настройках проекта "IO bits definition" на ней галку ставите и не нужно никаких лишних движений с файлами.
sirga писал(а):rc5.h содержит функции, для работы с RC5 и структуру rc5
и удаляя весь код из .c файлов всё равно кидает этот эррор.
Так зачем вам тогда в основном файле определение структуры? у вас когда дополнительные файлы подключаются, тогда и начинаются проблемы.
Неплохое правило - нужно чтобы модуль выполнял только те функции, для которых он предназначен. если есть модуль RC5 значит он и должен работать. Не нужна эта структура в основном файле.
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Чт фев 14, 2013 21:32:55

Сообщение sirga »

vitalik_1984 писал(а):
sirga писал(а):спасибо за подсказку, нашел в нете файл "Определения всех битов для микроконтроллеров", подключил и все ошибки о которых писал пропали
:facepalm: если бы поискали немного в теме про CVAVR, то такого вопроса бы не возникло.
Есть такая опция в настройках проекта "IO bits definition" на ней галку ставите и не нужно никаких лишних движений с файлами.
sirga писал(а):rc5.h содержит функции, для работы с RC5 и структуру rc5
и удаляя весь код из .c файлов всё равно кидает этот эррор.
Так зачем вам тогда в основном файле определение структуры? у вас когда дополнительные файлы подключаются, тогда и начинаются проблемы.
Неплохое правило - нужно чтобы модуль выполнял только те функции, для которых он предназначен. если есть модуль RC5 значит он и должен работать. Не нужна эта структура в основном файле.
о, круто, у меня была старая версия там не было такой функции. обновил, поставил галочку и без того файла что нашел ошибок не выдаёт. тех... с последней так и осталось хоть и удалил #include <rc5.h> из main.c :? ай во заметил что как удалил от туда тогда ещё и check syntax ошибки выдаёт а с ней нет, так что оставлю
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Чт фев 14, 2013 21:32:55

Сообщение sirga »

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

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