DS323x SQW timing *löst*

Övriga diskussioner relaterade till komponenter. Exempelvis radiorör, A/D, kontaktdon eller sensorer.
Användarvisningsbild
Icecap
Inlägg: 26147
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

DS323x SQW timing *löst*

Inlägg av Icecap »

Vi använder DS3232 och det fungerar bra. Men för att spara tid startar jag med att läsa datum & tid vid power-on och sedan har jag ställd SQW till att ge 1Hz pulser ut. Denna pinne sitter sedan till en IRQ så att jag får en interrupt varje rising edge.

Internt läsas tiden och konverteras till en räknare på "sekunder sedan xxxx-01-01 00:00:00" (kallas EPOCH-tid). Varje interrupt stegar sedan upp denna variabel med 1 och sedan var det klart. På det vis släpper jag att läsa I²C-bussen jämt och ständigt och konvertera datum/tid hela tiden.

Och att spilla tiden vid att låta en 50MHz µC polla en I²C-bus känns ju dumt, det finns en del annat att göra ändå.

Men en fråga jag inte har hittat svar på är:
När de interna register uppdaterar (varje sekund) växlar SQW-utgången - men vilken flank motsvarar denna uppdatering?

Orsaken är att jag enkelt kan starta SQW till att ge pulser, pulserna har ung. 50% duty-cycle och jag har inget problem med att låta systemet vänta till att SQW visar att en uppdatering är avklarat. En viss vänttid behövs ändå för att de seriell portar ska stabiliseras osv. så den tiden kan användas till att kolla nivån på IRQ-pinnen innan jag enablar interrupten.

Så om någon vet om den interna uppdateringen sammanfaller med rising edge eller falling edge är jag mycket intresserat av att få veta detta.

EDIT: En kontakt till Dallas löste problemet: uppdateringen av den interna räknaren utlöser en fallande flank på SQW.