реклама на сайте
подробности

 
 
> Какой бесплатный компилятор Си для AVR лучше? Поделитесь!, Поделитесь опытом с новичком.
Samodelkin
сообщение Jan 2 2007, 13:37
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 102
Регистрация: 29-05-05
Из: Днепропетровск
Пользователь №: 5 520



Начинаю писать на Си для АВР. Посоветуйте компилятор Си для написания и отладки проектов. Попробовал WinAVR. Вроде удобная штука. Интегрируется в AVR Studio, там очень удобно отлаживать. В одной проге и пишишь, и отлаживаешь. Только вот столкнулся с проблемой, при отработке прерывания компилятор при выходе из него ставит RET вместо RETI. В результате ничего не работает, после выхода из прерывания программа начинает работу с 0-го адреса!!!???
Может быть есть что-то более удобное, бесплатное или взломанное???!!!!
Заранее благодарен!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Bill
сообщение Jan 2 2007, 22:41
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219



Цитата(Samodelkin @ Jan 2 2007, 13:37) *
Начинаю писать на Си для АВР. Посоветуйте компилятор Си для написания и отладки проектов. Попробовал WinAVR. Вроде удобная штука. Интегрируется в AVR Studio, там очень удобно отлаживать. В одной проге и пишишь, и отлаживаешь. Только вот столкнулся с проблемой, при отработке прерывания компилятор при выходе из него ставит RET вместо RETI. В результате ничего не работает, после выхода из прерывания программа начинает работу с 0-го адреса!!!???
Может быть есть что-то более удобное, бесплатное или взломанное???!!!!
Заранее благодарен!

А как Вы процедуру прерывания описываете?

Сообщение отредактировал _Bill - Jan 2 2007, 22:41
Go to the top of the page
 
+Quote Post
Samodelkin
сообщение Jan 4 2007, 01:02
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 102
Регистрация: 29-05-05
Из: Днепропетровск
Пользователь №: 5 520



Цитата(_Bill @ Jan 2 2007, 22:41) *
Цитата(Samodelkin @ Jan 2 2007, 13:37) *

Начинаю писать на Си для АВР. Посоветуйте компилятор Си для написания и отладки проектов. Попробовал WinAVR. Вроде удобная штука. Интегрируется в AVR Studio, там очень удобно отлаживать. В одной проге и пишишь, и отлаживаешь. Только вот столкнулся с проблемой, при отработке прерывания компилятор при выходе из него ставит RET вместо RETI. В результате ничего не работает, после выхода из прерывания программа начинает работу с 0-го адреса!!!???
Может быть есть что-то более удобное, бесплатное или взломанное???!!!!
Заранее благодарен!

А как Вы процедуру прерывания описываете?



Вот код:
если что-то наплужил, сильно не ругайте, я еще только учусь.
Компилятор WinAVR-20060421-install.
По идее после переполнения ТС1 должно отработать прерывание, но вместо этого прога начинает работу с самого начала!!!??? В коде при выходе их прерывания вместо RETI стоит RET!!!???
Что делать?



#include <avr/io.h>
#include <avr/interrupt.h>
//#include <avr/signal.h>

#define Freq 11059200


INTERRUPT(SIG_OVERFLOW1)
{
TCNT1 = 0x22;
PORTB ^= 0x01;
}



int main (void)
{
DDRB = 0x01;
TCCR1A = 0;
TCCR1B = 1;//5;
TCNT1 = 0xFFF0;//10000 - (Freq / 1024);
TIFR = 0;
TIMSK = 0x80;
GIMSK = 0;
sei();
while(1) ;
}

Цитата(defunct @ Jan 3 2007, 01:16) *
Цитата(Samodelkin @ Jan 2 2007, 13:37) *

Только вот столкнулся с проблемой, при отработке прерывания компилятор при выходе из него ставит RET вместо RETI. В результате ничего не работает, после выхода из прерывания программа начинает работу с 0-го адреса!!!???

#include <avr/interrupt.h>
..
функцию обработчик прерывания описать как:
SIGNAL (Вектор_прерывания)

Если будет продолжать сбоить - код в студию.

Цитата
Может быть есть что-то более удобное, бесплатное или взломанное???!!!!

Более бесплатного точно нет.
Более удобное (в плане работы с flash/eeprom) - IAR.



Вот код:
если что-то наплужил, сильно не ругайте, я еще только учусь.
Компилятор WinAVR-20060421-install.
По идее после переполнения ТС1 должно отработать прерывание, но вместо этого прога начинает работу с самого начала!!!??? В коде при выходе их прерывания вместо RETI стоит RET!!!???
Что делать?



#include <avr/io.h>
#include <avr/interrupt.h>
//#include <avr/signal.h>

#define Freq 11059200


INTERRUPT(SIG_OVERFLOW1)
{
TCNT1 = 0x22;
PORTB ^= 0x01;
}



int main (void)
{
DDRB = 0x01;
TCCR1A = 0;
TCCR1B = 1;//5;
TCNT1 = 0xFFF0;//10000 - (Freq / 1024);
TIFR = 0;
TIMSK = 0x80;
GIMSK = 0;
sei();
while(1) ;
}

Сообщение отредактировал Samodelkin - Jan 4 2007, 00:59
Go to the top of the page
 
+Quote Post
aesok
сообщение Jan 4 2007, 01:37
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Для какого контроллера компилируете? Для некоторых новых контролеров не определены имена прерываний начинающейся с 'SIG_*'. В новых проектах не используйте SIGNAL(), INTERRUPT() и SIG_*, этот интерфейс устарел.

Используйте новые макросы ISR() и имена прерываний заканчивающийся на _vect,
ISR(*_vect)
{
}

INTERRUPT() решили удалить как раз из-за того что некоторые не читают документацию.....

И еще, вместо:
#define Freq 11059200
напишите:
#define Freq 11059200UL
и тогда формула в:
TCNT1 = 0xFFF0;//10000 - (Freq / 1024);
заработает.


Анатолий.



А какя в WinAVR-20060421 версия avr-libc? Написана в avr-libc-user_manual.

Анатолий.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Samodelkin   Какой бесплатный компилятор Си для AVR лучше? Поделитесь!   Jan 2 2007, 13:37
- - aesok   В AVR-GCC нет проблемы про которую вы пишите. Если...   Jan 2 2007, 14:18
- - prottoss   Цитата(Samodelkin @ Jan 2 2007, 17:37) На...   Jan 2 2007, 17:32
||- - Samodelkin   Цитата(aesok @ Jan 4 2007, 01:37) Для как...   Jan 4 2007, 22:56
||- - aesok   Цитата(Samodelkin @ Jan 4 2007, 22:56) А ...   Jan 4 2007, 23:17
|- - aesok   В avr-libc 1.4.4, эта версия включена в WinAVR-200...   Jan 4 2007, 15:36
- - defunct   Цитата(Samodelkin @ Jan 2 2007, 13:37) То...   Jan 3 2007, 01:16
|- - kamedi_clab   советую http://www.codevision.be/ (он бесплатны...   Jan 4 2007, 00:21
|- - Punk   Цитата(kamedi_clab @ Jan 4 2007, 00:21) с...   Jan 4 2007, 17:07
- - Samodelkin   Всем, кто откликнулся, большое спасибо! Вы мен...   Jan 4 2007, 00:18
- - beer_warrior   !!!!SIGNAL(SIG_OVERFLOW1)!...   Jan 4 2007, 01:02
|- - Samodelkin   Цитата(beer_warrior @ Jan 4 2007, 01:02) ...   Jan 4 2007, 01:06
|- - defunct   Цитата(Samodelkin @ Jan 4 2007, 01:06) Я ...   Jan 4 2007, 05:24
|- - prottoss   Цитата(defunct @ Jan 4 2007, 09:24) Цитат...   Jan 4 2007, 05:50
|- - defunct   Цитата(prottoss @ Jan 4 2007, 05:50) Хм.....   Jan 4 2007, 06:10
|- - _Bill   Цитата(prottoss @ Jan 4 2007, 05:50) Цита...   Jan 4 2007, 23:28
|- - aesok   Цитата(_Bill @ Jan 4 2007, 23:28) Насколь...   Jan 4 2007, 23:49
|- - _Bill   Цитата(aesok @ Jan 4 2007, 23:49) Цитата(...   Jan 5 2007, 11:09
- - kamedi_clab   и для радиолюбителей. а по списку компаний его исп...   Jan 4 2007, 18:23
|- - aesok   Цитата(kamedi_clab @ Jan 4 2007, 18:23) и...   Jan 4 2007, 22:12
- - kamedi_clab   Анатолий, огромное спасибо за толерантность !   Jan 4 2007, 23:57


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 12:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01422 секунд с 7
ELECTRONIX ©2004-2016