Hallo, Ich will/wollte versuchen die DS1287 an einen uC zu koppeln. Nur leider sagt mir dieser nichts. Wie ich das in dem Datenblatt verstanden habe, muss man im ersten Schritt die Adresse auf den Bus legen und dann das Signal AS mit einer fallende Flanke versehen. Dannach, wenn man schreiben will, legt man den Wert des Entsprechenden Registers auf den Bus und gibt DS eine fallende FLanke. Beim lesen ist der Erste schritt gleich, nur dann im zweiten muss man Die PORTPINS auf Eingan legen und das Signal DS abwarten. Ich verwende MOT auf High - Motorola Bus Timing, ist aber egal, wie auch der verwendete uC egal ist. Nur leider habe ich nichts über Timing gelesen. Hat sich jemand damit beschäftigt oder kennt jemand einen Link, der sich mit diesem Problem der Ansteuerung beschäftigt ???? Danke, andreas
Hallöle! Ich habe hier C-Code fertig (nur sehr rudimentär implementiert), aber er läuft. Ich habe allerdings sowohl auf einem 8051, als auch auf einem AVR das Intel-Timing benutzt. Bei dem 8051 kannst Du den DS12887 ganz normal wie ein ROM oder RAM anschließen, das Bustiming des AVRs ist leider zu schnell dafür, also musst Du es "per Hand" machen. Wenn Du irgendwas wissen willst, dann frag... Tschö, Sven
Hi Sven, Na da hab ich doch gleich mal ne Frage : Ist das Intel-Timing einfacher zu Handhaben ? (im Datenblatt klinkt das fast so). Kannst du bitte mal kurz erklären, in welchen Schritten du dabei vorgegangen bist und mit welchen Zeiten du arbeitest ("Per Hand") ?? Dankeschön
Hallo Andreas! Ob das Intel-Timing einfacher ist, kann ich leider nicht beurteilen, weil ich das Intel-Timing (durch den 8051) kenne und mich deshalb dafür entschieden habe. Das Motorola-Timing habe ich mir dadurch erst gar nicht angeguckt, weil es auch ansonsten keine Vorteile bietet (gleiche Anzahl von Steuerpins etc.). Zum Ansteuern rechnest Du Dir am besten erstmal die minimale Befehlszyklus-Zeit Deines Systems aus (meist 1/Clk_Freq). Dann schnappst Du Dir das Datenblatt des 12C887, suchst das Bus-Timing und steuerst Deine Control-Leitungen entsprechend an. Wenn Du sowas noch nie gemacht hast, dann kannst Du Dir ein Lineal nehmen und dieses vertikal auf den Anfang des Bus-Timings legen. Nun ziehst Du das Lineal schrittweise von links nach rechts und achtest auf Pegel-Änderungen (also auf "Striche", die von high auf low oder von low auf high gehen). Sobald eine Änderung stattgefunden hat, realisierst Du diese in Deinem Code (ziehst also die Control- und Daten-Leitungen auf low oder high). Wenn Du am Ende angekommen bist, dann mußt Du nun kontrollieren, ob Du irgendwelche Zeiten unter- oder überschreitest. Dafür guckst Du in die Tabelle "AC ELECTRICAL CHARACTERISTICS" und vergleichst die Zeiten mit Deiner Befehlszyklus-Zeit. Über- oder unterschreitest Du irgendwelche Zeiten, dann mußt Du mittels schnellerer Programmierung bzw. delays dafür sorgen, daß das nicht mehr passiert. Wenn Du alles eingehalten hast, dann solltest Du ohne Probleme eine Adresse (z.B. die Zeit) auslesen können. Du mußt Dir für das Intel-Timing zwei versch. Funktionen schreiben: Eine Funktion, die eine Adresse beschreibt und eine, die eine Adresse liest. Zum Testen empfielt es sich, daß Du erstmal nur eine Adresse des General Purpose NV-RAM beschreibst und dann den gleichen Wert ausliest. Ist der geschriebene Wert nicht identisch mit dem gelesesem Wert, dann hast Du einen Fehler in der Lese- oder Schreibroutine. Sind beide Werte identisch, dann kannst Du sicher sein, daß beide Routinen einwandfrei funktionieren! Soviel zur Lowlevel-Programmierung des 12C887! Wenn Du damit fertig bist, kannst Du mit den beiden Funktionen neue Funktionen schreiben, die z.B. die Uhrzeit stellen oder Abfragen. Prüfe beim Initialisieren der RTC unbedingt das VRT-Bit im Register D, damit Du sicherstellen kannst, daß der Chip einwandfrei funktioniert...
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.