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;INDEX=0;FILENAME=A200%252FDS_1307.pdf;SID=30DN4ja6wQAR4AAEBabaA417d2b9ffc15b86246ff21242641a573 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.
na dann such mal nach I2C so heist das nähmlich. 3 Drähte un dgut.
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
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&t=do#Application%20Notes 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
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!!!
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.