Hey, Ich habe eine eigene Routine zum beschreiben und auslesen eines DS1307 geschrieben. Die funktioniert auch soweit ganz gut, hab mir die Übertragung mal am Oszilloskop angesehen. Leider hab ich momentan keins mehr zur Verfügung und habe jetzt folgendes Problem: Jenachdem wie ich die CLK Frequenz wähle bekomme ich teilweise unterschiedliche Registerinhalte. Ich hab eine Testroutine geschrieben die jede Sekunde das Sekundenregiter ausliest. Wenn ich z.B. mit 10kHz auslese bekomme ich andere Werte als wenn ich mit 15kHz auslese. Größtenteils stimmt der Registerinhalt auch mit der Sekunde überein, ab und zu mal bekomme ich aber ganz komische Werte, z.B. 96 (wenn eigentlich 40 Sekunden sind). Hab schon verschiedene PullUps probiert, kurze Leitungen verwendet, den DS1307 getauscht...aber bringt alles nix. Nur noch den Quarz könnte ich tauschen. Hatte vllt mal jemand ein ähnliches Problem oder weiß was das sein könnte? An der Routine sollte es eig. nicht liegen, wie gesagt auf dem Oszilloskop sah alles super aus. Freue mich auf Kommentare:) Grüße Liu
Code? Vermischts du nicht noch ACKs in die Werte? Habe selber einmal mit dem DS1307 experimentiert... kann dir aber nicht mehr sagen, was alles wie eingebunden werden muss. Hab das Programm noch gefunden. Eventuell siehst du ja eine Differenz (Bei mir hats funktioniert). MFG Patrick
Hey Patrick, Vielen Dank für deine Antwort. Leider hilft mir das nicht viel weiter, ich hab die kompletten Funktionen wir schrieben, lesen etc. selber geschrieben, also ohne I2C. Also so dass ein Timer mir meinen CLK auf einen Pin legt und ich dann über Routinen die Daten auf dem SDA einlese bzw. ausgebe
Dann zeig mal den Code. Tut mir leid, aber meine Kristallkugel ist gerade in Revision... Gibst du auch wirklich 9 Clocks aus? Damit das ACK auch wieder eingelesen/ausgegeben werden kann? Nach jedem Byte braucht es ein ACK beim Lesen (Empfang bestätigen) und die DS1307 gibt auch eines zurück, um den Empfang bestätigen. So kannst du auch noch ein Fehlerprotokoll einbinden. PullUps bei Data und SCK sind 2k2. Welche Frequenzen hast du Probiert? Ich würde 100kHz (Standart) nehmen, da du sonst Probleme mit der Geschwindigkeit bekommen könntest. MFG Patrick
Code hab ich grad nicht hier, stell ich später rein. Die 100kHz schaff ich nicht ganz, hab das ganze mal aufm Oskar angeschaut aber bei 100kHz haben die Signale nicht mehr gepasst. Verwende einen ATMega32 mit 8Mhz interer Takt. Kann es vllt sein dass der Prozessor den Code bei 100kHz nicht so schnell verarbeiten kann und ich deshalb die Probleme bekomme?
Kommt auf dein Programm an. Wenn die Bits über TimerISR herausgeschoben werden, sollte es schon reichen. Aber das kannst du ja im Simulator nachmessen.
...könnte vielleicht helfen: Beitrag "DS1307 TWI I2C RTC Initialisierung ROM Zeit setzen auslesen Assembler ATmega8"
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.