-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtimer.c
More file actions
60 lines (50 loc) · 1.73 KB
/
Copy pathtimer.c
File metadata and controls
60 lines (50 loc) · 1.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
// Счетчик времени , минуты и секунды
#include "timer.h"
ISR( TIMER1_OVF_vect ) //на осциллограффе в протеусе ровно 1 сек ^^
{
TCNT1=57724;
if (flags.SupplyAuto==1)flags.TimerFlag=1;
}
void doubleCountdown(){
if (flags.TimerFlag==1){
if (flags.SupplyAuto==1){ //отправить в диспетчер наверное ... можно даже при хорошей настройке диспетчера
if (CurrentTime!=0){ //отключить этот таймер
CurrentTime--;
}
else{
if (flags.ADC_Channel==0){
CurrentTime=adc6;
TimeSupply=CurrentTime+1;
flags.ADC_Channel=1;
SB(C,3);
}
else{
CurrentTime=adc7;
TimeStop=CurrentTime+1;
flags.ADC_Channel=0;
CB(C,3);
}
}
}
flags.TimerFlag=0;
if (flags.ADC_Channel==0) {TimeStop--;}
else {TimeSupply--;}
}
//*/
AddTask(doubleCountdown,100);
}
void InitTimer(){
TIMSK = (1<<TOIE0)|(1<<TOIE1)|(1<<TOIE2); // переполнение
TCCR0 = (1<<CS02)|(0<<CS01)|(1<<CS00); // предделитель 1024
TCNT0 = TCNT0_const;
TCCR2 = (1<<CS02)|(0<<CS01)|(1<<CS00);
TCCR1B = (1<<CS12)|(0<<CS11)|(1<<CS10); // настраиваем делитель 100=256 101=1024
// TIMSK = (1<<TOIE1); // разрешаем прерывание по переполнению таймера 1 // перенесено в главный файл
TCNT1 = 57724; // выставляем начальное значение TCNT1 64456 57724
// TIFR = 1<<TOV1;
}
ISR(TIMER0_OVF_vect) // на осциллографе в протеусе 10мс (10kHz)
{
TCNT0 = TCNT0_const; //7812 217 //8000000/1024
// IND_Update(); // (CH(C,4))?CB(C,4):SB(C,4);// на осциллографе в протеусе 10мс(100гц),теперь восемь оО
}