Занимательная электроника
Сегодня мы рассмотрим работу прерывания которое будет срабатывать по счетчику. В качестве примера возьмем 16 битный счетчик ( 8 битные на много проще и на них мы не сможем реализовать длительные паузы между прерываниями).
Регистр TCCR1A служит для задания режимов работы таймера/счётчика 1 :
COM1A1, COM1A0, COM1B1, COM1B0 – настраивают поведение выводов OC1A и OC1B.
FOC1A, FOC1B – принудительное изменение состояния выходов OC1A и OC1B.
WGM11, WGM10 – настраивают TC1 для работы в режиме ШИМ.
Регистр TCCR1B служит для задания режимов работы таймера/счётчика 1 :
CS10, CS11, CS12 – выбор частоты тактирования TC1.
WGM13 и WGM12 – служат для настройки ШИМ.
ICNC1 – задерживает определение события, происходящего на входе ISP1 на 4 машинных цикла.
ICES1 – настраивается фронт срабатывания прерывания по захвату. При установки в 1 – нарастающий фронт, 0 -спадающий фронт.
TIMSK – регистр маски прерываний таймеров
OCIE2 – прерывание в случаи совпадения TC2
TOIE2 – прерывание в случае переполненияTC2
TICIE1 – прерывания в случае захвата TC1
OCIE1A -прерывание в случаи совпадения A TC1
OCIE1B -прерывание в случаи совпадения B TC1
TOIE1 – прерывание в случае переполненияTC1
OCIE0 – не используется
TOIE0 – прерывание в случае переполненияTC0
TIFR– регистр флагов прерывания таймеров/счетчиков.
TCNTxH и TCNTxL — старший и младший счетный байт.
Необходимо учитывать, что записывать данные в счетный байт необходимо с старшего разряда, а потом младший. Менять последовательность нельзя.
В нашей программе, при переполнении счетчика будет отрабатывать прерывание, как следствие будут переключаться светодиоды на ножках D0 и D1.
#define HL1_on PORTD|=(1<<PD0)
#define HL1_off PORTD&=
(1<<PD0)
#define HL2_on PORTD|=(1<<PD1)
#define HL2_off PORTD&=
unsigned char i,n;
int main(void)
<
/* Replace with your application code */
DDRD =0b0000011; //ножки D0-D1 выход
PORTD =0b1111100;// ножки D0-D1 – настроены на 0
TCCR1B |= (1<<WGM12); // устанавливаем режим СТС (сброс по совпадению)
TIMSK |= (1<<OCIE1A); //устанавливаем бит разрешения прерывания 1ого счетчика по совпадению с OCR1A(H и L)
//////////////////////////////////////////
OCR1AH = 0b11110100; //записываем в регистр число для сравнения
OCR1AL = 0b00100100;
TCCR1B |= (1<<CS11)|(1<<CS10);//установим делитель.
i=0;n=0;
sei();
Правила эксплуатации
Область применения этих нехитрых устройств очень широка: умного помощника можно эксплуатировать дома или на даче для отпугивания воров и создания миража присутствия жильцов, установив соответствующую функцию. Она выручит с утренним и вечерним поливом любимой лужайки, избавив тем самым хозяев от необходимости раннего пробуждения. А для помещений с животными, в которых установлены электрические поилки и есть необходимость периодического включения света, они просто бесценны.
Розетка позволяет решить несколько задач одновременно:
- Управлять электрическими приборами (мультиварка, стиральная машина, тепловентилятор и прочее).
- Подогревать и подсвечивать помещения с животными, аквариумы, включать и отключать свет.
- Автоматизировать полив и вентиляцию.
- Значительно сэкономить на коммунальных платежах, сокращая потребление электроэнергии.
Типы таймеров
Рассматриваемые приборы подразделяются по принципу действия таймеров на механические и электронные.
Простейшим вариантом механического таймера является таймер с обратным отсчётом выполненный на базе часового механизма, который заводится поворотом ручки.
Наибольшим спросом пользуются розетки с механическими суточными программами. Поскольку для работы электродвигателя часового механизма нужна электроэнергия, их иногда называют электромеханическими таймерами. В качестве резервного питания используются аккумуляторы. Программа управления нагрузкой создаётся механически за счёт набора сегментов с 15-минутными интервалами.
Электронный таймер для бытовой розетки даёт возможность задавать выполнение программ на неделю и месяц, а также отображать реальное время и параметры заданных программ на жидкокристаллическом индикаторе.
7. Неудобная одежда
Вы надеваете тесные туфли, потому что надо же их куда‑то носить, брюки, которые чуть‑чуть маловаты, но сойдёт, и рубашку, которую ненавидите, но мама подарила, не выкидывать же. И куда бы вы ни пошли во всём этом, вас определённо ждут страдания. Неважно, чем вы будете заняты и насколько дело увлекательно, дискомфорт никуда не исчезнет. А потому вы быстро вымотаетесь и будете мечтать только об одном: вернуться домой и снять с себя эти вещи.
Жизнь слишком коротка, чтобы одеваться неудобно. И в ней без того полно боли, чтобы страдать ещё из‑за мозолей на пятке или ненавистной рубашки.