ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
1 июля
191445
Athlon64 (23.04.2010 09:07, просмотров: 3688) MBedder
Необходимо на SAM7X256 в режиме мастера опрашивать устройство по I2C (устройство сделано на меге8, представляет собой БП с контролем напряжения, умеет выдавать его по I2C, работает в режиме слейв, обеспечивает подтяжку к +12В). В качестве буфера применил P82B96 (проверил, уровни верные). За основу взял пример basic-twi-eeprom-project, стандартные библиотеки twi и twid. После инициализации TWI уровни TWCK и TWD +12В, как положено. #define TWCK 100000 AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_TWI;//AT91C_ID_TWI; TWI_ConfigureMaster(AT91C_BASE_TWI, TWCK, BOARD_MCK); TWID_Initialize(&twid, AT91C_BASE_TWI); После попытки прочитать чтолибо из устройтва SAM7X256 роняет уровни TWCK и TWD до 0В и держит. Байты не передаёт. Посылка бита STOP в TWI линии не отпускает. Естесственно флаг принятого байта от устройства не выставляется. В асинхронном режиме не попадаем в прерывание по принятому байту, в синхронном циклимся ожидая байт (убрал проверку таймаута, иначе постоянный таймаут). Пробовал циклить чтение из устройства while(1) TWID_Read(&twid, 0x08, 0, 0, pData, 8,0); смотрел что творится на TWI осциллографом - обе линии лежат в нуле и не шевелятся. На команду STOP реакции нет. Сорри за сумбур, формулировал в торопях. В чём может быть проблема?