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

 
 
> Прерывания Attiny44, Помогите нубу, убиваюсь уже об стенку
maksim-starcity
сообщение Jan 25 2013, 16:18
Сообщение #1





Группа: Участник
Сообщений: 11
Регистрация: 25-01-13
Пользователь №: 75 348



Вроде в электронике не нуб, написал простую программку, но контроллер, хоть убейся, не уходит в прерывание.
Отлаживал дебаггером AVR Studio 6
Протеус тоже пробовал....
CODE
#define F_CPU 1000000UL
#define CLK PINB2
#include <avr/eeprom.h>
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>


ISR(EXT_INT0_vect)
{

PORTA|=_BV(PORTA1);
}

int main(void)
{
//init
cli();
DDRA=0b00000111;
PORTA=0x00;
DDRB=0x00;
PORTB=0b0001100;
// MCUCR|=_BV(1); //Setting INT0 to falling edge interrupt
MCUCR|=1<<ISC01 | 1<<ISC00;
GIMSK|=(1<<INT0); //enable INT0 interrupt
//endinit
sei();
while(1)
{
// if (PINB&(1<<CLK))
{
PORTA|=_BV(PORTA0);
PORTA&=~_BV(PORTA0);
}
}
}

Что я не так делаю?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
maksim-starcity
сообщение Jan 25 2013, 18:07
Сообщение #2





Группа: Участник
Сообщений: 11
Регистрация: 25-01-13
Пользователь №: 75 348



с GIFR был косяк.
Хотя исходя из написанного:
• Bit 6 – INTF0: External Interrupt Flag 0
When an edge or logic change on the INT0 pin triggers an interrupt request, INTF0 becomes set
(one). If the I-bit in SREG and the INT0 bit in GIMSK are set (one), the MCU will jump to the corresponding
Interrupt Vector. The flag is cleared when the interrupt routine is executed.
Alternatively, the flag can be cleared by writing a logical one to it. This flag is always cleared
when INT0 is configured as a level interrupt.
Можно понять, что INTF0 выставляется сам при уходе в прерывание.
А вообще судя по всему, тот же Simulator в студии и Proteus - косячат, т.к. протеус при добавлении задержек уже неведомую хрень выдает.
Go to the top of the page
 
+Quote Post
kovigor
сообщение Jan 25 2013, 18:50
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(maksim-starcity @ Jan 25 2013, 21:07) *
А вообще судя по всему, тот же Simulator в студии и Proteus - косячат, т.к. протеус при добавлении задержек уже неведомую хрень выдает.

Тут без комментариев. Cимуляторами никогда не пользуюсь, отлаживаю на реальном"железе". AVR - это не тот случай, когда нужен симулятор (ИМХО) ...

Кстати, из приведенного вами текста следует всего лишь, что сначала выставляется INTF0, и уже вследствие этого "the MCU will jump to the corresponding
Interrupt Vector" ...
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 29th July 2025 - 15:53
Рейтинг@Mail.ru


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