Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
18.03.2008, 01:50
|
|
Частый гость
Регистрация: 10.11.2006
Сообщений: 23
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Вопрос новичка. IAR C, AVR & interrupt
Привет,
Не пинайте, пожалуйста, но ответ пока не нашел. В документации с этим, почему-то, туго.
Разбираю программу на С (пример от атмеля).
Есть следующее определение прерывания:
void interrupt[TIMER1_OVF_vect] T1Ovf(void)
И в хидере объявлено и в исходнике.
Производитель утверждает, что на исса 90 оно компилится. Компилятор ругается с криком "массивы такими не бывают!".
Нигде такого использования интеррапта не видел в документации. Везде прагма и следующей строкой - прерывание.
Может где какой ключик? Или производитель немного забыл свой хидер с макросами приложить?
п.с. пример дан для довольно старого ИАР. У меня сейчас стоит что-то типа 4.31.
Заранее спасибо!
|
|
|
|
18.03.2008, 05:27
|
|
Временная регистрация
Регистрация: 12.01.2008
Сообщений: 96
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Вполне обычная конструкция для ИАРа
Я на новом так и писал
А зачем объявлять?
Вы эту функцию напрямую вызываете? Нет? так и уберите объявление!
надо писать так:
void interrupt[TIMER1_OVF_vect] T1Ovf(void)
{
//здесь обработка прерывания
}
|
|
|
|
18.03.2008, 13:49
|
|
Частый гость
Регистрация: 10.11.2006
Сообщений: 23
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Сообщение от MAXvaLL
|
Вполне обычная конструкция для ИАРа
Я на новом так и писал
А зачем объявлять?
Вы эту функцию напрямую вызываете? Нет? так и уберите объявление!
надо писать так:
void interrupt[TIMER1_OVF_vect] T1Ovf(void)
{
//здесь обработка прерывания
}
|
А и спасибо! Так и оказалось. Убрал объявление в хидере - проглотила. На самом деле немного удивляет отсутствие описания этой конструкции и в хелпе и в пдфе... Ну да ладно.
Правда теперь на С_таск ругается =) Но до него еще есть мелкие ошибки. Уберу их, может оживет...
В любом случае - спасибо за подсказку!!
|
|
|
|
18.03.2008, 14:12
|
|
Частый гость
Регистрация: 10.11.2006
Сообщений: 23
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Странно. Все поправил - все равно ругается на эту конструкцию прерывания.
Переделал как в документации, вопросы отпали..
Ругалось на воид перед С_таском... Убрал - все нормально...
Странная совместимость старых и новых версий.
|
|
|
|
18.03.2008, 14:18
|
|
Частый гость
Регистрация: 10.11.2006
Сообщений: 23
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Да.. Почти все встало на свои места.
Этот пример имени атмеля никто даже не компилял. Ошибки в названиях файлов инклюдов, дважды объявленные процедуры...
Короче написали и выложили даже не проверяя..
|
|
|
|
18.03.2008, 18:08
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Сообщение от sns13
|
немного удивляет отсутствие описания этой конструкции и в хелпе и в пдфе...
|
Зато в Прерывания в AVR это написано !
А в IAR есть папка типа DOC
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:09.
|
|