Господа! Заказчик предовставил для разработки модули Modtronix SBC68EC + IOR5E (www.modtronix.com) + реализованный уже WEB-сервер в исходниках. Жуть редкая - разводка платы оставляет желать, есть схемотехнич. ошибки (например, последовательный резистор в цепи SDA 2,7k). Вобщем - при работе страшно глючит I2C. На шине - 24C512 и часы реального времени DS1307. Чтение более-менее наладил, но вот запись... Перевел шину в 100кГц - не помогло. В фирменных подпрограммах работы с шиной I2C начисто отсутствует обработка коллизий. Подпрограммы тупо возвращают значение бита BCLIF ( Bus Collision Interrupt Flag bit) из регистра PIR2 и никак не отрабатывают факт его установки. В даташите кроме фразы "A bus collision occurred while the SSP module (configured in I2C Master mode) was transmitting (must be cleared in software)" ничего нет... Какова последовательность разрешения коллизии?
|