Skip to content

Commit dbc7e33

Browse files
committed
reorder folders and source
1 parent 144c10e commit dbc7e33

File tree

15 files changed

+426
-419
lines changed

15 files changed

+426
-419
lines changed

CMakeLists.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,12 +69,15 @@ endif(NOT CMAKE_BUILD_TYPE)
6969
##########################################################################
7070
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/AVRhal/include)
7171
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/AVRhal/driver)
72+
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/lib27c)
7273

7374
##########################################################################
7475
# building library and application in their subdirectories
7576
##########################################################################
7677

7778
add_subdirectory(AVRhal)
78-
add_subdirectory(test)
79+
add_subdirectory(lib27c)
80+
add_subdirectory(test_io)
81+
add_subdirectory(test_ascii)
7982
add_subdirectory(src)
8083

lib27c/27c.c

Lines changed: 299 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,299 @@
1+
/*
2+
* 27c.c
3+
*
4+
* Created: 04.05.2019 19:01:09
5+
* Author: Peter Buchegger
6+
*/
7+
8+
9+
#include <stdint.h>
10+
#include <stdio.h>
11+
#include <util/delay.h>
12+
#include "COM/UART.h"
13+
#define _DEBUG
14+
#include "Debug.h"
15+
#include "System.h"
16+
17+
#include "io.h"
18+
#include "27c.h"
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+
eprom_setting_t M27C801 = {
158+
.name = "27C801",
159+
.vpp_power = VPP_12V5,
160+
.sig_oe_vpp_activ = USE_v,
161+
.sig_add11_vpp_activ = USE_ADD,
162+
.sig_add13_vcc_activ = USE_ADD,
163+
.sig_add15_vpp_activ = USE_ADD,
164+
.sig_add17_vcc_activ = USE_ADD,
165+
.sig_add19_vpp_activ = USE_ADD,
166+
.address_pins_count = 20,
167+
.max_data = 2^20,
168+
};
169+
170+
eprom_setting_t M27C4001 = {
171+
.name = "27C4001 (not tested)",
172+
.vpp_power = VPP_12V5,
173+
.sig_oe_vpp_activ = USE_ADD,
174+
.sig_add11_vpp_activ = USE_ADD,
175+
.sig_add13_vcc_activ = USE_ADD,
176+
.sig_add15_vpp_activ = USE_ADD,
177+
.sig_add17_vcc_activ = USE_ADD,
178+
.sig_add19_vpp_activ = USE_v,
179+
.address_pins_count = 19,
180+
.max_data = 2^19,
181+
};
182+
183+
eprom_setting_t M27C2001 = {
184+
.name = "27C2001 (not tested)",
185+
.vpp_power = VPP_12V5,
186+
.sig_oe_vpp_activ = USE_ADD,
187+
.sig_add11_vpp_activ = USE_ADD,
188+
.sig_add13_vcc_activ = USE_ADD,
189+
.sig_add15_vpp_activ = USE_ADD,
190+
.sig_add17_vcc_activ = USE_ADD,
191+
.sig_add19_vpp_activ = USE_v,
192+
.address_pins_count = 18,
193+
.max_data = 2^18,
194+
};
195+
196+
eprom_setting_t M27C1001 = {
197+
.name = "27C1001 (not tested)",
198+
.vpp_power = VPP_12V5,
199+
.sig_oe_vpp_activ = USE_ADD,
200+
.sig_add11_vpp_activ = USE_ADD,
201+
.sig_add13_vcc_activ = USE_ADD,
202+
.sig_add15_vpp_activ = USE_ADD,
203+
.sig_add17_vcc_activ = USE_ADD,
204+
.sig_add19_vpp_activ = USE_v,
205+
.address_pins_count = 17,
206+
.max_data = 2^17,
207+
};
208+
209+
eprom_setting_t M27C512 = {
210+
.name = "27C512 (not tested)",
211+
.vpp_power = VPP_12V5,
212+
.sig_oe_vpp_activ = USE_v,
213+
.sig_add11_vpp_activ = USE_ADD,
214+
.sig_add13_vcc_activ = USE_ADD,
215+
.sig_add15_vpp_activ = USE_ADD,
216+
.sig_add17_vcc_activ = USE_v,
217+
.sig_add19_vpp_activ = USE_ADD,
218+
.address_pins_count = 16,
219+
.max_data = 2^16,
220+
};
221+
222+
eprom_setting_t M27C256 = {
223+
.name = "27C256 (not tested)",
224+
.vpp_power = VPP_12V5,
225+
.sig_oe_vpp_activ = USE_ADD,
226+
.sig_add11_vpp_activ = USE_ADD,
227+
.sig_add13_vcc_activ = USE_ADD,
228+
.sig_add15_vpp_activ = USE_v,
229+
.sig_add17_vcc_activ = USE_v,
230+
.sig_add19_vpp_activ = USE_ADD,
231+
.address_pins_count = 15,
232+
.max_data = 2^15,
233+
};
234+
235+
eprom_setting_t M27C128 = {
236+
.name = "27C128 (not tested)",
237+
.vpp_power = VPP_12V5,
238+
.sig_oe_vpp_activ = USE_ADD,
239+
.sig_add11_vpp_activ = USE_ADD,
240+
.sig_add13_vcc_activ = USE_ADD,
241+
.sig_add15_vpp_activ = USE_v,
242+
.sig_add17_vcc_activ = USE_v,
243+
.sig_add19_vpp_activ = USE_ADD,
244+
.address_pins_count = 14,
245+
.max_data = 2^14,
246+
};
247+
248+
eprom_setting_t M27C64 = {
249+
.name = "27C64 (not tested)",
250+
.vpp_power = VPP_12V5,
251+
.sig_oe_vpp_activ = USE_ADD,
252+
.sig_add11_vpp_activ = USE_ADD,
253+
.sig_add13_vcc_activ = USE_ADD,
254+
.sig_add15_vpp_activ = USE_v,
255+
.sig_add17_vcc_activ = USE_v,
256+
.sig_add19_vpp_activ = USE_ADD,
257+
.address_pins_count = 13,
258+
.max_data = 2^13,
259+
};
260+
261+
eprom_setting_t M27C32 = {
262+
.name = "27C32 (not tested)",
263+
.vpp_power = VPP_12V5,
264+
.sig_oe_vpp_activ = USE_v,
265+
.sig_add11_vpp_activ = USE_ADD,
266+
.sig_add13_vcc_activ = USE_v,
267+
.sig_add15_vpp_activ = USE_ADD,
268+
.sig_add17_vcc_activ = USE_ADD,
269+
.sig_add19_vpp_activ = USE_ADD,
270+
.address_pins_count = 12,
271+
.max_data = 2^12,
272+
};
273+
274+
eprom_setting_t M27C16 = {
275+
.name = "27C16 (not tested)",
276+
.vpp_power = VPP_12V5,
277+
.sig_oe_vpp_activ = USE_ADD,
278+
.sig_add11_vpp_activ = USE_v,
279+
.sig_add13_vcc_activ = USE_v,
280+
.sig_add15_vpp_activ = USE_ADD,
281+
.sig_add17_vcc_activ = USE_ADD,
282+
.sig_add19_vpp_activ = USE_ADD,
283+
.address_pins_count = 11,
284+
.max_data = 2^11,
285+
};
286+
287+
eprom_setting_t * eprom_settings[] = {
288+
&M27C801,
289+
&M27C4001,
290+
&M27C2001, // ADD18 = PGM
291+
&M27C1001, // ADD18 = PGM
292+
&M27C512,
293+
&M27C256,
294+
&M27C128,
295+
&M27C64,
296+
&M27C32,
297+
&M27C16,
298+
0,
299+
};

src/27c.h renamed to lib27c/27c.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,7 @@ void program_data_start(eprom_setting_t * setting);
4040
void program_data(eprom_setting_t * setting, uint32_t address, uint8_t data);
4141
void program_data_end(eprom_setting_t * setting);
4242

43+
44+
extern eprom_setting_t * eprom_settings[];
45+
4346
#endif

lib27c/CMakeLists.txt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
##########################################################################
2+
# "THE ANY BEVERAGE-WARE LICENSE" (Revision 42 - based on beer-ware
3+
# license):
4+
# <dev@layer128.net> wrote this file. As long as you retain this notice
5+
# you can do whatever you want with this stuff. If we meet some day, and
6+
# you think this stuff is worth it, you can buy me a be(ve)er(age) in
7+
# return. (I don't like beer much.)
8+
#
9+
# Matthias Kleemann
10+
##########################################################################
11+
12+
SET(LIB_NAME "lib27c")
13+
14+
FILE(GLOB_RECURSE _SOURCES *.c)
15+
FILE(GLOB_RECURSE _HEADERS *.h)
16+
17+
add_avr_library(${LIB_NAME} ${_SOURCES} ${_HEADERS})
18+

src/io.c renamed to lib27c/io.c

File renamed without changes.

src/io.h renamed to lib27c/io.h

File renamed without changes.

0 commit comments

Comments
 (0)