Skip to content

Commit 1252417

Browse files
committed
More precise delays (issue #4)
1 parent 07a32bf commit 1252417

File tree

12 files changed

+63
-62
lines changed

12 files changed

+63
-62
lines changed
30 Bytes
Binary file not shown.
+16-16
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
// ===================================================================================
2-
// Delay Functions for CH551, CH552 and CH554
2+
// Delay Functions for CH551, CH552 and CH554 * v1.1 *
33
// ===================================================================================
44

55
#include "delay.h"
6-
#include "ch554.h"
76

87
// ===================================================================================
98
// Delay in Units of us
@@ -22,40 +21,40 @@ void DLY_us(uint16_t n) { // delay in us
2221
#endif
2322

2423
while(n) { // total = 12~13 Fsys cycles, 1uS @Fsys=12MHz
25-
SAFE_MOD++; // 2 Fsys cycles, for higher Fsys, add operation here
24+
__asm__("inc _SAFE_MOD"); // 2 Fsys cycles, for higher Fsys, add operation here
2625
#ifdef F_CPU
2726
#if F_CPU >= 14000000
28-
SAFE_MOD++;
27+
__asm__("inc _SAFE_MOD");
2928
#endif
3029
#if F_CPU >= 16000000
31-
SAFE_MOD++;
30+
__asm__("inc _SAFE_MOD");
3231
#endif
3332
#if F_CPU >= 18000000
34-
SAFE_MOD++;
33+
__asm__("inc _SAFE_MOD");
3534
#endif
3635
#if F_CPU >= 20000000
37-
SAFE_MOD++;
36+
__asm__("inc _SAFE_MOD");
3837
#endif
3938
#if F_CPU >= 22000000
40-
SAFE_MOD++;
39+
__asm__("inc _SAFE_MOD");
4140
#endif
4241
#if F_CPU >= 24000000
43-
SAFE_MOD++;
42+
__asm__("inc _SAFE_MOD");
4443
#endif
4544
#if F_CPU >= 26000000
46-
SAFE_MOD++;
45+
__asm__("inc _SAFE_MOD");
4746
#endif
4847
#if F_CPU >= 28000000
49-
SAFE_MOD++;
48+
__asm__("inc _SAFE_MOD");
5049
#endif
5150
#if F_CPU >= 30000000
52-
SAFE_MOD++;
51+
__asm__("inc _SAFE_MOD");
5352
#endif
5453
#if F_CPU >= 32000000
55-
SAFE_MOD++;
54+
__asm__("inc _SAFE_MOD");
5655
#endif
5756
#endif
58-
n--;
57+
--n;
5958
}
6059
}
6160

@@ -64,7 +63,8 @@ void DLY_us(uint16_t n) { // delay in us
6463
// ===================================================================================
6564
void DLY_ms(uint16_t n) { // delay in ms
6665
while(n) {
67-
DLY_us(1000);
68-
n--;
66+
while(!(TKEY_CTRL & bTKC_IF));
67+
while(TKEY_CTRL & bTKC_IF);
68+
--n;
6969
}
7070
}
+2-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
// ===================================================================================
2-
// Delay Functions for CH551, CH552 and CH554
2+
// Delay Functions for CH551, CH552 and CH554 * v1.1 *
33
// ===================================================================================
44

55
#pragma once
66
#include <stdint.h>
7+
#include "ch554.h"
78

89
void DLY_us(uint16_t n); // delay in units of us
910
void DLY_ms(uint16_t n); // delay in units of ms
-9 Bytes
Binary file not shown.
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
// ===================================================================================
2-
// Delay Functions for CH551, CH552 and CH554
2+
// Delay Functions for CH551, CH552 and CH554 * v1.1 *
33
// ===================================================================================
44

55
#include "delay.h"
6-
#include "ch554.h"
76

87
// ===================================================================================
98
// Delay in Units of us
@@ -22,39 +21,39 @@ void DLY_us(uint16_t n) { // delay in us
2221
#endif
2322

2423
while(n) { // total = 12~13 Fsys cycles, 1uS @Fsys=12MHz
25-
SAFE_MOD++; // 2 Fsys cycles, for higher Fsys, add operation here
24+
__asm__("inc _SAFE_MOD"); // 2 Fsys cycles, for higher Fsys, add operation here
2625
#ifdef F_CPU
2726
#if F_CPU >= 14000000
28-
SAFE_MOD++;
27+
__asm__("inc _SAFE_MOD");
2928
#endif
3029
#if F_CPU >= 16000000
31-
SAFE_MOD++;
30+
__asm__("inc _SAFE_MOD");
3231
#endif
3332
#if F_CPU >= 18000000
34-
SAFE_MOD++;
33+
__asm__("inc _SAFE_MOD");
3534
#endif
3635
#if F_CPU >= 20000000
37-
SAFE_MOD++;
36+
__asm__("inc _SAFE_MOD");
3837
#endif
3938
#if F_CPU >= 22000000
40-
SAFE_MOD++;
39+
__asm__("inc _SAFE_MOD");
4140
#endif
4241
#if F_CPU >= 24000000
43-
SAFE_MOD++;
42+
__asm__("inc _SAFE_MOD");
4443
#endif
4544
#if F_CPU >= 26000000
46-
SAFE_MOD++;
45+
__asm__("inc _SAFE_MOD");
4746
#endif
4847
#if F_CPU >= 28000000
49-
SAFE_MOD++;
48+
__asm__("inc _SAFE_MOD");
5049
#endif
5150
#if F_CPU >= 30000000
52-
SAFE_MOD++;
51+
__asm__("inc _SAFE_MOD");
5352
#endif
5453
#if F_CPU >= 32000000
55-
SAFE_MOD++;
54+
__asm__("inc _SAFE_MOD");
5655
#endif
5756
#endif
58-
n--;
57+
--n;
5958
}
6059
}
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
// ===================================================================================
2-
// Delay Functions for CH551, CH552 and CH554
2+
// Delay Functions for CH551, CH552 and CH554 * v1.1 *
33
// ===================================================================================
44

55
#pragma once
66
#include <stdint.h>
7+
#include "ch554.h"
78

89
void DLY_us(uint16_t n); // delay in units of us
-9 Bytes
Binary file not shown.
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
// ===================================================================================
2-
// Delay Functions for CH551, CH552 and CH554
2+
// Delay Functions for CH551, CH552 and CH554 * v1.1 *
33
// ===================================================================================
44

55
#include "delay.h"
6-
#include "ch554.h"
76

87
// ===================================================================================
98
// Delay in Units of us
@@ -22,39 +21,39 @@ void DLY_us(uint16_t n) { // delay in us
2221
#endif
2322

2423
while(n) { // total = 12~13 Fsys cycles, 1uS @Fsys=12MHz
25-
SAFE_MOD++; // 2 Fsys cycles, for higher Fsys, add operation here
24+
__asm__("inc _SAFE_MOD"); // 2 Fsys cycles, for higher Fsys, add operation here
2625
#ifdef F_CPU
2726
#if F_CPU >= 14000000
28-
SAFE_MOD++;
27+
__asm__("inc _SAFE_MOD");
2928
#endif
3029
#if F_CPU >= 16000000
31-
SAFE_MOD++;
30+
__asm__("inc _SAFE_MOD");
3231
#endif
3332
#if F_CPU >= 18000000
34-
SAFE_MOD++;
33+
__asm__("inc _SAFE_MOD");
3534
#endif
3635
#if F_CPU >= 20000000
37-
SAFE_MOD++;
36+
__asm__("inc _SAFE_MOD");
3837
#endif
3938
#if F_CPU >= 22000000
40-
SAFE_MOD++;
39+
__asm__("inc _SAFE_MOD");
4140
#endif
4241
#if F_CPU >= 24000000
43-
SAFE_MOD++;
42+
__asm__("inc _SAFE_MOD");
4443
#endif
4544
#if F_CPU >= 26000000
46-
SAFE_MOD++;
45+
__asm__("inc _SAFE_MOD");
4746
#endif
4847
#if F_CPU >= 28000000
49-
SAFE_MOD++;
48+
__asm__("inc _SAFE_MOD");
5049
#endif
5150
#if F_CPU >= 30000000
52-
SAFE_MOD++;
51+
__asm__("inc _SAFE_MOD");
5352
#endif
5453
#if F_CPU >= 32000000
55-
SAFE_MOD++;
54+
__asm__("inc _SAFE_MOD");
5655
#endif
5756
#endif
58-
n--;
57+
--n;
5958
}
6059
}
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
// ===================================================================================
2-
// Delay Functions for CH551, CH552 and CH554
2+
// Delay Functions for CH551, CH552 and CH554 * v1.1 *
33
// ===================================================================================
44

55
#pragma once
66
#include <stdint.h>
7+
#include "ch554.h"
78

89
void DLY_us(uint16_t n); // delay in units of us
-9 Bytes
Binary file not shown.
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
// ===================================================================================
2-
// Delay Functions for CH551, CH552 and CH554
2+
// Delay Functions for CH551, CH552 and CH554 * v1.1 *
33
// ===================================================================================
44

55
#include "delay.h"
6-
#include "ch554.h"
76

87
// ===================================================================================
98
// Delay in Units of us
@@ -22,39 +21,39 @@ void DLY_us(uint16_t n) { // delay in us
2221
#endif
2322

2423
while(n) { // total = 12~13 Fsys cycles, 1uS @Fsys=12MHz
25-
SAFE_MOD++; // 2 Fsys cycles, for higher Fsys, add operation here
24+
__asm__("inc _SAFE_MOD"); // 2 Fsys cycles, for higher Fsys, add operation here
2625
#ifdef F_CPU
2726
#if F_CPU >= 14000000
28-
SAFE_MOD++;
27+
__asm__("inc _SAFE_MOD");
2928
#endif
3029
#if F_CPU >= 16000000
31-
SAFE_MOD++;
30+
__asm__("inc _SAFE_MOD");
3231
#endif
3332
#if F_CPU >= 18000000
34-
SAFE_MOD++;
33+
__asm__("inc _SAFE_MOD");
3534
#endif
3635
#if F_CPU >= 20000000
37-
SAFE_MOD++;
36+
__asm__("inc _SAFE_MOD");
3837
#endif
3938
#if F_CPU >= 22000000
40-
SAFE_MOD++;
39+
__asm__("inc _SAFE_MOD");
4140
#endif
4241
#if F_CPU >= 24000000
43-
SAFE_MOD++;
42+
__asm__("inc _SAFE_MOD");
4443
#endif
4544
#if F_CPU >= 26000000
46-
SAFE_MOD++;
45+
__asm__("inc _SAFE_MOD");
4746
#endif
4847
#if F_CPU >= 28000000
49-
SAFE_MOD++;
48+
__asm__("inc _SAFE_MOD");
5049
#endif
5150
#if F_CPU >= 30000000
52-
SAFE_MOD++;
51+
__asm__("inc _SAFE_MOD");
5352
#endif
5453
#if F_CPU >= 32000000
55-
SAFE_MOD++;
54+
__asm__("inc _SAFE_MOD");
5655
#endif
5756
#endif
58-
n--;
57+
--n;
5958
}
6059
}
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
// ===================================================================================
2-
// Delay Functions for CH551, CH552 and CH554
2+
// Delay Functions for CH551, CH552 and CH554 * v1.1 *
33
// ===================================================================================
44

55
#pragma once
66
#include <stdint.h>
7+
#include "ch554.h"
78

89
void DLY_us(uint16_t n); // delay in units of us

0 commit comments

Comments
 (0)