-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathDirectionControl.mif
More file actions
215 lines (211 loc) · 8.85 KB
/
DirectionControl.mif
File metadata and controls
215 lines (211 loc) · 8.85 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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
-- Altera Memory Initialization File (MIF)
DEPTH = 2048;
WIDTH = 16;
ADDRESS_RADIX = HEX;
DATA_RADIX = HEX;
CONTENT
BEGIN
[000..7FF] : 0000; -- Default to NOP
000 : 8046; -- CALL SetupArrays
001 : 8093; -- CALL Delay
002 : B828; -- LOADI 40
003 : 10C5; -- STORE PWMSpeed
004 : 9000; -- IN Switches
005 : 48C7; -- AND Bit0
006 : 9805; -- OUT Hex1
007 : 38A2; -- JPOS But
008 : 2801; -- JUMP StationIteration
009 : 90F1; -- IN Quad
00A : 48C6; -- AND Only1
00B : 309D; -- JNEG ErrorHandling
00C : 08C5; -- LOAD PWMSpeed
00D : 9821; -- OUT PWM
00E : 70AF; -- ILOAD PosArrIndex
00F : 9822; -- OUT Direct
010 : 9804; -- OUT Hex0
011 : 70B0; -- ILOAD VelArrIndex
012 : 10C3; -- STORE DesiredVel
013 : 8098; -- CALL Delay2
014 : 8098; -- CALL Delay2
015 : 8098; -- CALL Delay2
016 : 8098; -- CALL Delay2
017 : 9022; -- IN Direct
018 : 9805; -- OUT Hex1
019 : 3801; -- JPOS StationIteration
01A : 803C; -- CALL ReadVelocity
01B : 08C4; -- LOAD CurrVel
01C : 9804; -- OUT Hex0
01D : 4009; -- JZERO VelStart
01E : 20C3; -- SUB DesiredVel
01F : 3023; -- JNEG IncPWM
020 : 382D; -- JPOS DecPWM
021 : 4038; -- JZERO Constant
022 : 2809; -- JUMP VelStart
023 : B802; -- LOADI 2
024 : 9805; -- OUT Hex1
025 : 08C5; -- LOAD PWMSpeed
026 : 6801; -- ADDI 1
027 : 10C5; -- STORE PWMSpeed
028 : 9804; -- OUT Hex0
029 : 9821; -- OUT PWM
02A : B801; -- LOADI 1
02B : 9822; -- OUT Direct
02C : 2837; -- JUMP Reloop
02D : B805; -- LOADI 5
02E : 9805; -- OUT Hex1
02F : 08C5; -- LOAD PWMSpeed
030 : 6FFF; -- ADDI -1
031 : 10C5; -- STORE PWMSpeed
032 : 9804; -- OUT Hex0
033 : 9821; -- OUT PWM
034 : B801; -- LOADI 1
035 : 9822; -- OUT Direct
036 : 2837; -- JUMP Reloop
037 : 2809; -- JUMP VelStart
038 : 08C5; -- LOAD PWMSpeed
039 : 9804; -- OUT Hex0
03A : 9821; -- OUT PWM
03B : 2809; -- JUMP VelStart
03C : 8098; -- CALL Delay2
03D : 90F1; -- IN Quad
03E : 20C2; -- SUB OldPos
03F : 80A9; -- CALL Abs
040 : 6005; -- SHIFT 5
041 : 9804; -- OUT Hex0
042 : 10C4; -- STORE CurrVel
043 : 90F1; -- IN Quad
044 : 10C2; -- STORE OldPos
045 : 8800; -- RETURN
046 : 08B1; -- LOAD Vel1
047 : 78B0; -- ISTORE VelArrIndex
048 : 08B9; -- LOAD Pos1
049 : 78AF; -- ISTORE PosArrIndex
04A : 08AF; -- LOAD PosArrIndex
04B : 6801; -- ADDI 1
04C : 10AF; -- STORE PosArrIndex
04D : 08B0; -- LOAD VelArrIndex
04E : 6801; -- ADDI 1
04F : 10B0; -- STORE VelArrIndex
050 : 08B2; -- LOAD Vel2
051 : 78B0; -- ISTORE VelArrIndex
052 : 08BA; -- LOAD Pos2
053 : 78AF; -- ISTORE PosArrIndex
054 : 08AF; -- LOAD PosArrIndex
055 : 6801; -- ADDI 1
056 : 10AF; -- STORE PosArrIndex
057 : 08B0; -- LOAD VelArrIndex
058 : 6801; -- ADDI 1
059 : 10B0; -- STORE VelArrIndex
05A : 08B3; -- LOAD Vel3
05B : 78B0; -- ISTORE VelArrIndex
05C : 08BB; -- LOAD Pos3
05D : 78AF; -- ISTORE PosArrIndex
05E : 08AF; -- LOAD PosArrIndex
05F : 6801; -- ADDI 1
060 : 10AF; -- STORE PosArrIndex
061 : 08B0; -- LOAD VelArrIndex
062 : 6801; -- ADDI 1
063 : 10B0; -- STORE VelArrIndex
064 : 08B4; -- LOAD Vel4
065 : 78B0; -- ISTORE VelArrIndex
066 : 08BC; -- LOAD Pos4
067 : 78AF; -- ISTORE PosArrIndex
068 : 08AF; -- LOAD PosArrIndex
069 : 6801; -- ADDI 1
06A : 10AF; -- STORE PosArrIndex
06B : 08B0; -- LOAD VelArrIndex
06C : 6801; -- ADDI 1
06D : 10B0; -- STORE VelArrIndex
06E : 08B5; -- LOAD Vel5
06F : 78B0; -- ISTORE VelArrIndex
070 : 08BD; -- LOAD Pos5
071 : 78AF; -- ISTORE PosArrIndex
072 : 08AF; -- LOAD PosArrIndex
073 : 6801; -- ADDI 1
074 : 10AF; -- STORE PosArrIndex
075 : 08B0; -- LOAD VelArrIndex
076 : 6801; -- ADDI 1
077 : 10B0; -- STORE VelArrIndex
078 : 08B6; -- LOAD Vel6
079 : 78B0; -- ISTORE VelArrIndex
07A : 08BE; -- LOAD Pos6
07B : 78AF; -- ISTORE PosArrIndex
07C : 08AF; -- LOAD PosArrIndex
07D : 6801; -- ADDI 1
07E : 10AF; -- STORE PosArrIndex
07F : 08B0; -- LOAD VelArrIndex
080 : 6801; -- ADDI 1
081 : 10B0; -- STORE VelArrIndex
082 : 08B7; -- LOAD Vel7
083 : 78B0; -- ISTORE VelArrIndex
084 : 08BF; -- LOAD Pos7
085 : 78AF; -- ISTORE PosArrIndex
086 : 08AF; -- LOAD PosArrIndex
087 : 6801; -- ADDI 1
088 : 10AF; -- STORE PosArrIndex
089 : 08B0; -- LOAD VelArrIndex
08A : 6801; -- ADDI 1
08B : 10B0; -- STORE VelArrIndex
08C : 08AF; -- LOAD PosArrIndex
08D : 6FF9; -- ADDI -7
08E : 10AF; -- STORE PosArrIndex
08F : 08B0; -- LOAD VelArrIndex
090 : 6FF9; -- ADDI -7
091 : 10B0; -- STORE VelArrIndex
092 : 8800; -- RETURN
093 : 9802; -- OUT Timer ; writing something to timer resets it to 0
094 : 9002; -- IN Timer ; time counts up to 32 in 1 sec or at 32 Hz
095 : 6FC0; -- ADDI -64 ; waiting 1/32 of a second
096 : 3094; -- JNEG WaitingLoop
097 : 8800; -- RETURN
098 : 9824; -- OUT Timer2 ; writing something to timer resets it to 0
099 : 9024; -- IN Timer2 ; time counts up to 10 in 1 sec or at 10 Hz
09A : 6FFF; -- ADDI -1 ; waiting 1/32 of a second
09B : 3099; -- JNEG WaitingLoop2
09C : 8800; -- RETURN
09D : 08AD; -- LOAD Zero
09E : 9821; -- OUT PWM
09F : 08C8; -- LOAD Error404Hex1
0A0 : 9805; -- OUT Hex1
0A1 : 289D; -- JUMP ErrorHandling ;this is an infinite loop
0A2 : 08B0; -- LOAD VelArrIndex
0A3 : 6801; -- ADDI 1
0A4 : 10B0; -- STORE VelArrIndex
0A5 : 08AF; -- LOAD PosArrIndex
0A6 : 6801; -- ADDI 1
0A7 : 10AF; -- STORE PosArrIndex
0A8 : 2809; -- JUMP VelStart
0A9 : 38AC; -- JPOS Abs_r ; If already positive, return
0AA : 50AE; -- OR NegOne ; Flip all bits
0AB : 6801; -- ADDI 1 ; Add one
0AC : 8800; -- RETURN
0AD : 0000; -- Zero: DW 0
0AE : FFFF; -- NegOne: DW -1
0AF : 0100; -- PosArrIndex: DW &H0100
0B0 : 0200; -- VelArrIndex: DW &H0200
0B1 : 021C; -- Vel1: DW 540 ; doesnt start here
0B2 : 021C; -- Vel2: DW 540
0B3 : 0168; -- Vel3: DW 360
0B4 : 021C; -- Vel4: DW 540
0B5 : 0258; -- Vel5: DW 600
0B6 : 010E; -- Vel6: DW 270
0B7 : 0190; -- Vel7: DW 400
0B8 : 0258; -- Vel8: DW 600
0B9 : 0438; -- Pos1: DW 1080 ; doesnt start here
0BA : 0A8C; -- Pos2: DW 2700
0BB : 021C; -- Pos3: DW 540
0BC : 0438; -- Pos4: DW 1080
0BD : 0CA8; -- Pos5: DW 3240
0BE : 10E0; -- Pos6: DW 4320
0BF : 021C; -- Pos7: DW 540
0C0 : 021C; -- Pso7: DW 540
0C1 : 0000; -- Countprev: DW 0
0C2 : 0000; -- OldPos: DW 0
0C3 : 0000; -- DesiredVel: DW 0 ; 360 = 1 rev in 1.5 seconds
0C4 : 0000; -- CurrVel: DW 0
0C5 : 0028; -- PWMSpeed: DW 40
0C6 : FFFF; -- Only1: DW &B1111111111111111
0C7 : 0001; -- Bit0: DW &B0000000001
0C8 : 00FF; -- Error404Hex1: DW &H00FF
0C9 : FFFF; -- Error404Hex0: DW &HFFFF
END;