Hallo Zusammen,
ich habe 2 Arduino Mega 2560. Eins als Master, das andere als Slave.
Auf jedem Board ist jeweils ein RTC DS1307, ein Touch Display MI0283QT9
und 14 Wärmesensoren verbaut.
Ich habe die Boards mit dem oben beschriebenen Aufbau bekommen.
Beschreibung der Funktion:
Ich habe einen I2C Bus verwendet um die Boards miteinander zu verbinden,
da dieser Aufbau später mit bis zu 4 Slaves arbeiten soll.
Beim Master wird nach dem Start auf dem Display eine Abtastrate
eingestellt um die Messungen aufnehmen zu können. Der Master startet
dann die eigene Messung und im Anschluss die Messungen der Slaves.
Die gemessenen Daten werden dann auf dem Display angezeigt und zusammen
mit dem Datum und der Uhrzeit auf eine mircoSD gespeichert.
Ich hatte bereits ein Funktionierendes Programm für ein einzelnes Gerät
und sollte den Code mit der Master/Slave Funktion erweitern.
Das der originale Quellcode fast 4000 Zeilen enthält und nicht von mir
erstellt wurde, werde ich es nicht hochladen.
Dies ist mir auch gelungen, jedoch trat folgendes Problem auf:
Er tritt immer wieder auf, das das aktuelle Datum und die Uhrzeit nicht
richtig erkannt werden (sei es Slave oder Master).
Hier habe ich die Nummer der Messung zusammen mit der Zeit und dem Datum
auf dem Serial Monitor anzeigen lassen. Abtastrate war bei 5 Sekunden.
1 | /*
|
2 | 12.2.2015;13:21:11;Measurement Nr.: 20
|
3 | 12.2.2015;13:21:16;Measurement Nr.: 21
|
4 | 12.2.2015;13:21:21;Measurement Nr.: 22
|
5 | 12.2.2015;13:21:26;Measurement Nr.: 23
|
6 | 12.2.2015;13:21:31;Measurement Nr.: 24
|
7 | 12.2.2015;13:21:36;Measurement Nr.: 25
|
8 | 12.2.2015;13:21:41;Measurement Nr.: 26
|
9 | 12.2.2015;13:21:46;Measurement Nr.: 27
|
10 | 0.0.2000;0:0:0;Measurement Nr.: 28
|
11 | 12.2.2015;13:21:56;Measurement Nr.: 29
|
12 | 12.2.2015;13:20:1;Measurement Nr.: 30
|
13 | 12.2.2015;13:20:6;Measurement Nr.: 31
|
14 | 0.0.2000;0:0:0;Measurement Nr.: 32
|
15 | 12.2.2015;13:20:16;Measurement Nr.: 33
|
16 | 12.2.2015;13:20:21;Measurement Nr.: 34
|
17 | 0.0.2000;0:0:0;Measurement Nr.: 35
|
18 | 12.2.2015;13:20:31;Measurement Nr.: 36
|
19 | 0.0.2000;0:0:0;Measurement Nr.: 37
|
20 | 12.2.2015;13:20:41;Measurement Nr.: 38
|
21 | 12.2.2015;13:20:46;Measurement Nr.: 39
|
22 | 12.2.2015;13:20:51;Measurement Nr.: 40
|
23 | */
|
Da kann man genau sehen das die Zeit manchmal nicht erfasst wird.
Meine Vermutung:
Der DS1307 auf jedem Board ist mit im I2C Bus. Dieser hat laut
Hersteller eine festgelegte Adresse (0x68 bzw. 104).
1.) Könnte es daran liegen, das bei der Abfrage versucht wird auf beide
RTC's gleichzeitig zuzugreifen?
2.) Wenn ja, gibt es eine Möglichkeit einen der beiden RTC's zu
deaktivieren, ohne diesen entfernen zu müssen?