Всем доброго времени суток!
Хочется разобраться с протоколом I2C (он же TWI, он же IIC). Никак не получается осилить...
1) Сначала попробовал напрямую - через регистры. Установил скорость (TWBR=0x20; TWSR=0x00; // F_CPU=8Mhz, F_SCL=100Khz), написал функцию отправки байта. В мастере через каждые 500мс слал этой функцией байт 0x0F. В протеусе I2C Debugger пишет что все хорошо, так и есть. Но! Засада началась с написанием слэйва - никакой документации на эту тему я не нашел, так и не получилось заставить его принять байт... (Протеус в i2c дебаггере каждому посланному байту ставил NACK, да и в осциллографе видно...)
2) И решил я воспользоваться готовым решением - библой twi.h (а пишу я в cvAVR на С). Но... Как решил воспользоваться, так и раздумал. Вообще ничего не понял... В ней какие-то 3 непонятные функции (ну, init-то понятен...).
Вообще мне это нужно для чтения данных с нунчака (от Nintendo Wii, там 3осевой акселерометр, 2осевой джойстик и 2кнопки), но хочу полностью освоить, так как на этом протоколе куча всего...
Подскажите пожалуйста, как можно реализовать код слэйва, и код мастера на прием (т.е. когда надо считать данные со слэйва). Мой уровень - сильно новичок (Занимаюсь этим делом буквально неделю, из реализованного - рулежка pwm-мом моторами через l293b, Bluetooth-удлинитель UART-а, каскад из 2 сдвиговых регистров).
Заранее спасибо.