можно ли не имея опыта большого ее как то переписать к CVAVR и в чём вообще отличия этих компиляторов?
программа написанная в AVR Studio na CVAVR
- Сообщения: 21
- Зарегистрирован: Чт фев 14, 2013 21:32:55
добрый день, изучаю микроконтроллеры, пишу на CVAVR и вот нашёл программу написанную на AVR Studio, которая работает, хотел дополнить её в свой проект, но закомпилить на CV AVR его не могу, кидает ошибки, с ошибками вроде как справился, закомпилил без них но она не работает.
можно ли не имея опыта большого ее как то переписать к CVAVR и в чём вообще отличия этих компиляторов?
можно ли не имея опыта большого ее как то переписать к CVAVR и в чём вообще отличия этих компиляторов?
- Реклама
1)можно.
2)много чем, например описанием векторов прерываний.
Вы бы лучше сюда код выложили, местные коты при наличии времени и желания обычно помогают.
2)много чем, например описанием векторов прерываний.
Вы бы лучше сюда код выложили, местные коты при наличии времени и желания обычно помогают.
Ставим плюсы: )
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
... не имея опыта вообще - сложно. Основные отличия в библиотеках, + CV AVR имеет "вольности", которых в стандартном С нет.можно ли не имея опыта большого ее как то переписать к CVAVR и в чём вообще отличия этих компиляторов?
- Сообщения: 21
- Зарегистрирован: Чт фев 14, 2013 21:32:55
вот по началу было куча ошибок, понял что дело в библиотеках
#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
- Сообщения: 804
- Зарегистрирован: Чт мар 12, 2009 16:31:05
ChipKiller писал(а):.. CV AVR имеет "вольности", которых в стандартном С нет.
Имя поля структуры не может начинаться с цифры?
Если появится желание почитать книжки,то есть 2 замечательные,по WinAVR автор Шпак(1 издание),по CVAVR автор Лебедев
Последний раз редактировалось Vov123 Вс май 05, 2013 14:14:01, всего редактировалось 1 раз.
- Реклама
- Сообщения: 7518
- Зарегистрирован: Вс мар 29, 2009 22:09:05
Первая - объявление функции main должно выглядеть кактогда осталось только 3 ошибки
Код: Выделить всё
void main(void)
{
...
}
Вторая лечится так:
Код: Выделить всё
#define _BV(VALUE) (1<<(VALUE))
Разница между теорией и практикой на практике гораздо больше, чем в теории.
- Сообщения: 21
- Зарегистрирован: Чт фев 14, 2013 21:32:55
дописал строчку но не помогло.
вычитал в нете что прерывания отличаутся так:
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 КБ) 499 скачиваний
Последний раз редактировалось sirga Вс май 05, 2013 18:13:40, всего редактировалось 2 раза.
- Сообщения: 7518
- Зарегистрирован: Вс мар 29, 2009 22:09:05
Куда дописали-то? Надо в начало интересующего модуля.дописал строчку
Вам нужно описать прерывание таймера 1 по захвату в стиле CVAVR. Гуглим. Находим, что формат прерывания в CV такой:так мне это ... менять на это?
Код: Выделить всё
interrupt [<вектор>] void <произвольное имя>(void)
{
}
Код: Выделить всё
interrupt [TIM1_CAPT] void TIM1_capture(void)
{
...
}
Разница между теорией и практикой на практике гораздо больше, чем в теории.
- Сообщения: 21
- Зарегистрирован: Чт фев 14, 2013 21:32:55
ну это я и писал ранее 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))- Сообщения: 7518
- Зарегистрирован: Вс мар 29, 2009 22:09:05
Ну так все биты прописаны в стилистике AVR-GCC. Понятное дело, надо, разобравшись в сути конфигурации, либо в лоб задефайнить их соответствующими числовыми значениями (по даташиту), либо найти их эквиваленты в заголовочниках CVAVR, тут уж документауия в помощь.теперь после этого тут ошибки
Разница между теорией и практикой на практике гораздо больше, чем в теории.
- Сообщения: 21
- Зарегистрирован: Чт фев 14, 2013 21:32:55
спасибо за подсказку, нашел в нете файл "Определения всех битов для микроконтроллеров", подключил и все ошибки о которых писал пропали, прикрепил его если кому понадобиться. Появилась одна последняя новая ошибка
http://s24.postimg.cc/4n4eitqgl/posledniaja.png
http://s24.postimg.cc/4n4eitqgl/posledniaja.png
- Вложения
-
- 197592.h
- (54 КБ) 782 скачивания
- Сообщения: 7518
- Зарегистрирован: Вс мар 29, 2009 22:09:05
Э-э-э, похоже указанная структура определена еще где-то, и это, понятное дело, линкеру не нравится.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
- Сообщения: 21
- Зарегистрирован: Чт фев 14, 2013 21:32:55
а как это так? нигде в коде у меня не повторяется такого 
- Сообщения: 7518
- Зарегистрирован: Вс мар 29, 2009 22:09:05
А что это за rc5.h ?
Разница между теорией и практикой на практике гораздо больше, чем в теории.
- Сообщения: 21
- Зарегистрирован: Чт фев 14, 2013 21:32:55
rc5.h содержит функции, для работы с RC5 и структуру rc5YS писал(а):А что это за rc5.h ?
и удаляя весь код из .c файлов всё равно кидает этот эррор. ещё заметил, что если жму compile то комилит без ошибок, если жму buil all чтоб создать hex тогда кидает ету ошибку
- Вложения
-
- rc5.h
- (838 байт) 274 скачивания
- Сообщения: 7518
- Зарегистрирован: Вс мар 29, 2009 22:09:05
А выложите-ка проект целиком...
Разница между теорией и практикой на практике гораздо больше, чем в теории.
- Сообщения: 21
- Зарегистрирован: Чт фев 14, 2013 21:32:55
Вот выкладываю изначальный проект рабочий в Atmel Studio и мой переделанный в CVAvr/ Так же проект в протеусе рабочий с тем кодом AT Studio.
Очень надеюсь что почините мне его, в дипломную надо дистанционное управление добавить и защита скоро
Вся надежда на вас 
Очень надеюсь что почините мне его, в дипломную надо дистанционное управление добавить и защита скоро
- Вложения
-
- remote_cvavr.zip
- (54.84 КБ) 260 скачиваний
-
- remote_atmelstudio.zip
- (21.45 КБ) 264 скачивания
-
- proteus.zip
- (40.97 КБ) 305 скачиваний
sirga писал(а):спасибо за подсказку, нашел в нете файл "Определения всех битов для микроконтроллеров", подключил и все ошибки о которых писал пропали
Есть такая опция в настройках проекта "IO bits definition" на ней галку ставите и не нужно никаких лишних движений с файлами.
Так зачем вам тогда в основном файле определение структуры? у вас когда дополнительные файлы подключаются, тогда и начинаются проблемы.sirga писал(а):rc5.h содержит функции, для работы с RC5 и структуру rc5
и удаляя весь код из .c файлов всё равно кидает этот эррор.
Неплохое правило - нужно чтобы модуль выполнял только те функции, для которых он предназначен. если есть модуль RC5 значит он и должен работать. Не нужна эта структура в основном файле.
- Сообщения: 21
- Зарегистрирован: Чт фев 14, 2013 21:32:55
о, круто, у меня была старая версия там не было такой функции. обновил, поставил галочку и без того файла что нашел ошибок не выдаёт. тех... с последней так и осталось хоть и удалил #include <rc5.h> из main.cvitalik_1984 писал(а):sirga писал(а):спасибо за подсказку, нашел в нете файл "Определения всех битов для микроконтроллеров", подключил и все ошибки о которых писал пропалиесли бы поискали немного в теме про CVAVR, то такого вопроса бы не возникло.
Есть такая опция в настройках проекта "IO bits definition" на ней галку ставите и не нужно никаких лишних движений с файлами.Так зачем вам тогда в основном файле определение структуры? у вас когда дополнительные файлы подключаются, тогда и начинаются проблемы.sirga писал(а):rc5.h содержит функции, для работы с RC5 и структуру rc5
и удаляя весь код из .c файлов всё равно кидает этот эррор.
Неплохое правило - нужно чтобы модуль выполнял только те функции, для которых он предназначен. если есть модуль RC5 значит он и должен работать. Не нужна эта структура в основном файле.
- Сообщения: 21
- Зарегистрирован: Чт фев 14, 2013 21:32:55
в общим совсем я отчаился... методом тыка из rc5.h в котором была структура и ошибка перенёс ее в оба .c файла проекта и ошибки пропали, hex создался, но не заработал. ещё 2 warninga появилось http://s23.postimg.cc/60uzcry2j/warnings.png но они наверно на работоспособность не влияют? что то в самой программе не так?
- Вложения
-
- remote.zip
- вот как сейчас проект, если вдруг кто то поправить захочет
- (85.53 КБ) 203 скачивания


