DS1307 RTC und xmega128a1

#2767478
Lesenswert?

Für I²C beim Xmega würde ich einfach das aus AVR1308 nehmen (kann man 
quasi 1:1 kopieren). Dann liest du einfach die 8Bytes (also 
Uhrzeit-Dateum etc) in den Buffer:
1
TWI_MasterRead(&twiMaster,0xD0,8);
Und dann steht der ganze Kram in twiMaster.readData[0:7]

Und wenn du was reinschreiben willst, einfach die Adresse und Wert in 
den SendBuffer
1
SendBuffer[0] = 0x02; //Hours Register;
2
SendBuffer[1] = 3;
3
TWI_MasterWrite(&twiMaster, 0xD0, SendBuffer, 2);
#2769832
Lesenswert?

Pull-Widerstände sind bei I2C eigentlich mit 4,7k immer die richtige 
Wahl (außer du willst sehr hohe Datenraten oder hast sehr lange 
Leitungen). 10k geht bei kurzen leitungen und langsamen Datenraten auch 
noch.

Und der Quarz... überleg doch mal. Das ist eine Echtzeituhr. Also 
braucht das Ding einen Uhrenquarz mit 32,768 kHz. Steht auch auch Seite 
5, bei Pin 1 & 2:
1
Connections for a Standard 32.768kHz Quartz Crystal. The internal 
2
oscillator circuitry is designed for operation with a crystal having a specified 
3
load capacitance (CL) of 6pF. For more information about crystal selection 
4
and crystal layout considerations, refer to Application Note 58: Crystal 
5
Considerations with Dallas Real-Time Clocks. An external 32.768kHz 
6
oscillator can also drive the DS1337. In this configuration, the X1 pin is 
7
connected to the external oscillator signal and the X2 pin is floated.

Der DS1337 C hat übrigens auch einen internen Quarz, der ist natürlich 
nicht ganz so genau (sie Seite 7. + Application Note 58).
Gast #2776440
Lesenswert?

Hallo zusammen,
ich habe den DS1337 gekauft und nach der ober gepostetem Plan eingebaut.
alle Wiederstände sind 4.7 Kohm.

Wenn ich die steuerung einschalte. Macht sie einen RESET danach läuft es 
zwar aber nur bis uhr lesen funktion, dann hängt sie sich auf. Warum 
weiss ich nicht ohne die uhr war es gut.

Kann mir einer einen Tipp geben.

Gruss
Milan
#2776470
Lesenswert?

Was genau hängt sich auf? Der Controller? Dann wartet er vermutlich 
vergebens auf eine Rückmeldung des DS1337. Wenn die schaltung richtig 
ist, dann ist evtl. einfach nur die Adresse falsch (hast die um einen 
nach links geshiftet?  Muss nämlich weil die I2C Adresse 7 Bit ist und 
das unterste Bit das R/W).

Zeig mal code.
Ich vermute er hängt hier:
1
while (twiMaster.status != TWIM_STATUS_READY) {
2
    /* Wait until transaction is complete. */
3
}

Interrupts hast an ( sei() )?
Hast du HI MED oder LO Interrupt für den TWI an?
Hast du die auch im PMIC.CTRL aktiv?
Gast #2776537
Lesenswert?

Pete K. schrieb:
> Es könnte daran liegen, dass Du das kopierte nicht verstanden hast...
>
> P.S.: Ist es wirklich so schwer, die Shift-Taste zu benutzen?

Ja, das habe ich nicht, sonst würde ich es nicht kopieren, oder???

P.S: Fals du nicht helfen kannst, mussst du auch nichts schreiben. 
KLUGSCH*****!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren