2009-10-28 4 views
0

이 uC에는 I2C (SMBus)가 제대로 작동하며 USB를 통해 통신 할 수있는 VB GUI가 있으며 (USBXpress 사용) uC에서 I2C 트랜잭션을 별도의 IC로 처리 할 수 ​​있습니다. 문제는 매 1 초마다 uC 폴링을 IC에 등록시켜야한다는 것입니다. 비동기 GUI I2C 트랜잭션을 수행 할 때마다 I2C 트랜잭션이 폴링 I2C 트랜잭션과 충돌하고 모든 I2C 데이터가 GUI에서 이동하게됩니다 (즉, 레지스터 0x00의 데이터가 레지스터 0x01에 표시됨). IC의 I2C 데이터가 올바르게 표시됩니다 (LA로 I2C 버스를 감시 함). 정확하게 무슨 일이 일어나고 어떻게 해결할 수 있습니까?실리콘 이미지의 i2c USBXpress를 사용하는 c8051f32x

답변

0

uC와 I2C 간의 폴링이 GUI 응용 프로그램에서 사용되는 것과 동일한 I2C 버스에서 발생하는 경우 다른 트랜잭션이 완료되기 전에 하나의 트랜잭션이 완료되도록 I2C에 대한 액세스가 제어되는지 확인해야합니다 시작. 어쩌면 당신은 이미이 일을하고 있습니다. 그러나 이것은 질문에서 분명하지 않습니다.

또한 uC 코드의 일부 코드 또는 의사 코드를 게시하면 도움이 될 수 있습니다.

+0

플래그를 추가하려고했습니다 (GUI 트랜잭션이 들어올 때 uC의 동기 폴을 종료하고 GUI 트랜잭션이 완료되면 동기 폴을 다시 시작). 그러나 도움이되지 않습니다. – tosa