Группа: Участник
Сообщений: 866
Регистрация: 16-03-06
Из: Шебекино - Лысьва - Тюмень
Пользователь №: 15 292
Цитата(Tarbal @ Oct 20 2013, 19:57)
Я многие годы делаю так:
1. Настраиваю таймер вызывать обработчик прерывания раз в 10 мС 2. при входе делаю только rt_cnt++; 3. вечный цикл:
santi_seconds = 100; while(1) { while(rt_cnt==0) {} rt_cnt--; //Here do each 10 ms action
if(--santi_seconds==0) { //Here do each second action santi_seconds = 100; if(++seconds==60) { seconds = 0; if(++minutes==60) { minutes = 0; //Here do each hour action
} //Here do each minute action }
}
}
Возможны опечатки. Сходу написал.
Ему спать хочется, а по внешнему прерыванию просыпаться Контроллеру, имею ввиду. А, извиняюсь спросить, английский для Вас родной?
--------------------
Скоро дело сказывается, да не скоро сказка делается, или тише будешь - дальше уедешь...
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954
Цитата(Tarbal @ Oct 21 2013, 20:57)
А как одновременно спать и за временем следить?
Замечание было о том, что "просыпаться" 100 раз в секунду энергетически более расточительно, чем 1 раз в секунду, как это сделано у ТС. Кроме того, Ваш фрагмент кода не содержит инструкций (или намёка на место, куда их вставить) перевода МК в Sleep.
Замечание было о том, что "просыпаться" 100 раз в секунду энергетически более расточительно, чем 1 раз в секунду, как это сделано у ТС. Кроме того, Ваш фрагмент кода не содержит инструкций (или намёка на место, куда их вставить) перевода МК в Sleep.
Я пример привел, как делать, а детали каждый сам выберет. Но весельчак Abell ни о каком пробуждении ежесекундном не говорит. Tолько о кнопке. Это концепция измерения времени. Инструкцию sleep в конце вечного цикла последней командой.