Hallo
Ich habe ein Problem mit dem RTC Ds3231, nämlich zählt die Uhr bei den
Sekunden bis 89 springt dabei aber auch um einige Sekunden vorwärts wie
z.B. von 9 auf 16 oder von 57 auf 64 bei Minuten und Stunden passiert
ähnliches(Datum habe ich noch nicht getestet). Das Problem besteht
sowohl bei der Ausgabe über Uart als auch über 7-Segment Display auch
ist das Err Bit 0 welches eigentlich ja für eine erfolgreiche I2C
übertragung steht. Ich habe 2 Uhren gekauft und bei beiden entsteht
dieser Fehler.
Hier noch der Bascom Code zu Abfragen obwohl ich denke das das Problem
nicht dort liegt:
1 | $regfile = "m8def.dat" 'atmega8 Mikrocontroller
|
2 | $crystal = 8000000
|
3 | $hwstack = 32
|
4 | $swstack = 32
|
5 | $baud = 9600
|
6 |
|
7 |
|
8 | $lib "i2c_twi.lbx" ' hardware I2C
|
9 | Config Sda = Portc.4
|
10 | Config Scl = Portc.5
|
11 | Config Twi = 400000
|
12 |
|
13 |
|
14 |
|
15 | I2cinit
|
16 | Const Ds3231w = &B11010000 'write und read adressen für den Ds3231
|
17 | Const Ds3231r = &B11010001
|
18 |
|
19 |
|
20 | Dim _sec as byte
|
21 | Dim _min as Byte
|
22 | Dim _hr as byte
|
23 |
|
24 |
|
25 | Do
|
26 |
|
27 | I2cstart
|
28 | I2cwbyte Ds3231w
|
29 | I2cwbyte 0 'stackpointer auf 0(für Sekunden) setzen
|
30 |
|
31 | I2cstart
|
32 | I2cwbyte Ds3231r
|
33 | I2crbyte _sec , ack
|
34 | I2crbyte _min , ack
|
35 | I2crbyte _hr , Nack
|
36 | I2cstop
|
37 |
|
38 | Print "Err: " ; Err ' Err = 0 ->übertragungs kein Fehler
|
39 | Print "Zeit: " ; _hr ; ":" ; _min ; ":" ; _sec 'Zeit über Uart ausgeben
|
40 |
|
41 | waitms 500
|
42 | Loop
|
43 | End
|
Ich hoffe ihr könnt mir weiter helfen
Vielen Dank im vorraus
Robin