|
WinAVR, Какой поставить |
|
|
|
Mar 21 2007, 23:11
|
Группа: Новичок
Сообщений: 14
Регистрация: 14-11-06
Пользователь №: 22 299

|
Посоветуйте плз. какую версию стоит поставить?
|
|
|
|
|
Mar 22 2007, 14:45
|
Знающий
   
Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484

|
Цитата(beer_warrior @ Mar 21 2007, 23:51)  WinAVR-20060421 Я бы не был так категоричен.. Если вы используете 256 меги то WinAVR-2007... Если новые тиньки то версию от klen -а, она может использовать для них инструкцию MOVW Анатолий.
|
|
|
|
|
Mar 22 2007, 23:10
|
Группа: Новичок
Сообщений: 14
Регистрация: 14-11-06
Пользователь №: 22 299

|
Спасибо, пошёл скачивать.
Сообщение отредактировал ShuraM - Mar 22 2007, 23:11
|
|
|
|
|
Mar 23 2007, 00:41
|
Группа: Новичок
Сообщений: 14
Регистрация: 14-11-06
Пользователь №: 22 299

|
Скачал, поставил, WinAVR-20060421. Но что-то не сложилось . Взял пример из книги, при компиляции выдаёт ошибку. Как победить? Код #include <inttypes.h> #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h>
unsigned char OverflowC; unsigned int EdgeR, EdgeF; unsigned long PulseClocks;
INTERRUPT(SIG_OVERFLOW1) { OverflowC++; }
INTERRUPT(SIG_INPUT_CAPTURE1 ) { if ((PIND & 0x40) != 0) { EdgeR = ICR1; TCCR1B = TCCR1B & 0xBF; OverflowC = 0; } else { EdgeF = ICR1; TCCR1B = TCCR1B | 0x40; PulseClocks = (unsigned long)EdgeF - (unsigned long)EdgeR + (unsigned long)OverflowC * 0x10000; PORTC = PulseClocks / 500; } }
int main (void) { DDRC = 0xFF; TCCR1B = 0xC2; TIMSK = 0x24; sei(); while(1); } Цитата Compiling: PulsWdth.c avr-gcc -c -mmcu=at90s8515 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=PulsWdth.lst -std=gnu99 -Wp,-M,-MP,-MT,PulsWdth.o,-MF,.dep/PulsWdth.o.d PulsWdth.c -o PulsWdth.o PulsWdth.c:13: warning: return type defaults to `int' PulsWdth.c:13: warning: function declaration isn't a prototype PulsWdth.c: In function `INTERRUPT': PulsWdth.c:13: warning: type of "__vector_6" defaults to "int" PulsWdth.c: At top level: PulsWdth.c:18: warning: return type defaults to `int' PulsWdth.c:18: warning: function declaration isn't a prototype PulsWdth.c:18: error: redefinition of 'INTERRUPT' PulsWdth.c:13: error: previous definition of 'INTERRUPT' was here PulsWdth.c: In function `INTERRUPT': PulsWdth.c:18: warning: type of "__vector_3" defaults to "int" make.exe: *** [PulsWdth.o] Error 1
> Process Exit Code: 2 > Time Taken: 00:01
Сообщение отредактировал ShuraM - Mar 23 2007, 00:47
|
|
|
|
|
Mar 23 2007, 01:54
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(ShuraM @ Mar 23 2007, 00:41)  Скачал, поставил, WinAVR-20060421. Но что-то не сложилось . Взял пример из книги, при компиляции выдаёт ошибку. Как победить? Код INTERRUPT(SIG_OVERFLOW1)
INTERRUPT(SIG_INPUT_CAPTURE1 ) находим на диске файл avr-libc-user-manual-1.4.4.pdf и внимательно его изучаем там есть почти все Вместо INTERRUPT пишем ISR Вместо SIG_OVERFLOW1 пишем TIM1_OVF_vect Вместо SIG_INPUT_CAPTURE1 пишем TIMER1_CAPT_vect то есть ISR(TIM1_OVF_vect) и ISR(TIMER1_CAPT_vect) Ваша книжка просто слегка устарела  P.S. странно что в книжке стоит INTERRUPT вместо SIGNAL наверное это была такая шютка автора
|
|
|
|
|
Mar 23 2007, 22:18
|
Группа: Новичок
Сообщений: 14
Регистрация: 14-11-06
Пользователь №: 22 299

|
singlskv, OK. Спасибо! Книга единственная которую я нашёл про "С" для микроконтроллеров. Шпак Ю.А. "Программирование на языке С для AVR и PIC микроконтроллеров"
Сообщение отредактировал ShuraM - Mar 23 2007, 22:21
|
|
|
|
|
Mar 24 2007, 10:37
|

Профессионал
    
Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380

|
Цитата Книга единственная которую я нашёл про "С" для микроконтроллеров. Самой книжки не видел, но важнее ИМХО понимание С(++) А вот конкретные вопросы реализации, лучше смотреть в оригинальной доке. Даже между соседними версиями есть весьма серьезные расхождения. А переводчик и издательство точности не добавляют.
--------------------
Вони шукають те, чого нема, Щоб довести, що його не існує.
|
|
|
|
|
Mar 24 2007, 12:31
|
Группа: Новичок
Сообщений: 14
Регистрация: 14-11-06
Пользователь №: 22 299

|
|
|
|
|
|
Mar 25 2007, 21:44
|
Группа: Новичок
Сообщений: 14
Регистрация: 14-11-06
Пользователь №: 22 299

|
Вот скажи мне embedder как имитировать прерывание в AVR studio Ver 4.13.528? Откомпилировал и запустил проект в студии , в пошаговом режиме, дошёл до функции while(1) (исходник в моём посте выше) . В окне I/O View пробовал изменять состояние порта PORTD и PIND, но прерывания не происходит. Как быть?
|
|
|
|
|
Mar 25 2007, 23:46
|

Профессионал
    
Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380

|
Цитата 2007-й оптимизирует эффективнее. ~16k кода скомпилинного 2006421, превратилось в ~14.5k на 20070122. Слишком много старого кода компилируется с ошибками. Примеры есть и здесь и на аврфриксе. Так-что ИМХО лучше повременить. Тем более, что новая версия не за горами.
--------------------
Вони шукають те, чого нема, Щоб довести, що його не існує.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|