Сб мар 13, 2021 18:04:07
#define F_CPU 9600000UL // не обязательно
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h> // тоже не нужно
int main(void)
{
DDRB |= (1 << PB3); // выход
TIMSK0 = (1<<TOIE0); // разрешить прерывание по переполнению таймера счетчика Т0
TCNT0 = 0x00; // обнулить счетный регистр
sei();
ACSR|=(0<<ACIE); // прерывание по компаратору вЫкл
ACSR|=(0<<ACIS1) | (1<<ACIS0);
while(1)
{
if(ACSR&(1<<ACO)) // по каждому переходу компаратора
{
PORTB &= ~(1<<PB3); // выход в 0
TCCR0B = (1<<CS00) | (1<<CS02); // запуск таймера без перезапуска
// с предделителем 1024(CLK = 1200000 Гц / 1024/256 = 4 Гц, 250 мс)
}
}
}
ISR(TIM0_OVF_vect) {
TCCR0B = 0x00; // остановка таймера
TCNT0 = 0x00; // обнуление счетного регистра
PORTB |= (1<<PB3); // выход в 1
}
Сб мар 13, 2021 18:32:30
Сб мар 13, 2021 18:44:03
Сб мар 13, 2021 18:52:22
Сб мар 13, 2021 18:53:43
Сб мар 13, 2021 18:57:53
Сб мар 13, 2021 19:29:09
Сб мар 13, 2021 19:54:43
Вс мар 14, 2021 09:17:59
Вс мар 14, 2021 09:39:41
Вс мар 14, 2021 10:28:36
Вс мар 14, 2021 10:34:47
Вс мар 14, 2021 10:39:37
Вс мар 14, 2021 10:40:46
Вс мар 14, 2021 10:42:43
Вс мар 14, 2021 10:51:56
Вс мар 14, 2021 10:58:57
#define F_CPU 9600000UL
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
DDRB |= (1 << PB3); // выход
while(1)
{
if(ACSR&(1<<ACO)) // по каждому переходу компаратора
{
PORTB &= ~(1<<PB3); // выход в 1
_delay_ms(280);
PORTB |= (1<<PB3); // выход в 0
}
}
}
Вс мар 14, 2021 11:00:59
Вс мар 14, 2021 11:04:43
Вс мар 14, 2021 11:06:25