int main(void) { short bandera = 0; //valores de bandera 0, 1, o 2 ssi_init(); //inicializa codec for(;;) { switch(bandera) { case 0 : ptr_buffer = buffer_in0; break; case 1 : ptr_buffer = buffer_in1; break; case 2 : ptr_buffer = buffer_in2; break; default: break; } ptr_fin = ptr_buffer + S; while(ptr_buffer < ptr_fin); bandera++; bandera = bandera % 3; } }
/************************************************************************************************* * ethernet_task * * Ethernet task, manages the interface, runs only once */ static portTASK_FUNCTION( ethernet_task, pvParameters ) { static const gpio_map_t MACB_GPIO_MAP = { {EXTPHY_MACB_MDC_PIN, EXTPHY_MACB_MDC_FUNCTION }, {EXTPHY_MACB_MDIO_PIN, EXTPHY_MACB_MDIO_FUNCTION }, {EXTPHY_MACB_RXD_0_PIN, EXTPHY_MACB_RXD_0_FUNCTION }, {EXTPHY_MACB_TXD_0_PIN, EXTPHY_MACB_TXD_0_FUNCTION }, {EXTPHY_MACB_RXD_1_PIN, EXTPHY_MACB_RXD_1_FUNCTION }, {EXTPHY_MACB_TXD_1_PIN, EXTPHY_MACB_TXD_1_FUNCTION }, {EXTPHY_MACB_TX_EN_PIN, EXTPHY_MACB_TX_EN_FUNCTION }, {EXTPHY_MACB_RX_ER_PIN, EXTPHY_MACB_RX_ER_FUNCTION }, {EXTPHY_MACB_RX_DV_PIN, EXTPHY_MACB_RX_DV_FUNCTION }, {EXTPHY_MACB_TX_CLK_PIN, EXTPHY_MACB_TX_CLK_FUNCTION} }; gpio_enable_module(MACB_GPIO_MAP, sizeof(MACB_GPIO_MAP) / sizeof(MACB_GPIO_MAP[0])); ethernet_init_LwIP(); httpd_init(); ssi_init(); /* Kill this task. */ vTaskDelete(NULL); }
/** * @brief SSI thread main function * @param void * arg Thread arguments (NULL) * @return msg_t Thread messages */ msg_t ssi_main(void *arg) { ssi_init(); // Initialize SSI Encoder uint32_t position; // Position buffer // Thread main loop systime_t time = chTimeNow(); while(1) { time = chTimeNow(); if((ssi_mode == SSI_MODE_STREAM) && (encoder_power_state == ENCODER_ON)) { time += US2ST(ssi_read_delay); position = ssi_read(); // Read SSI Encoder bt_send_position(position); // Send out encoder data via serial while(!bt_get_tx_state()) { __asm__("NOP"); // Wait for position send to complete } chThdSleepUntil(time); } else { chThdSleepMilliseconds(500); } } }