kopia lustrzana https://github.com/bristol-seds/pico-tracker
[low-power-solar] hw-config changes, add header guards for no timepulse or and no i2c operation
rodzic
3f17b1c505
commit
d008103d76
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Hardware definitions and configuations
|
||||
* Copyright (C) 2014 Richard Meadows <richardeoin>
|
||||
* Copyright (C) 2016 Richard Meadows <richardeoin>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining
|
||||
* a copy of this software and associated documentation files (the
|
||||
|
@ -75,27 +75,10 @@
|
|||
#define GPS_SERCOM_MUX USART_RX_3_TX_2_XCK_3
|
||||
#define GPS_GCLK GCLK_GENERATOR_0
|
||||
|
||||
#ifdef V0986
|
||||
#define GPS_TYPE_OSP
|
||||
#define GPS_BAUD_RATE 115200
|
||||
#define GPS_TIMEPULSE_PIN PIN_PA04
|
||||
#define GPS_TIMEPULSE_PINMUX PINMUX_PA04A_EIC_EXTINT4
|
||||
#define GPS_TIMEPULSE_FREQ 1
|
||||
#define GPS_TIMEPULSE_EXTINT 4
|
||||
#define GPS_SE_ON_OFF_PIN PIN_PA05
|
||||
#define GPS_RESET_PIN PIN_PA01 /* Hacky resistor switch on the board */
|
||||
|
||||
#else
|
||||
#define GPS_TYPE_UBX
|
||||
#define GPS_BAUD_RATE 9600
|
||||
#define GPS_PLATFORM_MODEL UBX_PLATFORM_MODEL_AIRBORNE_1G
|
||||
#define GPS_TIMEPULSE_PIN PIN_PA05
|
||||
#define GPS_TIMEPULSE_PINMUX PINMUX_PA05A_EIC_EXTINT5
|
||||
#define GPS_TIMEPULSE_FREQ 1
|
||||
#define GPS_TIMEPULSE_EXTINT 5
|
||||
#define GPS_RESET_PIN PIN_PA15
|
||||
|
||||
#endif
|
||||
#define GPS_RESET_PIN PIN_PA01
|
||||
|
||||
#define GPS_FLIGHT_STATE_THREASHOLD_M 8000 /* 8km altitude */
|
||||
|
||||
|
@ -119,17 +102,8 @@
|
|||
#define FLASH_CSN_PIN PIN_PA10
|
||||
|
||||
/**
|
||||
* I2C Bus
|
||||
* I2C Bus - NOT USED
|
||||
*/
|
||||
#define I2C_SERCOM (SercomI2cm*)SERCOM1
|
||||
#ifdef V0987
|
||||
#define I2C_SERCOM_SDA_PIN PIN_PA27
|
||||
#else
|
||||
#define I2C_SERCOM_SDA_PIN PIN_PA00
|
||||
#define I2C_SERCOM_SDA_PINMUX PINMUX_PA00D_SERCOM1_PAD0
|
||||
#endif
|
||||
#define I2C_SERCOM_SCL_PIN PIN_PA01
|
||||
#define I2C_SERCOM_SCL_PINMUX PINMUX_PA01D_SERCOM1_PAD1
|
||||
|
||||
/**
|
||||
* Barometer
|
||||
|
@ -143,43 +117,46 @@
|
|||
* Battery ADC
|
||||
*/
|
||||
#define BATTERY_ADC 1
|
||||
#define BATTERY_ADC_PIN PIN_PA02
|
||||
#define BATTERY_ADC_PINMUX PINMUX_PA02B_ADC_AIN0
|
||||
#define BATTERY_ADC_CHANNEL ADC_POSITIVE_INPUT_PIN0
|
||||
#define BATTERY_ADC_CHANNEL_DIV 1 /*0.3125*/
|
||||
#define BATTERY_ADC_PIN PIN_PA04
|
||||
#define BATTERY_ADC_PINMUX PINMUX_PA04B_ADC_AIN4
|
||||
#define BATTERY_ADC_CHANNEL ADC_POSITIVE_INPUT_PIN4
|
||||
#define BATTERY_ADC_CHANNEL_DIV 0.23256 /* 33k,10k divider */
|
||||
#define BATTERY_ADC_REFERENCE ADC_REFERENCE_INT1V
|
||||
|
||||
/**
|
||||
* External Thermistor ADC
|
||||
*/
|
||||
#define THERMISTOR_ADC 1
|
||||
#define THERMISTOR_ADC_PIN PIN_PA03
|
||||
#define THERMISTOR_ADC_PINMUX PINMUX_PA03
|
||||
#define THERMISTOR_ADC_CHANNEL ADC_POSITIVE_INPUT_PIN1
|
||||
#define THERMISTOR_ADC_PIN PIN_PA02
|
||||
#define THERMISTOR_ADC_PINMUX PINMUX_PA02B_ADC_AIN0
|
||||
#define THERMISTOR_ADC_CHANNEL ADC_POSITIVE_INPUT_PIN0
|
||||
#define THERMISTOR_ADC_CHANNEL_DIV 1.48
|
||||
#define THERMISTOR_ADC_REFERENCE ADC_REFERENCE_INTVCC0 /* internal 1/1.48 VCC reference */
|
||||
|
||||
/**
|
||||
* Solar ADC
|
||||
*/
|
||||
#ifdef V0986
|
||||
#define SOLAR_ADC 0
|
||||
#define SOLAR_ADC_PIN PIN_PA02
|
||||
#else
|
||||
#define SOLAR_ADC 1
|
||||
#define SOLAR_ADC_PIN PIN_PA04
|
||||
#endif
|
||||
#define SOLAR_ADC_PINMUX PINMUX_PA04B_ADC_AIN4
|
||||
#define SOLAR_ADC_CHANNEL ADC_POSITIVE_INPUT_PIN4
|
||||
#define SOLAR_ADC_CHANNEL_DIV 1
|
||||
#define SOLAR_ADC_PIN PIN_PA03
|
||||
#define SOLAR_ADC_PINMUX PINMUX_PA03B_ADC_AIN1
|
||||
#define SOLAR_ADC_CHANNEL ADC_POSITIVE_INPUT_PIN1
|
||||
#define SOLAR_ADC_CHANNEL_DIV 0.23256 /* 33k,10k divider */
|
||||
#define SOLAR_ADC_REFERENCE ADC_REFERENCE_INT1V
|
||||
|
||||
/**
|
||||
* Battery
|
||||
*/
|
||||
/* We enable charging when bus > battery */
|
||||
#define CHG_ENABLE_PIN PIN_PA27
|
||||
#define CHG_ENABLE_HYSTERESIS (1*15) /* up to 1 hour at once-per-four-minutes */
|
||||
|
||||
/**
|
||||
* Cold out
|
||||
*/
|
||||
#define COLD_OUT_VOLTAGE (2.6) /* if both bus and battery are below this then cold */
|
||||
#define COLD_OUT_TEMPERATURE (-58.0)
|
||||
#define COLD_OUT_SECONDS (15*60) /* 15 minutes */
|
||||
#define COLD_OUT_COUNT_MAX (16*4) /* up to 16 hours */
|
||||
#define COLD_OUT_COUNT_MAX (16*4) /* up to 16 hours*/
|
||||
|
||||
/**
|
||||
* Radio
|
||||
|
@ -199,10 +176,7 @@
|
|||
#define SI4xxx_GPIO1_PIN PIN_PA25
|
||||
#define SI4xxx_GPIO1_PINMUX PINMUX_PA25F_TC5_WO1
|
||||
#define SI4xxx_TCXO_FREQUENCY 16369000
|
||||
#ifdef V0986
|
||||
#define SI4xxx_TCXO_REG_EN_PIN PIN_PA16
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* RF Power @ 1.8V
|
||||
|
@ -224,13 +198,7 @@
|
|||
/**
|
||||
* LF Clock
|
||||
*/
|
||||
#ifdef V0987
|
||||
#define USE_LFTIMER 1
|
||||
#else
|
||||
#define USE_LFTIMER 0
|
||||
#define LFTIMER_GCLKIO_0_PIN PIN_PA27
|
||||
#define LFTIMER_GCLKIO_0_PINMUX PINMUX_PA27H_GCLK_IO0
|
||||
#endif
|
||||
|
||||
/**
|
||||
* HF Clock
|
||||
|
|
|
@ -1103,11 +1103,13 @@ void gps_reset(void)
|
|||
}
|
||||
|
||||
void gps_init_timepulse_pin(void) {
|
||||
#ifdef GPS_TIMEPULSE_PIN
|
||||
/* Timepulse_Pin */
|
||||
port_pin_set_config(GPS_TIMEPULSE_PIN,
|
||||
PORT_PIN_DIR_INPUT, /* Direction */
|
||||
PORT_PIN_PULL_NONE, /* Pull */
|
||||
false); /* Powersave */
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -27,6 +27,10 @@
|
|||
#include "system/port.h"
|
||||
#include "i2c_bb.h"
|
||||
|
||||
#ifdef I2C_SERCOM_SDA_PIN
|
||||
#ifdef I2C_SERCOM_SCL_PIN
|
||||
|
||||
|
||||
#define SDA I2C_SERCOM_SDA_PIN
|
||||
#define SCL I2C_SERCOM_SCL_PIN
|
||||
|
||||
|
@ -234,3 +238,31 @@ void i2c_bb_init(void)
|
|||
|
||||
i2c_bb_stop(); /* stop. release both */
|
||||
}
|
||||
|
||||
#endif
|
||||
#else
|
||||
|
||||
/**
|
||||
* Dummy functions for if i2c pins are not defined.
|
||||
*/
|
||||
i2c_bb_result_t i2c_bb_read(uint8_t address, uint8_t* data, uint8_t data_length)
|
||||
{
|
||||
(void)address;
|
||||
(void)data;
|
||||
(void)data_length;
|
||||
|
||||
return I2C_BB_SUCCESS;
|
||||
}
|
||||
/**
|
||||
* Dummy functions for if i2c pins are not defined.
|
||||
*/
|
||||
i2c_bb_result_t i2c_bb_write(uint8_t address, uint8_t* data, uint8_t data_length)
|
||||
{
|
||||
(void)address;
|
||||
(void)data;
|
||||
(void)data_length;
|
||||
|
||||
return I2C_BB_SUCCESS;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -331,6 +331,7 @@ void gclk2_init(void)
|
|||
*/
|
||||
void timepulse_extint_event_source(void)
|
||||
{
|
||||
#ifdef GPS_TIMEPULSE_EXTINT
|
||||
/* Enable extint events for timepulse */
|
||||
struct extint_events events;
|
||||
memset(&events, 0, sizeof(struct extint_events));
|
||||
|
@ -355,9 +356,13 @@ void timepulse_extint_event_source(void)
|
|||
0);
|
||||
|
||||
extint_enable();
|
||||
#endif
|
||||
}
|
||||
void timepulse_extint_event_source_disable(void) {
|
||||
void timepulse_extint_event_source_disable(void)
|
||||
{
|
||||
#ifdef GPS_TIMEPULSE_EXTINT
|
||||
extint_disable();
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -386,7 +391,8 @@ void lftimer_event_source_disable(void) {
|
|||
* A callback from the timer interrupt is available. Obviously don't dwell here too long.
|
||||
*/
|
||||
void measure_xosc(enum xosc_measurement_t measurement_t,
|
||||
measurement_result_t callback, uint8_t oneshot) {
|
||||
measurement_result_t callback, uint8_t oneshot)
|
||||
{
|
||||
|
||||
measure_state = MEASURE_WAIT_FOR_FIRST_EVENT;
|
||||
_measurement_t = measurement_t;
|
||||
|
@ -441,8 +447,8 @@ void measure_xosc(enum xosc_measurement_t measurement_t,
|
|||
|
||||
tc_enable(TC2);
|
||||
}
|
||||
void measure_xosc_disable(enum xosc_measurement_t measurement_t) {
|
||||
|
||||
void measure_xosc_disable(enum xosc_measurement_t measurement_t)
|
||||
{
|
||||
tc_disable(TC2);
|
||||
|
||||
switch (measurement_t) {
|
||||
|
@ -460,7 +466,8 @@ void measure_xosc_disable(enum xosc_measurement_t measurement_t) {
|
|||
/**
|
||||
* Triggered on timer 2 capture
|
||||
*/
|
||||
void TC2_Handler(void) {
|
||||
void TC2_Handler(void)
|
||||
{
|
||||
uint32_t capture_value;
|
||||
uint32_t source_freq;
|
||||
|
||||
|
@ -478,7 +485,11 @@ void TC2_Handler(void) {
|
|||
/* Calcuate the frequency of GLCK1 relative to this source */
|
||||
switch (_measurement_t) {
|
||||
case XOSC_MEASURE_TIMEPULSE:
|
||||
#ifdef GPS_TIMEPULSE_FREQ
|
||||
source_freq = capture_value * XOSC_GCLK_DIVIDE * GPS_TIMEPULSE_FREQ;
|
||||
#else
|
||||
source_freq = capture_value * XOSC_GCLK_DIVIDE;
|
||||
#endif
|
||||
break;
|
||||
case XOSC_MEASURE_LFTIMER:
|
||||
source_freq = capture_value * XOSC_GCLK_DIVIDE;
|
||||
|
|
Ładowanie…
Reference in New Issue