Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 08.10.2013, 01:29  
bass1981
Гражданин KAZUS.RU
 
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию Внешние прерывания Atmega32u4

Доброго времени суток.
Заблудился опять в трех соснах.
Пытаюсь настроит программу на с работку от внешнего прерывания по вектору 0 (INT0). По спадающему фронту.Так не работает.
Код:
ClearBit(DDRB,0);      //Ставим на вход
SetBit(PORTB,0);   //Переводим в высокий уровень

EICRA = 0;//обнуляем
EICRB = 0;
//настраиваем на срабатывание INT0 по переднему спадающему фронту 
EICRA |= (1‹‹ISC01)|(0‹‹ISC00);

//разрешаем внешнее прерывание INT0 
EIMSK |= (1‹‹INT0);
//PCICR = 1;
//PCMSK0 = (1‹‹ PCIE0);

//выставляем флаг глобального разрешения прерываний
sei();
Обработка прерывания
Код:
int Mode =0;
ISR( INT0_vect )
{
if(Mode==0)
{
Mode=1;
ClearBit(PORTD,0);//Лампочка выключись
}else
{
Mode=0;
SetBit(PORTD,0);//Лампочка включись
}
}
Так перезагрузаеться мк
Код:
ClearBit(DDRB,0);      //Ставим на вход
SetBit(PORTB,0);   //Переводим в высокий уровень

EICRA = 0;//обнуляем
EICRB = 0;
//настраиваем на срабатывание INT0 по переднему спадающему фронту 
EICRA |= (1‹‹ISC01)|(0‹‹ISC00);

//разрешаем внешнее прерывание INT0 
EIMSK |= (1‹‹INT0);
PCICR = 1;
PCMSK0 = (1‹‹ PCIE0);

//выставляем флаг глобального разрешения прерываний
sei();
Порт Б0 замыкаю на минус. Уже третий час сижу.

Заранее спасибо.
Реклама:
bass1981 вне форума  
Непрочитано 08.10.2013, 13:34  
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,794
Сказал спасибо: 2,913
Сказали Спасибо 3,120 раз(а) в 2,111 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: Внешние прерывания Atmega32u4

У Вас сейчас - по фронту (отпускание PB0 от земли):
Сообщение от bass1981 Посмотреть сообщение
//настраиваем на срабатывание INT0 по переднему спадающему фронту
Код:
EICRA |= (1‹‹ISC01)|(0‹‹ISC00);
Если по спаду, то так:
EICRA |= 1‹‹ISC01;
Ну и PCICR с PCMSK0, по-моему, - лишние. Достаточно:
PCICR = 0;
ForcePoint вне форума  
Сказали "Спасибо" ForcePoint
bass1981 (08.10.2013)
Непрочитано 08.10.2013, 18:20  
bass1981
Гражданин KAZUS.RU
 
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию Re: Внешние прерывания Atmega32u4

Не все равно не работает.
Код:
ClearBit(DDRB,0);      // 
SetBit(PORTB,0);   //
SetBit(PORTD,0);            //Лампочка включись
_delay_ms(1000);

EICRA = 0;
EICRB = 0;
//настраиваем на срабатывание INT0 по переднему спадающему фронту 
//EICRA = (1‹‹ISC01)|(0‹‹ISC00);
EICRA |= 1‹‹ISC01; 

//разрешаем внешнее прерывание INT0 
EIMSK |= (1‹‹INT0);
PCICR = 0;
//выставляем флаг глобального разрешения прерываний
sei();
Лампочка как горит так и горит. а по идеи ри каждом прерывании должна включаться выключаться.
Выставляю
Код:
PCICR = 1;
PCMSK0 = (1‹‹ PCIE0);
Контроллер ребутаеться, значит прерывание проходит.
Может прерывание указал не так, AVRStudio 4.....
Код:
ISR( INT0_vect )
{}
Сейчас попробую на INT1 перенастроить, но все же интересно где грабли то.... А на голове все больше и больше шишка.

Заранее спасибо.
bass1981 вне форума  
Непрочитано 08.10.2013, 18:49  
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,794
Сказал спасибо: 2,913
Сказали Спасибо 3,120 раз(а) в 2,111 сообщении(ях)
ForcePoint на пути к лучшему
Стрелка Re: Внешние прерывания Atmega32u4

Тьфу на Вас! INT0 живёт на PD0.
ForcePoint вне форума  
Сказали "Спасибо" ForcePoint
bass1981 (08.10.2013)
Непрочитано 08.10.2013, 19:27  
bass1981
Гражданин KAZUS.RU
 
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию Re: Внешние прерывания Atmega32u4

Сообщение от ForcePoint Посмотреть сообщение
Тьфу на Вас! INT0 живёт на PD0.
Действительно ТФУ!!!!!!!!! перепутал PCINT0...... Я как всегда сделаю глупейшую ошибку и сижу день ковыряюсь......... Засыпал не увидел.
bass1981 вне форума  
Непрочитано 08.10.2013, 21:52  
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,794
Сказал спасибо: 2,913
Сказали Спасибо 3,120 раз(а) в 2,111 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: Внешние прерывания Atmega32u4

Сообщение от bass1981 Посмотреть сообщение
Действительно ТФУ!!!!!!!!! перепутал PCINT0...... Я как всегда сделаю глупейшую ошибку и сижу день ковыряюсь......... Засыпал не увидел.
Не парьтесь, errare humanum est. Иной раз уж хочу где-нибудь спросить, но снисходит просветление. И сижу, думаю, какой сам дурак и как хорошо, что не попалился перед обчеством.
ForcePoint вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Внешние прерывания STM32F4 ARM 1 07.12.2012 10:40
AT89C5131 прием и передача данных по USB rihkov AVR 14 15.11.2012 08:16
Вход в прерывания для PIC микроконтроллеров dimmich Микроконтроллеры, АЦП, память и т.д 4 06.12.2009 17:17
[Решено] Proteus внешние прерывания ethers Proteus 7 21.09.2009 20:15
Proteus AT90S4433 внешние прерывания компаратор eXeC001er Микроконтроллеры, АЦП, память и т.д 0 19.07.2005 02:30


Часовой пояс GMT +4, время: 14:35.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot