No changes between revisions
/Designs/GPSRL03A/main.c
182,8 → 182,18
rxfifo.idx_r = i;
 
return d;
+}
+
+/* Put a character to transmit */
+static
+void uart_put (uint8_t d)
+{
+ while (bit_is_clear(UCSR0A, UDRE0));
+ UDR0 = d;
+}
+
+
/* USART0 RXC interrupt */
ISR(USART_RX_vect)
{
@@ -262,6 +272,21 @@
return c;
}
+
+
+/* Initialize GPS module (depends on each product) */
+static
+void gp_init (void)
+{
+ const prog_char *s =
+ PSTR("$PSRF106,21*0F\r\n"); // Select datum of WGS84 (for EM-406A)
+ char c;
+
+ while ((c = pgm_read_byte(s++)) != 0) uart_put(c);
+}
+
+
+
/* Get a column item */
static
BYTE* gp_col ( /* Returns pointer to the item (returns a NULL when not found) */
@@ -340,6 +365,7 @@
beep(5, 1); // Single beep. Start to get current time.
uart_init();
+ gp_init(); // Initialize GPS module to let output data in NMEA-0183 format.
do { // Wait for valid RMC sentence.
b = get_line();
if (!b) break;
@@ -370,14 +396,14 @@
)
{
if (f_write(&file1, Buff, b, &s) || b != s) { err = 5; break; };
-/* itoa(battery,&Value1,10); // convert binary number to character
+ itoa(battery,&Value1,10);
itoa(intensity,&Value2,10);
strcpy(&Buff[0], Value1);
strcpy_P(&Buff[4], PSTR(","));
strcpy(&Buff[5], Value2);
strcpy_P(&Buff[9], PSTR("\r\n"));
- if (f_write(&file1, Buff, 11, &s) || 11 != s) { err = 8; break; };
-*/ }
+ if (f_write(&file1, Buff, 11, &s) || 11 != s) { err = 5; break; };
+ }
if ((Stat & 4) == 0) continue;
if (f_sync(&file1)) { err = 6; break; };// Synchronize the file in interval of 300 sec.
cli(); Stat &= 0xFB; sei(); // Clear sync request