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

 
 
 
Reply to this topicStart new topic
> WinAVR +AVRStudio как подключить функции обработки прерывания Atmega16, Написание на С программы обработки прерываний, как использовать ф-ции
Кастусь Рыжов
сообщение Aug 4 2007, 13:08
Сообщение #1


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

Группа: Участник
Сообщений: 80
Регистрация: 16-07-07
Из: Беларусь, г.Гомель
Пользователь №: 29 165



Пробовал написать программу на С для атмеги16, бегающий огонек. Первая моя прога. Написал, хотел сделать, чтобы все включалось по прерыванию, а вот как обрабатывать прерывание и написать на С используя стандартные ф-ции из библиотек С не знаю AVRStudio версии4.12 вместе с WinAVR 20060421. Пробовал использовать ф-ю #pragma, правильно или нет? А как вернуться из прерывания ?
В начале проги #include <interrupt.h> и #include <signal.h> есть. Только как все связать- пока каша в голове. Опыта по AVR мало, сам все грызу, ранее учил и юзал однокристалку 8051, 1816ВЕ48\31\51


--------------------
Прибор должен работать не в принципе, а в корпусе!
Go to the top of the page
 
+Quote Post
oran-be
сообщение Aug 4 2007, 15:39
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 234
Регистрация: 30-03-07
Из: Одесса
Пользователь №: 26 621



#pragma используется в ИАРЕ.
В Винавре пишется функция SIGNAL(№ прерывания). Например, для И"С:

SIGNAL(SIG_2WIRE_SERIAL)
{
. . .
}

О сохранении и восстановлении контекста компилятор заботится сам.
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Aug 4 2007, 17:23
Сообщение #3


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Посмотрите документацию к WINAVR по написанию прерываний.
Не забудьте размаскировать необходимые прерывания в коде, устанавливающем Вашу конфигурацию.
Успехов.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
Elegorod
сообщение Aug 5 2007, 07:12
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 17
Регистрация: 2-02-07
Пользователь №: 24 993



В WinAVR 20070122 прерывания определяются по-новому (см. Avr-libc manual - Library Reference - <avr/interrupt.h>: Interrupts):
Код
#include <avr/interrupt.h>

ISR(ADC_vect)
{
    // user code here
}

Прерывание кончается, как обычная функция, никакого специального возврата не требуется

PS все-таки придется почитать документацию
Go to the top of the page
 
+Quote Post
Кастусь Рыжов
сообщение Aug 5 2007, 12:55
Сообщение #5


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

Группа: Участник
Сообщений: 80
Регистрация: 16-07-07
Из: Беларусь, г.Гомель
Пользователь №: 29 165



Цитата(mdmitry @ Aug 4 2007, 20:23) *
Посмотрите документацию к WINAVR по написанию прерываний.
Не забудьте размаскировать необходимые прерывания в коде, устанавливающем Вашу конфигурацию.
Успехов.

Весьма признателен за ваше участие и помощь. Спасибо.

Всех благодарю за участие и помощь.

Цитата(Кастусь Рыжов @ Aug 5 2007, 15:48) *
Весьма признателен за ваше участие и помощь. Спасибо.

Всех благодарю за участие и помощь.


PS: Мудр не тот , кто много знает, а кто знает необходимое.
Это не я сказал, а греческий философ smile.gif


--------------------
Прибор должен работать не в принципе, а в корпусе!
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th June 2025 - 00:51
Рейтинг@Mail.ru


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