|
@@ -16,6 +16,8 @@
|
|
|
|
|
|
#if defined (MAI_12)
|
|
|
|
|
|
+//uint16_t ai_state_bit;
|
|
|
+
|
|
|
uint8_t ai_mux; // выход сдвигового регистра U1010 (управляет MUX 301, 401)
|
|
|
// мультиплексоры отвечат за коммутацию аналоговых входов и АЦП
|
|
|
|
|
@@ -40,6 +42,7 @@ led_t ai_alarm_led[12] = {IO_1_R, IO_2_R, IO_3_R, IO_4_R,
|
|
|
IO_9_R, IO_10_R, IO_11_R, IO_12_R};
|
|
|
|
|
|
|
|
|
+
|
|
|
//
|
|
|
void ai_init(void)
|
|
|
{
|
|
@@ -52,6 +55,7 @@ void ai_init(void)
|
|
|
// Установить режим измерения каналов с 1 по 12.
|
|
|
void ai_set_meas_mode(void)
|
|
|
{
|
|
|
+#if 0
|
|
|
for (uint8_t i = 1; i < 13; i++)
|
|
|
{
|
|
|
if (settings.ai_mode_bits & (1 << (i - 1)))
|
|
@@ -59,6 +63,12 @@ void ai_set_meas_mode(void)
|
|
|
else
|
|
|
ai_set_mode_word((MEAS_CHAN_MODE_t)0, i);
|
|
|
}
|
|
|
+#endif
|
|
|
+ for (int i = 0; i < AI_NUMBER; i++)
|
|
|
+ {
|
|
|
+ if (settings.ai[i].mode)
|
|
|
+ ai_set_mode_word((MEAS_CHAN_MODE_t)1, i);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// Настройка внешнего ADC
|
|
@@ -254,6 +264,35 @@ void ai_connect_channel(uint8_t channel)
|
|
|
//print_binary_byte(ai_mux);
|
|
|
}
|
|
|
|
|
|
+//
|
|
|
+void ai_set(void)
|
|
|
+{
|
|
|
+ for (int i = 0; i < AI_NUMBER; i++)
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+#if 0
|
|
|
+ for (int i = 0; i < DI_NUMBER; i++)
|
|
|
+ {
|
|
|
+ if ((settings.di_mode_bits & (1 << i)) != d_inputs[i].mode)
|
|
|
+ {
|
|
|
+ d_inputs[i].mode = settings.di_mode_bits & (1 << i);
|
|
|
+ if (d_inputs[i].mode == 0)
|
|
|
+ {
|
|
|
+ d_inputs[i].cnt = 0;
|
|
|
+ d_inputs[i].p_flag = false;
|
|
|
+ di_cnt[i] = 0;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ di_state_bit &= ~(1 << i);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+#endif
|
|
|
+}
|
|
|
+
|
|
|
// Утсновить режим измерения канала (ток или напряжение)
|
|
|
void ai_set_mode(MEAS_CHAN_MODE_t mode, uint8_t channel)
|
|
|
{
|
|
@@ -279,6 +318,7 @@ void ai_set_mode(MEAS_CHAN_MODE_t mode, uint8_t channel)
|
|
|
// Формируем слово режима работы каналов (ai_mode)
|
|
|
void ai_set_mode_word(MEAS_CHAN_MODE_t mode, uint8_t channel)
|
|
|
{
|
|
|
+#if 0
|
|
|
if (mode == MEAS_CURRENT)
|
|
|
{
|
|
|
if (channel < 7)
|
|
@@ -291,6 +331,19 @@ void ai_set_mode_word(MEAS_CHAN_MODE_t mode, uint8_t channel)
|
|
|
ai_mode &= ~(1 << (channel - 1));
|
|
|
else
|
|
|
ai_mode &= ~(1 << (channel + 1));
|
|
|
+#endif
|
|
|
+ if (mode == MEAS_CURRENT)
|
|
|
+ {
|
|
|
+ if (channel < 7)
|
|
|
+ ai_mode |= (1 << channel);
|
|
|
+ else
|
|
|
+ ai_mode |= (1 << channel);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ if (channel < 7)
|
|
|
+ ai_mode &= ~(1 << channel);
|
|
|
+ else
|
|
|
+ ai_mode &= ~(1 << channel);
|
|
|
}
|
|
|
|
|
|
// Сигнал питания внешних датчиков
|
|
@@ -306,6 +359,14 @@ void ai_ext_sens_power(uint16_t state)
|
|
|
void ai_leds_processing(void)
|
|
|
{
|
|
|
//uint16_t foo = 0x800;
|
|
|
+#if 0
|
|
|
+ // Управление индикацией вкл/выкл входов
|
|
|
+ for (uint8_t i = 0; i < AI_NUMBER; i++) {
|
|
|
+ if (settings.ai_state_bits & (1 << i)) {
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+#endif
|
|
|
|
|
|
// Управление индикацией аварий (12 красных LED) (слово ai_alarm)
|
|
|
for (uint8_t i = 0; i < AI_NUMBER; i++) {
|