PCF8583

To forum jest dla wszystkich pasjonatów wiecznie młodych mikrokontrolerów '51. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Raflles
-
Posty: 77
Rejestracja: 06 sie 2005, 17:15
Lokalizacja: Tychy
Kontakt:

PCF8583

Post autor: Raflles » 05 gru 2005, 23:12

Mam problem próbuję ustawić alarm w kości PCF8583 ale nic mi z tego nie wychodzi
grzebałem w rejestrze kontrolnym i rejestrze alarmu i nic. Programuję w bascomie. Pytałem na ELcafe ale nie uzyskaliśmy odpowiedzi.

Bardzo bym prosił o pomoc w rozwiązaniu tego problemu.

tasza
Użytkownik
Posty: 1389
Rejestracja: 21 lut 2005, 15:02

Post autor: tasza » 06 gru 2005, 15:01

obstawiam problemy z inicjalizacją (konfiguracją) zegarka...
wystaw może swój kod ( please, w tagach |code| )

Raflles
-
Posty: 77
Rejestracja: 06 sie 2005, 17:15
Lokalizacja: Tychy
Kontakt:

Post autor: Raflles » 06 gru 2005, 17:32

Kod: Zaznacz cały

Config Lcd = 16 * 2
Config Sda = P3.5
Config Scl = P3.7
Dim M As Byte
Dim S As Byte
Dim H As Byte
Dim X As Byte
Dim Y As Byte
Dim Z As Byte
Dim A As Bit
Declare Sub Godz
Declare Sub Minuty
Declare Sub Zegar
Declare Sub Wyswietl
Declare Sub Wyslij
Declare Sub Alarm


no i generalnie nie mam pojęcia jak ustawić te rejestry kontrolne:(


Do
   Cls
   Lcd "  Zegar V 1.00  "
   A = 0
   Waitms 40
   Set P3.2
   If P3.2 = 0 Then
   Call Godz
   A = 1
   End If
   Set P3.0
   If P3.0 = 0 Then Call Godz
Loop

Sub Godz
   Waitms 200
   X = 0
   Do
      Set P3.1
      If P3.1 = 0 Then Incr X
      If X = 24 Then X = 0
      Waitms 100
      Cls
      If X < 10 Then Lcd "Godzina: 0" ; X
      If X > 9 Then Lcd "Godzina: " ; X
      Set P3.0
      If P3.0 = 0 Then Call Minuty
   Loop
End Sub
Return

Sub Minuty
   Y = 0
   Waitms 200
   Do
      Set P3.1
      If P3.1 = 0 Then Incr Y
      If Y = 60 Then Y = 0
      Waitms 100
      Cls
      If Y < 10 Then Lcd "Minuty: 0" ; Y
      If Y > 9 Then Lcd "Minuty: " ; Y
      Set P3.0
      If P3.0 = 0 And A = 0 Then Call Wyslij
      If P3.0 = 0 And A = 1 Then Call Alarm

   Loop
End Sub
Return

Sub Zegar

   Do
      Set A
      I2cstart
      I2cwbyte 162
      I2cwbyte 2
      I2cstart
      I2cwbyte 163
      I2crbyte S , Ack
      I2crbyte M , Ack
      I2crbyte H , Nack
      I2cstop
      H = Makedec(h)
      M = Makedec(m)
      S = Makedec(s)
      Set P3.0
      Set P3.1
      Set P3.3
      Set P3.4
      If P3.0 = 0 And P3.1 = 0 Then Call Godz
      If P3.3 = 0 Then
      Call Godz
      Reset A
      Else
      End If
      Call Wyswietl
   Loop
End Sub
Return

Sub Wyswietl

   Cls
   If M < 10 And S < 10 Then
   Lcd "    " ; H ; ":0" ; M ; ":0" ; S
   Elseif M < 10 And S > 9 Then
   Lcd "    " ; H ; ":0" ; M ; ":" ; S
   Elseif M > 9 And S < 10 Then
   Lcd "    " ; H ; ":" ; M ; ":0" ; S
   Elseif M > 9 And S > 9 Then
   Lcd "    " ; H ; ":" ; M ; ":" ; S
   End If

Cursor Off Noblink
Waitms 80

End Sub
Return

Sub Wyslij
      Waitms 200

      Z = 0
      Y = Makebcd(y)
      X = Makebcd(x)
      Z = Makebcd(z)

      I2cstart
      I2cwbyte 162
      I2cwbyte 2
      I2cwbyte Z
      I2cwbyte Y
      I2cwbyte X
      I2cstop

   Wait 1

   Call Zegar


End Sub
Return

Sub Alarm

Set P3.4

    X = Makebcd(x)
    Z = Makebcd(z)


I2cstart
I2cwbyte 162
I2cwbyte 0
I2cwbyte 4
I2cstop
I2cstart
I2cwbyte 162
I2cwbyte 8
I2cwbyte 16
I2cstop
I2cstart
I2cwbyte 162
I2cwbyte 11
I2cwbyte Y
I2cwbyte X
I2cstop


Wait 1
Reset P3.4
Call Zegar

End Sub
Return



End


[ Dodano: 06-12-2005, 17:34 ]
Za ustawienie alarmu odpowiada podprogram alarm. ostatnia inicjacja magistrali I2C przepisuje ustawione wcześniej dane do rejestru minut i godzin.

[ Dodano: 06-12-2005, 22:18 ]
Problem został zażegnany. Pomógł mi w tym kolega Framer z chatu Elcafe !!

Dzięki !!!!!!!!!!!

ODPOWIEDZ