Probleme mit RTC an TWI

Gast #1878695
Lesenswert?

Hallo,

ich wollte eine RTC an einen Mikrocontroller anschließen, aber nach dem 
Senden der Slave Adresse steht im TWSR immer not acknowledge (also 0x20 
anstatt 0x18). Start senden macht keine Probleme. Die SCL Frequenz ist 
100kHz. Ich habe zwischenzeitlich gedacht, dass SCL vielleicht durch das 
Setzen von TWEN resettet wird, aber wenn ich TWEN setzte bevor ich den 
die SCL Frequenz festlege, hat sich auch nichts verbessert.
Ich habe keine Idee woran es liegen könnte und wäre über Hilfe dankbar.
ich benutze einen Atmega168 und die RTC ist eine DS 1307.

Grüße,
bomibob
Angehängte Dateien:
Gast #1879466
Lesenswert?

Ich verwende die Platine von der Word Clock und daher kann ich einen 
Hardwarefehler ausschließen.
@Sascha
Meinst du SDA (PC4) und SCL (PC5)?
Die habe ich nicht extra eingestellt. Ich habe sie mal Probeweise als 
Ausgang definiert, aber dabei blieb das Problem bestehen, dass ich NACK 
erhalten habe.
Gast #1880984
Lesenswert?

ich habe mal probeweise als Slave Adresse 0000000 genommen mit 
anschließend 0 für write (weil ich am TWI sowieso nur einen Slave habe), 
aber auch dann habe ich einen not ACK zurück bekommen. Kann es sein, 
dass meine RTC kaputt ist?
Grüße
#1880993
Lesenswert?

Slaves bestätigen nur den General Call (also 0x00), wenn das bei denen 
gesondert aktiviert worden ist - zumindestens bei µCs- glaube nicht das 
das bei der RTC geht. TWEN kannst du aktivieren und deaktivieren - TWBR 
und TWSR werden dadurch nicht resettet. Die Pins muessen auch nicht 
gesondert konfiguriert werden.  Code it eig. sowiet korrekt - 
zumindesten muss er dir auf die Adresse "104" ein ACK senden. Mach doch 
mal Die Clockrate auf 5khz.
Gast #1881426
Lesenswert?

Hi

>Da du so nett gefragt hast hier nochmal die gleiche Datei mit .c am
>Ende.

Damit wird aus einer RTF-Datei auch keine C-Datei, sondern Müll. Kannst 
ja mal die Code-Ansicht benutzen.

Ach so, und wo ist in deinem 'Programm' die Adressierung der 
TLC-Register?

MfG Spess
Gast #1881432
Lesenswert?

Ich habs in dem Datenblatt der RTC so verstanden, dass das erste was man 
nach der Adresse schickt das Register innerhalb der RTC festlegt.
Das Problem ist allerdings schon davor, denn die RTC gibt mir/uns ja auf 
die Adresse kein ACK zurück, scheint sich also nicht angesprochen zu 
fühlen.
Gast #1882422
Lesenswert?

Hi,

das TWI enable bit (TWEN) wird in der init funktion gesetzt und danach 
werden nur die nötigen bits verändert. Damit das funzt muss natürlich 
erst die initialisierungsfkt. Ausgeführt werden.

Gruß
Gast #1882433
Lesenswert?

Hi

>das TWI enable bit (TWEN) wird in der init funktion gesetzt und danach
>werden nur die nötigen bits verändert. Damit das funzt muss natürlich
>erst die initialisierungsfkt. Ausgeführt werden.

Quatsch. Eine Übertragung wird mit dem Löschen von TWINT (durch 
Schreiben einer 1) gestartet. Und das fehlt bei dir völlig. Lies das 
Datenblatt.

MfG Spess
Gast #1886735
Lesenswert?

Ich hatte mal einen RTC, bei dem der Quarz erst anschwang, wenn die
Uhrzeit/Datum eingestellt war. Davor macht es keinen Sinn, irgendwas
schwingen zu lassen wegen Energieersparnis.
Das Datenblatt sollte mehr dazu sagen.

Gruß
Joachim

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