Цитата(aaarrr @ Sep 23 2006, 15:51)

В циррусе тоже люди работают. На старых EDB все было правильно.
Тоесть считать за глюк и лучше поставить буфер. А как было на старых?
Цитата(aaarrr @ Sep 23 2006, 15:51)

Я бы еще добавил pull-up на CE. Если INT1 - это сигнал процессора, то следует учесть, что срабатывают они только по высокому уровню.
Что касается SFRM, то все будет зависеть от того, что у Вас сидит на SPI. Если только часы, то с SFRM можно ничего не делать.
Именно pull-up, ведь ds1306 активна по высокому CE. И как написано в datasheet internally pull-down 55kohm?
А по SFRM я действительно что-то, видно, не понимаю. Нет не одни часики ещё SD/MMC в SPI.
Почитав доку вот что у меня сложилось. Я рассматривал режимы SPI при SPO=1 SPH=1 8 битная передача и SPI в мастере. При этом в момент простоя SCLK будет в HIGH. [начальное состояние CE_DS1306 = 0; CS_SD = 1; ]
Допустим нужно пообщаться с часиками.
Устанавливаю CE_DS1306 = 1; // CS_DS1306 идёт на GPIO
SSPDR=ADDR_SEC; //работаю напрямую с SSPDR записываю адрес (как я понимаю при этом появляется SCLK и по SSPTXD поплыли биты)
SSPDR=NEW_SEC; //так как FIFO глубокий пишу сразу туда и байт данных
while(~(SSPSR & (1 << TFE))); //Дожидаюсь завершения передачи
// после опустошения SCLK переходи в HIGH и остается в нём.
Устанавливаю CE_DS1306 = 0;
При работе с SD
CS_SD = 0;
// для простоты аналогично, хотя собираюсь, конечно, через DMA
CS_SD = 1;
и у меня получилось что для этого случая SFRM мне не нужен. В чём ошибка?