forked from parallaxinc/spin-standard-library
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcore.con.counters.spin
74 lines (63 loc) · 2.55 KB
/
core.con.counters.spin
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
CON
' CTRA/CTRB register setup
' OR these constants together to set up your desired
' counter mode. No need to shift bits into position -
' already performed below:
' NOTE: #define _PASM_ in your project if you intend to use these constants in a PASM program
' with movi, movs, movd instructions (the compiler will complain otherwise)
'PLL settings
#ifdef _PASM_
PLLDIV = 0 ' Adjust shift position depending on whether
#else
PLLDIV = 23 ' a PASM or SPIN program is being targeted
#endif
VCO_DIV_128 = %000 << PLLDIV
VCO_DIV_64 = %001 << PLLDIV
VCO_DIV_32 = %010 << PLLDIV
VCO_DIV_16 = %011 << PLLDIV
VCO_DIV_8 = %100 << PLLDIV
VCO_DIV_4 = %101 << PLLDIV
VCO_DIV_2 = %110 << PLLDIV
VCO_DIV_1 = %111 << PLLDIV
'Counter modes
#ifdef _PASM_
MODE = 3
#else
MODE = 26
#endif
DISABLE = %00000 << MODE
PLL_INTERNAL = %00001 << MODE
PLL_SINGLEEND = %00010 << MODE
PLL_DIFFERENTIAL = %00011 << MODE
NCO_SINGLEEND = %00100 << MODE
NCO_DIFFERENTIAL = %00101 << MODE
DUTY_SINGLEEND = %00110 << MODE
DUTY_DIFFERENTIAL = %00111 << MODE
POS_DETECT = %01000 << MODE
POS_DETECT_FB = %01001 << MODE
POSEDGE_DETECT = %01010 << MODE
POSEDGE_DETECT_FB = %01011 << MODE
NEG_DETECT = %01100 << MODE
NEG_DETECT_FB = %01101 << MODE
NEGEDGE_DETECT = %01110 << MODE
NEGEDGE_DETECT_FB = %01111 << MODE
LOGIC_NEVER = %10000 << MODE
LOGIC_NOTA_AND_NOTB = %10001 << MODE
LOGIC_A_AND_NOTB = %10010 << MODE
LOGIC_NOTB = %10011 << MODE
LOGIC_NOTA_AND_B = %10100 << MODE
LOGIC_NOTA = %10101 << MODE
LOGIC_A_NE_B = %10110 << MODE
LOGIC_NOTA_OR_NOTB = %10111 << MODE
LOGIC_A_AND_B = %11000 << MODE
LOGIC_A_EQ_B = %11001 << MODE
LOGIC_A = %11010 << MODE
LOGIC_A_OR_NOTB = %11011 << MODE
LOGIC_B = %11100 << MODE
LOGIC_NOTA_OR_B = %11101 << MODE
LOGIC_A_OR_B = %11110 << MODE
LOGIC_ALWAYS = %11111 << MODE
FLD_APIN = 0
FLD_BPIN = 9
PUB Null
'' This is not a top-level object