Генератор одиночных импульсов на AVR
- Сообщения: 26
- Зарегистрирован: Пт апр 06, 2012 18:11:44
Ну любой из входов МК к кнопке на массу к примеру,и также любой выход мк задействовать,там далее через резистор на базу npn транзистора эммитер которго на земле а в коллекторе с плюсом питания рэлюшка.
- Реклама
Код: Выделить всё
with AVR, AVR.MCU, AVR.Wait;
use AVR, AVR.MCU;
procedure timer_3_min is
procedure Wait_ms is
new AVR.Wait.Generic_Busy_Wait_Milliseconds(Crystal_hertz => 1_000_000);
button: boolean renames PINB_Bits(0);
relay: boolean renames PORTB_Bits(1);
begin
PORTB_Bits(0) := high;
relay := low;
DDRB_Bits := (0 => DD_Input, 1 => DD_Output, others => DD_Input);
loop
if button=low then
relay := high;
wait_ms(60_000);
wait_ms(60_000);
wait_ms(60_000);
relay := low;
end if;
end loop;
end timer_3_min;- Вложения
-
- timer_3_min.hex
- (545 байт) 276 скачиваний
- Сообщения: 26
- Зарегистрирован: Пт апр 06, 2012 18:11:44
Порты PB0 и PB1 использовать ? и фьюз-биты как выставить при прошивке?Генератор внутренний используется?подскажите
ks0, вроде сказал, что по умолчанию она на 1 МГц работает, так что если кварцевый резонатор не нужен, то ничего выставлять не надо.
artemx писал(а):Порты PB0 и PB1 использовать ?
Андрей СШ писал(а):Код: Выделить всё
button: boolean renames PINB_Bits(0); relay: boolean renames PORTB_Bits(1);
- Реклама
Да, с внутренней подтяжкой.
Теоретически внутренний генератор имеет точность +/-30%, но на практике при комнатной температуре у меня получалось +/- 0,1%.
При необходимости его можно немного подстроить или припаять кварцевый (программа при этом не изменится).
Теоретически внутренний генератор имеет точность +/-30%, но на практике при комнатной температуре у меня получалось +/- 0,1%.
При необходимости его можно немного подстроить или припаять кварцевый (программа при этом не изменится).
- Сообщения: 26
- Зарегистрирован: Пт апр 06, 2012 18:11:44
- Сообщения: 26
- Зарегистрирован: Пт апр 06, 2012 18:11:44
Спаял сегодня таймерок,работает и довольно таки точно.И если не затруднит то можно на каком-нибудь выходе мк добавить звуковой сигнал за 20 секунд и до окончания трех минут,например на зумер или бипер как их называют.
Всем спасибо за помощь!
Всем спасибо за помощь!
Хорошо, что точность устраивает. Теперь главное не допускать сильных колебаний температуры и напряжения.
Пищалку добавить можно, но они бывают разные:
1. Электродинамическая - требует подавать с ног микроконтроллера переменку и подстраивать частоту для правильного звучания.
2. Пьезоэлектрическая - тоже самое, но ещё нужно высокое напряжение.
3. Зуммер со встроенным генератором - подключить проще всего.
Пищалку добавить можно, но они бывают разные:
1. Электродинамическая - требует подавать с ног микроконтроллера переменку и подстраивать частоту для правильного звучания.
2. Пьезоэлектрическая - тоже самое, но ещё нужно высокое напряжение.
3. Зуммер со встроенным генератором - подключить проще всего.
- Сообщения: 26
- Зарегистрирован: Пт апр 06, 2012 18:11:44
Код: Выделить всё
with AVR, AVR.MCU, AVR.Wait;
use AVR, AVR.MCU;
procedure timer_3_min is
procedure Wait_ms is
new AVR.Wait.Generic_Busy_Wait_Milliseconds(Crystal_hertz => 1_000_000);
button: boolean renames PINB_Bits(0);
relay: boolean renames PORTB_Bits(1);
beeper: boolean renames PORTB_Bits(2);
begin
PORTB_Bits(0) := high;
relay := low;
beeper := low;
DDRB_Bits := (0 => DD_Input, 1|2 => DD_Output, others => DD_Input);
loop
if button=low then
relay := high;
wait_ms(60_000);
wait_ms(60_000);
wait_ms(40_000);
beeper := high;
wait_ms(1_000);
beeper := low;
wait_ms(19_000);
relay := low;
end if;
end loop;
end timer_3_min;- Вложения
-
- timer_3_min.hex
- (684 байт) 282 скачивания
- Сообщения: 26
- Зарегистрирован: Пт апр 06, 2012 18:11:44
Вообще планируется использовать девайс с питанием от авто акуммулятора,а от сетевого блока питания заметил не большую нестабильность,то есть бывает и полторв минуты и минута и восемь срабатывает,сеть блоку питания передергиваю и потом считает нормально по 3 минуты,видимо по сети мусор какой-то лезет,сварка,холодильники и прочее


