На шине i2c два ведомых устройства - часы реального времени и EEPROM. Шину опрашивают два мастера ATmega128 (драйверы с его стороны вроде бы нареканий не вызывают) и MSP430 (его драйверами как раз и занимаюсь). ATmega128 опрашивает часы реального времени с периодом 0.1 сек. MSP430 - работает с EEPROM. И вроде нормально работает. Но в тот момент, когда EEPROM'ина отрабатывает цикл записи, и у меня, со стороны MSP430, естественно выставляется NACKIFG возникают проблемы. MSP посылает адрес устроуства с битом R/W после строки I2CTCTL|=I2CSTP+I2CSTT;//установить I2CSTP для автоматич. генерации //STOP в конце передачи и установить I2CSTT //для отправки условия старт, далее не получив ACK и выставив NACKIFG не передает данные, не генерит "STOP" и держит флаг TXRDYIFG или RXRDYIFG (в зависимости от режима). Вроде все правильно. Я это все отслеживаю, но сгенерить СТОП "вручную" не получается ну никак! В результате ATmega останавливается и ждет... Помогите.
|