📄 timer.txt
字号:
0002a0 e3a00451 MOV r0,#0x51000000
0002a4 e5900000 LDR r0,[r0,#0]
0002a8 e20004ff AND r0,r0,#0xff000000
0002ac e3a01451 MOV r1,#0x51000000
0002b0 e5810000 STR r0,[r1,#0]
;;;138 rTCFG1 = 0x0; //All Interrupt, MUX 4 ~ 0: 1/2
0002b4 e3a00000 MOV r0,#0
0002b8 e3a01451 MOV r1,#0x51000000
0002bc e5810004 STR r0,[r1,#4]
;;;139
;;;140 Uart_Printf("Prescaler1=0, Prescaler0=0, Dead Zone Disable, MUX 4 ~ 0: 1/2, Duty 50% \n");
0002c0 e59f0350 LDR r0,|L1.1560|
0002c4 ebfffffe BL Uart_Printf
;;;141 break;
0002c8 ea00003b B |L1.956|
;;;142
;;;143 case 'b':
;;;144
;;;145 rTCFG0 = rTCFG0 & ~(0xffffff) | (0xc8)<<16 | (0x7)<<8 | (0x7); //Dead zone=0, Prescaler1=7, Prescaler0=7
|L1.716|
0002cc e3a00451 MOV r0,#0x51000000
0002d0 e5900000 LDR r0,[r0,#0]
0002d4 e20004ff AND r0,r0,#0xff000000
0002d8 e59f133c LDR r1,|L1.1564|
0002dc e1800001 ORR r0,r0,r1
0002e0 e3a01451 MOV r1,#0x51000000
0002e4 e5810000 STR r0,[r1,#0]
;;;146 rTCFG1 = rTCFG1 & ~(0xffffff) | (0x3)<<16 | (0x3)<<12 | (0x3)<<8 | (0x3)<<4 | (0x3); //All Interrupt, MUX 4 ~ 0: 1/16
0002e8 e3a00451 MOV r0,#0x51000000
0002ec e5900004 LDR r0,[r0,#4]
0002f0 e20004ff AND r0,r0,#0xff000000
0002f4 e59f1324 LDR r1,|L1.1568|
0002f8 e1800001 ORR r0,r0,r1
0002fc e3a01451 MOV r1,#0x51000000
000300 e5810004 STR r0,[r1,#4]
;;;147
;;;148 Uart_Printf("Prescaler1=8, Prescaler0=8, Dead zone=200 Enable, MUX 4 ~ 0: 1/16, duty = 50%, Consider Dead zone effect\n");
000304 e59f0318 LDR r0,|L1.1572|
000308 ebfffffe BL Uart_Printf
;;;149 break;
00030c ea00002a B |L1.956|
;;;150
;;;151 case 'c':
;;;152
;;;153 rTCFG0 = rTCFG0 & 0x0; //Dead zone=0, Prescaler1=0, Prescaler0=0
|L1.784|
000310 e3a00451 MOV r0,#0x51000000
000314 e5900000 LDR r0,[r0,#0]
000318 e3a00000 MOV r0,#0
00031c e3a01451 MOV r1,#0x51000000
000320 e5810000 STR r0,[r1,#0]
;;;154 rTCFG1 = rTCFG1 & 0x0; //All Interrupt, MUX 4 ~ 0: 1/2
000324 e3a00451 MOV r0,#0x51000000
000328 e5900004 LDR r0,[r0,#4]
00032c e3a00000 MOV r0,#0
000330 e3a01451 MOV r1,#0x51000000
000334 e5810004 STR r0,[r1,#4]
;;;155
;;;156 Uart_Printf("(H/L)Duty 0, TCNT =< TCMP, Inverter On\n");
000338 e28f0fba ADR r0,|L1.1576|
00033c ebfffffe BL Uart_Printf
;;;157 break;
000340 ea00001d B |L1.956|
;;;158
;;;159 case 'd':
;;;160
;;;161 rTCFG0 = rTCFG0 & ~(0xffffff) | 0x00000; //Dead zone=0, Prescaler1=0, Prescaler0=0
|L1.836|
000344 e3a00451 MOV r0,#0x51000000
000348 e5900000 LDR r0,[r0,#0]
00034c e20004ff AND r0,r0,#0xff000000
000350 e3a01451 MOV r1,#0x51000000
000354 e5810000 STR r0,[r1,#0]
;;;162 rTCFG1 = rTCFG1 & ~(0xffffff) | 0x4 | 0x4 << 4 | 0x4 << 8 | 0x4 << 12 | 0x4 << 16; //All Interrupt, MUX 4 ~ 0: 1/2
000358 e3a00451 MOV r0,#0x51000000
00035c e5900004 LDR r0,[r0,#4]
000360 e20004ff AND r0,r0,#0xff000000
000364 e59f12e4 LDR r1,|L1.1616|
000368 e1800001 ORR r0,r0,r1
00036c e3a01451 MOV r1,#0x51000000
000370 e5810004 STR r0,[r1,#4]
;;;163 Uart_Printf("TCLK0, TCLK1 Input Divider Test(if TCLK0, TCLK1=25.4MHZ)\n");
000374 e28f0fb6 ADR r0,|L1.1620|
000378 ebfffffe BL Uart_Printf
;;;164 break;
00037c ea00000e B |L1.956|
;;;165
;;;166 default:
;;;167 rGPBCON = save_B;
|L1.896|
000380 e3a00456 MOV r0,#0x56000000
000384 e5805010 STR r5,[r0,#0x10]
;;;168 rGPGCON = save_G;
000388 e3a00456 MOV r0,#0x56000000
00038c e5806060 STR r6,[r0,#0x60]
;;;169 rGPHCON = save_H;
000390 e3a00456 MOV r0,#0x56000000
000394 e5807070 STR r7,[r0,#0x70]
;;;170 rGPBUP = save_PB;
000398 e3a00456 MOV r0,#0x56000000
00039c e5808018 STR r8,[r0,#0x18]
;;;171 rGPGUP = save_PG;
0003a0 e3a00456 MOV r0,#0x56000000
0003a4 e5809068 STR r9,[r0,#0x68]
;;;172 rGPHUP = save_PH;
0003a8 e3a00456 MOV r0,#0x56000000
0003ac e580a078 STR r10,[r0,#0x78]
;;;173 rMISCCR = save_MI;
0003b0 e3a00456 MOV r0,#0x56000000
0003b4 e580b080 STR r11,[r0,#0x80]
;;;174 return;
;;;175 }
;;;176
;;;177 //(1/(PCLK/(Prescaler+1)/divider) * count(Max 65535) = Timer clock (Frequency)
;;;178 //(1/(50.8MHz/1/2)) * 2000 = 0.0787 msec ( 12.7 KHz)
;;;179 //(1/(50.8MHz/1/2)) * 4000 = 0.1575 msec ( 6.35 KHz)
;;;180 //(1/(50.8MHz/1/2)) * 5000 = 0.1969 msec ( 5.080 KHz)
;;;181 //(1/(50.8MHz/1/2)) * 10000 = 0.3937 msec ( 2.54 KHz)
;;;182
;;;183 //(1/(50.8MHz/8/16)) * 2000 = 5.039 msec ( 198.45 Hz)
;;;184 //(1/(50.8MHz/8/16)) * 4000 = 10.079 msec ( 99.216 KHz)
;;;185 //(1/(50.8MHz/8/16)) * 5000 = 12.598 msec ( 79.38 Hz)
;;;186 //(1/(50.8MHz/8/16)) * 10000 = 25.197 msec ( 39.687 Hz)
;;;187
;;;188 rTCNTB0 = 2000;
;;;189 rTCNTB1 = 4000;
;;;190 rTCNTB2 = 5000;
;;;191 rTCNTB3 = 10000;
;;;192
;;;193 rTCMPB0 = 2000 - 1000; //(H/L)duty 50%
;;;194 rTCMPB1 = 4000 - 2000;
;;;195 rTCMPB2 = 5000 - 2500;
;;;196 rTCMPB3 = 10000 - 5000;
;;;197
;;;198 rTCON = rTCON & ~(0xffffff) | 0x1<<1 | 0x1<<9 | 0x1<<13 | 0x1<<17 | 0x1<<21 ; //Manual update
;;;199
;;;200 switch(key)
;;;201 {
;;;202 case 'a':
;;;203
;;;204 rTCON = rTCON & ~(0xffffff) | 0x599909; //Auto reload, Inverter off, No operation, Start, Dead zone Disable
;;;205
;;;206 break;
;;;207
;;;208 case 'b':
;;;209
;;;210 rTCNTB0 = rTCNTB0 & ~(0xffff) | 500; //(1/(50.8MHz/8/16)) * 500 = 1.273 msec ( 793.8 Hz)
;;;211 rTCMPB0 = 500 - 250; //(H/L)duty 50%
;;;212
;;;213 rTCON = rTCON & ~(0xffffff) | 0x6aaa0a; //Auto reload, Inverter off, Manual update, Stop, Dead zone Disable
;;;214 rTCON = rTCON & ~(0xffffff) | 0x599909| (0x1) << 4; //Auto reload, Inverter off, No operation, Start, Dead zone Enable
;;;215
;;;216 break;
;;;217
;;;218 case 'c':
;;;219
;;;220 rTCNTB0 = rTCNTB0 & ~(0xffff) | 1000;
;;;221 rTCMPB0 = 1000;
;;;222
;;;223 rTCNTB1 = rTCNTB1 & ~(0xffff) | 1000;
;;;224 rTCMPB1 = 1000;
;;;225
;;;226 rTCNTB2 = rTCNTB2 & ~(0xffff) | 1000;
;;;227 rTCMPB2 = 1000;
;;;228
;;;229 rTCNTB3 = rTCNTB3 & ~(0xffff) | 1000;
;;;230 rTCMPB3 = 1000;
;;;231
;;;232 rTCON = rTCON & ~(0xffffff) | 0x1 << 1 | 0x1 << 9 | 0x1 << 13 | 0x1 << 17 | 0x1 << 21; //Auto reload disable, Inverter off, Manual update, Stop, Dead zone Disable
;;;233 rTCON = rTCON & ~(0xffffff) | 0x1 | 0x1 << 2 | 0x1 <<8 | 0x1 << 10| 0x1 << 12 | 0x1 << 14 | 0x1 << 16 | 0x1 << 18| 0x1 << 20; //Auto reload enable, Inverter On, No Operation, Start, Dead zone Disable
;;;234
;;;235 Uart_Printf("rTCNTB0 = Dec:%d, rTCNTO0 = Dec:%d, rTCMPB0 = Dec:%d\n",rTCNTB0, rTCNTO0, rTCMPB0);
;;;236 break;
;;;237
;;;238 case 'd':
;;;239
;;;240 rTCON = rTCON & ~(0xffffff) | 0x599909; //Auto reload, Inverter off, No operation, Start, Dead zone Disable
;;;241 break;
;;;242
;;;243 default:
;;;244 break;
;;;245 }
;;;246
;;;247 if(key=='a' && (PCLK==(203200000/4)))
;;;248 {
;;;249
;;;250 Uart_Printf("PCLK 50.8MHz, Timer TOUT0 : 0.0787 msec ( 12.70 KHz)\n");
;;;251 Uart_Printf("PCLK 50.8MHz, Timer TOUT1 : 0.1575 msec ( 6.35 KHz)\n");
;;;252 Uart_Printf("PCLK 50.8MHz, Timer TOUT2 : 0.1969 msec ( 5.08 KHz)\n");
;;;253 Uart_Printf("PCLK 50.8MHz, Timer TOUT3 : 0.3937 msec ( 2.54 KHz)\n");
;;;254 }
;;;255
;;;256 else if(key=='b' && (PCLK==(203200000/4)))
;;;257 {
;;;258 Uart_Printf("PCLK 50.8MHz, Timer TOUT0 : 1.273 msec (793.8 KHz)\n");
;;;259 Uart_Printf("PCLK 50.8MHz, Timer TOUT1 : /TOUT0 \n");
;;;260 Uart_Printf("PCLK 50.8MHz, Timer TOUT2 : 13.6094 msec ( 73.478 Hz)\n");
;;;261 Uart_Printf("PCLK 50.8MHz, Timer TOUT3 : 27.2189 msec ( 36.739 Hz)\n");
;;;262 }
;;;263
;;;264 else if(key=='d' && (PCLK==(203200000/4)))
;;;265 {
;;;266 Uart_Printf("then Timer TOUT 0 : 0.0787 msec ( 12.70 KHz)\n");
;;;267 Uart_Printf("then Timer TOUT 1 : 0.1575 msec ( 6.35 KHz)\n");
;;;268 Uart_Printf("then Timer TOUT 2 : 0.1969 msec ( 5.08 KHz)\n");
;;;269 Uart_Printf("then Timer TOUT 3 : 0.3937 msec ( 2.54 KHz)\n");
;;;270 }
;;;271
;;;272 Uart_Printf("\nProbe PCLK.\n");
;;;273 Uart_Printf("Probe TOUT0.\n");
;;;274 Uart_Printf("Probe TOUT1.\n");
;;;275 Uart_Printf("Probe TOUT2.\n");
;;;276 Uart_Printf("Probe TOUT3.\n");
;;;277
;;;278 Uart_Printf("\nCheck PWM (Pulse Width Modulation) Output\n");
;;;279 Uart_Printf("Press any key.\n");
;;;280 Uart_Getch();
;;;281
;;;282 /* Stop Timer0, 1, 2, 3, 4 */
;;;283 rTCON = 0x0; //One-shot, Inverter off, No operation, Dead zone disable, Stop Timer
;;;284
;;;285 rGPBCON = save_B;
;;;286 rGPGCON = save_G;
;;;287 rGPHCON = save_H;
;;;288 rGPBUP = save_PB;
;;;289 rGPGUP = save_PG;
;;;290 rGPHUP = save_PH;
;;;291 rMISCCR = save_MI;
;;;292
;;;293 }
|L1.952|
0003b8 e8bd8ff8 LDMFD sp!,{r3-r11,pc}
|L1.956|
0003bc e3a00e7d MOV r0,#0x7d0 ;188
0003c0 e3a01451 MOV r1,#0x51000000 ;188
0003c4 e581000c STR r0,[r1,#0xc] ;188
0003c8 e3a00efa MOV r0,#0xfa0 ;189
0003cc e3a01451 MOV r1,#0x51000000 ;189
0003d0 e5810018 STR r0,[r1,#0x18] ;189
0003d4 e2800ffa ADD r0,r0,#0x3e8 ;190
0003d8 e3a01451 MOV r1,#0x51000000 ;190
0003dc e5810024 STR r0,[r1,#0x24] ;190
0003e0 e1a00080 MOV r0,r0,LSL #1 ;191
0003e4 e3a01451 MOV r1,#0x51000000 ;191
0003e8 e5810030 STR r0,[r1,#0x30] ;191
0003ec e3a00ffa MOV r0,#0x3e8 ;193
0003f0 e3a01451 MOV r1,#0x51000000 ;193
0003f4 e5810010 STR r0,[r1,#0x10] ;193
0003f8 e3a00e7d MOV r0,#0x7d0 ;194
0003fc e3a01451 MOV r1,#0x51000000 ;194
000400 e581001c STR r0,[r1,#0x1c] ;194
000404 e2800f7d ADD r0,r0,#0x1f4 ;195
000408 e3a01451 MOV r1,#0x51000000 ;195
00040c e5810028 STR r0,[r1,#0x28] ;195
000410 e1a00080 MOV r0,r0,LSL #1 ;196
000414 e3a01451 MOV r1,#0x51000000 ;196
000418 e5810034 STR r0,[r1,#0x34] ;196
00041c e3a00451 MOV r0,#0x51000000 ;198
000420 e5900008 LDR r0,[r0,#8] ;198
000424 e20004ff AND r0,r0,#0xff000000 ;198
000428 e59f1260 LDR r1,|L1.1680| ;198
00042c e1800001 ORR r0,r0,r1 ;198
000430 e3a01451 MOV r1,#0x51000000 ;198
000434 e5810008 STR r0,[r1,#8] ;198
000438 e3540061 CMP r4,#0x61 ;200
00043c 0a000006 BEQ |L1.1116| ;200
000440 e3540062 CMP r4,#0x62 ;200
000444 0a00000c BEQ |L1.1148| ;200
000448 e3540063 CMP r4,#0x63 ;200
00044c 0a000023 BEQ |L1.1248| ;200
000450 e3540064 CMP r4,#0x64 ;200
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -