Ich brauche mal eure Hilfe. Und zwar versuche ich den Arduino Code in
nicht-Arduino Code zu übersetzen.
Gegeben:
1 | void RDA5807_ReadW(int i_cnt)
|
2 | {
|
3 | Wire.beginTransmission(RDA5807_adrr); // Device 0x11 for random access
|
4 | Wire.write(0x0C); // Start at Register 0x0C
|
5 | Wire.endTransmission(0); // restart condition
|
6 | Wire.requestFrom(RDA5807_adrr,2*i_cnt, 1); // Retransmit device address with READ, followed by 8 bytes
|
7 | for (int i=0; i<i_cnt; i++) // Loop for Read data
|
8 | {aui_RDS[i]=256*Wire.read()+Wire.read();} // Read Data into Array of Unsigned Ints
|
9 | Wire.endTransmission();
|
10 | }
|
Und hier meine Übersetzung mit Fleury Lib i2cmaster.h:
1 | void RDA5807_ReadW(int i_cnt)
|
2 | { int readL, readH;
|
3 | char buffer[50];
|
4 |
|
5 | i2c_start(RDA5807_adrr); // Device 0x11 for random access
|
6 | i2c_write(0x0C); // Start at Register 0x0C
|
7 | i2c_rep_start(RDA5807_adrr+I2C_READ); // restart condition
|
8 | for (int i=0; i<i_cnt; i++) // Loop for Read data
|
9 | { readH=i2c_readNak();
|
10 | readL=i2c_readNak();
|
11 | aui_RDS[i]=256*readH+readL;
|
12 | sprintf(buffer,"Read: aui_RDS[%i]=%x\n",i,aui_RDS[i]);
|
13 | uart_puts(buffer);
|
14 |
|
15 | } // Read Data into Array of Unsigned Ints
|
16 | i2c_stop();
|
17 | }
|
Ich bekomme komische Werte heraus, daher ist meine Abfrage wohl falsch.
Read: aui_RDS[0]=18ff
Read: aui_RDS[1]=ffff
Read: aui_RDS[2]=ffff
Read: aui_RDS[3]=ffff
Da die Fleury_Lib mit 8-bit i2c-Adressen arbeitet, ist
RDA5807_adrr=0x11<<1;