yan zhang
/
NB_CLOCK_180505
clock
myScope/myclodriv.cpp@0:17e9016529cf, 2018-05-08 (annotated)
- Committer:
- donghuoyinzi
- Date:
- Tue May 08 02:13:50 2018 +0000
- Revision:
- 0:17e9016529cf
- Child:
- 1:013b9fdc4e78
CLOCK_needle_180508
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
donghuoyinzi | 0:17e9016529cf | 1 | #include "myclodriv.h" |
donghuoyinzi | 0:17e9016529cf | 2 | |
donghuoyinzi | 0:17e9016529cf | 3 | |
donghuoyinzi | 0:17e9016529cf | 4 | int cloDAct::snstpSe=0; int cloDAct::mnstpSe=0; int cloDAct::mcstpSe=0; int cloDAct::spstpSe=0; |
donghuoyinzi | 0:17e9016529cf | 5 | int cloDAct::sec; int cloDAct::min; int cloDAct::hour; |
donghuoyinzi | 0:17e9016529cf | 6 | /***************************** |
donghuoyinzi | 0:17e9016529cf | 7 | Fun.: clodriv initialization。 |
donghuoyinzi | 0:17e9016529cf | 8 | Desc.: |
donghuoyinzi | 0:17e9016529cf | 9 | Auth. Vesion:2018.1.5 |
donghuoyinzi | 0:17e9016529cf | 10 | *****************************/ |
donghuoyinzi | 0:17e9016529cf | 11 | void cloDAct::init(void) |
donghuoyinzi | 0:17e9016529cf | 12 | { |
donghuoyinzi | 0:17e9016529cf | 13 | |
donghuoyinzi | 0:17e9016529cf | 14 | } |
donghuoyinzi | 0:17e9016529cf | 15 | |
donghuoyinzi | 0:17e9016529cf | 16 | /***************************** |
donghuoyinzi | 0:17e9016529cf | 17 | Fun.: initialization of cloDAct start。 |
donghuoyinzi | 0:17e9016529cf | 18 | Desc.: |
donghuoyinzi | 0:17e9016529cf | 19 | Auth. Vesion:2017.7.2 |
donghuoyinzi | 0:17e9016529cf | 20 | *****************************/ |
donghuoyinzi | 0:17e9016529cf | 21 | void cloDAct::start(void) |
donghuoyinzi | 0:17e9016529cf | 22 | { |
donghuoyinzi | 0:17e9016529cf | 23 | |
donghuoyinzi | 0:17e9016529cf | 24 | } |
donghuoyinzi | 0:17e9016529cf | 25 | |
donghuoyinzi | 0:17e9016529cf | 26 | /***************************** |
donghuoyinzi | 0:17e9016529cf | 27 | Fun.: initialization of cloDAct data。 |
donghuoyinzi | 0:17e9016529cf | 28 | Desc.: |
donghuoyinzi | 0:17e9016529cf | 29 | Auth. Vesion:2017.7.2 |
donghuoyinzi | 0:17e9016529cf | 30 | *****************************/ |
donghuoyinzi | 0:17e9016529cf | 31 | void cloDAct::data(void) |
donghuoyinzi | 0:17e9016529cf | 32 | { |
donghuoyinzi | 0:17e9016529cf | 33 | snstpSe=1; |
donghuoyinzi | 0:17e9016529cf | 34 | mnstpSe=1; |
donghuoyinzi | 0:17e9016529cf | 35 | mcstpSe=1; |
donghuoyinzi | 0:17e9016529cf | 36 | spstpSe=1; |
donghuoyinzi | 0:17e9016529cf | 37 | mcstpSe=1; |
donghuoyinzi | 0:17e9016529cf | 38 | |
donghuoyinzi | 0:17e9016529cf | 39 | know::polSta[26]="1"; |
donghuoyinzi | 0:17e9016529cf | 40 | know::polSta[28]="1"; |
donghuoyinzi | 0:17e9016529cf | 41 | |
donghuoyinzi | 0:17e9016529cf | 42 | know::polSta[33]="1"; |
donghuoyinzi | 0:17e9016529cf | 43 | know::polSta[32]="1"; |
donghuoyinzi | 0:17e9016529cf | 44 | know::polSta[34]="1"; |
donghuoyinzi | 0:17e9016529cf | 45 | |
donghuoyinzi | 0:17e9016529cf | 46 | sec=1; |
donghuoyinzi | 0:17e9016529cf | 47 | min=1; |
donghuoyinzi | 0:17e9016529cf | 48 | hour=1; |
donghuoyinzi | 0:17e9016529cf | 49 | |
donghuoyinzi | 0:17e9016529cf | 50 | know::MotS0=0; |
donghuoyinzi | 0:17e9016529cf | 51 | know::MotS1=0; |
donghuoyinzi | 0:17e9016529cf | 52 | know::MotM0=0; |
donghuoyinzi | 0:17e9016529cf | 53 | know::MotM1=0; //电平归零 |
donghuoyinzi | 0:17e9016529cf | 54 | } |
donghuoyinzi | 0:17e9016529cf | 55 | |
donghuoyinzi | 0:17e9016529cf | 56 | /***************************** |
donghuoyinzi | 0:17e9016529cf | 57 | Fun.: clodriv ready。 |
donghuoyinzi | 0:17e9016529cf | 58 | Desc.: |
donghuoyinzi | 0:17e9016529cf | 59 | Auth. Vesion:2018.1.5 |
donghuoyinzi | 0:17e9016529cf | 60 | *****************************/ |
donghuoyinzi | 0:17e9016529cf | 61 | void cloDAct::ready(void) |
donghuoyinzi | 0:17e9016529cf | 62 | { |
donghuoyinzi | 0:17e9016529cf | 63 | |
donghuoyinzi | 0:17e9016529cf | 64 | } |
donghuoyinzi | 0:17e9016529cf | 65 | |
donghuoyinzi | 0:17e9016529cf | 66 | /***************************** |
donghuoyinzi | 0:17e9016529cf | 67 | Fun.: |
donghuoyinzi | 0:17e9016529cf | 68 | Desc.: |
donghuoyinzi | 0:17e9016529cf | 69 | Auth. Vesion:2017.7.2 |
donghuoyinzi | 0:17e9016529cf | 70 | *****************************/ |
donghuoyinzi | 0:17e9016529cf | 71 | void cloDAct::put_revok(void) |
donghuoyinzi | 0:17e9016529cf | 72 | { |
donghuoyinzi | 0:17e9016529cf | 73 | |
donghuoyinzi | 0:17e9016529cf | 74 | } |
donghuoyinzi | 0:17e9016529cf | 75 | |
donghuoyinzi | 0:17e9016529cf | 76 | /***************************** |
donghuoyinzi | 0:17e9016529cf | 77 | Fun.: 秒针正常走时。 |
donghuoyinzi | 0:17e9016529cf | 78 | Desc.: |
donghuoyinzi | 0:17e9016529cf | 79 | Auth. Vesion:2017.7.2 |
donghuoyinzi | 0:17e9016529cf | 80 | *****************************/ |
donghuoyinzi | 0:17e9016529cf | 81 | void cloDAct::put_snorm(void) |
donghuoyinzi | 0:17e9016529cf | 82 | { |
donghuoyinzi | 0:17e9016529cf | 83 | snstpSe++; |
donghuoyinzi | 0:17e9016529cf | 84 | |
donghuoyinzi | 0:17e9016529cf | 85 | switch(snstpSe){ |
donghuoyinzi | 0:17e9016529cf | 86 | case 17: //高电平脉冲宽度46.875ms/15.625ms=3 |
donghuoyinzi | 0:17e9016529cf | 87 | case 18: |
donghuoyinzi | 0:17e9016529cf | 88 | case 19: |
donghuoyinzi | 0:17e9016529cf | 89 | know::MotS1 = 1; //秒针马达端1输出高电平 |
donghuoyinzi | 0:17e9016529cf | 90 | know::MotS0 = 0; //秒针马达端0输出低电平 |
donghuoyinzi | 0:17e9016529cf | 91 | break; |
donghuoyinzi | 0:17e9016529cf | 92 | case 20: |
donghuoyinzi | 0:17e9016529cf | 93 | know::MotS0 = 0; //秒针马达端0输出低电平 |
donghuoyinzi | 0:17e9016529cf | 94 | know::MotS1 = 0; //秒针马达端1输出低电平 |
donghuoyinzi | 0:17e9016529cf | 95 | break; |
donghuoyinzi | 0:17e9016529cf | 96 | case 21: |
donghuoyinzi | 0:17e9016529cf | 97 | case 22: |
donghuoyinzi | 0:17e9016529cf | 98 | case 23: //秒针马达端0输出脉冲 |
donghuoyinzi | 0:17e9016529cf | 99 | know::MotS0 = 1; //秒针马达端0输出高电平 |
donghuoyinzi | 0:17e9016529cf | 100 | know::MotS1 = 0; //秒针马达端1输出低电平 |
donghuoyinzi | 0:17e9016529cf | 101 | break; |
donghuoyinzi | 0:17e9016529cf | 102 | case 24: |
donghuoyinzi | 0:17e9016529cf | 103 | know::MotS0 = 0; //秒针马达端0输出低电平 |
donghuoyinzi | 0:17e9016529cf | 104 | know::MotS1 = 0; //秒针马达端1输出低电平 |
donghuoyinzi | 0:17e9016529cf | 105 | snstpSe=16; |
donghuoyinzi | 0:17e9016529cf | 106 | break; |
donghuoyinzi | 0:17e9016529cf | 107 | default: |
donghuoyinzi | 0:17e9016529cf | 108 | break; |
donghuoyinzi | 0:17e9016529cf | 109 | } |
donghuoyinzi | 0:17e9016529cf | 110 | } |
donghuoyinzi | 0:17e9016529cf | 111 | |
donghuoyinzi | 0:17e9016529cf | 112 | /***************************** |
donghuoyinzi | 0:17e9016529cf | 113 | Fun.: 分针正常走时。 |
donghuoyinzi | 0:17e9016529cf | 114 | Desc.: |
donghuoyinzi | 0:17e9016529cf | 115 | Auth. Vesion:2017.7.2 |
donghuoyinzi | 0:17e9016529cf | 116 | *****************************/ |
donghuoyinzi | 0:17e9016529cf | 117 | void cloDAct::put_mnorm(void) |
donghuoyinzi | 0:17e9016529cf | 118 | { |
donghuoyinzi | 0:17e9016529cf | 119 | mnstpSe++; |
donghuoyinzi | 0:17e9016529cf | 120 | if(mnstpSe<=2){ //高电平脉冲宽度31.250ms/15.625ms=2 |
donghuoyinzi | 0:17e9016529cf | 121 | switch(atoi(know::polSta[26].c_str())){ //周期交替标志 |
donghuoyinzi | 0:17e9016529cf | 122 | case 1: |
donghuoyinzi | 0:17e9016529cf | 123 | know::MotM1 = 1; //分针马达端1输出高电平 |
donghuoyinzi | 0:17e9016529cf | 124 | know::MotM0 = 0; //分针马达端0输出低电平 |
donghuoyinzi | 0:17e9016529cf | 125 | break; |
donghuoyinzi | 0:17e9016529cf | 126 | case 0: //分针马达端0输出脉冲 |
donghuoyinzi | 0:17e9016529cf | 127 | know::MotM0 = 1; //分针马达端0输出高电平 |
donghuoyinzi | 0:17e9016529cf | 128 | know::MotM1 = 0; //分针马达端1输出低电平 |
donghuoyinzi | 0:17e9016529cf | 129 | break; |
donghuoyinzi | 0:17e9016529cf | 130 | default: |
donghuoyinzi | 0:17e9016529cf | 131 | break; |
donghuoyinzi | 0:17e9016529cf | 132 | } |
donghuoyinzi | 0:17e9016529cf | 133 | } |
donghuoyinzi | 0:17e9016529cf | 134 | else if(mnstpSe<=639&&mnstpSe>=3){ |
donghuoyinzi | 0:17e9016529cf | 135 | know::MotM0 = 0; //分针马达端0输出低电平 |
donghuoyinzi | 0:17e9016529cf | 136 | know::MotM1 = 0; //分针马达端1输出低电平 |
donghuoyinzi | 0:17e9016529cf | 137 | switch(atoi(know::polSta[26].c_str())){ |
donghuoyinzi | 0:17e9016529cf | 138 | case 0: |
donghuoyinzi | 0:17e9016529cf | 139 | know::polSta[26]="1"; //马达端1输出脉冲标识置1 |
donghuoyinzi | 0:17e9016529cf | 140 | break; |
donghuoyinzi | 0:17e9016529cf | 141 | case 1: |
donghuoyinzi | 0:17e9016529cf | 142 | know::polSta[26]="0"; |
donghuoyinzi | 0:17e9016529cf | 143 | break; |
donghuoyinzi | 0:17e9016529cf | 144 | default: |
donghuoyinzi | 0:17e9016529cf | 145 | break; |
donghuoyinzi | 0:17e9016529cf | 146 | } |
donghuoyinzi | 0:17e9016529cf | 147 | } |
donghuoyinzi | 0:17e9016529cf | 148 | else mnstpSe=0; |
donghuoyinzi | 0:17e9016529cf | 149 | } |
donghuoyinzi | 0:17e9016529cf | 150 | |
donghuoyinzi | 0:17e9016529cf | 151 | /***************************** |
donghuoyinzi | 0:17e9016529cf | 152 | Fun.: 分针追针。 |
donghuoyinzi | 0:17e9016529cf | 153 | Desc.: |
donghuoyinzi | 0:17e9016529cf | 154 | Auth. Vesion:2017.7.2 |
donghuoyinzi | 0:17e9016529cf | 155 | *****************************/ |
donghuoyinzi | 0:17e9016529cf | 156 | void cloDAct::put_mchas(void) |
donghuoyinzi | 0:17e9016529cf | 157 | { |
donghuoyinzi | 0:17e9016529cf | 158 | mcstpSe++; |
donghuoyinzi | 0:17e9016529cf | 159 | |
donghuoyinzi | 0:17e9016529cf | 160 | switch(mcstpSe){ |
donghuoyinzi | 0:17e9016529cf | 161 | case 1: //高电平脉冲宽度31.250ms/15.625ms=2 |
donghuoyinzi | 0:17e9016529cf | 162 | case 2: |
donghuoyinzi | 0:17e9016529cf | 163 | know::MotM1 = 1; //分针马达端1输出高电平 |
donghuoyinzi | 0:17e9016529cf | 164 | know::MotM0 = 0; //分针马达端0输出低电平 |
donghuoyinzi | 0:17e9016529cf | 165 | break; |
donghuoyinzi | 0:17e9016529cf | 166 | case 3: |
donghuoyinzi | 0:17e9016529cf | 167 | case 4: |
donghuoyinzi | 0:17e9016529cf | 168 | know::MotM0 = 0; //分针马达端0输出低电平 |
donghuoyinzi | 0:17e9016529cf | 169 | know::MotM1 = 0; //分针马达端1输出低电平 |
donghuoyinzi | 0:17e9016529cf | 170 | break; |
donghuoyinzi | 0:17e9016529cf | 171 | case 5: //高电平脉冲宽度31.250ms/15.625ms=2 |
donghuoyinzi | 0:17e9016529cf | 172 | case 6: |
donghuoyinzi | 0:17e9016529cf | 173 | know::MotM1 = 0; //分针马达端1输出高电平 |
donghuoyinzi | 0:17e9016529cf | 174 | know::MotM0 = 1; //分针马达端0输出低电平 |
donghuoyinzi | 0:17e9016529cf | 175 | break; |
donghuoyinzi | 0:17e9016529cf | 176 | case 7: |
donghuoyinzi | 0:17e9016529cf | 177 | case 8: |
donghuoyinzi | 0:17e9016529cf | 178 | know::MotM0 = 0; //分针马达端0输出低电平 |
donghuoyinzi | 0:17e9016529cf | 179 | know::MotM1 = 0; //分针马达端1输出低电平 |
donghuoyinzi | 0:17e9016529cf | 180 | mcstpSe=0; |
donghuoyinzi | 0:17e9016529cf | 181 | cmp_cmin(); |
donghuoyinzi | 0:17e9016529cf | 182 | if(know::polSta[33]=="1") { |
donghuoyinzi | 0:17e9016529cf | 183 | know::polSta[27]="1"; |
donghuoyinzi | 0:17e9016529cf | 184 | //know::time1.attach_us(&isr_systick1,15625); |
donghuoyinzi | 0:17e9016529cf | 185 | } |
donghuoyinzi | 0:17e9016529cf | 186 | break; |
donghuoyinzi | 0:17e9016529cf | 187 | default: |
donghuoyinzi | 0:17e9016529cf | 188 | break; |
donghuoyinzi | 0:17e9016529cf | 189 | } |
donghuoyinzi | 0:17e9016529cf | 190 | } |
donghuoyinzi | 0:17e9016529cf | 191 | |
donghuoyinzi | 0:17e9016529cf | 192 | void cloDAct::cmp_cmin(void) |
donghuoyinzi | 0:17e9016529cf | 193 | { |
donghuoyinzi | 0:17e9016529cf | 194 | tm *tim; |
donghuoyinzi | 0:17e9016529cf | 195 | sec++; |
donghuoyinzi | 0:17e9016529cf | 196 | |
donghuoyinzi | 0:17e9016529cf | 197 | if(sec>=3){ //定时器3 15.625ms*24=375ms=1min 实际追1分钟(分针1格)只需要375ms |
donghuoyinzi | 0:17e9016529cf | 198 | sec=0; |
donghuoyinzi | 0:17e9016529cf | 199 | min++; |
donghuoyinzi | 0:17e9016529cf | 200 | if(min>=60){ |
donghuoyinzi | 0:17e9016529cf | 201 | min=0; |
donghuoyinzi | 0:17e9016529cf | 202 | hour++; |
donghuoyinzi | 0:17e9016529cf | 203 | if(hour>=12) hour=0; |
donghuoyinzi | 0:17e9016529cf | 204 | } |
donghuoyinzi | 0:17e9016529cf | 205 | } |
donghuoyinzi | 0:17e9016529cf | 206 | |
donghuoyinzi | 0:17e9016529cf | 207 | time_t seconds=time(NULL); |
donghuoyinzi | 0:17e9016529cf | 208 | tim=localtime(&seconds); |
donghuoyinzi | 0:17e9016529cf | 209 | |
donghuoyinzi | 0:17e9016529cf | 210 | if(tim->tm_min== min&&tim->tm_hour== hour){ |
donghuoyinzi | 0:17e9016529cf | 211 | min=54; //分针检测信号有效为11时59分 开始追针或等追 |
donghuoyinzi | 0:17e9016529cf | 212 | hour=11; |
donghuoyinzi | 0:17e9016529cf | 213 | know::polSta[33]="1"; |
donghuoyinzi | 0:17e9016529cf | 214 | } |
donghuoyinzi | 0:17e9016529cf | 215 | } |
donghuoyinzi | 0:17e9016529cf | 216 | |
donghuoyinzi | 0:17e9016529cf | 217 | /***************************** |
donghuoyinzi | 0:17e9016529cf | 218 | Fun.: miao停止,脉冲信号保持为低电平,最少停止250ms。 |
donghuoyinzi | 0:17e9016529cf | 219 | Desc.: |
donghuoyinzi | 0:17e9016529cf | 220 | Auth. Vesion:2017.7.2 |
donghuoyinzi | 0:17e9016529cf | 221 | *****************************/ |
donghuoyinzi | 0:17e9016529cf | 222 | void cloDAct::put_sstop(void) |
donghuoyinzi | 0:17e9016529cf | 223 | { |
donghuoyinzi | 0:17e9016529cf | 224 | spstpSe++; //延时250ms |
donghuoyinzi | 0:17e9016529cf | 225 | |
donghuoyinzi | 0:17e9016529cf | 226 | switch(spstpSe){ |
donghuoyinzi | 0:17e9016529cf | 227 | case 1: |
donghuoyinzi | 0:17e9016529cf | 228 | know::MotS0 = 0; //Mot1秒针驱动引脚输出低电平 |
donghuoyinzi | 0:17e9016529cf | 229 | know::MotS1 = 0; |
donghuoyinzi | 0:17e9016529cf | 230 | break; |
donghuoyinzi | 0:17e9016529cf | 231 | case 17: |
donghuoyinzi | 0:17e9016529cf | 232 | cmp_sec(); |
donghuoyinzi | 0:17e9016529cf | 233 | if(atoi(know::polSta[32].c_str())==1){ |
donghuoyinzi | 0:17e9016529cf | 234 | spstpSe=0; |
donghuoyinzi | 0:17e9016529cf | 235 | know::polSta[28]="1"; //cmpsec_state="k"; |
donghuoyinzi | 0:17e9016529cf | 236 | } |
donghuoyinzi | 0:17e9016529cf | 237 | else spstpSe=16; |
donghuoyinzi | 0:17e9016529cf | 238 | break; |
donghuoyinzi | 0:17e9016529cf | 239 | default: |
donghuoyinzi | 0:17e9016529cf | 240 | break; |
donghuoyinzi | 0:17e9016529cf | 241 | } |
donghuoyinzi | 0:17e9016529cf | 242 | } |
donghuoyinzi | 0:17e9016529cf | 243 | |
donghuoyinzi | 0:17e9016529cf | 244 | void cloDAct::cmp_sec(void) |
donghuoyinzi | 0:17e9016529cf | 245 | { |
donghuoyinzi | 0:17e9016529cf | 246 | tm *tim; |
donghuoyinzi | 0:17e9016529cf | 247 | time_t seconds=time(NULL); |
donghuoyinzi | 0:17e9016529cf | 248 | tim=localtime(&seconds); |
donghuoyinzi | 0:17e9016529cf | 249 | if(tim->tm_sec==56) know::polSta[32]="1"; //秒针检测信号有效为56秒 等追 |
donghuoyinzi | 0:17e9016529cf | 250 | } |
donghuoyinzi | 0:17e9016529cf | 251 | |
donghuoyinzi | 0:17e9016529cf | 252 | /***************************** |
donghuoyinzi | 0:17e9016529cf | 253 | Fun.: min停止。 |
donghuoyinzi | 0:17e9016529cf | 254 | Desc.: |
donghuoyinzi | 0:17e9016529cf | 255 | Auth. Vesion:2017.7.2 |
donghuoyinzi | 0:17e9016529cf | 256 | *****************************/ |
donghuoyinzi | 0:17e9016529cf | 257 | void cloDAct::put_mstop(void) |
donghuoyinzi | 0:17e9016529cf | 258 | { |
donghuoyinzi | 0:17e9016529cf | 259 | know::MotM0 = 0; //Mot1分针驱动引脚输出低电平 |
donghuoyinzi | 0:17e9016529cf | 260 | know::MotM1 = 0; |
donghuoyinzi | 0:17e9016529cf | 261 | cmp_smin(); |
donghuoyinzi | 0:17e9016529cf | 262 | if(atoi(know::polSta[34].c_str())==1){ |
donghuoyinzi | 0:17e9016529cf | 263 | know::polSta[29]="1"; //正常走时停止则为59分 |
donghuoyinzi | 0:17e9016529cf | 264 | //know::time1.attach_us(&cloSAct::isr_systick1,15625); |
donghuoyinzi | 0:17e9016529cf | 265 | } |
donghuoyinzi | 0:17e9016529cf | 266 | } |
donghuoyinzi | 0:17e9016529cf | 267 | |
donghuoyinzi | 0:17e9016529cf | 268 | void cloDAct::cmp_smin(void) |
donghuoyinzi | 0:17e9016529cf | 269 | { |
donghuoyinzi | 0:17e9016529cf | 270 | tm *tim; |
donghuoyinzi | 0:17e9016529cf | 271 | time_t seconds=time(NULL); |
donghuoyinzi | 0:17e9016529cf | 272 | tim=localtime(&seconds); |
donghuoyinzi | 0:17e9016529cf | 273 | if(tim->tm_min==59) know::polSta[34]="1"; //待测 若追针后停止分针则为58分 pol_min=58 |
donghuoyinzi | 0:17e9016529cf | 274 | } |
donghuoyinzi | 0:17e9016529cf | 275 |