Ну, я расписал то, что бросилось в глаза при беглом просмотре кода.
Опыта работы с DS12887 у меня нет. Понять, что как переключается, из приведенного кода сможет только телепат
Выкладывай весь код, да с комментами...
Технический форум по робототехнике.
PORTD = PORTD & 0b10111111; //DS_CLR
_delay_us(5);
PORTD = PORTD | 0b01000000; //DS_SET строб считывания данных с шины
sec=PORTC;
PORTD = PORTD & 0b10111111; //DS_CLR
_delay_us(5);
sec=PORTC;
PORTD = PORTD | 0b01000000; //DS_SET строб считывания данных с шины
Тут ты считываешь данные после пассивного состояния DS.
и кто такой "AD_DDR", какое он имеет отношение к "Порт C - шина адреса-данных."
Аналогично не надо устанавливать ресет и cs
Flint писал(а):Вот тут у меня тоже возникли сомнения, когда считывание происходит - написано было по отрицательному импульсу, т.е. вроде по переходу 1->0. Пробовал и так...
что после такого перехода данные остаются на шине всего 10-80нс
данные остаются на шине всего 10-80нс
Видим, что положительным импульсом на входе AS микросхеме указывается, что на шине данных находится номер регистра, с которым мы хотим работать. А далее положительным импульсом на входе DS указываем микросхеме, что нужно прочитать или записать данные из выбранного регистра на шину данных
именно этот положительный импульс, т.е. 0->1 и фиксирует на шине - адрес, после такого перепада часы должны у себя это зафиксировать. Далее другим управляющим сигналом, тоже именно перепадом указываем, что делать (читать/писать). Это по Мотороловскому алгоритму, по Интеловскому чуть по-другому, но сути не меняет...положительным импульсом на входе AS микросхеме указывается...
Flint писал(а):Да ну! По-моему фиксирование данных на шине может происходить либо по полжительному импульсу(0->1) или по отрицательному (1->0). После чего можно спокойно считывать данные.
Flint писал(а):А нет, привязан, к перходу DS от 0 к 1. Но к этому моменту данные на шине уже появились после перхода DS от 1 к 0 с задержкой tDDR.