Добрый вечер, уважаемые знатоки!
Есть схема с измерением напряжения и тока, используется данный АЦП + ключ на 4053, для переключения каналов, проблема в том, что если по отдельности каналы включать, то все данные корректны, но если переключать каналы (с помощью ключа 4053) в цикле, получается, что канал, например измерения тока "залип", то есть выходные данные с АЦП принадлежать только одному такту измерения. Может есть какие идеи по данному вопросу? Код привожу

Код:
'===========
Config I2cdelay = 10
Config Sda = Portc.4
Config Scl = Portc.5
I2cinit

'==========
Declare Sub Read_adc(byval Configs_1 As Byte)
Declare Sub Adc_get
'===========

Do
   Call Adc_get
   Print "ADC: " ; Znach ; " " ; " V= " ; Fusing(znach_napr , "#.####") ; " I= " ; Fusing(znach_tok , "#.####")
   Print
   Waitms 100
Loop

'====== считываем значения с АЦП MCP3421
Sub Adc_get
   Ch_adc = 1
   Call Read_adc(&B10010000)
   Znach_napr = Znach * 22.22861
   Ch_adc = 0
   Call Read_adc(&B10010011)
   Znach_tok = Znach
   Znach_tok = Znach_tok * 18.7485
End Sub

Sub Read_adc(byval Configs_1 As Byte)
   I2cstart
   I2cwbyte &B11010000                                      ' address
   I2cwbyte Configs_1                                       '  байт конфигурации
   I2cstop
   I2cstart
   I2cwbyte &B11010001                                      ' address+write
   I2crbyte Adat1 , Ack                                     '  первый байт
   I2crbyte Adat2 , Ack                                     '  второй байт
   I2crbyte Adat4 , Nack                                    '  байт конфигурации
   I2cstop
   Temp1 = 256 * Adat1
   Temp4 = Temp1 + Adat2
   Temp4 = Temp4 * 2.048
   Znach = Temp4 / 2048
   If Adat1 = 255 Then Znach = 0
End Sub


Значение в терминал вывожу, значение Znach  не меняется.

Отредактировано stas732 (2017-06-21 17:49:54)