Esempio n. 1
0
/**
 * Configure USART to work @ 115200
 */
static void _configure_usart(void)
{
	Usart* usart = usart_desc.addr;
	uint32_t id = get_usart_id_from_addr(usart);
	/* Driver initialize */
	xdmad_initialize(0);
	usartd_configure(&usart_desc);
	pio_configure(usart_pins, ARRAY_SIZE(usart_pins));
	usart_enable_it(usart, US_IER_RXRDY);
	aic_set_source_vector(id, usart_irq_handler);
	aic_enable(id);
}
Esempio n. 2
0
/**
 *  \brief Init Usart COM2 master.
 */
static void _init_com_master (void)
{
	uint32_t id = get_usart_id_from_addr(lin_desc2.addr);

	/* Configure Pios usart*/
	pio_configure(&pins_com2[0], ARRAY_SIZE(pins_com2));

	/* Init LIN MASTER data Node 0 */
	lin_init(&lin_desc2, LIN_MASTER_NODE_NUM);

	/* Configure interrupts */
	usart_enable_it(lin_desc2.addr, US_IER_LINTC);
	aic_set_source_vector(id, _com2_master_handler);
}
Esempio n. 3
0
/**
 *  \brief Init Usart COM3 slave.
 */
static void _init_com_slave (void)
{
	uint32_t id = get_usart_id_from_addr(lin_desc3.addr);

	/* Configure Pios usart*/
	pio_configure(&pins_com3[0], ARRAY_SIZE(pins_com3));

	/* Init LIN SLAVE data Node 0 */
	lin_init(&lin_desc3, LIN_SLAVE_NODE_NUM);

	/* Configure interrupts */
	usart_enable_it(lin_desc3.addr, US_IER_LINID);
	aic_set_source_vector(id, _com3_slave_handler);
	aic_enable(id);
}
Esempio n. 4
0
/**
 * \brief Button event.
 */
static void _process_button_evt(void)
{
	uint32_t id = get_usart_id_from_addr(lin_desc2.addr);

	switch (key) {
	case 'P':
	case 'p':
		/* No interrupt on Master */
		aic_disable(id);
		/* Configure lin_descriptor MASTER */
		lin_msg_master.id = LIN_FRAME_ID_12;
		lin_msg_master.dlc = sizeof(lin_data_master);
		lin_msg_master.lin_cmd = PUBLISH;
		lin_register_descriptor(LIN_MASTER_NODE_NUM, 0, &lin_msg_master);
		/* Configure lin_descriptor SLAVE */
		lin_msg_slave.id = LIN_FRAME_ID_12;
		lin_msg_slave.dlc = sizeof(lin_data_slave);
		lin_msg_slave.lin_cmd = SUBSCRIBE;
		lin_msg_slave.pfnct = lin_slave_task_ID12,
		lin_register_descriptor(LIN_SLAVE_NODE_NUM, 0, &lin_msg_slave);
		memcpy(&lin_data_master, "12345678", sizeof(lin_data_master));
		break;

	case 'S':
	case 's':
		/* Configure lin_descriptor MASTER */
		lin_msg_master.id = LIN_FRAME_ID_15;
		lin_msg_master.dlc = sizeof(lin_data_master);
		lin_msg_master.lin_cmd = SUBSCRIBE;
		lin_register_descriptor(LIN_MASTER_NODE_NUM, 1, &lin_msg_master);
		/* Configure lin_descriptor SLAVE */
		lin_msg_slave.id = LIN_FRAME_ID_15;
		lin_msg_slave.dlc = sizeof(lin_data_slave);
		lin_msg_slave.lin_cmd = PUBLISH;
		lin_register_descriptor(LIN_SLAVE_NODE_NUM, 1, &lin_msg_slave);
		/* Interrupt Master, wait transfert complete */
		aic_enable(id);
		memcpy(&lin_data_slave, "87654321", sizeof(lin_data_slave));
		break;

	default:
		aic_disable(id);
		lin_msg_master.lin_cmd = IGNORE;
		lin_msg_slave.lin_cmd = IGNORE;
		break;
	}
}