kopia lustrzana https://github.com/DL7AD/pecanpico9
rodzic
70ff480b43
commit
934fd1ec3a
|
|
@ -3,7 +3,7 @@
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
|
|
||||||
module_conf_t config[9];
|
module_conf_t config[9];
|
||||||
uint8_t ssdv_buffer[65535] __attribute__((aligned(32)));
|
uint8_t ssdv_buffer[256*1024] __attribute__((aligned(32)));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Position module configuration description
|
* Position module configuration description
|
||||||
|
|
@ -50,7 +50,7 @@ uint8_t ssdv_buffer[65535] __attribute__((aligned(32)));
|
||||||
* - TRIG_NEW_POINT Triggered when new track point available
|
* - TRIG_NEW_POINT Triggered when new track point available
|
||||||
* - TRIG_TIMEOUT Triggered by timeout (e.g. trasmit position every 120sec)
|
* - TRIG_TIMEOUT Triggered by timeout (e.g. trasmit position every 120sec)
|
||||||
* this option requires trigger.timeout to be set
|
* this option requires trigger.timeout to be set
|
||||||
* - TRIG_CONTINOUSLY Continue continously (e.g. send new image once old image sent completely)
|
* - TRIG_CONTINUOUSLY Continue continuously (e.g. send new image once old image sent completely)
|
||||||
*
|
*
|
||||||
* ============================== The following options are needed if protocol == PROT_APRS_AFSK or protocol == PROT_APRS_2GFSK ===============================
|
* ============================== The following options are needed if protocol == PROT_APRS_AFSK or protocol == PROT_APRS_2GFSK ===============================
|
||||||
*
|
*
|
||||||
|
|
@ -173,12 +173,12 @@ void start_user_modules(void)
|
||||||
// Module POSITION, APRS 2m AFSK
|
// Module POSITION, APRS 2m AFSK
|
||||||
config[0].power = 127; // Power 20 dBm
|
config[0].power = 127; // Power 20 dBm
|
||||||
config[0].protocol = PROT_APRS_AFSK; // Protocol APRS, modulation AFSK
|
config[0].protocol = PROT_APRS_AFSK; // Protocol APRS, modulation AFSK
|
||||||
config[0].frequency.type = FREQ_STATIC; // Dynamic frequency allocation
|
config[0].frequency.type = FREQ_APRS_REGION; // Dynamic frequency allocation
|
||||||
config[0].frequency.hz = 144390000; // Default frequency 144.800 MHz
|
config[0].frequency.hz = 144800000; // Default frequency 144.800 MHz
|
||||||
config[0].init_delay = 0; // Module startup delay in msec
|
config[0].init_delay = 0; // Module startup delay in msec
|
||||||
config[0].trigger.type = TRIG_NEW_POINT; // Trigger when new track point released
|
config[0].trigger.type = TRIG_NEW_POINT; // Trigger when new track point released
|
||||||
chsnprintf(config[0].aprs_conf.callsign, 7, "DL7AD"); // APRS Callsign
|
chsnprintf(config[0].aprs_conf.callsign, 7, "DL7AD"); // APRS Callsign
|
||||||
config[0].aprs_conf.ssid = 11; // APRS SSID
|
config[0].aprs_conf.ssid = 12; // APRS SSID
|
||||||
config[0].aprs_conf.symbol = SYM_BALLOON; // APRS Symbol
|
config[0].aprs_conf.symbol = SYM_BALLOON; // APRS Symbol
|
||||||
chsnprintf(config[0].aprs_conf.path, 16, "WIDE1-1"); // APRS Path
|
chsnprintf(config[0].aprs_conf.path, 16, "WIDE1-1"); // APRS Path
|
||||||
config[0].aprs_conf.preamble = 300; // APRS Preamble
|
config[0].aprs_conf.preamble = 300; // APRS Preamble
|
||||||
|
|
@ -190,7 +190,7 @@ void start_user_modules(void)
|
||||||
config[0].aprs_conf.tel_enc = TRUE; // Transmit Telemetry encoding information activated
|
config[0].aprs_conf.tel_enc = TRUE; // Transmit Telemetry encoding information activated
|
||||||
config[0].aprs_conf.tel_enc_cycle = 3600; // Transmit Telemetry encoding information every 3600sec
|
config[0].aprs_conf.tel_enc_cycle = 3600; // Transmit Telemetry encoding information every 3600sec
|
||||||
chsnprintf(config[0].aprs_conf.tel_comment, 30, "http://ssdv.habhub.org/DL7AD");// Telemetry comment
|
chsnprintf(config[0].aprs_conf.tel_comment, 30, "http://ssdv.habhub.org/DL7AD");// Telemetry comment
|
||||||
//start_position_thread(&config[0]);
|
start_position_thread(&config[0]);
|
||||||
|
|
||||||
// Module POSITION, APRS 2m 2GFSK
|
// Module POSITION, APRS 2m 2GFSK
|
||||||
/*config[1].power = 127; // Power 10 dBm
|
/*config[1].power = 127; // Power 10 dBm
|
||||||
|
|
@ -234,23 +234,23 @@ void start_user_modules(void)
|
||||||
// Module IMAGE, APRS 2m AFSK low-duty cycle
|
// Module IMAGE, APRS 2m AFSK low-duty cycle
|
||||||
config[3].power = 127; // Power 20 dBm
|
config[3].power = 127; // Power 20 dBm
|
||||||
config[3].protocol = PROT_APRS_AFSK; // Protocol APRS SSDV, modulation AFSK
|
config[3].protocol = PROT_APRS_AFSK; // Protocol APRS SSDV, modulation AFSK
|
||||||
config[3].frequency.type = FREQ_STATIC; // Dynamic frequency allocation
|
config[3].frequency.type = FREQ_APRS_REGION; // Dynamic frequency allocation
|
||||||
config[3].frequency.hz = 144390000; // Transmission frequency 144.800 MHz
|
config[3].frequency.hz = 144800000; // Transmission frequency 144.800 MHz
|
||||||
config[3].init_delay = 0; // Module startup delay in msec
|
config[3].init_delay = 0; // Module startup delay in msec
|
||||||
//config[3].packet_spacing = 30000; // Packet spacing in ms
|
config[3].packet_spacing = 30000; // Packet spacing in ms
|
||||||
//config[3].sleep_conf.type = SLEEP_WHEN_ISOL_BELOW_THRES;
|
//config[3].sleep_conf.type = SLEEP_WHEN_ISOL_BELOW_THRES;
|
||||||
//config[3].sleep_conf.isol_thres = 3;
|
//config[3].sleep_conf.isol_thres = 3;
|
||||||
config[3].trigger.type = TRIG_TIMEOUT; // Trigger transmission on timeout (Periodic cycling)
|
config[3].trigger.type = TRIG_CONTINUOUSLY; // Continuous Trigger
|
||||||
config[3].trigger.timeout = 10; // Timeout 10 sec
|
config[3].trigger.timeout = 10; // Timeout 10 sec
|
||||||
chsnprintf(config[3].aprs_conf.callsign, 7, "DL7AD"); // APRS Callsign
|
chsnprintf(config[3].aprs_conf.callsign, 7, "DL7AD"); // APRS Callsign
|
||||||
config[3].aprs_conf.ssid = 11; // APRS SSID
|
config[3].aprs_conf.ssid = 12; // APRS SSID
|
||||||
config[3].aprs_conf.preamble = 300; // APRS Preamble
|
config[3].aprs_conf.preamble = 300; // APRS Preamble
|
||||||
chsnprintf(config[3].ssdv_conf.callsign, 7, "DL7AD"); // SSDV Callsign
|
chsnprintf(config[3].ssdv_conf.callsign, 7, "DL7AD"); // SSDV Callsign
|
||||||
config[3].ssdv_conf.ram_buffer = ssdv_buffer; // Camera buffer
|
config[3].ssdv_conf.ram_buffer = ssdv_buffer; // Camera buffer
|
||||||
config[3].ssdv_conf.ram_size = sizeof(ssdv_buffer); // Buffer size
|
config[3].ssdv_conf.ram_size = sizeof(ssdv_buffer); // Buffer size
|
||||||
config[3].ssdv_conf.res = RES_QVGA; // Resolution VGA
|
config[3].ssdv_conf.res = RES_QVGA; // Resolution VGA
|
||||||
config[3].ssdv_conf.redundantTx = true; // Transmit packets twice
|
config[3].ssdv_conf.redundantTx = true; // Transmit packets twice
|
||||||
//start_image_thread(&config[3]);
|
start_image_thread(&config[3]);
|
||||||
|
|
||||||
// Module POSITION, Morse 2m OOK
|
// Module POSITION, Morse 2m OOK
|
||||||
/*config[4].power = 127; // Power 10 dBm
|
/*config[4].power = 127; // Power 10 dBm
|
||||||
|
|
@ -266,15 +266,15 @@ void start_user_modules(void)
|
||||||
start_position_thread(&config[4]);*/
|
start_position_thread(&config[4]);*/
|
||||||
|
|
||||||
// Module IMAGE, APRS 2m 2GFSK
|
// Module IMAGE, APRS 2m 2GFSK
|
||||||
config[5].power = 127; // Power 20 dBm
|
config[5].power = 50; // Power 20 dBm
|
||||||
config[5].protocol = PROT_APRS_2GFSK; // Protocol APRS SSDV, modulation 2GFSK
|
config[5].protocol = PROT_APRS_2GFSK; // Protocol APRS SSDV, modulation 2GFSK
|
||||||
config[5].gfsk_conf.speed = 9600; // 2GFSK Speed
|
config[5].gfsk_conf.speed = 9600; // 2GFSK Speed
|
||||||
config[5].frequency.type = FREQ_STATIC; // Static frequency allocation
|
config[5].frequency.type = FREQ_STATIC; // Static frequency allocation
|
||||||
config[5].frequency.hz = 144860000; // Transmission frequency 144.860 MHz
|
config[5].frequency.hz = 144860000; // Transmission frequency 144.860 MHz
|
||||||
//config[5].init_delay = 60000; // Module startup delay in msec
|
//config[5].init_delay = 60000; // Module startup delay in msec
|
||||||
config[5].sleep_conf.type = SLEEP_WHEN_VBAT_BELOW_THRES;
|
//config[5].sleep_conf.type = SLEEP_WHEN_VBAT_BELOW_THRES;
|
||||||
config[5].sleep_conf.vbat_thres = 4000;
|
//config[5].sleep_conf.vbat_thres = 4000;
|
||||||
config[5].trigger.type = TRIG_TIMEOUT; // Trigger transmission on timeout (Periodic cycling)
|
config[5].trigger.type = TRIG_CONTINUOUSLY; // Trigger transmission on timeout (Periodic cycling)
|
||||||
config[5].trigger.timeout = 30; // Timeout 10 sec
|
config[5].trigger.timeout = 30; // Timeout 10 sec
|
||||||
chsnprintf(config[5].aprs_conf.callsign, 6, "DL7AD"); // APRS Callsign
|
chsnprintf(config[5].aprs_conf.callsign, 6, "DL7AD"); // APRS Callsign
|
||||||
config[5].aprs_conf.ssid = 12; // APRS SSID
|
config[5].aprs_conf.ssid = 12; // APRS SSID
|
||||||
|
|
@ -284,7 +284,7 @@ void start_user_modules(void)
|
||||||
config[5].ssdv_conf.ram_size = sizeof(ssdv_buffer); // Buffer size
|
config[5].ssdv_conf.ram_size = sizeof(ssdv_buffer); // Buffer size
|
||||||
config[5].ssdv_conf.res = RES_VGA; // Resolution XGA
|
config[5].ssdv_conf.res = RES_VGA; // Resolution XGA
|
||||||
//config[5].ssdv_conf.redundantTx = true; // Transmit packets twice
|
//config[5].ssdv_conf.redundantTx = true; // Transmit packets twice
|
||||||
start_image_thread(&config[5]);
|
//start_image_thread(&config[5]);
|
||||||
|
|
||||||
// Module IMAGE, SSDV 2m 2FSK
|
// Module IMAGE, SSDV 2m 2FSK
|
||||||
/*config[6].power = 127; // Power 20 dBm
|
/*config[6].power = 127; // Power 20 dBm
|
||||||
|
|
|
||||||
|
|
@ -15,13 +15,13 @@
|
||||||
#define LOG_FLASH_ADDR2 0x080E0000 /* Log flash memory address 2 */
|
#define LOG_FLASH_ADDR2 0x080E0000 /* Log flash memory address 2 */
|
||||||
#define LOG_SECTOR_SIZE 0x20000 /* Log flash memory size */
|
#define LOG_SECTOR_SIZE 0x20000 /* Log flash memory size */
|
||||||
|
|
||||||
#define GPS_ON_VBAT 0 /* Battery voltage threshold at which GPS is switched on */
|
#define GPS_ON_VBAT 4000 /* Battery voltage threshold at which GPS is switched on */
|
||||||
#define GPS_OFF_VBAT 0 /* Battery voltage threshold at which GPS is switched off */
|
#define GPS_OFF_VBAT 3500 /* Battery voltage threshold at which GPS is switched off */
|
||||||
|
|
||||||
#define TRACE_TIME TRUE /* Enables time tracing on debugging port */
|
#define TRACE_TIME TRUE /* Enables time tracing on debugging port */
|
||||||
#define TRACE_FILE TRUE /* Enables file and line tracing on debugging port */
|
#define TRACE_FILE TRUE /* Enables file and line tracing on debugging port */
|
||||||
|
|
||||||
#define RUN_3V TRUE /* Lets the tracker run a 3V otherwise 1.8V. 3V is needed to do 20dBm radio output power.
|
#define RUN_3V FALSE /* Lets the tracker run a 3V otherwise 1.8V. 3V is needed to do 20dBm radio output power.
|
||||||
* With 1.8V only 15dBm can be done. Some serial-USB adapters also need a 3V IO level in
|
* With 1.8V only 15dBm can be done. Some serial-USB adapters also need a 3V IO level in
|
||||||
* order to work. However 3V takes a lot of power in idle. You can save energy using 1.8V. */
|
* order to work. However 3V takes a lot of power in idle. You can save energy using 1.8V. */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ static const struct regval_list OV5640YUV_Sensor_Dvp_Init[] =
|
||||||
{ 0x3c0a, 0x9c },
|
{ 0x3c0a, 0x9c },
|
||||||
{ 0x3c0b, 0x40 },
|
{ 0x3c0b, 0x40 },
|
||||||
|
|
||||||
{ 0x3820, 0x41 },
|
{ 0x3820, 0x46 },
|
||||||
{ 0x3821, 0x01 }, //07
|
{ 0x3821, 0x01 }, //07
|
||||||
|
|
||||||
//windows setup
|
//windows setup
|
||||||
|
|
@ -96,7 +96,7 @@ static const struct regval_list OV5640YUV_Sensor_Dvp_Init[] =
|
||||||
{ 0x3034, 0x1a },
|
{ 0x3034, 0x1a },
|
||||||
{ 0x3035, 0x11 }, //15fps
|
{ 0x3035, 0x11 }, //15fps
|
||||||
{ 0x3036, 0x46 },
|
{ 0x3036, 0x46 },
|
||||||
{ 0x3037, 0x13 },
|
{ 0x3037, 0x14 },
|
||||||
{ 0x3038, 0x00 },
|
{ 0x3038, 0x00 },
|
||||||
{ 0x3039, 0x00 },
|
{ 0x3039, 0x00 },
|
||||||
|
|
||||||
|
|
@ -331,7 +331,7 @@ static const struct regval_list ov5640_vga_preview[] =
|
||||||
{ 0x3035, 0x11 }, // PLL
|
{ 0x3035, 0x11 }, // PLL
|
||||||
{ 0x3036, 0x46 }, // PLL
|
{ 0x3036, 0x46 }, // PLL
|
||||||
{ 0x3c07, 0x08 }, // light meter 1 threshold [7:0]
|
{ 0x3c07, 0x08 }, // light meter 1 threshold [7:0]
|
||||||
{ 0x3820, 0x41 }, // Sensor flip off, ISP flip on
|
{ 0x3820, 0x46 }, // Sensor flip off, ISP flip on
|
||||||
{ 0x3821, 0x01 }, // Sensor mirror on, ISP mirror on, H binning on
|
{ 0x3821, 0x01 }, // Sensor mirror on, ISP mirror on, H binning on
|
||||||
{ 0x3814, 0x31 }, // X INC
|
{ 0x3814, 0x31 }, // X INC
|
||||||
{ 0x3815, 0x31 }, // Y INC
|
{ 0x3815, 0x31 }, // Y INC
|
||||||
|
|
@ -397,8 +397,8 @@ static const struct regval_list OV5640_RGB_QVGA[] =
|
||||||
//2592x1944 QSXGA
|
//2592x1944 QSXGA
|
||||||
static const struct regval_list OV5640_JPEG_QSXGA[] =
|
static const struct regval_list OV5640_JPEG_QSXGA[] =
|
||||||
{
|
{
|
||||||
{0x3820 ,0x41},
|
{0x3820 ,0x46},
|
||||||
{0x3821 ,0x26},
|
{0x3821 ,0x20},
|
||||||
{0x3814 ,0x11},
|
{0x3814 ,0x11},
|
||||||
{0x3815 ,0x11},
|
{0x3815 ,0x11},
|
||||||
{0x3803 ,0x00},
|
{0x3803 ,0x00},
|
||||||
|
|
|
||||||
|
|
@ -48,9 +48,9 @@
|
||||||
#define STM32_PLLN_VALUE 192
|
#define STM32_PLLN_VALUE 192
|
||||||
#define STM32_PLLP_VALUE 4
|
#define STM32_PLLP_VALUE 4
|
||||||
#define STM32_PLLQ_VALUE 4
|
#define STM32_PLLQ_VALUE 4
|
||||||
#define STM32_HPRE STM32_HPRE_DIV1
|
#define STM32_HPRE STM32_HPRE_DIV2
|
||||||
#define STM32_PPRE1 STM32_PPRE1_DIV2
|
#define STM32_PPRE1 STM32_PPRE1_DIV2
|
||||||
#define STM32_PPRE2 STM32_PPRE2_DIV1
|
#define STM32_PPRE2 STM32_PPRE2_DIV4
|
||||||
#define STM32_RTCSEL STM32_RTCSEL_LSI
|
#define STM32_RTCSEL STM32_RTCSEL_LSI
|
||||||
#define STM32_RTCPRE_VALUE 8
|
#define STM32_RTCPRE_VALUE 8
|
||||||
#define STM32_MCO1SEL STM32_MCO1SEL_HSE
|
#define STM32_MCO1SEL STM32_MCO1SEL_HSE
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ systime_t waitForTrigger(systime_t prev, trigger_conf_t *config)
|
||||||
case TRIG_TIMEOUT: // Wait for specified timeout
|
case TRIG_TIMEOUT: // Wait for specified timeout
|
||||||
return chThdSleepUntilWindowed(prev, prev + S2ST(config->timeout));
|
return chThdSleepUntilWindowed(prev, prev + S2ST(config->timeout));
|
||||||
|
|
||||||
case TRIG_CONTINOUSLY: // Immediate trigger
|
case TRIG_CONTINUOUSLY: // Immediate trigger
|
||||||
return chVTGetSystemTimeX();
|
return chVTGetSystemTimeX();
|
||||||
|
|
||||||
case TRIG_ONCE: // No trigger defined
|
case TRIG_ONCE: // No trigger defined
|
||||||
|
|
|
||||||
|
|
@ -131,7 +131,7 @@ typedef enum {
|
||||||
TRIG_ONCE, // Trigger once and never again (e.g. transmit specific position packet only at startup)
|
TRIG_ONCE, // Trigger once and never again (e.g. transmit specific position packet only at startup)
|
||||||
TRIG_NEW_POINT, // Triggered when new track point available
|
TRIG_NEW_POINT, // Triggered when new track point available
|
||||||
TRIG_TIMEOUT, // Triggered by timeout (e.g. trasmit position every 120sec)
|
TRIG_TIMEOUT, // Triggered by timeout (e.g. trasmit position every 120sec)
|
||||||
TRIG_CONTINOUSLY // Continue continously (e.g. send new image once old image sent completely)
|
TRIG_CONTINUOUSLY // Continue continuously (e.g. send new image once old image sent completely)
|
||||||
} trigger_type_t;
|
} trigger_type_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
|
||||||
Ładowanie…
Reference in New Issue