|
@@ -8,11 +8,13 @@
|
|
|
#include "adc_transport.h"
|
|
|
#include "ms5192t.h"
|
|
|
#include "monitoring.h"
|
|
|
+#include "mux.h"
|
|
|
#include <stdio.h>
|
|
|
|
|
|
#undef DBG
|
|
|
#define DBG if(1)
|
|
|
|
|
|
+#if defined (MAI_12)
|
|
|
|
|
|
uint8_t ai_mux; // выход сдвигового регистра U1010 (управляет MUX 301, 401)
|
|
|
// мультиплексоры отвечат за коммутацию аналоговых входов и АЦП
|
|
@@ -33,20 +35,29 @@ ANALOG_IN_t channel_name[NUMBER_ADC_CH] = {AN_INP_1, AN_INP_2, AN_INP_3,
|
|
|
|
|
|
uint16_t adc_raw_data[NUMBER_ADC_CH];
|
|
|
|
|
|
-//en_crnt_alrm_in
|
|
|
-
|
|
|
+led_t ai_alarm_led[12] = {IO_1_R, IO_2_R, IO_3_R, IO_4_R,
|
|
|
+ IO_5_R, IO_6_R, IO_7_R, IO_8_R,
|
|
|
+ IO_9_R, IO_10_R, IO_11_R, IO_12_R};
|
|
|
|
|
|
|
|
|
+//
|
|
|
+void ai_init(void)
|
|
|
+{
|
|
|
+ sh_init(); // Сдвиговые регистры
|
|
|
+ ai_set_meas_mode(); // Режим измерения
|
|
|
+ ai_ext_sens_power(settings.ext_sens_power); // Питание внешних датчиков
|
|
|
+ ai_adc_init(); // Внешинй ADC
|
|
|
+}
|
|
|
|
|
|
// Установить режим измерения каналов с 1 по 12.
|
|
|
void ai_set_meas_mode(void)
|
|
|
{
|
|
|
- uint8_t bit = 0;
|
|
|
-
|
|
|
for (uint8_t i = 1; i < 13; i++)
|
|
|
{
|
|
|
- bit = settings.ai_mode_bits & (1 << (i - 1));
|
|
|
- ai_set_mode_word((MEAS_CHAN_MODE_t)bit, i);
|
|
|
+ if (settings.ai_mode_bits & (1 << (i - 1)))
|
|
|
+ ai_set_mode_word((MEAS_CHAN_MODE_t)1, i);
|
|
|
+ else
|
|
|
+ ai_set_mode_word((MEAS_CHAN_MODE_t)0, i);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -184,7 +195,11 @@ void adc_task(void *params)
|
|
|
for (;;)
|
|
|
{
|
|
|
ai_alarm = sh_ai_mode(ai_mode);
|
|
|
+
|
|
|
ai_processing();
|
|
|
+
|
|
|
+ ai_leds_processing();
|
|
|
+
|
|
|
vTaskDelay(10);
|
|
|
}
|
|
|
}
|
|
@@ -283,6 +298,24 @@ void ai_ext_sens_power(uint16_t state)
|
|
|
{
|
|
|
if (state)
|
|
|
ai_mux |= 0x80;
|
|
|
+ else
|
|
|
+ ai_mux &= ~(0x80);
|
|
|
+}
|
|
|
+
|
|
|
+// Управления LED
|
|
|
+void ai_leds_processing(void)
|
|
|
+{
|
|
|
+ //uint16_t foo = 0x800;
|
|
|
+
|
|
|
+ // Управление индикацией аварий (12 красных LED) (слово ai_alarm)
|
|
|
+ for (uint8_t i = 0; i < AI_NUMBER; i++) {
|
|
|
+ if (ai_alarm & (1 << i)) {
|
|
|
+ leds[ai_alarm_led[i]].state = LED_ON;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ leds[ai_alarm_led[i]].state = LED_OFF;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//
|
|
@@ -316,4 +349,4 @@ void ai_mode_test(void)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+#endif
|