Forum: Mikrocontroller und Digitale Elektronik I2C Adressen


von Daniel (Gast)


Lesenswert?

Hallo,

ich suche verzweifelt nach I2C Adressen.. Wie soll ich das erklären?

Also ich habe zwei ATMega128. Einen im Master und einen im Slave Modus.

Wenn ich die Adressen wie folgt setze:
1
#define RGBWBOARD_ONE_ADDRESS              0x32
2
#define RGBWBOARD_TWO_ADDRESS              0x34
3
#define RGBWBOARD_THREE_ADDRESS            0x36
4
#define RGBWBOARD_FOUR_ADDRESS            0x38
5
#define RGBWBOARD_FIVE_ADDRESS            0x3A
6
#define RGBWBOARD_SIX_ADDRESS              0x3C
7
#define RGBWBOARD_SEVEN_ADDRESS            0x3E
8
#define RGBWBOARD_EIGHT_ADDRESS            0x40
9
10
[code]
11
12
funktioniert das mit diesen Boards, bzw. den Adressen. Ich benötige jedoch weitere Adressen, also habe ich folgende Datei:
13
14
[code]
15
16
// RGBW Boards
17
18
#define RGBWBOARD1                    0
19
#define RGBWBOARD2                    1
20
#define RGBWBOARD3                    2
21
#define RGBWBOARD4                    3
22
#define RGBWBOARD5                    4
23
#define RGBWBOARD6                    5
24
#define RGBWBOARD7                    6
25
#define RGBWBOARD8                    7
26
27
#define RGBWBOARD_ONE_ADDRESS              0x32
28
#define RGBWBOARD_TWO_ADDRESS              0x34
29
#define RGBWBOARD_THREE_ADDRESS            0x36
30
#define RGBWBOARD_FOUR_ADDRESS            0x38
31
#define RGBWBOARD_FIVE_ADDRESS            0x3A
32
#define RGBWBOARD_SIX_ADDRESS              0x3C
33
#define RGBWBOARD_SEVEN_ADDRESS            0x3E
34
#define RGBWBOARD_EIGHT_ADDRESS            0x40
35
36
// 32CH PWM Boards
37
38
#define DREIZWEICHBOARD1                0
39
#define DREIZWEICHBOARD2                1
40
#define DREIZWEICHBOARD3                2
41
#define DREIZWEICHBOARD4                3
42
#define DREIZWEICHBOARD5                4
43
#define DREIZWEICHBOARD6                5
44
#define DREIZWEICHBOARD7                6
45
#define DREIZWEICHBOARD8                7
46
47
#define DREIZWEICHPWMBOARD_ONE_ADDRESS        0x42
48
#define DREIZWEICHPWMBOARD_TWO_ADDRESS        0x44
49
#define DREIZWEICHPWMBOARD_THREE_ADDRESS      0x46
50
#define DREIZWEICHPWMBOARD_FOUR_ADDRESS      0x48
51
#define DREIZWEICHPWMBOARD_FIVE_ADDRESS      0x4A
52
#define DREIZWEICHPWMBOARD_SIX_ADDRESS        0x4C
53
#define DREIZWEICHPWMBOARD_SEVEN_ADDRESS      0x4E
54
#define DREIZWEICHPWMBOARD_EIGHT_ADDRESS      0x50
55
56
// 4CH Amplifer Boards
57
58
#define VIERCHBOARD1                    0
59
#define VIERCHBOARD2                    1
60
#define VIERCHBOARD3                    2
61
#define VIERCHBOARD4                    3
62
#define VIERCHBOARD5                    4
63
#define VIERCHBOARD6                    5
64
#define VIERCHBOARD7                    6
65
#define VIERCHBOARD8                    7
66
67
#define VIERCHAMPBOARD_ONE_ADDRESS          0x14
68
#define VIERCHAMPBOARD_TWO_ADDRESS          0x16
69
#define VIERCHAMPBOARD_THREE_ADDRESS        0x18
70
#define VIERCHAMPBOARD_FOUR_ADDRESS          0x1A
71
#define VIERCHAMPBOARD_FIVE_ADDRESS          0x1C
72
#define VIERCHAMPBOARD_SIX_ADDRESS          0x1E
73
#define VIERCHAMPBOARD_SEVEN_ADDRESS        0x20
74
#define VIERCHAMPBOARD_EIGHT_ADDRESS        0x22

Mit den Boards 0x32 - 0x40 klappt das ganze wunderbar. Mit den anderen 
garnicht.

Ändere ich die Adressen bei den anderen Boards auf Adressen 0x32 - 0x40 
gehen die anderen Boards auch.

Also stimmt irgendetwas mit den Adressen nicht...

Kann mir da jemand weiter helfen oder mit die Adressen vielleicht sagen?

Danke

von pasi (Gast)


Lesenswert?

Setzt du denn die Adressen im TWAR-Register? Im Datenblatt ist das 
eigentlich recht ausführlich beschrieben denke ich.

Gruß

von Stefan F. (Gast)


Lesenswert?

Vielleicht sind deine Pull-Up Widerstände zu schwach. Da sollte 
mindestens 1 mA fließen, also verwende nicht mehr als 4,7kΩ bei 5V.

Kannst du die Signale mal mit einem Oszilloskop visualisieren?

von Oliver S. (oliverso)


Lesenswert?

Daniel schrieb:
> Also stimmt irgendetwas mit den Adressen nicht...

Mal ganz blöd gefragt: welche Adressbereiche können denn an den Boards 
eingestellt werden?
Und was macht der Master, was macht der Slave?

Oliver

: Bearbeitet durch User
von c-hater (Gast)


Lesenswert?

Oliver S. schrieb:

> Mal ganz blöd gefragt: welche Adressbereiche können denn an den Boards
> eingestellt werden?

Ich denke auch, dass das der springende Punkt ist: die zusätzlichen 
Boards sind halt keine Boards, die unter Kontrolle des TO sind, sondern 
irgendwas Fremdes.

Und der TO ist so doof, dass er nicht begreift, dass er an seinem Master 
rumdoktoren kann, wie er will, damit aber auf die Adressen dieser 
fremden Slaves überhaupt keinen Einfluß ausüben kann.

Ein C&P-ler halt...

von Daniel (Gast)


Lesenswert?

Danke für die Antworten...

Ich habe nochmal alles durchsucht und durchschaut.

Nun war es ein copy & paste Fehler.

Zuerst jedoch. Der Master ist ein ATMega128 den ICH per ISP flashen 
kann.

Der Slave ist ebenfalls ein ATMega128 und von MIR per ISP flashbar.

Master und slave Code sind von mir.

Was ist aber passiert?

Ich lasse mir vom Master per uart die verbunden Slaves anzeigen. Dazu 
habe ich eine suchfunktion gebaut.

Nun habe ich drei Arten von Boards. Habe die Funktion copiert und 
eingefügt, jedoch nicht die Werte geändert. So haben die Chips 
ordnungsgemäß kommuniziert jedoch habe ich die falschen Daten 
ausgegeben.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.