changed configuration of UART pin. Added hardware errata

pull/2/head
Mateusz Lubecki 2020-04-04 23:09:00 +02:00
rodzic f6401a57af
commit ba4e3b841a
9 zmienionych plików z 42 dodań i 15 usunięć

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 926 KiB

Wyświetl plik

@ -4,7 +4,7 @@
#include "aprs/ax25.h"
#define SW_VER "DE07"
#define SW_DATE "27032020"
#define SW_DATE "04042020"
#define SYSTICK_TICKS_PER_SECONDS 100
#define SYSTICK_TICKS_PERIOD 10
@ -30,9 +30,6 @@ extern char after_tx_lock;
extern unsigned short rx10m, tx10m, digi10m, kiss10m;
uint16_t main_get_adc_sample(void);
//void main_wx_decremenet_counter(void);
//void main_packets_tx_decremenet_counter(void);
//void main_two_second_pool_decrement_counter(void);
inline void main_wait_for_tx_complete(void) {
while(main_afsk.sending == 1);

Wyświetl plik

@ -18,6 +18,10 @@
#define PRESSURE_AVERAGE_LN 4
#define RTE_WX_MEASUREMENT_WIND 460
#define RTE_WX_MEASUREMENT_TEMPERATURE 100
#define RTE_WX_MEASUREMENT_PRESSUERE 300
extern float rte_wx_temperature_dallas, rte_wx_temperature_dallas_valid;
extern float rte_wx_temperature_dalls_slew_rate;
extern float rte_wx_temperature_average_dallas_valid;
@ -60,6 +64,7 @@ extern "C"
#endif
void rte_wx_init(void);
void rte_wx_update_last_measuremenet_timers(uint16_t measurement_type);
#ifdef __cplusplus
}

Wyświetl plik

@ -40,6 +40,7 @@
#include "drivers/tx20.h"
#include "drivers/analog_anemometer.h"
#include "aprs/wx.h"
#include "drivers/gpio_conf.h"
#ifdef _UMB_MASTER
#include "umb_master/umb_master.h"
@ -200,7 +201,6 @@ main(int argc, char* argv[])
main_own_path_ln = ConfigPath(main_own_path);
#ifdef _METEO
// initialize i2c controller
i2cConfigure();
#endif
@ -213,6 +213,9 @@ main(int argc, char* argv[])
ax25_init(&main_ax25, &main_afsk, 0, 0x00);
DA_Init();
// initialize Watchdog output
Configure_GPIO(GPIOA,12,GPPP_OUTPUT_50MHZ);
// initialize variables & arrays in rte_wx
rte_wx_init();
@ -512,6 +515,8 @@ main(int argc, char* argv[])
wx_pool_anemometer();
main_ten_second_pool_timer = 10000;
GPIOA->ODR = (GPIOA->ODR ^ GPIO_Pin_12);
}
#ifdef _METEO

Wyświetl plik

@ -7,6 +7,8 @@
#include <rte_wx.h>
#include <wx_handler.h>
#include "main.h"
float rte_wx_temperature_dallas = 0.0f, rte_wx_temperature_dallas_valid = 0.0f;
float rte_wx_temperature_dalls_slew_rate = 0.0f;
@ -56,3 +58,11 @@ void rte_wx_init(void) {
rte_wx_pressure_history[i] = 0.0f;
}
}
void rte_wx_update_last_measuremenet_timers(uint16_t parameter_type) {
if (parameter_type == RTE_WX_MEASUREMENT_WIND)
wx_last_good_wind_time = master_time;
else if (parameter_type == RTE_WX_MEASUREMENT_TEMPERATURE)
wx_last_good_temperature_time = master_time;
else;
}

Wyświetl plik

@ -32,7 +32,9 @@ typedef struct umb_context_t {
uint16_t channel_numbers[UMB_CHANNELS_STORAGE_CAPAC];
uint8_t current_channel;
uint8_t channel_number_it;
uint16_t current_channel;
} umb_context_t;

Wyświetl plik

@ -71,9 +71,9 @@ void srl_init(void) {
srl_tx_buf_ln = TX_BUFFER_LN;
#endif
Configure_GPIO(GPIOA,11,AFPP_OUTPUT_2MHZ); // CTS
Configure_GPIO(GPIOA,12,AFPP_OUTPUT_2MHZ); // RTS
Configure_GPIO(GPIOA,8,AFPP_OUTPUT_2MHZ); // CLK
//Configure_GPIO(GPIOA,11,AFPP_OUTPUT_2MHZ); // CTS
//Configure_GPIO(GPIOA,12,GPPP_OUTPUT_2MHZ); // RTS
//Configure_GPIO(GPIOA,8,AFPP_OUTPUT_2MHZ); // CLK
Configure_GPIO(GPIOA,10,PUD_INPUT); // RX
Configure_GPIO(GPIOA,9,AFPP_OUTPUT_2MHZ); // TX

Wyświetl plik

@ -10,16 +10,17 @@
void umb_channel_pool(umb_frame_t *frame, umb_context_t *ctx) {
#if defined(_UMB_MASTER)
if (ctx->current_channel > UMB_CHANNELS_STORAGE_CAPAC)
ctx->current_channel = 0;
if (ctx->channel_number_it > UMB_CHANNELS_STORAGE_CAPAC)
ctx->channel_number_it = 0;
uint16_t curr_chn = ctx->channel_numbers[ctx->current_channel];
uint16_t curr_chn = ctx->channel_numbers[ctx->channel_number_it];
ctx->current_channel = curr_chn;
if (curr_chn != 0xFFFFu) {
umb_0x23_offline_data_request(frame, ctx, curr_chn);
}
ctx->current_channel++;
ctx->channel_number_it++;
#endif
}

Wyświetl plik

@ -280,6 +280,8 @@ umb_retval_t umb_pooling_handler(umb_context_t* ctx, umb_call_reason_t r, uint32
*/
umb_retval_t umb_master_callback(umb_frame_t* frame, umb_context_t* ctx) {
umb_retval_t ret_fron_callback = UMB_UNINITIALIZED;
// check if this is a response to routine which was queried recently
if (frame->command_id != ctx->current_routine) {
ctx->state = UMB_STATUS_ERROR_WRONG_RID_IN_RESPONSE;
@ -290,11 +292,16 @@ umb_retval_t umb_master_callback(umb_frame_t* frame, umb_context_t* ctx) {
// looking for a callback to this response
switch (frame->command_id) {
case 0x23: {
umb_0x23_offline_data_callback(frame, ctx);
ret_fron_callback = umb_0x23_offline_data_callback(frame, ctx);
if (ret_fron_callback == UMB_OK) {
rte_wx_update_last_measuremenet_timers(ctx->current_channel);
}
break;
}
case 0x26: {
umb_0x26_status_callback(frame, ctx);
ret_fron_callback = umb_0x26_status_callback(frame, ctx);
break;
}
}