Перейти к содержанию

Не работает прерывание


Салих

Рекомендуемые сообщения

#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

ISR(INT0_vect)
{
	PORTD =0x00;
}

int main(void)
{
	DDRD = 0xff;
	//EXTERNAL INTERRUPTS SETTINGS
	GICR |= (1 << INT0);
	MCUCR |= (0<<ISC00)|(1<<ISC01);
	
	sei();
		while(1)
	{
		PORTD = 0xff;
		_delay_ms(220);
		_delay_ms(220);
		PORTD = 0x00;
		_delay_ms(220);
		_delay_ms(220);
		
	}
	
}

Не работает прерывание. Где ошибка? Помогите пожалуста

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>


void led_on()
{
	PORTB=0xff;
	DDRB=0x00;
}


ISR (INT0_vect)
{
	led_on();
}

int main(void)
{
	
	DDRD &= ~(1<<PD2);
	PORTD |= (1<<PD2);
	//EXTERNAL INTERRUPTS SETTINGS
	sei();
	GICR |= (1 << INT0);
	MCUCR |= (0<<ISC00)|(1<<ISC01);
		
	while(1)
	{
			
    }

    }

Вроде получилось. Я подключил к выводу PD2 переменный резистор. Когда на выводе PD2 логическая еденица то на портах PB напряжение отсудствует.  Но почему то при прокручивании переменного резистора обратно на выводах PB7 все равно логическая еденицa.

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

А в какой строчке кода у вас PB7 выключается?

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

void pwm_settings()
{
	// PWM SETTINGS
	TCCR1A |= (1 << COM1A1)|(0 << COM1A0)
	|(1 << WGM11)|(1 << WGM10)|(1 << WGM12)|(1 << WGM13);
	TCCR1A |= (0 << CS12)|(0 << CS11)|(1 << CS10);
	TCNT1 = 0x00;
	ICR1 = 0xFF;
	OCR1A = 0x00;
};


void pwm_off()
{
	TCCR1A |= (0 << CS12)|(0 << CS11)|(0 << CS10);
}


ISR (INT0_vect)
{
	pwm_off();
}

int main(void)
{
	
	void pwm_settings();
	DDRD |=(1<<PD5);
	DDRD &= ~(1<<PD2);
	PORTD |= (1<<PD2);
	//EXTERNAL INTERRUPTS SETTINGS
	
	GICR |= (1 << INT0);
	MCUCR |= (1<<ISC00)|(0<<ISC01);
	sei();	
	while(1)
	{
			
    }

    }

Помогите плиз что не так я сделал? Работаю на отладочной плате. Код не работает. Мне надо с помощью внешних прерываний включать выключать шим. Я еще думаю над АЦП. Кто знает на АЦП можно реализовать?

Ссылка на комментарий
Поделиться на другие сайты

19 минут назад, Салих сказал:

Мне надо с помощью внешних прерываний включать выключать шим.

но в прерывании вы вообще не трогаете ШИМ, вы только останавливаете таймер. Если не ошибаюсь, пока выводы заняты под периферию (UART, SPI, и таймер тоже), то управляются только ей. Дергать их через PORTx нельзя.

20 минут назад, Салих сказал:

Я еще думаю над АЦП. Кто знает на АЦП можно реализовать?

Реализовать что?

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Напрямую нет, это же разная периферия. Любое взаимодействие придется прописывать ручками.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

21 час назад, Салих сказал:

#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

void pwm_settings()
{
	// PWM SETTINGS
	TCCR1A |= (1 << COM1A1)|(0 << COM1A0)
	|(1 << WGM11)|(1 << WGM10)|(1 << WGM12)|(1 << WGM13);
	TCCR1A |= (0 << CS12)|(0 << CS11)|(1 << CS10);
	TCNT1 = 0x00;
	ICR1 = 0xFF;
	OCR1A = 0x00;
};


void pwm_off()
{
	TCCR1A |= (0 << CS12)|(0 << CS11)|(0 << CS10);
}


ISR (INT0_vect)
{
	pwm_off();
}

int main(void)
{
	
	void pwm_settings();
	DDRD |=(1<<PD5);
	DDRD &= ~(1<<PD2);
	PORTD |= (1<<PD2);
	//EXTERNAL INTERRUPTS SETTINGS
	
	GICR |= (1 << INT0);
	MCUCR |= (1<<ISC00)|(0<<ISC01);
	sei();	
	while(1)
	{
			
    }

    }

Помогите плиз что не так я сделал? Работаю на отладочной плате. Код не работает. Мне надо с помощью внешних прерываний включать выключать шим. Я еще думаю над АЦП. Кто знает на АЦП можно реализовать?

А зачем вы порты настраиваете на выхода и Вписываете в обработчик прерывания.Прерывания по входу .Лучше всего использовать  переменную .На целый порт и подпрограмму .Вписать нужно её в цыкл основной.Тогда всё будет работать.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...