- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 48

Thema: RP6 Kompass

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.09.2010
    Alter
    31
    Beiträge
    129
    Nur mal so nebenbei eine Frage.
    Wir sprechen schon von den auf dem Bild Grün markierten I²C Port, oder sind die Ports für z.B. die Experemetierplatine gemeint (XBUS)?

    http://imageshack.us/photo/my-images/716/rp6u.jpg/

    Die Grün markierten spreche ich trozdem über PC1 und PC0 an richtig?

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    40
    Beiträge
    1.516
    Hallo,

    der I2C Bus ist natürlich mit allen Pads verbunden die auf dem Mainboard mit SCL und SDA beschriftet sind.
    Pullup Widerstände sind schon auf dem Mainboard vorhanden (4K7).

    Beim anderen Problem kann ich leider wenig helfen da ich diesen Typ Kompass noch nie verwendet habe.

    Funktioniert der I2C Bus denn allgemein noch problemlos?
    Also mal mit RP6Base_I2CSlave und dem RP6-M32 mit einem der normalen Beispielprogramme laufen lassen...

    MfG,
    SlyD

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.09.2010
    Alter
    31
    Beiträge
    129
    Ja der I2C Bus funktioniert noch.

    Also die Kommunikation von der M32 Platine und der Base klappt einwandfrei.

    Schade, ich vermute dass ich etwas beim Abrufen falsch mache aber ich habe leide keine Ahnung was.

    Mfg Berghuhn

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.09.2010
    Alter
    31
    Beiträge
    129
    Hallo,

    ich hatte nun endlich, nach langem rumprobieren einen Durchbruch!

    Ich habe den Fehler gefunden, an dem es lag, dass immer nur ein Wert raus kam.

    Code:
    //bisherige Kompassadresse:
    //#define MAG_ADDRESS           (0x3C)
    
    
    //funktionierende Kompassadresse:
    #define MAG_ADDRESS           (0x3C >> 1)
    Ich bin eigentlich aus zufall darauf gekommen, bin aber daraus noch nicht schlau geworden.
    Wenn mir dass noch einer erklären kann wäre echt super .

    MfG,
    Berghuhn

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    40
    Beiträge
    1.516
    Die I2C Adressen sind 7 Bit lang - das unterste bit wird für lesen/schreiben verwendet.

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.09.2010
    Alter
    31
    Beiträge
    129
    Achso, okay dann ergibt das sogar Sinn ^^.

    Jetzt hätte ich noch eine frage zum Kalibrieren. Wie genau mache ich das?
    Lege ich dabei einfach einen min, max Vektor fest?
    Oder muss ich es schon in das register des LSM303DLH eintragen?
    Wenn ja in welches?

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.09.2010
    Alter
    31
    Beiträge
    129
    Nach langer Zeit habe ich nun endlich wieder Zeit gefunden meinen RP6 auszugraben und daran weiter zu machen ^^.
    der Kompass ist nur auf der M32 Platine angeschlossen und dass auslesen funktioniert fast ohne probleme ;D.

    Mein Problem ist, dass beim auslesen immer folgender Error kommt:
    I2C ERROR - TWI STATE: 0x20

    dieser wird durch folgenden Code verursacht:

    Code:
    void read_data_raw(vector *a, vector *m)
    {
        
            // read accelerometer values
            I2CTWI_transmitByte(0x30, 0x30);
            I2CTWI_transmitByte(0x30, OUT_X_L_A);
            
            unsigned char axl = I2CTWI_readByte(0x31);
    
            I2CTWI_transmitByte(0x30, OUT_X_H_A);
            unsigned char axh = I2CTWI_readByte(0x31);
            
            I2CTWI_transmitByte(0x30, OUT_Y_L_A);
            unsigned char ayl = I2CTWI_readByte(0x31);
            
            I2CTWI_transmitByte(0x30, OUT_Y_H_A);
            unsigned char ayh = I2CTWI_readByte(0x31);
            
            I2CTWI_transmitByte(0x30, OUT_Z_L_A);
            unsigned char azl = I2CTWI_readByte(0x31);
            
            I2CTWI_transmitByte(0x30, OUT_Z_H_A);
            unsigned char azh = I2CTWI_readByte(0x31);
    
            // read magnetometer values
            
            I2CTWI_transmitByte(MAG_ADDRESS, 0x3C);
            I2CTWI_transmitByte(MAG_ADDRESS, OUT_X_H_M);
            
            unsigned char mxh = I2CTWI_readByte(0x3D);
            
            
            //I2CTWI_transmitByte(MAG_ADDRESS, OUT_X_L_M);
            unsigned char mxl = I2CTWI_readByte(0x3D);
            
            //I2CTWI_transmitByte(MAG_ADDRESS, OUT_Y_H_M);
            unsigned char myh = I2CTWI_readByte(0x3D);
            
            //I2CTWI_transmitByte(MAG_ADDRESS, OUT_Y_L_M);
            unsigned char myl = I2CTWI_readByte(0x3D);
            
            //I2CTWI_transmitByte(MAG_ADDRESS, OUT_Z_H_M);
            unsigned char mzh = I2CTWI_readByte(0x3D);
            
            //I2CTWI_transmitByte(MAG_ADDRESS, OUT_Z_L_M);
            unsigned char mzl = I2CTWI_readByte(0x3D);
            
    
            a->x = axh << 8 | axl;
            a->y = ayh << 8 | ayl;
            a->z = azh << 8 | azl;
            m->x = mxh << 8 | mxl;
            m->y = myh << 8 | myl;
            m->z = mzh << 8 | mzl;
        
    }
    
    //... 
    // in der main ist noch folgendes:
        I2CTWI_initMaster(100);  // muss ich diese zahl evtl höher machen?
        I2CTWI_setRequestedDataReadyHandler(I2C_requestedDataReady);
        I2CTWI_setTransmissionErrorHandler(I2C_transmissionError);
    
        DDRC = 0;
        PORTC = (1 << PC1) | (1 << PC0); // enable pull-ups on SDA and SCL, respectively
    Danke schonmal im vorraus =)

Ähnliche Themen

  1. Kompass für RP6
    Von axel88 im Forum Robby RP6
    Antworten: 40
    Letzter Beitrag: 04.08.2008, 18:01
  2. Kompass für nur 5€?
    Von Rohbotiker im Forum Elektronik
    Antworten: 5
    Letzter Beitrag: 03.07.2007, 21:11
  3. Kompass
    Von sulu im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 14
    Letzter Beitrag: 15.08.2005, 10:06
  4. Kompass???
    Von Static im Forum Sensoren / Sensorik
    Antworten: 30
    Letzter Beitrag: 18.01.2005, 23:58
  5. !!!KOMPASS!!!
    Von phönix im Forum Sensoren / Sensorik
    Antworten: 12
    Letzter Beitrag: 17.05.2004, 17:14

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress