Hallo, ich spiele gerade etwas mit einer Real Time Clock (TinyRTC V1). Ich Programmiere in SiSy C++ und wollte jetzt mal fragen wo ich eine "Befehlssammlung" einsehen kann ... Also was ich alles an dem Teil verstellen und programmieren kann. Danke
Schau was für ein Chip drauf ist und dann schaust du in das entsprechende Datenblatt. Wo liegt das Problem?
Es ist ein Atmega8A-PU. Mein Problem liegt darin, dass ich nicht weiß wie ich bestimmte Aktionen programmieren soll und noch nichts mit den rtc. Befehlen gemacht habe. Jetzt würde ich einfach gerne nachlesen was dabei überhaupt möglich ist und welche Befehle was machen.
Der RTC Chip. Wir reden doch von dem Teil hier, oder? http://www.aliexpress.com/item/6-pcs-I2C-DS1307-Real-Time-Clock-Module-For-Arduino-Tiny-RTC/629383415.html
Ja genau um das Teil hier gehts :-) Das andere ist natürlich ob es iwo ein "Nachschlagewerk" für Befehle gibt.
Siehst du, das meinte ich. Auf dem Teil sind zwei ICs drauf. Eine RTC und ein EEPROM. Und die Datenblätter dieser beiden Teile suchst du dir jetzt. In denen steht ALLES was die können.
Also nur fürs richtige Verständnis ... ich bin mir sicher, dort ALLES drin steht was der kann aber steht da auch drin wie man ihn dazu bringt wie er das macht was er kann ? Ich seh grad ich hab mich evtl. etwas sehr falsch ausgedrückt! Ich habe dieses Teil (TinyRTC V1) an einem Atmega8 hängen welchen ich jetzt gerade programmiere. Ich habe ein Beispielprogramm gefunden anhand dessen ich zumindest mal die Zeit an einem Display ausgeben können aber mich würden weitreichendere Befehle interessieren. Ich meine eben sowas wie "rtc.setTime ();" "rtc.config();"
leinad R. schrieb: > Also nur fürs richtige Verständnis ... ich bin mir sicher, dort ALLES > drin steht was der kann aber steht da auch drin wie man ihn dazu bringt > wie er das macht was er kann ? Ja, wirklich alles. Die beiden Teile sind ja über I2C mit deinem Controller verbunden. Du kannst ihnen Befehle/Daten schicken und sie Antworten ggf. Diese Highlevelfunktionen die du da gerade zitierst machen genau das. Schau dir erstmal an wie I2C funktioniert, allgemein und mit deinem Atmega. Dann baust du dir eigene Funktionen die das tun was du willst. Sowas wie rtc.setTime () könnte dann z.b. 3 int Werte übergeben kriegen: rtc.setTime (Stunde,Minute,Sekunde) was innerhalb der Funktion passiert orientiert sich dann am Datenblatt der RTC. Da steht drin wie du die Werte genau auf dem Teil speicherst.
OK Dann danke erstmal wenn dann noch Fragen auftauchen meld ich mich einfach wieder hier :-)
Ja, lass dich nicht entmutigen. Benutze mal keine LIbaries oder so, mach es "von Hand". Dann weißt du für die Zukunft wie man sowas angeht :)
Ja mein "Problem" ist ich hab mir für meine bisherigen spielereien immer einfach einzelne Codestellen aus verschiedenen Tutorials und Beispielprogrammen rauskopiert. Das was ich dann geschrieben hab hab ich verstanden aber mit dem drumrum is halt schlecht ;-)
leinad R. schrieb: > Ja mein "Problem" ist ich hab mir für meine bisherigen spielereien immer > einfach einzelne Codestellen aus verschiedenen Tutorials und > Beispielprogrammen rauskopiert. > Das was ich dann geschrieben hab hab ich verstanden aber mit dem drumrum > is halt schlecht ;-) Ja, das Highlevel Zeug hast du verstanden. Aber was da wirklich passiert eher nicht. :)
leinad R. schrieb: > Ich Programmiere in SiSy C++ und wollte jetzt mal fragen wo ich eine > "Befehlssammlung" einsehen kann ... Es würde mich arg wundern, wenn es zu SiSy keine Hilfe, Manuals oder Doku gäbe. Such dochmal auf Deiner Festplatte in der SiSy-Installation oder auf der SiSy-Webseite. Eumel schrieb: > Ja, das Highlevel Zeug hast du verstanden. Aber was da wirklich passiert > eher nicht. :) Das "Highlevel Zeug" ist so, wie mit Legosteinchen spielen. Wenn Du etwas bauen willst und hast das dazu passende Legosteinchen gefunden, schön. Wenn Du dieses Legosteinchen aber nicht findest, dann hast Du ein Problem. Es wird Dir niemand ein Legosteinchen zurechtfeilen, Du mußt es wohl oder übel selber programmieren. Das ist dann der Schritt vom Spielen mit Legosteinchen weg und hin zum richtigen Programmieren. D.h. ein Problem analysieren und dann implementieren. Es kann natürlich niemand alles wieder von vorne programmieren. Komplexe Anwendungen muß man kaufen, z.B. Windows wird niemand selber nachprogrammieren. Eine RTC auf nem Microcontroller ist aber leicht zu implementieren. Außerdem gibt es schon reichlich Code im Web. Aber ohne kleinere Anpassungen wird es wohl nicht gehen. Peter P.S.: Wenn es um spezielle Entwicklungsumgebungen geht, sollte man diese im Topic nennen. Dann brauchen sich das nur diejenigen ansehen, die sich damit auch auskennen.
Hallo, also in meinem SiSy finde ich diverse Hilfen jeweils im Editor auf Rechte Maustaste... habe aber die Version 3.34 die ist verhältnismäßig frisch ;-) ob die aber ALLE Befehle enthält :-/ Zur Echtzeituhr müsstest ins Datenblatt schauen oder einen Devicedriver oder in SiSy eine entsprechende Klasse benutzen hier mal ein Auszug aus der Hilfe zur Klasse DS1302 I2C_DS1307 Klasse für das TWI Add-On myTWI Echtzeituhr. [Mehr ...] Vererbung Basisklassen(n) I2C→ I2CDevice→ I2C_DS1307 Attribute public: Attribut Typ Beschreibung day uint8 Tag des Monats hours uint8 Stunden bit6 = 1 -> 12h-Format (bit5=am/pm) minutes uint8 Minuten month uint8 Monat seconds uint8 Sekunden bit7 = 1 -> angehalten weekday uint8 Wochentag 1=Montag ... 7=Sonntag year uint8 Jahr, Zweistellig Operationen public: Name Parameter Rückgabewert Beschreibung convertDate const char* date void Lädt das Datum in die Attribute. convertTime const char* time void Lädt die Uhrzeit in die Attribute. formatTimeToString String& time, const char* mask void Gibt aktuelles Datum und Uhrzeit zurück. getTime char* time, char* mask void Gibt aktuelles Datum und Uhrzeit zurück. getTime const char* mask String Gibt aktuelles Datum und Uhrzeit zurück. read bool Liest die aktuelle Zeit in die Klassenvariablen. setDate const char* date void Setzt das Datum. setTime const char* time void Setzt die Uhrzeit. startClock void Startet die Uhr wieder falls sie angehalten war. stopClock void Hält die Uhr an. write bool Schreibt die Klassenvariablen. protected: Name Parameter Rückgabewert Beschreibung bcd2num uint8 value uint8 Wandelt eine 2stellige gepackte BCD-Zahl in einen Integer. num2bcd uint8 value uint8 Wandelt eine Zahl in eine 2stelligen gepackte BCD-Zahl. Detailbeschreibung I2C_DS1307 Klasse für das TWI Add-On myTWI Echtzeituhr. Beispiel: Verwendung Twi_Time_DS1307 rtc; rtc.config( 0xD0 ); ... char buffer[50]; rtc.getTime(buffer, "%d.%m.%Y %h:%i:%s") Platzhalter: %Y Jahr vierstellig (es ist nur 20xx möglich, nicht 19xx) %y Jahr zweistellig %m Monat als Zahl %d Tag als Zahl %w Wochentag als Text (Mo,....,So) %h Stunden %i Minuten %s Sekunden %a am/pm wenn die Uhr im 12- Stundenformat läuft Funktionsbeschreibungen ----------------------- static bcd2num(uint8 value) uint8 Wandelt eine 2stellige gepackte BCD-Zahl in einen Integer. convertDate(const char* date) void Lädt das Datum in die Attribute. Beispiel: 0904201 oder 09-04-20-1 = Mo der 20.04.2009 Format: Jahr zweistellig, Monat zweistellig, Tag zweistellig und Wochentag als Zahl (1 für Montag, 7 für Sonntag). Die einzelnen Angaben können durch ein Trennzeichen abgetrennt werden, gültige Zeichen sind ., / und -. Parameter: date Die Zeichenkette mit dem Datum welches einstellt werden soll. convertTime(const char* time) void Lädt die Uhrzeit in die Attribute. Beispiel: 165308 oder 16:53:08 = 16 Uhr 53 min 08 sek (24-Stunden-Modus) 040000a oder 04:00:00:a = 4 Uhr 0 min 0 sek (12-Stunden-Modus) 040000p oder 04:00:00:p = 16 Uhr 0 min 0 sek (12-Stunden-Modus) 163050 oder 16-30-50 = 16 Uhr 30 min 50 sek (24-Stunden-Modus) Format: Stunden zweistellig, Minuten zweistellig, Sekunden zweistellig, wenn 12-Stunden Format: ein 'p' für pm oder ein 'a' für am. Die einzelnen Angaben können durch ein Trennzeichen abgetrennt werden, gültige Zeichen sind :, /, -. Parameter: time Zeichenkette mit der Uhrzeit die einstellt werden soll. in24h ob die Zeit als 24 oder 12 Stundenformat angegeben ist, 24-Stundenformat ist Standard. formatTimeToString(String& time,const char* mask) void Gibt aktuelles Datum und Uhrzeit zurück. Das Format der Rückgabe kann mittels einer Maske formatiert und individuell angepasst werden. Beispiel: Datum = Montag der 2009.04.20, Zeit = 16:30:00 mask = "Am %d.%m.%Y um %h:%i:%s Uhr." ergibt: "Am 20.04.2009 um 16:30:00 Uhr." Platzhalter: %Y Jahr vierstellig (es ist nur 20xx möglich, nicht 19xx) %y Jahr zweistellig %M Monat als Zahl %d Tag als Zahl %w Wochentag als Text (Mo,....,So) %h Stunden %m Minuten %s Sekunden %a am/pm wenn die Uhr im 12- Stundenformat läuft Parameter: time Zeiger auf die Ergebniszeichenkette mask Zeiger auf die Zeichenkette mit der Maske für das Ergebnis getTime(char* time, char* mask) void Gibt aktuelles Datum und Uhrzeit zurück. Das Format der Rückgabe kann mittels einer Maske formatiert und individuell angepasst werden. Beispiel: Datum = Montag der 2009.04.20, Zeit = 16:30:00 mask = "Am %d.%m.%Y um %h:%i:%s Uhr." ergibt: "Am 20.04.2009 um 16:30:00 Uhr." ... naja und so weiter :-D Gruß
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.