Ну вы ребяты и нафлудилиНафига внешний INT и возня с таймером???
Практически любой МК имеет прерывание Timer Capture.
С помощью этой фичи задача измерения частоты/периода становится проще, чем обработка кнопки.
Спасибо, блин! Полегчало! ;-(
лень ;-)А кто тебе мешает слезть с ардуины и писать нормально? Как показывает практика - ардуиновская среда не лучше и не быстрее.
Примеров - дохрена. Вероятность найти на нужный случай - высока.Слизать готовый скетч - да, быстро, ни чего не делал, прошил, работает.
Как только надо что-то, чего нет в примерах - начинается гемор.
Ну, в 90% случаев у меня решаются простейшие задачи. И хватает умения допилить код. При этом он, конечно, кривой и корявый, но зато работает ;-) И, главное, я, чаще всего, понимаю как и почему ;-)))))))P.S. Чтобы ремейкать чужой код надо обладать не меньшими знаниями, чем тот, кто его писал.
Немає у 328 timer capture....
Все правильно, бо це програмний таймер. Точніше аппаратно-програмний. Залізний таймер0 генерує кванти часу, а вже у його перериванні та у відповідній функції рахуються твої мілісекунди.В мануале написано. Во время обработки прерывания показания таймера milisec() не меняются. Кстати, я вот только сейчас подумал, что, возможно, это вывод не меняется... А сам таймер продолжает считать!?
Все правильно, бо це програмний таймер. Точніше аппаратно-програмний. Залізний таймер0 генерує кванти часу, а вже у його перериванні та у відповідній функції рахуються твої мілісекунди.
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void) //1 ms period
{
// Reinitialize Timer 0 value
TCNT0=0x8C;
keyboard_handler();
}
Щось я набухався і туплю.
Один Н мосфет, зверху ще один, зверху резистивне навантаження. Нижній шимить. Якщо затвор верхнього приліпити на живлення, то він повторюватиме дії нижнього - тобто матиме той же перехідний процес та відповідно половину тепла. Так?