Selaa lähdekoodia

Исправил опрос аварий аналоговых входов.

TelenkovDmitry 7 kuukautta sitten
vanhempi
commit
5363307afd

+ 1 - 1
fw/modules/dac/dac_transport.c

@@ -14,7 +14,7 @@
 // PD1 - CS_DAC2
 // PD0 - CS_DAC3
 // PD3 - CS_DAC4
-void dac_gpio_init(void)
+void dac_init(void)
 {
     gpio_init_type gpio_initstructure;
     spi_init_type spi_init_struct;

+ 1 - 1
fw/modules/dac/dac_transport.h

@@ -13,7 +13,7 @@ typedef enum
 } DAC_CHANNEL;
 
 //
-void dac_gpio_init(void);
+void dac_init(void);
 
 //
 void dac_test(DAC_CHANNEL ch, uint16_t val);

+ 3 - 3
fw/modules/io/analog_input.c

@@ -145,7 +145,7 @@ void ai_processing(void)
     {
         adc_get_two_channles(channel_name[i], channel_name[i + 8]);
     }
-#if 1    
+#if 0    
     printf("end\r\n");
     adc_print_data();
     printf("end\r\n");  
@@ -200,7 +200,7 @@ void adc_task(void *params)
         
         ai_leds_processing();
         
-        vTaskDelay(10);
+        //vTaskDelay(10);
     }
 }
 
@@ -272,7 +272,7 @@ void ai_set_mode(MEAS_CHAN_MODE_t mode, uint8_t channel)
           
     sh_ai_mode(ai_mode);
     
-    printf("Analog input mode: ");
+    //printf("Analog input mode: ");
     print_binary_half_word(ai_mode);
 }
 

+ 7 - 15
fw/modules/shift_reg/shift_reg.c

@@ -70,7 +70,7 @@ void sh_init(void)
     spi_default_para_init(&spi_init_struct);
     spi_init_struct.transmission_mode = SPI_TRANSMIT_FULL_DUPLEX;
     spi_init_struct.master_slave_mode = SPI_MODE_MASTER;
-    spi_init_struct.mclk_freq_division = SPI_MCLK_DIV_32; //SPI_MCLK_DIV_2;
+    spi_init_struct.mclk_freq_division = SPI_MCLK_DIV_32;
     spi_init_struct.first_bit_transmission = SPI_FIRST_BIT_MSB;
     spi_init_struct.frame_bit_num = SPI_FRAME_8BIT;
     spi_init_struct.clock_polarity = SPI_CLOCK_POLARITY_HIGH;//SPI_CLOCK_POLARITY_LOW;
@@ -89,7 +89,7 @@ void sh_init(void)
 uint16_t sh_ai_mode(uint16_t val)
 {
     uint16_t ret = 0;
-    
+
     // Данные отправлеяются во второй регистр U402
     while (spi_i2s_flag_get(SH_SPI, SPI_I2S_TDBE_FLAG) == RESET);
     SH_SPI->dt = (0x003F) & (val >> 8);
@@ -110,7 +110,9 @@ uint16_t sh_ai_mode(uint16_t val)
     nop(5);
     gpio_bits_reset(GPIOD, GPIO_PINS_0);
     nop(5);
-
+    
+    vTaskDelay(1);
+    
     // Данные отправлеяются во второй регистр U402
     while (spi_i2s_flag_get(SH_SPI, SPI_I2S_TDBE_FLAG) == RESET);
     SH_SPI->dt = (0x003F) & (val >> 8);
@@ -131,8 +133,9 @@ uint16_t sh_ai_mode(uint16_t val)
     nop(5);
     gpio_bits_reset(GPIOD, GPIO_PINS_0);
     nop(5);
-    
+   
     //printf("SH return: %X\r\n", ret);
+    
     return ret;    
 }
 
@@ -150,17 +153,6 @@ void sh_ai_connect(uint16_t val)
     gpio_bits_set(GPIOD, GPIO_PINS_3);
     nop(5);
     gpio_bits_reset(GPIOD, GPIO_PINS_3);
-#if 0    
-    while (spi_i2s_flag_get(SH_SPI, SPI_I2S_TDBE_FLAG) == RESET);
-    SH_SPI->dt = val;
-
-    while (spi_i2s_flag_get(SH_SPI, SPI_I2S_RDBF_FLAG) == RESET);
-    ret = SH_SPI->dt;
-    
-    gpio_bits_set(GPIOD, GPIO_PINS_3);
-    nop(5);
-    gpio_bits_reset(GPIOD, GPIO_PINS_3);
-#endif    
 }
 
 //

+ 1 - 0
fw/user/main.cpp

@@ -144,6 +144,7 @@ void init_task(void *argument)
     
 #if defined (MAO_8)    
     
+    dac_init();
     xTaskCreate(dac_task, "dac_task", 2*configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL);
     
 #endif 

BIN
output/fw.bin


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 452 - 453
project/ewarm/iap/iap.dep


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 566 - 602
project/ewarm/module_universal_io.dep


+ 1 - 1
project/ewarm/module_universal_io.ewp

@@ -225,7 +225,7 @@
                     <state>AT_START_F403A_V1</state>
                     <state>PRINTF_STDLIB</state>
                     <state>DEBUG</state>
-                    <state>MAI_12</state>
+                    <state>MAO_8</state>
                 </option>
                 <option>
                     <name>CCPreprocFile</name>

BIN
tools/__pycache__/mb_registers.cpython-312.pyc


+ 7 - 6
tools/analog_in.py

@@ -105,20 +105,21 @@ def main():
 
     '''Режим работы аналоговых входов'''
     # print(ai.get_inputs_mode())
-    ai.set_inputs_mode(0b00001)
+    # ai.set_inputs_mode(0b00001)
     print(ai.get_inputs_mode())
 
     '''Питание внешних датчиков'''
-    ai.set_ext_sens_power(1)
+    # ai.set_ext_sens_power(1)
 
     '''Аварии аналоговых входов'''
-    for i in range(100):
-        print(ai.get_inputs_alarm())
-        sleep(1)
+    # for i in range(100):
+    #     print(ai.get_inputs_alarm())
+    #     sleep(1)
+
     # ai.get_raw_inputs()
     # ai.print_raw_inputs()
 
-    # ai.show_graph('AIN_1')
+    ai.show_graph('AIN_2')
 
 
 if __name__ == '__main__':

+ 32 - 0
tools/analog_out.py

@@ -0,0 +1,32 @@
+from io_module import IO_Module
+from modbus import Modbus
+from log_reader import AnalogInputLogReader
+import colorama
+from colorama import Fore
+from time import sleep
+from serial import Serial
+from mb_registers import AO_REGS
+
+
+class IO_AnalogOutput(IO_Module):
+
+    def __init__(self, modbus: Modbus):
+        self.modbus = modbus
+        super().__init__(self.modbus)
+
+
+
+def main():
+    colorama.init(autoreset=True)
+    serial_port = Serial('COM24', 115200, timeout=0.05, parity='N', xonxoff=False)
+    ao_modbus = Modbus(serial_port, 1)
+    ao = IO_AnalogOutput(ao_modbus)
+
+    '''Тесты отдельного модуля аналоговых выходов'''
+    ao.sys.get_system_vars()
+
+
+
+if __name__ == '__main__':
+    main()
+

+ 2 - 0
tools/mb_registers.py

@@ -12,4 +12,6 @@ DIO_REGS = {'in_bits': 0x0100, 'in_cnt': 0x0102,'in_mode': 0x0120, 'in_norm': 0x
 
 AI_REGS = {'ain_mode': 0x0300, 'ain_alarm': 0x0301, 'ain_raw': 0x0302, 'esens_pow': 0x0320}
 
+AO_REGS = {}
+
 LOG_REGS = {'log_info': 0x0900, 'log_ent': 0x0901, 'arch_cap': 0x0902, 'arch_ent': 0x0903, 'arch_per': 0x0904}

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä