|
Инициализирую после Reseta так:
TWBR = 28; //частота проца 7372800, итого частота I2C окола 100 000
TWSR = 0;
в TWCR устанавливаю TWIE,TWEN,TWINT;
Стартую I2C:
в TWCR устанавливаю TWIE,TWEN,TWSTA,TWEA,TWINT;
Стопаю :
в TWCR устанавливаю TWIE,TWEN,TWSTO,TWINT;
Вначале все пашет как полагается.
А через некоторое время(может час, может чуть меньше) бездействия TWI, а может с момента перезапуска, модуль TWI отказывается выдавать Start condition.
Значение регистров при этом:
TWBR - 0x1c
TWCR - 0x65
TWSR - 0xf8
т.е. все как полагается, но Start не генерится.
SCL и SDA притянуты к 1. Для того, чтобы притянуть их к 0 достаточно 1 мА.
Может перед тем, как выдать Start надо модуль TWI перезапустить обнулив TWEN?
Если че, больно не бейте, ATmegу только четвертый день в руках держу.
E-mail: info@telesys.ru