Hallo Forum Freunde, mein Problem liegt in der Ansteuerung eines DS1302(RTC) über den 3-wire-bus. Problem 1: wie programmiert man den in C Problem 2: wo schließe ich mein Bauteil an (AT89S8252) Mit freundlichen Grüßen Christian
Hallo Schau erstmal hier rein. http://www.mikrocontroller.net/forum/read-1-3921.html#3946 Ist die Grundlegende Ansteuerung doch mal sehr schön erklärt. Ist zwar ASM, aber die Grundlagen stimmen. Problem 1: Der wird nicht groß "programmiert". Man sendet eine Adresse und ob man lesen oder schreiben möchte und muß dann 8 Bits senden oder empfangen. Problem 2: Anschliessen kannst du den an jeden PIN den du frei hast, ist halt nachher nur eine Software Frage. Ich habe aber das Gefühl, das du Anfänger bist. Daher ist das nicht ohne, aber auf jeden Fall machbar. Kompletten Code wirst du wahrscheinlich nicht bekommen. Wenn man aber sieht, das du dir wirklich Gedanken machst und trotzdem nicht weiter kommst, wird du bestimmt auch Hilfe bekommen. Lernen kannst du daraus eine Menge, also auf gehts und nicht unter kriegen lassen. MFG Dieter PS: Diese Seite könnte Dir sehr hilfreich sein, falls kein OZI vorhanden ist. http://www.xs4all.nl/~jwasys/old/diy2.html
Hallo Dieter, vielen Dank für die gute Information. Du hast recht ich bin ein Anfänger auf diesem Gebiet. Ich habe die Aufgabe bekommen eine Steurung aufzubauen die aus einem LCD-Display, DS1302, Seriellen-Schnittstelle zum Leitstand, Temperatursensor und einem AT89S8252 Mikrocontroller besteht. So jetzt stehe ich da... LCD-Display ist kein Problem mehr, jetzt ist der DS1302 dran. Vielen Dank für deine Mühen, wenn du weitere Infos für mich hast währe ich dir sehr dankbar. Mit freundlichen Grüßen Christian
Ich benötige. - eine Funktion zur initialisierung des DS1302 - eine Funktion die die Daten in den DS1302 schreibt - eine Funktion die die Daten in den DS1302 list. Angeschlossen habe ich ihn jetzt einfach an den Port1 #define IO P1_0 // Serial Imput Output #define SCLK P1_1 // Serial Clock #define RSTB P1_2 // Reset Eingang Ich glaube wenn ich diese drei Funktionen in C habe kann ich doch Daten an den DS1302 senden z.B Sekunden einstellen und nach belieben über die Funktion z.B DS_lesen(void) die Sekunden einlesen. Mit freundlichen Grüßen Christian
Hallo Der Gedanke mit den Funktionen ist schonmal gut. z.B. read_byte Übergeben wird die Adresse die du lesen willst, zurück bekommst du den Wert der Speicherstellen. Wie kriegst du jetzt das Byte auf den Pin? Variable "adresse" enthält jetzt zum Beispiel 129= &B1000 0001. Damit wirst du die erste Speicherstelle im RTC, in diesem Fall die Sekunden auslesen. Wie du auf Seite 9 im Datenblatt siehst, wird das LSB zuerst ausgegeb en. Du mußt jetzt eine Schleife programmieren, um alle 8 Bit der Variablen "adresse" auszugeben. Bei jedem Durchlauf prüfst du jetzt, ungefähr so read_byte(bla bla ) set clk low set RST low wait 1 ms set RST high Schleifenanfang set IO high Jetzt prüfen, ob lsb von adresse low wenn ja, dann set IO low wait 1 ms set CLK high wait 1 ms set CLK lowob, ob das LSB in "Adresse" gesetzt ist oder nicht und setzt entsprechenden deinen PIN IO high oder low. jetzt Adresse eine Stelle nach rechts schieben, damit das nächste Bit nach LSB rutscht Und das ganze 8 Mal für 8 Bits. Die Zeiten habe ich einfach mal so angenommen. Und dann mußt du ja noch die 8 Bits vom RTC einlesen. Läuft genauso, du mußt halt nur den IO auf Eingang schalten und nach dem CLK Low prüfen ob IO LOW oder High. Und die die BITs natürlich in eine Variable schieben. Nach den 8 Bits einlesen RSTB wieder auf LOW und fertig. Schau doch mal in der Codesammlung nach I2C Routinen in C. Schau Dir da mal genau an, wie die die Routinen write_byte oder Read_byte geschrieben haben. Da kann man viel lernen und sogar entsprechenden anpassen. MFG Dieter
Super vielen Dank für diese Ausführliche Antwort. Jetzt habe ich doch schon mal einen sehr guten Ansatz. Wenn wir Kollegen währen hättest du auf jeden Fall schon mal ein Essen gut. Ich wünsche dir ein schönes Wochenende und hoffe das ich dich noch öffters hier im Forum treffe. Da ich ja noch einiges vor mir habe. 1) LCD Display erledigt 2) Serielle Schnittstelle erledigt 3) DS1302 in Arbeit 4) A/W Wandler Termofühler offen 5) einzelne Komponeten zusammenführen offen Mif freundlichen Grüßen Christian
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.