/* * Code generated from Atmel Start. * * This file will be overwritten when reconfiguring your Atmel Start project. * Please copy examples or other code you want to keep to a separate file * to avoid losing it when reconfiguring. */ #include "driver_examples.h" #include "driver_init.h" #include "utils.h" /** * Example of using EXTERNAL_IRQ_0 */ void EXTERNAL_IRQ_0_example(void) { } /** * Example of using USART_0 to write "Hello World" using the IO abstraction. * * Since the driver is asynchronous we need to use statically allocated memory for string * because driver initiates transfer and then returns before the transmission is completed. * * Once transfer has been completed the tx_cb function will be called. */ static uint8_t example_USART_0[12] = "Hello World!"; static void tx_cb_USART_0(const struct usart_async_descriptor *const io_descr) { /* Transfer completed */ } void USART_0_example(void) { struct io_descriptor *io; usart_async_register_callback(&USART_0, USART_ASYNC_TXC_CB, tx_cb_USART_0); /*usart_async_register_callback(&USART_0, USART_ASYNC_RXC_CB, rx_cb); usart_async_register_callback(&USART_0, USART_ASYNC_ERROR_CB, err_cb);*/ usart_async_get_io_descriptor(&USART_0, &io); usart_async_enable(&USART_0); io_write(io, example_USART_0, 12); } void I2C_0_example(void) { struct io_descriptor *I2C_0_io; i2c_m_sync_get_io_descriptor(&I2C_0, &I2C_0_io); i2c_m_sync_enable(&I2C_0); i2c_m_sync_set_slaveaddr(&I2C_0, 0x12, I2C_M_SEVEN); io_write(I2C_0_io, (uint8_t *)"Hello World!", 12); } static struct timer_task TIMER_0_task1, TIMER_0_task2; /** * Example of using TIMER_0. */ static void TIMER_0_task1_cb(const struct timer_task *const timer_task) { } static void TIMER_0_task2_cb(const struct timer_task *const timer_task) { } void TIMER_0_example(void) { TIMER_0_task1.interval = 100; TIMER_0_task1.cb = TIMER_0_task1_cb; TIMER_0_task1.mode = TIMER_TASK_REPEAT; TIMER_0_task2.interval = 200; TIMER_0_task2.cb = TIMER_0_task2_cb; TIMER_0_task2.mode = TIMER_TASK_REPEAT; timer_add_task(&TIMER_0, &TIMER_0_task1); timer_add_task(&TIMER_0, &TIMER_0_task2); timer_start(&TIMER_0); }