|
@@ -34,6 +34,10 @@ extern "C" {
|
|
|
#include "dac_transport.h"
|
|
|
#include "log.h"
|
|
|
#include "swap.h"
|
|
|
+#include "utility.h"
|
|
|
+#include "soft_test.h"
|
|
|
+#include "soft_wdt.h"
|
|
|
+#include "usb_clock.h"
|
|
|
}
|
|
|
#include "terminal_sbs.h"
|
|
|
#include "terminal_usartbridge.h"
|
|
@@ -44,12 +48,6 @@ extern "C" {
|
|
|
|
|
|
|
|
|
void init_task(void *argument);
|
|
|
-void test_hw_task(void *argument);
|
|
|
-void soft_wdt(void *params);
|
|
|
-void test_gpio(void *params);
|
|
|
-void misc_task(void *params);
|
|
|
-
|
|
|
-void usb_clock48m_select(usb_clk48_s clk_s);
|
|
|
|
|
|
|
|
|
|
|
@@ -60,42 +58,26 @@ int main(void)
|
|
|
nvic_priority_group_config(NVIC_PRIORITY_GROUP_4);
|
|
|
__enable_irq();
|
|
|
|
|
|
+ crm_periph_clock_enable(CRM_CRC_PERIPH_CLOCK, TRUE);
|
|
|
+
|
|
|
extend_SRAM();
|
|
|
|
|
|
system_clock_config();
|
|
|
|
|
|
delay_init();
|
|
|
|
|
|
-
|
|
|
-
|
|
|
- sbsTerminal.configure();
|
|
|
- terminalUsartBridge.configure();
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-#ifdef USB_RNDIS
|
|
|
- usb_clock48m_select(USB_CLK_HEXT);
|
|
|
- crm_periph_clock_enable(CRM_USB_PERIPH_CLOCK, TRUE);
|
|
|
- usb_init();
|
|
|
-#endif
|
|
|
-
|
|
|
-#if 1
|
|
|
- taskENTER_CRITICAL();
|
|
|
-
|
|
|
- xTaskCreate(soft_wdt, "soft_wdt", configMINIMAL_STACK_SIZE, NULL, configMAX_PRIORITIES - 1, NULL);
|
|
|
|
|
|
+
|
|
|
+
|
|
|
xTaskCreate(init_task, "init_task", 10*configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
|
|
|
|
|
|
-
|
|
|
-
|
|
|
- xTaskCreate(test_gpio, "gpio_task", 2*configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
|
|
|
|
|
|
xTaskCreate(input_task, "input_task", 2*configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
|
|
|
|
|
|
- xTaskCreate(misc_task, "misc_task", 2*configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
|
|
|
+ xTaskCreate(mux_task, "mux_task", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
|
|
|
+
|
|
|
+
|
|
|
|
|
|
- xTaskCreate(button_task, "button_task", 2*configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
|
|
|
-
|
|
|
#if defined (MAI_12)
|
|
|
xTaskCreate(adc_task, "adc_task", 2*configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
|
|
|
#endif
|
|
@@ -104,11 +86,10 @@ int main(void)
|
|
|
xTaskCreate(dac_task, "dac_task", 2*configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
|
|
|
#endif
|
|
|
|
|
|
- taskEXIT_CRITICAL();
|
|
|
+
|
|
|
|
|
|
vTaskStartScheduler();
|
|
|
-#endif
|
|
|
-
|
|
|
+
|
|
|
while (1) {}
|
|
|
}
|
|
|
|
|
@@ -116,14 +97,20 @@ int main(void)
|
|
|
void init_task(void *argument)
|
|
|
{
|
|
|
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
+ gpio_wdt_init();
|
|
|
+ xTaskCreate(soft_wdt, "soft_wdt", configMINIMAL_STACK_SIZE, NULL, configMAX_PRIORITIES - 1, NULL);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ sbsTerminal.configure();
|
|
|
+ terminalUsartBridge.configure();
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
- crm_periph_clock_enable(CRM_CRC_PERIPH_CLOCK, TRUE);
|
|
|
-
|
|
|
|
|
|
init_settings();
|
|
|
|
|
@@ -137,13 +124,9 @@ void init_task(void *argument)
|
|
|
|
|
|
settings_set_modbus_params(settings.com_settings.mb_port);
|
|
|
|
|
|
-#if 0
|
|
|
- settings_set_all_default();
|
|
|
- settings_save(&settings);
|
|
|
-#endif
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
save_mode_init();
|
|
|
|
|
|
save_mode_set(false);
|
|
@@ -152,19 +135,17 @@ void init_task(void *argument)
|
|
|
|
|
|
|
|
|
|
|
|
- gpio_wdt_init();
|
|
|
- gpio_mbaddr_init();
|
|
|
-
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
button_init();
|
|
|
+ xTaskCreate(button_task, "button_task", 2*configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
uptime_init();
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -227,28 +208,27 @@ void init_task(void *argument)
|
|
|
*/
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+#ifdef USB_RNDIS
|
|
|
+ usb_clock48m_select(USB_CLK_HEXT);
|
|
|
+ crm_periph_clock_enable(CRM_USB_PERIPH_CLOCK, TRUE);
|
|
|
+ usb_init();
|
|
|
+ usb_eth_init();
|
|
|
+#endif
|
|
|
|
|
|
|
|
|
-
|
|
|
-#if 1
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
common_spi_init();
|
|
|
spi_flash_init();
|
|
|
-
|
|
|
-
|
|
|
-#endif
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
|
|
|
log_init(false);
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ utl_stat_timer_init();
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -263,160 +243,34 @@ void init_task(void *argument)
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
log_add_entry(LOG_SYSTEM_BOOT, (log_event_state_t)0, 0, 0);
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- settings_is_changed(&settings);
|
|
|
+
|
|
|
|
|
|
- for (;;)
|
|
|
- {
|
|
|
- mux_led_proc();
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+ vTaskDelete(NULL);
|
|
|
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-void test_hw_task(void *argument)
|
|
|
-{
|
|
|
- for (;;)
|
|
|
- {
|
|
|
- vTaskDelay(1000);
|
|
|
-
|
|
|
-
|
|
|
- printf("\r\n");
|
|
|
- for (uint8_t i = 0; i < 8; i++)
|
|
|
- {
|
|
|
- printf("Channel: %u, state = %u\r\n", i + 1, in_get(i));
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-#if 0
|
|
|
- vTaskDelay(100);
|
|
|
-
|
|
|
- mux_led_blink();
|
|
|
-#endif
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
-}
|
|
|
+
|
|
|
+
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
-
|
|
|
-void soft_wdt(void *params)
|
|
|
-{
|
|
|
- (void)params;
|
|
|
+#if 0
|
|
|
+
|
|
|
+ settings_set_all_default();
|
|
|
+ settings_save(&settings);
|
|
|
+#endif
|
|
|
|
|
|
- for (;;)
|
|
|
- {
|
|
|
- extern_wdt_togle();
|
|
|
- vTaskDelay(100);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-void test_gpio(void *params)
|
|
|
-{
|
|
|
- (void)params;
|
|
|
+
|
|
|
+
|
|
|
|
|
|
- for (;;)
|
|
|
- {
|
|
|
- vTaskDelay(100);
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-void misc_task(void *params)
|
|
|
-{
|
|
|
- (void)params;
|
|
|
+
|
|
|
+
|
|
|
|
|
|
- for (;;)
|
|
|
- {
|
|
|
- vTaskDelay(1000);
|
|
|
- eMBSetSlaveAddr(gpio_get_mbaddr());
|
|
|
- }
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-void usb_clock48m_select(usb_clk48_s clk_s)
|
|
|
-{
|
|
|
- if(clk_s == USB_CLK_HICK)
|
|
|
- {
|
|
|
- crm_usb_clock_source_select(CRM_USB_CLOCK_SOURCE_HICK);
|
|
|
-
|
|
|
-
|
|
|
- crm_periph_clock_enable(CRM_ACC_PERIPH_CLOCK, TRUE);
|
|
|
-
|
|
|
-
|
|
|
- acc_write_c1(7980);
|
|
|
- acc_write_c2(8000);
|
|
|
- acc_write_c3(8020);
|
|
|
-
|
|
|
-
|
|
|
- acc_calibration_mode_enable(ACC_CAL_HICKTRIM, TRUE);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- switch(system_core_clock)
|
|
|
- {
|
|
|
-
|
|
|
- case 48000000:
|
|
|
- crm_usb_clock_div_set(CRM_USB_DIV_1);
|
|
|
- break;
|
|
|
-
|
|
|
-
|
|
|
- case 72000000:
|
|
|
- crm_usb_clock_div_set(CRM_USB_DIV_1_5);
|
|
|
- break;
|
|
|
-
|
|
|
-
|
|
|
- case 96000000:
|
|
|
- crm_usb_clock_div_set(CRM_USB_DIV_2);
|
|
|
- break;
|
|
|
-
|
|
|
-
|
|
|
- case 120000000:
|
|
|
- crm_usb_clock_div_set(CRM_USB_DIV_2_5);
|
|
|
- break;
|
|
|
-
|
|
|
-
|
|
|
- case 144000000:
|
|
|
- crm_usb_clock_div_set(CRM_USB_DIV_3);
|
|
|
- break;
|
|
|
-
|
|
|
-
|
|
|
- case 168000000:
|
|
|
- crm_usb_clock_div_set(CRM_USB_DIV_3_5);
|
|
|
- break;
|
|
|
-
|
|
|
-
|
|
|
- case 192000000:
|
|
|
- crm_usb_clock_div_set(CRM_USB_DIV_4);
|
|
|
- break;
|
|
|
-
|
|
|
- default:
|
|
|
- break;
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
-}
|