Measure error of xosc in hz relative to gps timepulse

geofence_dev
Richard Meadows 2015-03-15 21:35:42 +00:00
rodzic cf0e3824fd
commit eebed918e9
2 zmienionych plików z 15 dodań i 2 usunięć

Wyświetl plik

@ -291,7 +291,9 @@ void init(void)
void xosc_measure_callback(uint32_t result)
{
result++;
int32_t error = result - XOSC_FREQUENCY;
error++;
}
uint8_t telemetry_trigger_flag = 0;

Wyświetl plik

@ -235,6 +235,7 @@ void measure_xosc_disable(enum xosc_measurement_t measurement_t) {
*/
void TC2_Handler(void) {
uint32_t capture_value;
uint32_t source_freq;
if (tc_get_status(TC2) & TC_STATUS_CHANNEL_0_MATCH) {
tc_clear_status(TC2, TC_STATUS_CHANNEL_0_MATCH);
@ -247,9 +248,19 @@ void TC2_Handler(void) {
/* Measurement done. Read off data */
capture_value = tc_get_capture_value(TC2, 0);
/* Calcuate the frequency of XOSC relative to this source */
switch (_measurement_t) {
case XOSC_MEASURE_OSC8M:
source_freq = capture_value * XOSC_COUNT_RESOLUTION;
break;
case XOSC_MEASURE_TIMEPULSE:
source_freq = capture_value * XOSC_COUNT_RESOLUTION * GPS_TIMEPULSE_FREQ;
break;
}
/* Callback if we have one */
if (_callback) {
_callback(capture_value * XOSC_COUNT_RESOLUTION);
_callback(source_freq);
}
/* Disable measurement system */