www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DS1307 Bascom Zeit stellen


Autor: Xash (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich habe folgendes Problem in Bascom.
Ich habe bisher die Standart Routine verwendet mit der ds1307 lib.

Die Zeit wird hier über
Time$ = "11:05:13"
gestellt. (Dies funktioniert einwandfrei)

Jetzt habe ich 3 Variablen für Sekunden, Minuten und Stunden jeweils als 
integer.

Wie kann ich mit diesen werten dann die Uhrzeit einstellen?

Kann mir jemand ein kurzes Codebeispiel nur zum setzen der Uhrzeit 
antworten?


Vielen Dank im Voraus

Autor: Xash (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
 Time$ = sekunde & ":" & minute & ":" & stunde

 Time$ = Makebcd(sekunde) : Bmin = Makebcd(minute) : Bhour = Makebcd(stunde)

so bekomme ich es nicht hin

Autor: Xash (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Time$ = sekunde ; ":" ; minute ; ":" ; stunde

auch so nicht.
Ich verzweifle gerade an dem Thema. Kann man sonst noch irgendwie den 
DS1307 unter Bascom stellen?

Autor: Hackes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich müßte jetzt selbst probieren und hab mit Time noch nix gemacht. Aber 
es ist ein String! Also würd ich die drei einzelnen Variablen in STrings 
wandeln und diese verketten. Das geht glaub ich mit dem "+" Operator.

Vielleicht gibts aber auch viel einfacherer Wege! ;-)

Autor: zipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Xash (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo


irgendwie will das nicht so ganz funktionieren!
Hat jemand eine Idee?

Dim Sekunde As Integer
Dim Minute As Integer
Dim Stunde As Integer

Sekunde = 12
Minute = 15
Stunde = 10

Gtime = Str(stunde) + ":"
Gtime = Gtime + Str(minute)
Gtime = Gtime + ":"
Gtime = Gtime + Str(sekunde)
Time$ = Gtime


Autor: Xash (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die zeit verstellt sich absolut nicht.
ich hab keine Ahnung woran das liegt?!
Ist das Format falsch?

Aber in JEDER Beschreibung steht
Time$ = "10:12:56" 'Uhrzeit stellen
Date$ = "02.03.2011" ' Datum stellen

Autor: Xash (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nach dem Befehl
Gtime = Str(stunde)
Gtime = Gtime + ":"
Gtime = Gtime + Str(minute)
Gtime = Gtime + ":"
Gtime = Gtime + Str(sekunde)
Time$ = Gtime

Scheint der Controller sich zu resetten, es tritt irgend ein Fehler auf!

Autor: MWS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Xash,

nachdem Du den größten Teil des Threads hier selbst bestritten hast ;-)

Du kannst über die von Bascom generierten Variablen _sec, _min und _hour 
direkt zugreifen und musst nicht über den Umweg gehen einen String zu 
erzeugen. Änderungen an diesen Variablen wirken sich unmittelbar auf 
Time$ aus.

Liest Du die Hilfe nicht ?

Der Grund daß die Stringversion nicht funktionierte, liegt darin daß ein 
genau definierter String im Format HH:MM:SS für Time$ erwartet wird.

Wenn die Stunden 9 betragen, die Minuten 5 und die Sekunden 0, so ergibt 
sich ein per Str() zusammengesetzter String zu: 9:5:0

D.h. Du hättest nach Str() noch Format() benutzen müssen, um jede Zahl 
zweistellig zu formatieren, dann hätte auch das geklappt.

Autor: Xash (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein,

ich habe das auch probiert. Format oder sogar die Variablen > 10 zu 
wählen. Trotzdem kein Erfolg!

Ich wollte jeden getesteten Schritt hier posten, sodass villeicht 
irgendjemand an einem gewissen Punkt sich einhacken kann.

Aber ich werde jetzt nochmal systematisch das ganze aufbauen und neu 
programmieren.

Danke erstmal

Autor: MWS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Xash schrieb:
> Format oder sogar die Variablen > 10 zu wählen.

Der Teufel steckt im Detail.
Es gibt einige Fallstricke, beliebt sind z.B. nicht definierte Stacks 
und Frame, Gtime kann auch zu klein dimensioniert worden sein, usw.

Das sieht man natürlich alles nicht, wenn das hier von Dir nur 
fetzerlweise präsentiert wird.

Am Besten ist's einen Beispielcode anzuhängen, der zwar so klein wie 
möglich ist, aber den Fehler noch zeigt. Dann wirst Du auch mehr 
Mitglieder finden, die Dir eine Antwort geben werden.

Autor: Jens S. (jens_s56)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der BS1307 braucht die Zahl als BCD. Die Zahl 12 ist also
0001_0011 ( 1_2 ) nicht 00001100 (8+4)!
Man kann ja auch über _sec ; _min und _hour die Zeit der Softwareclock 
einstellen, das sind aber vermutlich Byte-Variablen.
Also muss man makebcd() und makedec() benutzen.
sekunde = makebcd(_sec) oder _sec = makedec(sekunde)
Da der Wochentag nur von 1-7 läuft ist der schon BCD komform
Bin selbst noch am probieren...

: Bearbeitet durch User

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.