PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bascom und PCF 8583



josef-muc
31.05.2005, 10:43
ich habe etwas Verständigungsprobleme beim schreiben und lesen der Register 5 und 6 des PCF8583 mit Bascom. Das Programmbeispiel Clock.bas geht hier leider nicht auf das Lesen und Schreiben von Jahr und Wochentag ein. Hat jemand ein Programmbeispiel, wie man die beiden Werte in Bascom verarbeiten kann.

31.07.2005, 20:21
Servus Sepp,

mit dem gleichen Problem schlage ich ich auch noch herum.
Ich hatte auch schon einmal ein Paar Fragen zum PCF 8383 (siehe https://www.roboternetz.de/phpBB2/viewtopic.php?t=7957).
Alles, insbesondere die Programmierung des Datums, konnte ich auch noch nicht lösen.
Wenn du eine Lösung hast, wäre es super wenn du sie ins Netz stellen könntest.

Nutzt du übrigens auch die Alarm-Funktion?

Gruß
tooltime

HelgeK
31.07.2005, 22:24
Hi,
ich mußte noch irgendwo eine Assemblercode haben(glaube ich), sobald ich ihn gefunden haben melde ich mich hier noch mal (bin2 Wochen inm Urlaub)

Viele Grüße
Helge

02.08.2005, 22:12
Hallo tooltime. Dachte schon, meine Frage ist zu blöd, dass keiner antwortet. Ich habe dann etwas rumprobiert und mit Bitmanipulation das Problem gelöst. Werde mir aber trotzdem einen anderen chip besorgen, der einfacher zu programmieren ist. momentan aber leider keine zeit.
Ich hoffe du kannst damit etwas anfangen.

Gruss josef

Codeausschnitt:

Call Settime(23 , 59 , 45 , 31 , 12 , 2 , 1) 'Std Min Sec Tag Mon Jahr Wochentag

Cls
Wait 10 'clear screen

Do
Call Gettime
Wtag = Wm 'Kombiregister zerlegen mit shift rechts
Shift Wtag , Right , 5
Pjahr = Jd
Shift Pjahr , Right , 6
Ptag = Jd
Ptag.6 = 0 'Bit 6 und 7 löschen
Ptag.7 = 0
Pmonat = Wm
Pmonat.7 = 0 'Bit 5,6 und 7 löschen
Pmonat.6 = 0
Pmonat.5 = 0
If Wtag = 0 Then Stag = "So"
If Wtag = 1 Then Stag = "Mo"
If Wtag = 2 Then Stag = "Di"
If Wtag = 3 Then Stag = "Mi"
If Wtag = 4 Then Stag = "Do"
If Wtag = 5 Then Stag = "Fr"
If Wtag = 6 Then Stag = "Sa"
Locate 1 , 1
Lcd Stag ; "." ; Hex(ptag) ; "." ; Hex(pmonat) ; "." ; "20" ; Hex(pjahr)
Locate 2 , 1
Lcd Hex(h) ; ":" ; Hex(m) ; ":" ; Hex(s) ; " Err:" ; Err
Wait 1
Temp = Temp + 1
If Temp > 10 Then Gosub Neu 'für den displaytest
Loop
End
Sub Settime(h1 As Byte , M1 As Byte , S1 As Byte , D1 As Byte , Month1 As Byte , Jahr1 As Byte. Wtag1 As Byte)
Dim Wm1 As Integer
Dim Pj As Integer
Wm1 = Wtag * 32 'Wochentag mit 32 multiplizieren
Wm1 = Wm1 + Month1 'Wochentag und Monat addieren
Pj = Jahr1 * 32 'Jahr mit 32 multiplizieren
Pj = Pj + D1 'Jahr und Tag addieren
Tm(1) = Makebcd(s1) 'seconds
Tm(2) = Makebcd(m1) 'minutes
Tm(3) = Makebcd(h1) 'hours
Tm(4) = Makebcd(pj) 'days and Year
Tm(5) = Makebcd(wm1) 'MONAT und Wochentag

I2cstart 'generate start
I2cwbyte &HA0 'write address
I2cwbyte 0 'select control register
I2cwbyte 0 'set year and day bit for masking
I2cstart 'repeated start
I2cwbyte &HA0 'write mode
I2cwbyte 2 'select seconds Register
For I = 1 To 5
I2cwbyte Tm(i)
Next 'write seconds
I2cstop
End Sub

tooltime
22.08.2005, 16:09
Hallo josef,

tut mir leid, dass ich mich nicht eher gemeldet habe, aber diese automatische Benachrichtigung funktioniert irgendwie nicht immer.
Ich denke ich hab´s jetzt auch raus. O:) Mein Code sieht zwar etwas anders aus, funktioniert aber ganz gut.
Mittlerweile finde ich den 8583 gar nicht mal so schlecht. Ich muss mir nur noch etwas mit der Zuweisung für das Jahr überlegen.

Gruß
tooltime