Broadcast
Wie kann ein ATmega32 an mehrere andere ATmega32 Daten via RS232 senden?
- Im folgenden Aufbau gibt es drei beteiligte Mikrocontroller M1, M2, M3:
- M1 sendet Byte-Zahlen abwechselnd an M2 und M3.
- Die Übertragung geschieht über die RS232-Schnittstelle.
- TxD von M1 ist deshalb sowohl mit RxD von M2, als auch mit RxD von M3 verbunden.
- Hier der schematische Aufbau:
|
Bild 0-1: Schematischer Aufbau für Broadcast.
- Es sollen von M1 nun aber alternierend Daten an M2 und M3 geschickt werden.
- Dies gelingt durch Aufteilen des gesendeten Zeichens in einen Datenteil und einen Empfängerteil:
- Nur die unteren vier Bit eines gesendeten Bytes sind Daten, die oberen vier Bit dienen dazu, den Empfänger festzulegen.
- Somit könnten vier verschiedene Empfänger (M2, M3, M4, M5) in beliebiger Kombination festgelegt werden.
- Beispiele:
|
Gesendetes Byte |
angesprochene Empfänger |
Gesendete Zahl |
0b00010011 |
M2 |
3 |
0b00100111 |
M3 |
7 |
0b00100101 |
M2 und M3 |
5 |
0b11110101 |
M2, M3, M4 und M5 |
5 |
0b11111111 |
M2, M3, M4 und M5 |
15 |
Tabelle 0-1: Beispiele für Empfänger-Konfigurationen und übertragene Daten
- Als Versuch werden nun drei Boards aufgebaut M1, M2 und M3.
- M1 zählt in der Variablen akku immer von 0 bis 9 und sendet diese Zahl an M2.
- Außerdem sendet M1 immer 9-akku an M3.
- Alle Daten werden jeweils angezeigt.
- Es ergibt sich folgende Abfolge:
|
M1 M2 M3
0 0
9 0 9
1 1 9
8 1 8
2 2 8
7 2 7
3 3 7
6 3 6
4 4 6
5 4 5
5 5 5
4 5 4
6 6 4
3 6 3
7 7 3
2 7 2
8 8 2
1 8 1
9 9 1
0 9 0
0 0 0
9 0 9
... ... ...
Code 0-1: Anzeige von M1, M2, und M3
Bild 0-2: Versuchsaufbau
broadcast.zip - Projektdateien für M1, M2 und M3.