www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RTC mit Atmel 89C51CC03 verwenden aber wie?


Autor: Sascha K. (quad2000)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo an alle,

ich möchte ein Real Time Clock Baustein in mein µC System einbinden.
Dieser Baustein gibt seine Daten seriell aus.

Das ist das Datenblatt zu dem RTC:
http://www.reichelt.de/?;ACTION=7;LA=6;OPEN=1;INDE...

Nun meine Frage:
1: Wie muss ich den RTC in mein µC Programm einbinden, damit ein 
Datenaustausch erfolgen kann (Programmcode)? Mit serieller 
Datenübertragen an einem µC hab ich leider noch keine Erfahrung sammeln 
können.
Die Vorgehensweise ist mir leider nicht bekannt.

Ich Arbeite mit Keil µVision 3.

Danke schonmal für die Hilfe.

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
na dann such mal nach I2C so heist das nähmlich. 3 Drähte un dgut.

Autor: Carlos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
wieso denn drei Drähte bei I2C ?
Zwei reichen doch völlig.

Allerdings ist das Protokoll für einen Anfänger nicht ganz so einfach 
umzusetzen.
Mußt Du diese RTC nehmen oder geht auch eine mit SPI-Bus oder mit 
paralleler Ansteuerung (z.B. RTC72421) ?

Carlos

Autor: Gerhard. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Sascha,

hier zum Anfang eine kleine Starthilfe:

Zuerst sehe Dir mal die folgenden Links an zum Ueberblick:

http://pdfserv.maxim-ic.com/en/an/AN3300.pdf (C-Beispiel)
http://www.maxim-ic.com/quick_view2.cfm?qv_pk=2688...

Druck Dir das Datenblatt des DS1307 aus.

Studiere die KEIL Handbuecher nach I2C Support. Viele Compiler haben I2C 
Support, Suche nach Funktionen wie:

i2c_start()
i2c_write(data)
i2c_read(ACK oder NOACK)
i2c_stop

In dieser Reihenfolge werden alle I2C Communications erledigt. Je nach 
Application, koennen mehr wie eine i2c_read() in einer Loop vorkommen. 
Sehe Dir AN3300 an. Da gibt es ein ausfuehrliches Beispiel.

Jeder I2C Sklave muss mit seiner Addresse die im Datenblatt zu finden 
ist, angesprochen werden. Das LSB Bit bestimmt ob man schreiben oder 
lesen will. Wenn das LSB bit z.B. 0xd0 ist, dann wird ein Datenwort in 
den Adressienten hineingeschrieben. Wenn es 0xd1 ist, dann kommt ein 
Lesevorgang.

Ganz wichtig ist es, wenn mehrere i2C_read() ausgefuehrt werden, dass 
die Letzte i2c_read mit NOACK gesendet wird.

Z.B.
. . .
I²C_start();
I²C_write(ADDRTC); /* write slave address + write */
I²C_write(0x00); /* write register address, 1st clock register */
I²C_start();
I²C_write(ADDRTC | 1); /* write slave address + read */
Sec = I²C_read(ACK); /* starts w/last address stored in register pointer 
*/
Min = I²C_read(ACK);
Hrs = I²C_read(ACK);
Day = I²C_read(ACK);
Day = I²C_read(ACK);
Dte = I²C_read(ACK);
Mon = I²C_read(ACK);
Yr = I²C_read(NACK);
I²C_stop();
. . .

Am Besten studiere die AN3300 bis Du jede Programmzeile verstehst. Es 
ist sehr wichtig, dass man die Programme anderer Leute auch versteht. 
Also nicht aufgeben.

I2C ist sobald man ueber diese erste Huerden springt, mittels der 
bereitgestellten I2C Funktionen meisten ganz leicht zu beherrschen.

Es ist wichtig, dass die SDA und SCL Anschluesse mittels 2.7-4.7KOHM 
Widerstande nach Plus (VDD) geschaltet sind. Sonst funktioniert gar 
nichts.
Viele Mikrocontroller haben Hardware I2C Peripherie. (Aufpassen bei der 
Konfiguration. Compilerunterlagen genau durchlesen und verstehen, 
Compilerbeispiele suchen und dann aud Deine eigene Anwendung anpassen. 
Diese Compilerbeispiele helfen oft bei der Chipconfiguration gewaltig))

Hoffe dass Dir das ein bischen weiterhilft.

MFG,
Gerhard

Autor: Sascha K. (quad2000)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Stephan, Carlos und Gerhard,

danke für eure Antworten.
Da hab ich jetzt einiges vor mir. Hoffe, das ich nicht all zu lange 
dafür brauche. Bin etwas im Zeitdruck... (wer nicht ;)  )

Vorallem danke an Gerhard, Ihre Infos haben mir sehr weiter geholfen. 
Die pdf´s werd ich genau studieren.

@Carlos
Ich bin nicht an ein Baustein gebunde. Ich bin für alles offen.

Schönes Wochenende an alle!!!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.