Moin,
...ich stehe grade maximal aufn Schlauch und brauche mal ein
Gedankenstoss. Ich hatte das alles schonmal funktionierend aber leider
ist die Datei verschwunden ò_Ò. Ich möchte derzeit erstmal nur den RAW
Angle ausm AS5600 auslesen mit meinen PIC18f. Code übern MCC generiert
weil ich weiß, dass es mal funktioniert hat.
Aber es kommt nur komsiches Zeug bei raus. Ausgeben lasse ich es aufn
einen kleinen OLED Display. Lese ich nur ein 1 byte aus, springt der
Wert wild hin und her.
Da der RAW Angle laut Tabelle auf 8bit aufgteilt ist, dachte ich, lese
ich 1Byte aus dem register...
Derzeit sieht es so aus
1 | uint16_t data;
|
2 | while(1){
|
3 |
|
4 | data = i2c_read1ByteRegister(0x36,0x0D);
|
5 |
|
6 | Oled_FillArea(2, 23, 93, 62, PIXEL_0);
|
7 | sprintf(b, "%01d",data );
|
8 | Oled_Text(b, 30, 30);
|
9 | __delay_ms(1000);
|
10 | }
|
Das sind die zwei MCC Funktionen
1 | uint8_t I2C1_Read1ByteRegister(i2c1_address_t address, uint8_t reg)
|
2 | {
|
3 | uint8_t returnValue = 0x00;
|
4 |
|
5 | while(!I2C1_Open(address)); // sit here until we get the bus..
|
6 | I2C1_SetDataCompleteCallback(rd1RegCompleteHandler,&returnValue);
|
7 | I2C1_SetBuffer(®,1);
|
8 | I2C1_SetAddressNackCallback(NULL,NULL); //NACK polling?
|
9 | I2C1_MasterWrite();
|
10 | while(I2C1_BUSY == I2C1_Close()); // sit here until finished.
|
11 |
|
12 | return returnValue;
|
13 | }
|
14 |
|
15 | uint16_t I2C1_Read2ByteRegister(i2c1_address_t address, uint8_t reg)
|
16 | {
|
17 | uint16_t returnValue =0x00; // returnValue is little endian
|
18 |
|
19 | while(!I2C1_Open(address)); // sit here until we get the bus..
|
20 | I2C1_SetDataCompleteCallback(rd2RegCompleteHandler,&returnValue);
|
21 | I2C1_SetBuffer(®,1);
|
22 | I2C1_SetAddressNackCallback(NULL,NULL); //NACK polling?
|
23 | I2C1_MasterWrite();
|
24 | while(I2C1_BUSY == I2C1_Close()); // sit here until finished.
|
25 |
|
26 | return (returnValue << 8 | returnValue >> 8);
|
Was mache ich grade grundlegend flasch (außer den MCC zu benutzen...) ?