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; }
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)); }
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; }