Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
27.12.2010, 15:05
|
|
Прописка
Регистрация: 06.03.2007
Сообщений: 144
Сказал спасибо: 22
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
|
Re: Программа сбрасывается при включении sei()
Цитата:
|
В исправленном - не пойму, где определяется тип МК - куда вектор будет определен?
|
тип МК определяется в ‹io.h›.
Компилятор - родной AVR GCC. Пробовал в CodeVision - все работало!
|
|
|
|
27.12.2010, 15:08
|
|
Почётный гражданин KAZUS.RU
Регистрация: 01.04.2009
Адрес: Рязань
Сообщений: 1,140
Сказал спасибо: 21
Сказали Спасибо 635 раз(а) в 344 сообщении(ях)
|
Re: Программа сбрасывается при включении sei()
И в коде не видно #include ‹avr/iom48.h›
|
|
|
|
27.12.2010, 15:15
|
|
Прописка
Регистрация: 06.03.2007
Сообщений: 144
Сказал спасибо: 22
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
|
Re: Программа сбрасывается при включении sei()
TIMER0_OVF_vect - Вот правильное решение....
Всем спасибо за помощь!
|
|
|
|
27.12.2010, 15:15
|
|
Вид на жительство
Регистрация: 03.06.2010
Сообщений: 452
Сказал спасибо: 35
Сказали Спасибо 168 раз(а) в 133 сообщении(ях)
|
Re: Программа сбрасывается при включении sei()
Сообщение от _guardianangel
|
И в коде не видно #include ‹avr/iom48.h›
|
А этот файл и не надо включать в свои проекты, надо включать ‹avr/io.h› , а тип МК определяется макросом либо в каком либо одном файле настроек для проекта, либо при компиляции.
|
|
|
|
27.12.2010, 18:00
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.10.2010
Сообщений: 1,752
Сказал спасибо: 158
Сказали Спасибо 640 раз(а) в 364 сообщении(ях)
|
Re: Программа сбрасывается при включении sei()
Так, на всякий случай.
Из вполне работающей проги на mega88( 168 ).
Цитата:
|
#include ‹avr/io.h›
#include ‹avr/interrupt.h›
...
// Обработчики прерываний(по современному)
// Внешнее прерывание EXT_INT0
ISR (SIG_INTERRUPT0)
{
...
}
// Внешнее прерывание EXT_INT1
ISR (SIG_INTERRUPT1)
{
...
}
// Переполнение таймера 0
ISR (SIG_OVERFLOW0)
{
...
}
// Переполнение таймера 1
ISR (SIG_OVERFLOW1)
{
...
}
...
|
Определения содержатся в файле "iomx8.h".
Там много всякого интересного и познавательного.
Изучать эти файлы полезнее всяких мануалов.
|
|
|
|
27.12.2010, 18:44
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,955
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Re: Программа сбрасывается при включении sei()
Сообщение от sanstan
|
TIMER0_OVF_vect - Вот правильное решение....
Всем спасибо за помощь!
|
Странно - почему компилятор не обнаружил "липовое" имя? Какой вектор генерился в этом случае?
__________________
[ жизнь приятна и красива, если выпить литр пива ]
|
|
|
|
27.12.2010, 20:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 28.02.2010
Сообщений: 2,297
Сказал спасибо: 53
Сказали Спасибо 461 раз(а) в 392 сообщении(ях)
|
Re: Программа сбрасывается при включении sei()
Может просто , как простую функцию принял, без вектора.(ИМХО)
|
|
|
|
27.12.2010, 21:07
|
|
Вид на жительство
Регистрация: 03.06.2010
Сообщений: 452
Сказал спасибо: 35
Сказали Спасибо 168 раз(а) в 133 сообщении(ях)
|
Re: Программа сбрасывается при включении sei()
Сообщение от nml
|
Странно - почему компилятор не обнаружил "липовое" имя? Какой вектор генерился в этом случае?
|
Если коротко, то компилятор нифига не знает ни про какие вектора никаких прерываний. А работоспособность достигаетсяся кучкой макросов и скриптами линкера.
Конкретно макрос ISR определен так:
PHP код:
|
# define ISR(vector, ...) \ void vector (void) __attribute__ ((signal,__INTR_ATTRS)) __VA_ARGS__; \ void vector (void)
|
т. е. при его помощи опреляется функция с именем, переданным макросу. С точки зрения компилятора главное что б имя функции было корректным.
(Речь идет о gcc)
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:39.
|
|