Hallo....
ich bräuchte etwas Hilfe bei folgendem Code...
Header Datei
1 | #include "main.h"
|
2 |
|
3 | #define I2CADDRDDR DDRD
|
4 | #define I2CADDRPORT PORTD
|
5 | #define I2CADDRPIND PIND
|
6 | #define I2CADDR1PIN PD2
|
7 | #define I2CADDR2PIN PD1
|
8 | #define I2CADDR3PIN PD0
|
9 |
|
10 | int i2caddr1;
|
11 | int i2caddr2;
|
12 | int i2caddr3;
|
13 |
|
14 | void i2c_readaddr_init(void);
|
15 | void i2c_readaddr(void);
|
und dazu folgende C Datei
1 | #include "main.h"
|
2 | #include "i2c.h"
|
3 |
|
4 | void i2c_readaddr_init(void) {
|
5 |
|
6 | I2CADDRDDR &= ~(1 << I2CADDR1PIN);
|
7 | I2CADDRDDR &= ~(1 << I2CADDR2PIN);
|
8 | I2CADDRDDR &= ~(1 << I2CADDR3PIN);
|
9 |
|
10 | }
|
11 |
|
12 | void i2c_readaddr(void) {
|
13 |
|
14 | if ( I2CADDRPIND & (1<<PIND2) ) {
|
15 | i2caddr1 = 1;
|
16 | } else {
|
17 | i2caddr1 = 0;
|
18 | }
|
19 |
|
20 | if ( I2CADDRPIND & (1<<PIND1) ) {
|
21 | i2caddr2 = 1;
|
22 | } else {
|
23 | i2caddr2 = 0;
|
24 | }
|
25 |
|
26 | if ( I2CADDRPIND & (1<<PIND0) ) {
|
27 | i2caddr3 = 1;
|
28 | } else {
|
29 | i2caddr3 = 0;
|
30 | }
|
31 |
|
32 | }
|
Wir bekomme ich jetzt hin das mit die i2c_readaddr function einen
Rückgabewert liefert? Und vor allem wie bekomme ich daraus eine Adresse?
Also ich nutze die lib von Peter Fleurly!? und da gibt man die Adresse
ja so an => 0x50 oder 0x60 <=
Kann ich da auch "normale" Zahlen nutzen?
Und wie bekomme ich daraus nun eine Adresse?
Also Low ist 0 und High ist 1.. ok.. Sagen wir wir fangen bei 50 an...
0 | 0 | 0 = 50
0 | 1 | 0 = 51
0 | 0 | 1 = 52
1 | 0 | 0 = 53
1 | 1 | 0 = 54
1 | 1 | 1 = 55
0 | 0 | 1 = 56
0 | 1 | 1 = 57
ok... aber wie bekomme ich das nun als Rückgabewert und vor allem als
Adresse gesetzt?
also in etwa
1 | addr = i2c_readaddr;
|
2 | slave_address(addr);
|
Dankeschön