Exemple #1
0
static void dmx_stop_data(void) {
	uint32_t i;

	if (is_stopped) {
		return;
	}

	if (dmx_send_always) {
		do {
			dmb();
			if (dmx_send_state == DMXINTER) {
				while ((EXT_UART->USR & UART_USR_BUSY) == UART_USR_BUSY)
					;
				dmb();
				dmx_send_state = IDLE;
			}
			dmb();
		} while (dmx_send_state != IDLE);
	}

	dmx_send_always = false;

	__disable_fiq();
	isb();

	irq_timer_set(IRQ_TIMER_0, NULL);

	dmx_receive_state = IDLE;

	for (i = 0; i < DMX_DATA_BUFFER_INDEX_ENTRIES; i++) {
		dmx_data[i].statistics.slots_in_packet = 0;
	}

	is_stopped = true;
}
Exemple #2
0
void dmx_init(void) {
	h3_gpio_fsel(dmx_data_direction_gpio_pin, GPIO_FSEL_OUTPUT);
	h3_gpio_clr(dmx_data_direction_gpio_pin);	// 0 = input, 1 = output

#ifdef LOCIG_ANALYZER
	h3_gpio_fsel(12, GPIO_FSEL_OUTPUT);
	h3_gpio_clr(12); // FIQ
	h3_gpio_fsel(11, GPIO_FSEL_OUTPUT);
	h3_gpio_clr(11); // BREAK
	h3_gpio_fsel(6, GPIO_FSEL_OUTPUT);
	h3_gpio_clr(6);  // DR
	h3_gpio_fsel(14, GPIO_FSEL_OUTPUT);
	h3_gpio_clr(14); // SC
	h3_gpio_fsel(16, GPIO_FSEL_OUTPUT);
	h3_gpio_clr(16); // DATA
#endif

	dmx_clear_data();

	dmx_data_buffer_index_head = 0;
	dmx_data_buffer_index_tail = 0;

	rdm_data_buffer_index_head = 0;
	rdm_data_buffer_index_tail = 0;

	dmx_receive_state = IDLE;

	dmx_send_state = IDLE;
	dmx_send_always = false;

	irq_timer_init();

	irq_timer_set(IRQ_TIMER_1, irq_timer1_dmx_receive);
	H3_TIMER->TMR1_INTV = 0xB71B00; // 1 second
	H3_TIMER->TMR1_CTRL &= ~(TIMER_CTRL_SINGLE_MODE);
	H3_TIMER->TMR1_CTRL |= (TIMER_CTRL_EN_START | TIMER_CTRL_RELOAD); // 0x3;

#if (EXT_UART_NUMBER == 1)
	gic_fiq_config(H3_UART1_IRQn, 1);
#elif (EXT_UART_NUMBER == 3)
	gic_fiq_config(H3_UART3_IRQn, 1);
#else
 #error Unsupported UART device configured
#endif

	uart_init();

	__disable_fiq();
	arm_install_handler((unsigned) fiq_dmx, ARM_VECTOR(ARM_VECTOR_FIQ));
}
Exemple #3
0
long rod_CreateFile_edit (void)
{

  s32 i = 0;  		
	FIL Fil;
	FIL Fil2;
	FRESULT result;	
	FATFS   fls;          
	FILINFO fno;
	long res = 0;
	char t_str[25];
	

	__disable_irq();
	__disable_fiq(); 
	
	IWDG_ReloadCounter();
	
	res = f_mount(&fls, "0:", 1);
				
	res = f_open(&Fil,"0:Road.0", FA_CREATE_ALWAYS | FA_WRITE);	
	f_printf(&Fil,"%s", "без маршрута   ");		
	f_putc(0,&Fil);
	
		
//	f_open(&Fil,"0:Road.000", FA_OPEN_ALWAYS | FA_WRITE);	
//	f_lseek(&Fil, 16);
	
	for(i=1;i<500;i++)
	{
			{
					f_printf(&Fil,"%s %03u      ","точка",i);				
					f_putc(i,&Fil);
	
			}									
	}		
	//Получаем размер 
	res = f_size(&Fil);		
	f_close(&Fil);

	IWDG_ReloadCounter();	
	
	//Только чтение
	f_chmod("0:Road.0", AM_RDO, AM_RDO | AM_ARC);	
	
	f_open(&Fil,"0:Road.log", FA_CREATE_ALWAYS | FA_WRITE);
	f_printf(&Fil,"%s", "Road.0");
	f_close(&Fil);
	
	f_open(&Fil2,"0:Roads.txt", FA_CREATE_ALWAYS | FA_WRITE);
	f_printf(&Fil2,"%s", "Road.0");
	f_close(&Fil2);	

	
//	//Проверяем размер 
//	f_open(&Fil,"0:Road.100", FA_OPEN_ALWAYS);				
//	//if (f_size(&Fil) == 16000) res = 1;			
//	res = f_size(&Fil);
//	f_close(&Fil);	
	
	f_mount(0,"0:", 0);	
	
	__enable_irq();
	__enable_fiq();
	
  return res;		 
}