Line 1... |
Line 1... |
1 |
/* mija 2008 |
1 |
/* mija 2008 |
2 |
demo for LCD NOKIA5110 and MCP9800 and GPS modul |
2 |
demo for LCD NOKIA5110 and MCP9800 and GPS modul |
3 |
|
3 |
|
4 |
CPU ATMEGA644P |
4 |
CPU ATMEGA644P |
5 |
fcpu = 1MHz |
5 |
fcpu = 7372800 |
6 |
|
6 |
|
7 |
!! define PIN,PORT,DDR for IOpin !! |
7 |
!! define PIN,PORT,DDR for IOpin !! |
8 |
*/ |
8 |
*/ |
9 |
|
9 |
|
10 |
|
10 |
|
11 |
//************************************************************************ |
11 |
//************************************************************************ |
12 |
// defines |
12 |
// defines |
13 |
|
13 |
|
- |
|
14 |
#define POINTNAME " DOMOV" |
14 |
#define MY_LAT 48*60+57.7647 |
15 |
#define MY_LAT 48*60+57.7647 |
15 |
#define MY_LON 14*60+28.0836 |
16 |
#define MY_LON 14*60+28.0836 |
16 |
|
17 |
|
- |
|
18 |
/* |
- |
|
19 |
// 50°7'38.768"N, 13°32'43.132"E |
- |
|
20 |
#define POINTNAME " ORACOV" |
- |
|
21 |
#define MY_LAT 50*60+7.64613 |
- |
|
22 |
#define MY_LON 13*60+32.7189 |
- |
|
23 |
*/ |
- |
|
24 |
/* |
- |
|
25 |
// 50°7'38.768"N, 13°32'43.132"E |
- |
|
26 |
#define POINTNAME " ZAMEK" |
- |
|
27 |
#define MY_LAT 50*60+6.191 |
- |
|
28 |
#define MY_LON 13*60+32.118 |
- |
|
29 |
*/ |
- |
|
30 |
|
17 |
#define KEY_TIME_DEAD 5 //cca 50ms 8*5 |
31 |
#define KEY_TIME_DEAD 5 //cca 50ms 8*5 |
18 |
//#define KEY_TIME_START_REPEAT 100 //cca 1s |
32 |
//#define KEY_TIME_START_REPEAT 100 //cca 1s |
19 |
//#define KEY_TIME_REPEAT 20 //cca 240ms |
33 |
//#define KEY_TIME_REPEAT 20 //cca 240ms |
20 |
#define KEY_TIME_FIRST 50 |
34 |
#define KEY_TIME_FIRST 50 |
21 |
|
35 |
|
Line 31... |
Line 45... |
31 |
#define CLOCK1S 100 |
45 |
#define CLOCK1S 100 |
32 |
#define CLOCK2S 200 |
46 |
#define CLOCK2S 200 |
33 |
#define CLOCK5S 255; |
47 |
#define CLOCK5S 255; |
34 |
#define CLOCK50MS 5 |
48 |
#define CLOCK50MS 5 |
35 |
|
49 |
|
36 |
#define DEBUG |
50 |
//#define DEBUG |
37 |
|
51 |
|
38 |
//************************************************************************ |
52 |
//************************************************************************ |
39 |
//including |
53 |
//including |
40 |
|
54 |
|
41 |
#include <avr/io.h> |
55 |
#include <avr/io.h> |
Line 165... |
Line 179... |
165 |
UBRR0 = 95; |
179 |
UBRR0 = 95; |
166 |
//UCSR0A = |
180 |
//UCSR0A = |
167 |
UCSR0B = _BV(RXCIE0) | _BV(RXEN0) | _BV(TXEN0); |
181 |
UCSR0B = _BV(RXCIE0) | _BV(RXEN0) | _BV(TXEN0); |
168 |
|
182 |
|
169 |
//*** USART1 *** RX PD2, TX PD3 PC |
183 |
//*** USART1 *** RX PD2, TX PD3 PC |
- |
|
184 |
DDRD |= _BV(PD3); |
- |
|
185 |
PORTD &= (~(_BV(PD3))); |
- |
|
186 |
|
170 |
#ifndef DEBUG |
187 |
#ifndef DEBUG |
171 |
UBRR1 = 95; |
188 |
UBRR1 = 95; |
172 |
#else |
189 |
#else |
173 |
UBRR1 = 3; |
190 |
UBRR1 = 3; |
174 |
#endif |
191 |
#endif |
175 |
//UCSR0A = |
192 |
//UCSR0A = |
176 |
UCSR1B = _BV(RXCIE1) | _BV(RXEN0) | _BV(TXEN1); |
193 |
UCSR1B = _BV(RXCIE1) | _BV(RXEN1) | _BV(TXEN1); |
177 |
|
194 |
|
178 |
//*** ADC *** |
195 |
//*** ADC *** |
179 |
ADMUX = _BV(REFS1) | _BV(MUX0); |
196 |
ADMUX = _BV(REFS1) | _BV(MUX0); |
180 |
ADCSRA = _BV(ADPS1) | _BV(ADPS2); |
197 |
ADCSRA = _BV(ADPS1) | _BV(ADPS2); |
181 |
|
198 |
|
Line 253... |
Line 270... |
253 |
|
270 |
|
254 |
uint8_t first_char_usart1 = 0; |
271 |
uint8_t first_char_usart1 = 0; |
255 |
|
272 |
|
256 |
ISR(USART1_RX_vect) |
273 |
ISR(USART1_RX_vect) |
257 |
{ |
274 |
{ |
- |
|
275 |
|
258 |
#ifndef DEBUG |
276 |
#ifndef DEBUG |
259 |
UDR0 = UDR1; |
277 |
UDR0 = UDR1; |
260 |
#else |
278 |
#else |
261 |
if (TL1_INPUT && TL3_INPUT) BOOT(); |
279 |
if (TL1_INPUT && TL3_INPUT) BOOT(); |
262 |
//bootloader(); |
280 |
//bootloader(); |
Line 268... |
Line 286... |
268 |
if ((!TL3_INPUT) && (!TL1_INPUT)) RESET(); |
286 |
if ((!TL3_INPUT) && (!TL1_INPUT)) RESET(); |
269 |
} |
287 |
} |
270 |
|
288 |
|
271 |
ISR(PCINT3_vect) |
289 |
ISR(PCINT3_vect) |
272 |
{ |
290 |
{ |
- |
|
291 |
if (USB_PIN) USART_PC_ON; |
- |
|
292 |
else USART_PC_OFF; |
273 |
if (!TL2_INPUT && USB_INPUT) |
293 |
if (!TL2_INPUT && USB_INPUT) |
274 |
{ |
294 |
{ |
275 |
cli(); |
295 |
cli(); |
276 |
buffer_clr(); |
296 |
buffer_clr(); |
277 |
gotoxy(2,3); |
297 |
gotoxy(2,3); |
Line 283... |
Line 303... |
283 |
BOOT(); |
303 |
BOOT(); |
284 |
} |
304 |
} |
285 |
|
305 |
|
286 |
} |
306 |
} |
287 |
|
307 |
|
288 |
EMPTY_INTERRUPT(INT0_vect) |
308 |
//EMPTY_INTERRUPT(INT0_vect) |
289 |
EMPTY_INTERRUPT(INT2_vect) |
309 |
//EMPTY_INTERRUPT(INT2_vect) |
290 |
EMPTY_INTERRUPT(WDT_vect) |
310 |
//EMPTY_INTERRUPT(WDT_vect) |
291 |
|
311 |
|
292 |
//************************************************************************ |
312 |
//************************************************************************ |
293 |
// delay_ms functions /define fcpu / |
313 |
// delay_ms functions /define fcpu / |
294 |
|
314 |
|
295 |
void delay_ms(uint16_t time) |
315 |
void delay_ms(uint16_t time) |
Line 883... |
Line 903... |
883 |
|
903 |
|
884 |
//gotoxy(10,3); |
904 |
//gotoxy(10,3); |
885 |
printf("%4.0fm",gps.altitude); |
905 |
printf("%4.0fm",gps.altitude); |
886 |
|
906 |
|
887 |
gotoxy(7,2); |
907 |
gotoxy(7,2); |
888 |
printf("go home"); |
908 |
printf(POINTNAME); |
889 |
|
909 |
|
890 |
gotoxy(9,4); |
910 |
gotoxy(9,4); |
891 |
if (temp < 10000) |
911 |
if (temp < 10000) |
892 |
{ |
912 |
{ |
893 |
if (temp<1000) fprintf(&mystdout2,"%.1f ",temp); |
913 |
if (temp<1000) fprintf(&mystdout2,"%.1f ",temp); |
Line 1196... |
Line 1216... |
1196 |
fprintf(&mystdout2,"OFF"); |
1216 |
fprintf(&mystdout2,"OFF"); |
1197 |
lcd_refresh(); |
1217 |
lcd_refresh(); |
1198 |
GPS_OFF; |
1218 |
GPS_OFF; |
1199 |
REF_OFF; |
1219 |
REF_OFF; |
1200 |
ADC_OFF; |
1220 |
ADC_OFF; |
- |
|
1221 |
USART_PC_OFF; |
1201 |
delay_ms(1000); |
1222 |
delay_ms(1000); |
1202 |
LED_OFF; |
1223 |
LED_OFF; |
1203 |
N5110_send_command(POWER_DOWN); |
1224 |
N5110_send_command(POWER_DOWN); |
1204 |
|
1225 |
|
1205 |
temp_wiev = 0; |
1226 |
temp_wiev = 0; |
Line 1220... |
Line 1241... |
1220 |
} |
1241 |
} |
1221 |
if (!TL3_INPUT) {N5110_send_command(POWER_DOWN);temp_wiev = 0;} |
1242 |
if (!TL3_INPUT) {N5110_send_command(POWER_DOWN);temp_wiev = 0;} |
1222 |
if (temp_wiev) temp(); |
1243 |
if (temp_wiev) temp(); |
1223 |
|
1244 |
|
1224 |
} |
1245 |
} |
- |
|
1246 |
|
- |
|
1247 |
if (USB_PIN) USART_PC_ON; |
- |
|
1248 |
else USART_PC_OFF; |
- |
|
1249 |
|
1225 |
null_variables(); |
1250 |
null_variables(); |
1226 |
LCD_N5110_INIT(); |
1251 |
LCD_N5110_INIT(); |
1227 |
displ_start(); |
1252 |
displ_start(); |
1228 |
} |
1253 |
} |
1229 |
|
1254 |
|
Line 1322... |
Line 1347... |
1322 |
general_cpu_init(); |
1347 |
general_cpu_init(); |
1323 |
//GPS_ON; |
1348 |
//GPS_ON; |
1324 |
LCD_N5110_INIT(); |
1349 |
LCD_N5110_INIT(); |
1325 |
|
1350 |
|
1326 |
//set_static_navigation(0); |
1351 |
//set_static_navigation(0); |
- |
|
1352 |
if (USB_PIN) USART_PC_ON; |
1327 |
|
1353 |
else USART_PC_OFF; |
1328 |
stdout = &mystdout; |
1354 |
stdout = &mystdout; |
1329 |
sei(); |
1355 |
sei(); |
1330 |
|
1356 |
|
1331 |
for (;;) |
1357 |
for (;;) |
1332 |
{ |
1358 |
{ |