Forum: Mikrocontroller und Digitale Elektronik DS1307 Bascom Zeit stellen


von Xash (Gast)


Lesenswert?

Hallo

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

Die Zeit wird hier über
1
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

von Xash (Gast)


Lesenswert?

1
 Time$ = sekunde & ":" & minute & ":" & stunde
2
3
 Time$ = Makebcd(sekunde) : Bmin = Makebcd(minute) : Bhour = Makebcd(stunde)

so bekomme ich es nicht hin

von Xash (Gast)


Lesenswert?

1
Time$ = sekunde ; ":" ; minute ; ":" ; stunde

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

von Hackes (Gast)


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! ;-)

von zipp (Gast)


Lesenswert?


von Xash (Gast)


Lesenswert?

Hallo


irgendwie will das nicht so ganz funktionieren!
Hat jemand eine Idee?
1
Dim Sekunde As Integer
2
Dim Minute As Integer
3
Dim Stunde As Integer
4
5
Sekunde = 12
6
Minute = 15
7
Stunde = 10
8
9
Gtime = Str(stunde) + ":"
10
Gtime = Gtime + Str(minute)
11
Gtime = Gtime + ":"
12
Gtime = Gtime + Str(sekunde)
13
Time$ = Gtime

von Xash (Gast)


Lesenswert?

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

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

von Xash (Gast)


Lesenswert?

nach dem Befehl
1
Gtime = Str(stunde)
2
Gtime = Gtime + ":"
3
Gtime = Gtime + Str(minute)
4
Gtime = Gtime + ":"
5
Gtime = Gtime + Str(sekunde)
6
Time$ = Gtime

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

von MWS (Gast)


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.

von Xash (Gast)


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

von MWS (Gast)


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.

von Jens S. (jens_s56)


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
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
Noch kein Account? Hier anmelden.