Forum: Mikrocontroller und Digitale Elektronik Pic18f i2c AS5600 Hilfe Benötigt


von Franz (kubawu)


Angehängte Dateien:

Lesenswert?

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(&reg,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(&reg,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...) ?

: Bearbeitet durch User
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.