diff --git a/src/main.c b/src/main.c --- a/src/main.c +++ b/src/main.c @@ -10,7 +10,8 @@ void sysclk_init(void); -#define WSPR_DEFAULT_FREQ 14097100UL +//#define WSPR_DEFAULT_FREQ 14097100UL +#define WSPR_DEFAULT_FREQ 10140100UL #define WSPR_TONE_SPACING 146 // ~1.46 Hz #define WSPR_CTC 10672 // CTC value for WSPR @@ -42,14 +43,18 @@ void encode_wspr(void) uint32_t freq2 = (freq * 100) + (tx_buffer[i] * tone_spacing); si5351_set_freq(freq2, 0, SI5351_CLK0); + HAL_GPIO_TogglePin(LED_BLUE); //si5351_set_freq((freq * 100) + (tx_buffer[i] * tone_spacing), 0, SI5351_CLK0); - HAL_Delay(300); - //proceed = 0; - //while(!proceed); + //HAL_Delay(300); + proceed = 0; + while(!proceed); } + si5351_output_enable(SI5351_CLK0, 0); } + TIM_HandleTypeDef htim1; + int main(void) { HAL_Init(); @@ -62,8 +67,57 @@ int main(void) HAL_GPIO_WritePin(OSC_NOTEN, 0); HAL_GPIO_WritePin(TCXO_EN, 1); + + + // Start timer for WSPR + __TIM1_CLK_ENABLE(); + TIM_MasterConfigTypeDef sMasterConfig; + TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig; + TIM_OC_InitTypeDef sConfigOC; + + htim1.Instance = TIM1; + htim1.Init.Prescaler = 512; // gives 64uS ticks from 8MHz ahbclk + htim1.Init.CounterMode = TIM_COUNTERMODE_UP; + htim1.Init.Period = ctc; // Count up to this value (how many 64uS ticks per symbol) + htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; + htim1.Init.RepetitionCounter = 0; + HAL_TIM_Base_Init(&htim1); + + HAL_TIM_Base_Start_IT(&htim1); +/* + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; + sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; + HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig); + + sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE; + sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE; + sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF; + sBreakDeadTimeConfig.DeadTime = 0; + sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE; + sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH; + sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE; + HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig); + + sConfigOC.OCMode = TIM_OCMODE_TIMING; + sConfigOC.Pulse = 0; + sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; + sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH; + sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; + sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET; + sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET; + HAL_TIM_OC_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1); +*/ + + HAL_NVIC_SetPriority(TIM1_BRK_UP_TRG_COM_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(TIM1_BRK_UP_TRG_COM_IRQn); + HAL_Delay(100); + + + + + // MX_USART1_UART_Init(); jtencode_init(); @@ -96,7 +150,7 @@ int main(void) if(HAL_GetTick() - led_timer > 100) { - //HAL_GPIO_TogglePin(LED_BLUE); + HAL_GPIO_TogglePin(LED_BLUE); led_timer = HAL_GetTick(); } if(HAL_GetTick() - last_gps > 100)