Comments 3
Clock stretching умеет? Это самая частая причина несовместимости устройств с USI и многой периферии.
Сам хотел спросить. Но это-же переводчик… Таки — умеет.
По крайней мере - для USI
uint8_t TinyI2CMaster::transfer (uint8_t data) {
// ......
// ......
do {
DELAY_T2TWI;
USICR = data; // Generate positive SCL edge.
while (!(PIN_USI_CL & 1<<PIN_USI_SCL)); // Wait for SCL to go high.
DELAY_T4TWI;
USICR = data; // Generate negative SCL edge.
} while (!(USISR & 1<<USIOIF)); // Check for transfer complete.
Но отсутствие прерываний — существенно обесценивает этот код. Ну и — контроль перманентного замыкания SCL на Gnd можно добавить...
Sign up to leave a comment.
Миниатюрные I2C процедуры для всех микроконтроллеров AVR