Skip to content

Commit 0aaba82

Browse files
committed
working now for different 27c***
- added some test files - python script updated for write - faster read
1 parent 584a70b commit 0aaba82

File tree

9 files changed

+336
-186
lines changed

9 files changed

+336
-186
lines changed

lib27c/27c.c

Lines changed: 164 additions & 141 deletions
Original file line numberDiff line numberDiff line change
@@ -17,143 +17,6 @@
1717
#include "io.h"
1818
#include "27c.h"
1919

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-
15720
eprom_setting_t M27C801 = {
15821
.name = "27C801",
15922
.vpp_power = VPP_12V5,
@@ -181,7 +44,7 @@ eprom_setting_t M27C4001 = {
18144
};
18245

18346
eprom_setting_t M27C2001 = {
184-
.name = "27C2001 (not tested)",
47+
.name = "27C2001",
18548
.vpp_power = VPP_12V5,
18649
.sig_oe_vpp_activ = USE_ADD,
18750
.sig_add11_vpp_activ = USE_ADD,
@@ -194,7 +57,7 @@ eprom_setting_t M27C2001 = {
19457
};
19558

19659
eprom_setting_t M27C1001 = {
197-
.name = "27C1001 (not tested)",
60+
.name = "27C1001",
19861
.vpp_power = VPP_12V5,
19962
.sig_oe_vpp_activ = USE_ADD,
20063
.sig_add11_vpp_activ = USE_ADD,
@@ -207,7 +70,7 @@ eprom_setting_t M27C1001 = {
20770
};
20871

20972
eprom_setting_t M27C512 = {
210-
.name = "27C512 (not tested)",
73+
.name = "27C512",
21174
.vpp_power = VPP_12V5,
21275
.sig_oe_vpp_activ = USE_v,
21376
.sig_add11_vpp_activ = USE_ADD,
@@ -220,7 +83,7 @@ eprom_setting_t M27C512 = {
22083
};
22184

22285
eprom_setting_t M27C256 = {
223-
.name = "27C256 (not tested)",
86+
.name = "27C256",
22487
.vpp_power = VPP_12V5,
22588
.sig_oe_vpp_activ = USE_ADD,
22689
.sig_add11_vpp_activ = USE_ADD,
@@ -297,3 +160,163 @@ eprom_setting_t * eprom_settings[] = {
297160
&M27C16,
298161
0,
299162
};
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+
}

python/27c1001.bin

128 KB
Binary file not shown.

python/27c128.bin

16 KB
Binary file not shown.

python/27c2001.bin

256 KB
Binary file not shown.

python/27c256.bin

32 KB
Binary file not shown.

python/27c512.bin

64 KB
Binary file not shown.

python/27c64.bin

8 KB
Binary file not shown.

0 commit comments

Comments
 (0)