f
Warning: Cannot modify header information - headers already sent by (output started at /home/anderian/ftp/www_forum/db/mysql4.php:1) in /home/anderian/ftp/www_forum/includes/sessions.php on line 548

Warning: Cannot modify header information - headers already sent by (output started at /home/anderian/ftp/www_forum/db/mysql4.php:1) in /home/anderian/ftp/www_forum/includes/sessions.php on line 549

Warning: Cannot modify header information - headers already sent by (output started at /home/anderian/ftp/www_forum/db/mysql4.php:1) in /home/anderian/ftp/www_forum/includes/page_header.php on line 343
And-Tech :: Zobacz temat - EvB 5.1 i PCF8563 - bład

Strona korzysta z plików cookie w celu realizacji usług zgodnie z Politykš prywatnoœci.

Możesz okreœlić warunki przechowywania lub dostępu do cookie w Twojej przeglšdarce lub konfiguracji usługi.

And-Tech Strona Główna And-Tech
Forum firmy And-Tech

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy
RejestracjaRejestracja  ZalogujZaloguj  AlbumAlbum  DownloadDownload

Poprzedni temat «» Następny temat
EvB 5.1 i PCF8563 - bład
Autor Wiadomość
wieszak 

Dołączył: 25 Paź 2013
Posty: 3
Wysłany: Pią Paź 25, 2013 10:27 am   EvB 5.1 i PCF8563 - bład

Witam. Jestem tutaj nowy i dopiero sie ucze w BASCOMie. Tesz przepraszam za błedy w tekstu, poniewdz niejestem z Polski :smile:
Doszłem w kursu do lekcji 7, kdzie jest opisana Magistrala I2C. Skompilowałem i wgrałem do płytki program s kursu K3.bas i właczyłem terminal. Ustawiłem czas i date w terminalu i program zaczał wypisywać czas i date. Problem jest w czasie 8 sekund. W tym miejscu sie zmieńa tesz miesiac. Nastepnie w czasie 10 sekund sie znow zmienia miesiac i tak to robi cały czas. No i jeszcze w miescu 40 sekund sie nawet zmieni dzien i godzina. Ponizej jest kod i log z terminalu. Prosze o pomoc.

Płytka startowa jest AVR EvB 5.1 ATMega644P i program mam BASCOM-AVR IDE [2.0.7.3]

Program K3.bas
Kod:

$regfile = "m644pdef.dat"
'$regfile = "m32def.dat"
'$regfile = "m16def.dat"

$crystal = 16000000

Config Sda = Portc.1
Config Scl = Portc.0
$baud = 9600

$hwstack = 32
$swstack = 10
$framesize = 45
'zwiększamy rozmiar ramki, aby funkcje działały poprawnie

Declare Sub Odczyt_pcf8583(byref Hour As Byte , Byref Minute As Byte , Byref Second As Byte , Byref Day As Byte , Byref Month As Byte)
Declare Sub Zapis_pcf8583(byval Hour As Byte , Byval Minute As Byte , Byval Second As Byte , Byval Day As Byte , Byval Month As Byte)

Dim S As Byte , S_old As Byte
Dim M As Byte
Dim H As Byte
Dim D As Byte
Dim Mon As Byte

Waitms 1

I2cinit
'inicjalizacja magistrali I2C
'pobranie danych od użytkownika
Input "Podaj godzine (wpisz 100 aby pozostawic wartosc bez zmian): " , H
If H <> 100 Then
Input "Podaj minute: " , M
Input "Podaj sekunde: " , S
Input "Podaj dzien: " , D
Input "Podaj miesiac: " , Mon
'zapisujemy dane do zegara
Zapis_pcf8583 H , M , S , D , Mon
'Możemy także zapisywać wartości liczbowe dzięki użyciu parametrów Byval
'Zapis_pcf8583 20 , 25 , 00 , 4 , 12
End If

Waitms 1

Do
    Odczyt_pcf8583 H , M , S , D , Mon
    'odczytujemy dane
    If S <> S_old Then
    'sprawdzamy czy sekunda się zmieniła
    'jeśli tak przypisujemy nową wartość sekundy zmiennej tymczasowej i wyświetlamy godzinę oraz datę
    S_old = S
    Print Bcd(h) ; ":" ; Bcd(m) ; ":" ; Bcd(s)
    Print Bcd(d) ; "-" ; Bcd(mon)
    End If
Loop
End

Sub Odczyt_pcf8583(byref Hour As Byte , Byref Minute As Byte , Byref Second As Byte , Byref Day As Byte , Byref Month As Byte)
    I2cstart
    I2cwbyte 162
    I2cwbyte 2
    I2cstart
    I2cwbyte 163
    I2crbyte Second , Ack
    I2crbyte Minute , Ack
    I2crbyte Hour , Ack
    I2crbyte Day , Ack
    I2crbyte Month , Nack
    I2cstop
    Day = Day And &B00111111
    Month = Month And &B00011111
End Sub

Sub Zapis_pcf8583(byval Hour As Byte , Byval Minute As Byte , Byval Second As Byte , Byval Day As Byte , Byval Month As Byte)
    Second = Makebcd(second)
    Minute = Makebcd(minute)
    Hour = Makebcd(hour)
    Day = Makebcd(day)
    Month = Makebcd(month)
    'zamiana wartości na format BCD
    I2cstart
    'Sygnał START
    I2cwbyte 162
    'Adres zegara do zapisu
    I2cwbyte 2
    'Numer rejestru sekund
    I2cwbyte Second
    'Zapis sekund (rejestr 2)
    I2cwbyte Minute
    'Zapis minut (rejestr 3)
    I2cwbyte Hour
    'Zapis godzin (rejestr 4)
    I2cwbyte Day
    'Zapis dni (rejestr 5)
    I2cwbyte Month
    'Zapis miesięcy (rejestr 6)
    I2cstop
    'Sygnał STOP
End Sub


Log z terminalu:
Kod:

Podaj godzine (wpisz 100 aby pozostawic wartosc bez zmian): 10
Podaj minute: 56
Podaj sekunde: 00
Podaj dzien: 25
Podaj miesiac: 10
10:56:01
25-00
10:56:02
25-00
10:56:03
25-00
10:56:04
25-00
10:56:05
25-00
10:56:06
25-00
10:56:07
25-00
10:56:08
25-08
10:56:09
25-08
10:56:10
25-10
10:56:11
25-10
10:56:12
25-10
10:56:13
25-10
10:56:14
25-10
10:56:15
25-10
10:56:16
25-10
10:56:17
25-10
10:56:18
25-18
10:56:19
25-18
10:56:20
25-00
10:56:21
25-00
10:56:22
25-00
10:56:23
25-00
10:56:24
25-00
10:56:25
25-00
10:56:26
25-00
10:56:27
25-00
10:56:28
25-08
10:56:29
25-08
10:56:30
25-10
10:56:31
25-10
10:56:32
25-10
10:56:33
25-10
10:56:34
25-10
10:56:35
25-10
10:56:36
25-10
10:56:37
25-10
10:56:38
25-18
10:56:39
25-18
50:56:40
25-00
50:56:41
25-00
50:56:42
25-00
50:56:43
25-00
50:56:44
25-00
50:56:45
25-00
50:56:46
25-00
50:56:47
25-00
50:56:48
25-08
50:56:49
25-08
50:56:50
25-10
50:56:51
25-10
50:56:52
25-10
50:56:53
25-10
50:56:54
25-10
50:56:55
25-10
50:56:56
25-10
50:56:57
25-10
50:56:58
25-18
50:56:59
25-18
10:57:00
25-00
10:57:01
25-00
10:57:02
25-00
10:57:03
25-00
10:57:04
25-00
10:57:05
25-00
10:57:06
25-00
10:57:07
25-00
10:57:08
25-08
10:57:09
25-08
10:57:10
25-10
10:57:11
25-10
10:57:12
25-10
10:57:13
25-10
10:57:14
25-10
10:57:15
25-10
10:57:16
25-10
10:57:17
25-10
10:57:18
25-18
10:57:19
25-18
10:57:20
25-00
10:57:21
25-00
10:57:22
25-00
10:57:23
25-00
10:57:24
25-00
10:57:25
25-00
10:57:26
25-00
10:57:27
25-00
10:57:28
25-08
10:57:29
25-08
10:57:30
25-10
10:57:31
25-10
10:57:32
25-10
10:57:33
25-10
10:57:34
25-10
10:57:35
25-10
10:57:36
25-10
10:57:37
25-10
10:57:38
25-18
10:57:39
25-18
50:57:40
25-00
50:57:41
25-00
50:57:42
25-00
50:57:43
25-00
50:57:44
25-00
50:57:45
25-00
50:57:46
25-00
50:57:47
25-00
50:57:48
25-08
50:57:49
25-08
50:57:50
25-10
50:57:51
25-10
50:57:52
25-10
50:57:53
25-10
50:57:54
25-10
50:57:55
25-10
50:57:56
25-10
50:57:57
25-10
50:57:58
25-18
50:57:59
25-18
10:58:00
25-00
10:58:01
25-00
10:58:02
25-00
10:58:03
25-00
 
     
piotr94 
Site Admin

Dołączył: 02 Lut 2010
Posty: 606
Skąd: Kraków
Wysłany: Pią Paź 25, 2013 7:22 pm   

Witam, czy nie zastanowiło Pana, że kod jest dla zegarka PCF8583, tymczasem na płytce 5.1 mamy zegarek PCF8563?
Kody pod odpowiedni układ z płytki 5.1 dostępne są w uzupełnieniu kursu: http://forum.and-tech.pl/viewtopic.php?t=1474
_________________
http://www.piotr94.net21.pl/
 
     
wieszak 

Dołączył: 25 Paź 2013
Posty: 3
Wysłany: Pon Paź 28, 2013 11:47 am   

Tak. Później tego tesz zauwazyłem :oops: Dziekuje za pomoc :smile:
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group