ATMEGA16 - Внешние прерывания

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
ol1331
Родился
Сообщения: 4
Зарегистрирован: Пт апр 22, 2011 14:48:59

ATMEGA16 - Внешние прерывания

Сообщение ol1331 »

Привет всем котоводам :),
т.к. я начинающий программист, у меня возникла проблемка с внешними прерываниями,
облазил гугл, нашёл как работать примеру с INT1 [url]http://samou4ka.net/page/vneshnie-preryvanija-mk-avr[/url]

Код:

Код: Выделить всё

#include <iom8.h>
#include <avr/io.h>
#include <avr/interrupt.h>
//определяем биты регистров
#define ISC10 2
#define ISC11 3
#define INT1 7
unsigned char int1 = 0;
ISR(INT1_vect)
{
//обработка прерывания
        int1++;	
}
//функция инициализация внешнего прерывания
void INTinit()
{
	MCUCR = (1<<ISC10) | (1<<ISC11);//0b00001100
	GICR = (1<<INT1);//0b10000000
}
int main()
{
        INTinit();//вызываем функцию инициализации прерывания
        sei();//устанавливаем бит глобального разрешения прерываний
while(1);
}

Вроде бы всё понятно, но нифига не понятно как в функции INTinit() инициализировать к примеру сразу INT0 и INT1...
Сразу в нужных местах поменять нули на единички или для каждого INTx писать свою функцию инициализации ?

Вообще если у кого есть код как сразу инициализировать INT0, INT1 и INT2 - буду признателен тому человеку.

Тут много опытных программеров, народ, помогите если не затруднит... Вроде бы изучение контроллеров пошло хорошо, а на этом месте запнулся. :(
Реклама
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: ATMEGA16 - Внешние прерывания

Сообщение Engineer_Keen »

ol1331 писал(а): Вроде бы всё понятно, но нифига не понятно как в функции INTinit() инициализировать к примеру сразу INT0 и INT1...
Сразу в нужных местах поменять нули на единички или для каждого INTx писать свою функцию инициализации ?
Сразу, ведь за все 3 прерывания отвечает один регистр. Зачем лишний раз вызывать запись в него, если заранее известно что нужно включить.
ol1331 писал(а): Вообще если у кого есть код как сразу инициализировать INT0, INT1 и INT2 - буду признателен тому человеку.
следовательно: GICR = (1<<INT0)|(1<<INT1)|(1<<INT2);
Реклама
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

Re: ATMEGA16 - Внешние прерывания

Сообщение SubDia »

Да, надо еще бы не забыть тогда дописать в начале "#define INT0 6" и "#define INT1 7"
Э. Стоп, нашальнике. Код-то под мегу 8-ю. Тогда и "define INT2 5", коль уж с мегой 16-й работаете. И еще вместо "#include <iom8.h>" нужно написать "#include <iom16.h>" - это ежели в WinAVR писать намерены.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
ol1331
Родился
Сообщения: 4
Зарегистрирован: Пт апр 22, 2011 14:48:59

Re: ATMEGA16 - Внешние прерывания

Сообщение ol1331 »

Engineer_Keen и SubDia, спс за помщь,
теперь всё понятно 8)
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18592
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: ATMEGA16 - Внешние прерывания

Сообщение ARV »

SubDia писал(а):И еще вместо "#include <iom8.h>" нужно написать "#include <iom16.h>" - это ежели в WinAVR писать намерены.
НЕ НУЖНО ТАК ПИСАТЬ!!!
в WinAVR достаточно написать #include <avr/io.h> и в параметрах проекта указать конкретный МК - все будет сделано автоматически.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

Re: ATMEGA16 - Внешние прерывания

Сообщение SubDia »

ARV писал(а):в WinAVR достаточно написать #include <avr/io.h> и в параметрах проекта указать конкретный МК - все будет сделано автоматически.
Эм..не подумавши ляпнул. И то верно. =)
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
Реклама
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»