17
17
#include "io.h"
18
18
#include "27c.h"
19
19
20
- void setup_power (eprom_setting_t * setting )
21
- {
22
- //printf("vpp: %c\n", '0'+setting->vpp_power);
23
- if (setting -> vpp_power == VPP_12V5 )
24
- {
25
- //DEBUG_OUT("Set VPP to 12.5V.\n");
26
- set_low (vpp_21v_pin );
27
- set_high (vpp_12v5_pin );
28
- }
29
- else if (setting -> vpp_power == VPP_21V )
30
- {
31
- //DEBUG_OUT("Set VPP to 21V.\n");
32
- set_low (vpp_12v5_pin );
33
- set_high (vpp_21v_pin );
34
- } else {
35
- DEBUG_OUT ("ERROR in VPP setting" );
36
- }
37
- }
38
-
39
- void setup_relay (eprom_setting_t * setting )
40
- {
41
- if (setting -> sig_add11_vpp_activ == USE_ADD )
42
- {
43
- set_low (sig_add11_vpp_pin );
44
- }
45
- else
46
- {
47
- set_high (sig_add11_vpp_pin );
48
- }
49
- if (setting -> sig_add13_vcc_activ == USE_ADD )
50
- {
51
- set_low (sig_add13_vcc_pin );
52
- }
53
- else
54
- {
55
- set_high (sig_add13_vcc_pin );
56
- }
57
- if (setting -> sig_add15_vpp_activ == USE_ADD )
58
- {
59
- set_low (sig_add15_vpp_pin );
60
- }
61
- else
62
- {
63
- set_high (sig_add15_vpp_pin );
64
- }
65
- if (setting -> sig_add17_vcc_activ == USE_ADD )
66
- {
67
- set_low (sig_add17_vcc_pin );
68
- }
69
- else
70
- {
71
- set_high (sig_add17_vcc_pin );
72
- }
73
- if (setting -> sig_add19_vpp_activ == USE_ADD )
74
- {
75
- set_low (sig_add19_vpp_pin );
76
- }
77
- else
78
- {
79
- set_high (sig_add19_vpp_pin );
80
- }
81
- set_high (CE_pin );
82
- set_high (OE_pin );
83
- }
84
-
85
- void read_data_start (eprom_setting_t * setting )
86
- {
87
- // set_low(E)
88
- set_low (CE_pin );
89
-
90
- _delay_us (0.100 );
91
-
92
- // set_low(G)
93
- set_low (OE_pin );
94
-
95
- _delay_us (0.050 );
96
- }
97
-
98
- uint32_t read_data (eprom_setting_t * setting , uint32_t address )
99
- {
100
- // set ADD
101
- set_pins_map (& address_map , address );
102
-
103
- _delay_us (0.100 );
104
-
105
- // read DATA
106
- uint32_t data = get_status_map (& data_map );
107
-
108
- return data ;
109
- }
110
-
111
- void read_data_end (eprom_setting_t * setting )
112
- {
113
- // set_high(E, G)
114
- set_high (CE_pin );
115
- set_high (OE_pin );
116
- }
117
-
118
- void program_data_start (eprom_setting_t * setting )
119
- {
120
- set_high (sig_oe_vpp_pin );
121
- sleep (2 );
122
-
123
- // set VPP
124
- set_low (vpp_on_pin );
125
- }
126
-
127
- void program_data (eprom_setting_t * setting , uint32_t address , uint8_t data )
128
- {
129
- // set ADD
130
- set_pins_map (& address_map , address );
131
- // set DATA
132
- set_output_map (& data_map );
133
- set_pins_map (& data_map , data );
134
- _delay_us (2 );
135
- // set_low(E)
136
- set_low (CE_pin );
137
- // wait 50 us
138
- _delay_us (50 );
139
- // set_high(E)
140
- set_high (CE_pin );
141
- _delay_us (2 );
142
- sleep (2 );
143
- }
144
-
145
- void program_data_end (eprom_setting_t * setting )
146
- {
147
- // remove DATA
148
- set_pins_map (& data_map , 0 );
149
- set_input_map (& data_map );
150
- // set_low(VPP)
151
- set_high (vpp_on_pin );
152
- set_low (sig_oe_vpp_pin );
153
- _delay_us (2 );
154
- }
155
-
156
-
157
20
eprom_setting_t M27C801 = {
158
21
.name = "27C801" ,
159
22
.vpp_power = VPP_12V5 ,
@@ -181,7 +44,7 @@ eprom_setting_t M27C4001 = {
181
44
};
182
45
183
46
eprom_setting_t M27C2001 = {
184
- .name = "27C2001 (not tested) " ,
47
+ .name = "27C2001" ,
185
48
.vpp_power = VPP_12V5 ,
186
49
.sig_oe_vpp_activ = USE_ADD ,
187
50
.sig_add11_vpp_activ = USE_ADD ,
@@ -194,7 +57,7 @@ eprom_setting_t M27C2001 = {
194
57
};
195
58
196
59
eprom_setting_t M27C1001 = {
197
- .name = "27C1001 (not tested) " ,
60
+ .name = "27C1001" ,
198
61
.vpp_power = VPP_12V5 ,
199
62
.sig_oe_vpp_activ = USE_ADD ,
200
63
.sig_add11_vpp_activ = USE_ADD ,
@@ -207,7 +70,7 @@ eprom_setting_t M27C1001 = {
207
70
};
208
71
209
72
eprom_setting_t M27C512 = {
210
- .name = "27C512 (not tested) " ,
73
+ .name = "27C512" ,
211
74
.vpp_power = VPP_12V5 ,
212
75
.sig_oe_vpp_activ = USE_v ,
213
76
.sig_add11_vpp_activ = USE_ADD ,
@@ -220,7 +83,7 @@ eprom_setting_t M27C512 = {
220
83
};
221
84
222
85
eprom_setting_t M27C256 = {
223
- .name = "27C256 (not tested) " ,
86
+ .name = "27C256" ,
224
87
.vpp_power = VPP_12V5 ,
225
88
.sig_oe_vpp_activ = USE_ADD ,
226
89
.sig_add11_vpp_activ = USE_ADD ,
@@ -297,3 +160,163 @@ eprom_setting_t * eprom_settings[] = {
297
160
& M27C16 ,
298
161
0 ,
299
162
};
163
+
164
+ void setup_power (eprom_setting_t * setting )
165
+ {
166
+ //printf("vpp: %c\n", '0'+setting->vpp_power);
167
+ if (setting -> vpp_power == VPP_12V5 )
168
+ {
169
+ //DEBUG_OUT("Set VPP to 12.5V.\n");
170
+ set_low (vpp_21v_pin );
171
+ set_high (vpp_12v5_pin );
172
+ }
173
+ else if (setting -> vpp_power == VPP_21V )
174
+ {
175
+ //DEBUG_OUT("Set VPP to 21V.\n");
176
+ set_low (vpp_12v5_pin );
177
+ set_high (vpp_21v_pin );
178
+ } else {
179
+ DEBUG_OUT ("ERROR in VPP setting" );
180
+ }
181
+ }
182
+
183
+ void setup_relay (eprom_setting_t * setting )
184
+ {
185
+ if (setting -> sig_add11_vpp_activ == USE_ADD )
186
+ {
187
+ set_low (sig_add11_vpp_pin );
188
+ }
189
+ else
190
+ {
191
+ set_high (sig_add11_vpp_pin );
192
+ }
193
+ if (setting -> sig_add13_vcc_activ == USE_ADD )
194
+ {
195
+ set_low (sig_add13_vcc_pin );
196
+ }
197
+ else
198
+ {
199
+ set_high (sig_add13_vcc_pin );
200
+ }
201
+ if (setting -> sig_add15_vpp_activ == USE_ADD )
202
+ {
203
+ set_low (sig_add15_vpp_pin );
204
+ }
205
+ else
206
+ {
207
+ set_high (sig_add15_vpp_pin );
208
+ }
209
+ if (setting -> sig_add17_vcc_activ == USE_ADD )
210
+ {
211
+ set_low (sig_add17_vcc_pin );
212
+ }
213
+ else
214
+ {
215
+ set_high (sig_add17_vcc_pin );
216
+ }
217
+ if (setting -> sig_add19_vpp_activ == USE_ADD )
218
+ {
219
+ set_low (sig_add19_vpp_pin );
220
+ }
221
+ else
222
+ {
223
+ set_high (sig_add19_vpp_pin );
224
+ }
225
+ set_high (CE_pin );
226
+ set_high (OE_pin );
227
+ }
228
+
229
+ void read_data_start (eprom_setting_t * setting )
230
+ {
231
+ // set_low(E)
232
+ set_low (CE_pin );
233
+
234
+ _delay_us (0.100 );
235
+
236
+ // set_low(G)
237
+ set_low (OE_pin );
238
+
239
+ _delay_us (0.050 );
240
+ }
241
+
242
+ uint32_t read_data (eprom_setting_t * setting , uint32_t address )
243
+ {
244
+ // set ADD
245
+ set_pins_map (& address_map , address );
246
+
247
+ _delay_us (0.100 );
248
+
249
+ // read DATA
250
+ uint32_t data = get_status_map (& data_map );
251
+
252
+ return data ;
253
+ }
254
+
255
+ void read_data_end (eprom_setting_t * setting )
256
+ {
257
+ // set_high(E, G)
258
+ set_high (CE_pin );
259
+ set_high (OE_pin );
260
+ }
261
+
262
+ void program_data_start (eprom_setting_t * setting )
263
+ {
264
+ set_high (sig_oe_vpp_pin );
265
+ sleep (2 );
266
+
267
+ // set VPP
268
+ set_low (vpp_on_pin );
269
+ }
270
+
271
+ void program_data (eprom_setting_t * setting , uint32_t address , uint8_t data )
272
+ {
273
+ if (setting == & M27C64 &&
274
+ setting == & M27C128 )
275
+ {
276
+ // set ADD
277
+ set_pins_map (& address_map , address );
278
+ // set DATA
279
+ set_output_map (& data_map );
280
+ set_pins_map (& data_map , data );
281
+ _delay_us (2 );
282
+ // set_low(E)
283
+ set_low (CE_pin );
284
+ _delay_us (2 );
285
+ set_low (PGM_pin );
286
+ // wait 50 us
287
+ _delay_us (50 );
288
+ // set_high(E)
289
+ set_high (PGM_pin );
290
+ set_high (CE_pin );
291
+ _delay_us (2 );
292
+ sleep (2 );
293
+ }
294
+ else
295
+ {
296
+ // set ADD
297
+ set_pins_map (& address_map , address );
298
+ // set DATA
299
+ set_output_map (& data_map );
300
+ set_pins_map (& data_map , data );
301
+ _delay_us (2 );
302
+ // set_low(E)
303
+ set_low (CE_pin );
304
+ // wait 50 us
305
+ _delay_us (50 );
306
+ // set_high(E)
307
+ set_high (CE_pin );
308
+ _delay_us (2 );
309
+ sleep (2 );
310
+ }
311
+ }
312
+
313
+ void program_data_end (eprom_setting_t * setting )
314
+ {
315
+ // remove DATA
316
+ set_pins_map (& data_map , 0 );
317
+ set_input_map (& data_map );
318
+ // set_low(VPP)
319
+ set_high (vpp_on_pin );
320
+ set_low (sig_oe_vpp_pin );
321
+ _delay_us (2 );
322
+ }
0 commit comments