diff --git a/code/inc/DS3231.h b/code/inc/DS3231.h index 290c68e..d517c35 100644 --- a/code/inc/DS3231.h +++ b/code/inc/DS3231.h @@ -4,5 +4,6 @@ #include uint32_t DS3231_read(void); +void DS3231_write(uint8_t inbuffer[3]); #endif diff --git a/code/src/DS3231.c b/code/src/DS3231.c index dae2379..2ad37eb 100644 --- a/code/src/DS3231.c +++ b/code/src/DS3231.c @@ -15,3 +15,12 @@ uint32_t DS3231_read(){ i2c_stop(); return ((uint32_t)std<<16) | ((uint32_t)min<<8) | sec; } + +void DS3231_write(uint8_t inbuffer[3]){ + i2c_start_wait(0xD0); + i2c_write(0x00); + i2c_write(inbuffer[0]); + i2c_write(inbuffer[1]); + i2c_write(inbuffer[2]); + i2c_stop(); +} diff --git a/code/src/main.c b/code/src/main.c index e276826..3ea2fb0 100644 --- a/code/src/main.c +++ b/code/src/main.c @@ -42,14 +42,14 @@ uint8_t parse_nmea_gps(char input_string[RX_INPUT_BUFFER_SIZE], uint8_t output_b } // craft bcd values - output_buffer[0] = (time[0] - 48) << 4; - output_buffer[0] |= time[1] - 48; + output_buffer[2] = (time[0] - 48) << 4; + output_buffer[2] |= time[1] - 48; output_buffer[1] = (time[2] - 48) << 4; output_buffer[1] |= time[3] - 48; - output_buffer[2] = (time[4] - 48) << 4; - output_buffer[2] |= time[5] - 48; + output_buffer[0] = (time[4] - 48) << 4; + output_buffer[0] |= time[5] - 48; return 0; } @@ -262,8 +262,10 @@ ISR(USART0_RX_vect) async_buffer_pointer=0; PORTB ^=STATUS_LED_C; uint8_t test[3]; - if(!parse_nmea_gps(async_input_buffer, test)) - printf("parse: %x %x %x\n\r", test[0], test[1], test[2]); + if(!parse_nmea_gps(async_input_buffer, test)){ + printf("parse: %x %x %x\n\r", test[2], test[1], test[0]); + DS3231_write(test); + } } }