示例#1
0
void boardsupport_init(void) 
{
	central_data_t *central_data;
	irq_initialize_vectors();
	cpu_irq_enable();
	Disable_global_interrupt();
		
	sysclk_init();

	//delay_init(sysclk_get_cpu_hz());
		
	INTC_init_interrupts();

	central_data=central_data_get_pointer_to_struct();
	
	#ifdef TELEMETRY_USE_UART
		uart_int_set_usart_conf(TELEMETRY_UART_INDEX, asv_debug_uart_conf());
		//uart configuration
		uart_int_init(TELEMETRY_UART_INDEX);
		uart_int_register_write_stream(uart_int_get_uart_handle(TELEMETRY_UART_INDEX), &(central_data->wired_out_stream));
		// Registering streams
		buffer_make_buffered_stream_lossy(&(wired_in_buffer), &(central_data->wired_in_stream));
		uart_int_register_read_stream(uart_int_get_uart_handle(TELEMETRY_UART_INDEX), &(central_data->wired_in_stream));
		central_data->debug_in_stream=&central_data->wired_in_stream;
		central_data->debug_out_stream=&central_data->wired_out_stream;

	#endif
		
	central_data_init();

	Enable_global_interrupt();

}
示例#2
0
void acoustic_init(audio_t*                     audio_data,
                   int32_t                      UID,
                   ahrs_t*                      ahrs,
                   Position_estimation*         position_estimation,
                   remote_t*                    remote,
                   navigation_t*                navigation,
                   stabilisation_copter_t*      stabilisation_copter,
                   control_command_t*           controls_nav,
                   Mavlink_waypoint_handler*    waypoint_handler,
                   byte_stream_t*               telemetry_down_stream)
{
    //init dependencies
    audio_data->ahrs                    =   ahrs;
    audio_data->position_estimation     =   position_estimation;
    audio_data->remote                  =   remote;
    audio_data->navigation              =   navigation;
    audio_data->stabilisation_copter    =   stabilisation_copter;
    audio_data->controls_nav            =   controls_nav;
    audio_data->waypoint_handler        =   waypoint_handler;
    audio_data->telemetry_down_stream   =   telemetry_down_stream;

    // uart setting
    usart_config_t usart_conf_audio             = {};
    usart_conf_audio.mode                       = UART_IN;
    usart_conf_audio.uart_device.uart           = (avr32_usart_t*)&AVR32_USART2;
    usart_conf_audio.uart_device.IRQ            = AVR32_USART2_IRQ;
    usart_conf_audio.uart_device.receive_stream = NULL;
    usart_conf_audio.options                    = {};
    usart_conf_audio.options.baudrate           = 57600;
    usart_conf_audio.options.charlength         = 8;
    usart_conf_audio.options.paritytype         = USART_NO_PARITY;
    usart_conf_audio.options.stopbits           = USART_1_STOPBIT;
    usart_conf_audio.options.channelmode        = USART_NORMAL_CHMODE;
    usart_conf_audio.rx_pin_map                 = {AVR32_USART2_RXD_0_1_PIN, AVR32_USART2_RXD_0_1_FUNCTION};
    usart_conf_audio.tx_pin_map                 = {AVR32_USART2_TXD_0_1_PIN, AVR32_USART2_TXD_0_1_FUNCTION};

    uart_int_set_usart_conf(UID, &usart_conf_audio);

    //uart configuration
    uart_int_init(UID);
    //uart_int_register_write_stream(uart_int_get_uart_handle(UID), &(centralData->audio_stream_out));
    // Registering streams
    buffer_make_buffered_stream_lossy(&(audio_data->audio_buffer), &(audio_data->audio_stream_in));
    uart_int_register_read_stream(uart_int_get_uart_handle(UID), &(audio_data->audio_stream_in));
}
示例#3
0
void initialise_board(void) {
		int i;
		central_data_t *central_data=central_data_get_pointer_to_struct();
		
		irq_initialize_vectors();
		cpu_irq_enable();
		Disable_global_interrupt();
			
		// Initialize the sleep manager
		sleepmgr_init();
		sysclk_init();
		INTC_init_interrupts();

		delay_init(sysclk_get_cpu_hz());
		time_keeper_init();
		
//		time_keeper_init_synchronisation();

		init_LEDs();
		switch_LED(1, LED_ON);
		switch_LED(0, LED_ON);

		pwm_servos_init(true);
		
		// set up UART for main telemetry
		uart_int_set_usart_conf(0, asv_xbee_uart_conf());
		uart_int_init(0);
		uart_int_register_write_stream(uart_int_get_uart_handle(0), &central_data->xbee_out_stream);
		
		//init_UART_DMA(0);
		//register_write_stream_dma(get_UART_handle(0), &central_data->xbee_out_stream);
		buffer_make_buffered_stream(&(central_data->xbee_in_buffer), &(central_data->xbee_in_stream));
		uart_int_register_read_stream(uart_int_get_uart_handle(0), &(central_data->xbee_in_stream));

		uart_int_set_usart_conf(4, asv_debug_uart_conf());
		uart_int_init(4);
		uart_int_register_write_stream(uart_int_get_uart_handle(4), &central_data->wired_out_stream);
		
		//init_UART_DMA(0);
		//register_write_stream_dma(get_UART_handle(0), &central_data->wired_out_stream);
		buffer_make_buffered_stream(&(central_data->wired_in_buffer), &(central_data->wired_in_stream));
		uart_int_register_read_stream(uart_int_get_uart_handle(4), &(central_data->wired_in_stream));

		// set up UART for GPS
		uart_int_set_usart_conf(3, asv_gps_uart_conf());
		uart_int_init(3);
		uart_int_register_write_stream(uart_int_get_uart_handle(3), &central_data->gps_out_stream);		
		buffer_make_buffered_stream(&(central_data->gps_in_buffer), &(central_data->gps_in_stream));
		uart_int_register_read_stream(uart_int_get_uart_handle(3), &(central_data->gps_in_stream));

		
		multistream_init(&central_data->multi_telemetry_down_stream);
		multistream_init(&central_data->multi_telemetry_up_stream);

		multistream_add_stream(&central_data->multi_telemetry_down_stream, &central_data->wired_out_stream);
		multistream_add_stream(&central_data->multi_telemetry_down_stream, &central_data->xbee_out_stream);

		multistream_add_stream(&central_data->multi_telemetry_up_stream, &central_data->wired_in_stream);
		multistream_add_stream(&central_data->multi_telemetry_up_stream, &central_data->xbee_in_stream);
		
		/*
		can_bus_init(1, asv_can1_conf());
		can_bus_register_write_stream(&central_data->ext_can_out_stream_data, &central_data->ext_can_out_stream, 1, MAVLINK_COMPONENT_ID, 0x3ff);
		can_bus_register_read_stream(&central_data->ext_can_in_stream_data, &central_data->ext_can_in_stream, 1, MAVLINK_COMPONENT_ID, 0x00);
		*/
		
		// set telemetry stream for mavlink
		//central_data->telemetry_down_stream=&(central_data->xbee_out_stream);
		//central_data->telemetry_up_stream  =&(central_data->xbee_in_stream);
		//central_data->telemetry_down_stream=&(central_data->wired_out_stream);
		//central_data->telemetry_up_stream  =&(central_data->wired_in_stream);
		central_data->telemetry_down_stream= multistream_get_stream(&central_data->multi_telemetry_down_stream);
		central_data->telemetry_up_stream  = multistream_get_stream(&central_data->multi_telemetry_up_stream);
		
		central_data->debug_out_stream=&central_data->wired_out_stream;
		central_data->debug_in_stream=&central_data->wired_in_stream;
		//central_data->debug_out_stream = &central_data->xbee_out_stream;
		//central_data->debug_in_stream  = &central_data->xbee_in_stream;
		
		print_util_dbg_print_init(central_data->debug_out_stream);

		// init error handler as plain text until mavlink is configured
		error_handler_init_plaintext(central_data->debug_out_stream);

		// init mavlink
		// Init mavlink communication
		mavlink_communication_conf_t mavlink_config = 
		{	
			.scheduler_config =
			{
				.max_task_count = 30,
				.schedule_strategy = ROUND_ROBIN,
				.debug = true
			},
			.mavlink_stream_config = 
			{
				.rx_stream   = central_data->telemetry_up_stream,
				.tx_stream   = central_data->telemetry_down_stream,
				.sysid       = MAVLINK_SYS_ID,
				.compid      = MAVLINK_COMPONENT_ID,
				.use_dma     = false
			},
			.message_handler_config =