[an error occurred while processing this directive]
|
а проблемму решил так(хотя еще не точно, решил или нет :) )
(ahdl):
DETERM_START_STOP_TRIG1 : DFF;
DETERM_START_STOP_TRIG2 : DFF;
INTERNAL_CLK = SCL & START_STOP_BIT # CLK & !START_STOP_BIT ;
TEST_START_STOP_BIT = START_STOP_BIT;
TEST_ACK_BIT = START_STATE;
DETERM_START_STOP_TRIG1.(CLK,D) = (INTERNAL_CLK,SDA_IN );
DETERM_START_STOP_TRIG2.(CLK,D) = (INTERNAL_CLK, DETERM_START_STOP_TRIG1);
--определение СТАРТ состояния шины I2C
--SDA|1->0
--SCL|1->1
START_STATE = !DETERM_START_STOP_TRIG1 & DETERM_START_STOP_TRIG2 & SCL;
--определение СТОП состояния шины I2C
--SDA|0->1
--SCL|1->1
STOP_STATE = DETERM_START_STOP_TRIG1 & !DETERM_START_STOP_TRIG2 & SCL;
В теории работает. Оживим плату, проверим на деле
E-mail: info@telesys.ru