aboutsummaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.c')
-rwxr-xr-xsrc/main.c277
1 files changed, 277 insertions, 0 deletions
diff --git a/src/main.c b/src/main.c
new file mode 100755
index 0000000..2acae0a
--- /dev/null
+++ b/src/main.c
@@ -0,0 +1,277 @@
1#include <avr/io.h>
2#include <util/delay.h>
3
4// shared routines...
5#include "inc/stdout.h"
6
7// uart-driven...
8/// #include "inc/uart/uart.h"
9
10// interrupt-driven...
11#include "inc/int/dcf77/clock.h"
12
13// spi-driven...
14#include "inc/spi/spi.h"
15#include "inc/spi/dev/display_dogm.h"
16#include "inc/spi/dev/audio_vs1011.h"
17
18/// #include "inc/spi/dev/petit/pff.h"
19/// #include "inc/spi/dev/petit/diskio.h"
20
21/*
22static void showtime()
23{
24 const char* dow[] = {"Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"};
25
26 display_dogm_exec(CMD_DISPLAY_POS + 0);
27 stdout_put_uint(display_dogm_putc, t_current.h);
28 display_dogm_putc(':');
29 stdout_put_uint(display_dogm_putc, t_current.m);
30 display_dogm_putc(':');
31 stdout_put_uint(display_dogm_putc, t_current.s);
32
33 display_dogm_exec(CMD_DISPLAY_POS + 16);
34 if(t_current.wd > 0 && t_current.wd < 6)
35 stdout_put_string(display_dogm_putc, dow[t_current.wd]);
36 else
37 stdout_put_string(display_dogm_putc, "dow:n/a");
38}
39*/
40
41/*
42void notify_error(FRESULT res)
43{
44 switch(res)
45 {
46 case FR_OK:
47 stdout_put_string(display_dogm_putc, "FR_OK\n");
48 break;
49 case FR_DISK_ERR:
50 stdout_put_string(display_dogm_putc, "FR_DISK_ERR\n");
51 break;
52 case FR_NOT_READY:
53 stdout_put_string(display_dogm_putc, "FR_NOT_READY\n");
54 break;
55 case FR_NO_FILE:
56 stdout_put_string(display_dogm_putc, "FR_NO_FILE\n");
57 break;
58 case FR_NO_PATH:
59 stdout_put_string(display_dogm_putc, "FR_NO_PATH\n");
60 break;
61 case FR_NOT_OPENED:
62 stdout_put_string(display_dogm_putc, "FR_NOT_OPENED\n");
63 break;
64 case FR_NOT_ENABLED:
65 stdout_put_string(display_dogm_putc, "FR_NOT_ENABLED\n");
66 break;
67 case FR_NO_FILESYSTEM:
68 stdout_put_string(display_dogm_putc, "FR_NO_FILESYSTEM\n");
69 break;
70 default:
71 stdout_put_string(display_dogm_putc, "FR_UNKNOWN\n");
72 break;
73 }
74
75 _delay_ms(1000);
76 display_dogm_exec(CMD_DISPLAY_CLEAR);
77}
78*/
79
80int main()
81{
82 /// uart_init();
83 spi_init();
84 /// display_dogm_init();
85 /// stdout_put_string(display_dogm_putc, "Display initialized!");
86 /// DDRD = (1<<PD4) | (1<<PD5);
87 /// PORTD |= (1<<PD4) | (1<<PD5);
88
89
90 timer_init();
91 sei();
92
93display_dogm_init();
94stdout_put_string(display_dogm_putc, "Display ready!");
95_delay_ms(1000);
96
97char s = 99;
98for(;;)
99{
100 s = t_current.s;
101 //showtime();
102 display_dogm_exec(CMD_DISPLAY_POS + 0);
103
104 unsigned char q;
105 for(q=28; q>=12; q--)
106 {
107 if(dcf77[q].bit == 1)
108 display_dogm_putc('1');
109 else
110 display_dogm_putc('0');
111 }
112
113 display_dogm_exec(CMD_DISPLAY_POS + 16);
114 for(q=DCF_HOURP; q>=DCF_HOUR-1; q--)
115 {
116 if(dcf77[q].bit == 1)
117 display_dogm_putc('1');
118 else
119 display_dogm_putc('0');
120 }
121
122 display_dogm_putc(' ');
123 stdout_put_uint(display_dogm_putc, lastinterval);
124 display_dogm_putc(' ');
125 stdout_put_uint(display_dogm_putc, dcf77_bit);
126
127
128 display_dogm_exec(CMD_DISPLAY_POS + 32);
129 //stdout_put_uint(display_dogm_putc, t_current.ms);
130 stdout_put_uint(display_dogm_putc, t_current.h);
131 display_dogm_putc(':');
132 stdout_put_uint(display_dogm_putc, t_current.m);
133 display_dogm_putc(':');
134 stdout_put_uint(display_dogm_putc, t_current.s);
135
136 display_dogm_putc(' ');
137 stdout_put_uint(display_dogm_putc, t_current.dd);
138 display_dogm_putc(':');
139 stdout_put_uint(display_dogm_putc, t_current.mm);
140 display_dogm_putc(':');
141 stdout_put_uint(display_dogm_putc, t_current.yy);
142 _delay_ms(100);
143}
144
145/*
146
147 display_dogm_exec(CMD_DISPLAY_POS + 0);
148 stdout_put_string(display_dogm_putc, "test: vs-init...");
149 /// audio_vs1011_init();
150 _delay_ms(1000);
151
152 display_dogm_exec(CMD_DISPLAY_POS + 16);
153 stdout_put_string(display_dogm_putc, "test: volume...");
154 /// audio_vs1011_test_volume();
155 _delay_ms(1000);
156
157 display_dogm_exec(CMD_DISPLAY_POS + 32);
158 stdout_put_string(display_dogm_putc, "test: sine...");
159 /// audio_vs1011_test_sine();
160 _delay_ms(1000);
161*/
162/*
163 FATFS fs; // File system object
164
165 char t = 0;
166 for(;;)
167 {
168 if(t)
169 {
170 PORTD |= ((1<<PD4) | (1<<PD5));
171 t = 0;
172 }
173 else
174 {
175 PORTD &= ~((1<<PD4) | (1<<PD5));
176 t = 1;
177 }
178
179
180 display_dogm_init();
181 display_dogm_exec(CMD_DISPLAY_CLEAR);
182 /// showtime();
183 _delay_ms(500);
184
185 BYTE dres = FR_OK;
186 FRESULT res = FR_OK;
187 if((dres = disk_initialize()) == FR_OK)
188 {
189 if((res = pf_mount(&fs)) == FR_OK)
190 {
191 if((res = pf_open("newtest.txt")) == FR_OK)
192 {
193 WORD s1;
194 const char bufsize = 32;
195 //pf_read(&c, 1, &s1);
196 do
197 {
198 char c[bufsize];
199 res = pf_read(&c, bufsize, &s1);
200
201 DESELECT();
202 int i;
203 for(i=0; i<=31; i++)
204 { display_dogm_putc(c[i]); }
205 SELECT();
206 / *
207 if(res == FR_OK)
208 {
209 display_dogm_putc(c);
210 _delay_ms(500);
211 }
212 else
213 {
214 stdout_put_string(display_dogm_putc, "pf_read: failed.\n");
215 _delay_ms(1000);
216 break;
217 }
218 */
219/*
220 } while (s1 == bufsize);
221 _delay_ms(1000); display_dogm_exec(CMD_DISPLAY_CLEAR);
222 } else { notify_error(res); } // << pf_open
223 } else { notify_error(res); } // << pf_mount
224 } else { notify_error(res); } // << disk_init
225 }
226*/
227
228}
229
230
231/// DIR dir; // Directory object
232/// FILINFO fno; // File information
233/// stdout_put_string(uart_putc, "[debug]\tuart initialized.\n");
234/// stdout_put_string(uart_putc, "[debug]\tspi initialized.\n");
235//audio_vs1011_init();
236/// stdout_put_string(uart_putc, "[debug]\tvs1011 initialized.\n");
237/// stdout_put_string(display_dogm_putc, "playing test.mp3");
238/// stdout_put_string(uart_putc, "[debug]\tdogm initialized.\n");
239/// stdout_put_string(display_dogm_putc, "ich teste das display");
240/// _delay_ms(100);
241/// stdout_put_string(display_dogm_putc, "es funktioniert!");
242/// _delay_ms(100);
243/// stdout_put_string(display_dogm_putc, "init timer...");
244/// stdout_put_string(uart_putc, "[debug]\tvs1011 initialized.\n");
245
246/*
247/// stdout_put_string(uart_putc, "[debug]\tSPI clock: SPICLK_FAST\n");
248do
249{
250 res = pf_read(0, 320, &s1);
251 if(res != FR_OK)
252 { notify_error(res); }
253} while (s1 == 320);
254spi_setspeed(SPICLK_DEFAULT);
255/// stdout_put_string(uart_putc, "[debug]\tSPI clock: SPICLK_DEFAULT\n");
256*/
257
258
259 /*
260 stdout_put_string(uart_putc, "<sine>\t\n");
261 for(i=0; i<5; i++)
262 audio_vs1011_test_sine();
263 stdout_put_string(uart_putc, "</sine>\n");
264 */
265
266 /*
267
268 for(i=0; i<5; i++)
269 audio_vs1011_test_eeprom();
270
271 display_dogm_exec(CMD_DISPLAY_CLEAR);
272 display_dogm_exec(CMD_DISPLAY_POS + 0);
273 stdout_put_string(display_dogm_putc, "[volume test]");
274 for(i=0; i<5; i++)
275 audio_vs1011_test_volume();
276
277 */
..