- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 8 von 8

Thema: MPU-6000 per SPI ansteuern

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.09.2009
    Ort
    Geilenkirchen
    Beiträge
    419

    MPU-6000 per SPI ansteuern

    Hallo!

    Ich versuche einen MPU-6000 per SPI mit einem Atxmega128A1 anzusteuern.
    Soll für einen Quadrocopter verwendet werden, aber ist ja auch egal.
    Das Problem ist, dass er überhaupt keine Daten ausgibt.
    Zuerst dachte ich, dass das IC vielleicht beim Reflowlöten zerstört wurde, daher habe ich es gegen ein fertig verlötetes IC auf einem Breakoutboard ausgetauscht, das kann ja praktisch nicht kaputt sein.
    Dann habe ich die Signale gemessen, die am MPU-6000 ankommen mit dem Oszilloskop gemessen, Clock, Chipselect und MOSI kommen durch und es wird auch der korrekte Wert per MISO gesendet (194).
    Damit möchte ich ihm sagen, dass ich das Register 66 Auslesen (Untereres Byte des Temperaturmesswerts).
    Die 194 ergibt sich durch Hinzufügen des MSBs, welches Signalisiert, dass das Register ausgelesen werden soll.

    Das Problem ist, dass SDO einfach garnichts macht, bleibt durchgehen low.
    Also es kommen nur Nullen an.
    Hat jemand eine Idee, woran das liegen kann?

    Hier der Code:
    Code:
    #include <avr/io.h>
    #include "Init.h"
    
    
    
    
    int main(void)
    {
        Init::Clock_Init();
        Init::USART_Init();
        PORTH.DIRSET = 0xFF;
        PORTH.OUTSET = 0x00;
        
        PORTC.DIRSET = 0b10110000;
        PORTC.OUTSET = 0b00010000;
        SPIC.CTRL =       0b01011111;          // spi master, spi mode 0
        SPIC.INTCTRL = 0x3;        // assign high priority to SPIF interrupts
        
        PMIC.CTRL = 0x04; // enable high priority interrupts
        sei();            // enable global interrupts
        
        while(SPIC.STATUS & 0x80) {
            char rx_byte = SPIC.DATA;   // flush spi receive buffer
        }
        while(1)
        {
            PORTC.OUT &= ~(1 <<PIN4);
            _delay_us(10);
            SPIC.DATA = 194;
        _delay_us(50);    
            SPIC.DATA = 194;
        _delay_us(100);
            PORTC.OUT |= (1 << PIN4);
            _delay_us(10);
            //_delay_ms(200);
            
        }
    }
    
    
    ISR(SPIC_INT_vect) {
                while (!(USARTD1.STATUS & USART_DREIF_bm));
                USARTD1.DATA = SPIC.DATA;
                PORTH.OUTTGL = 0x01;
    }
    mfg
    Olaf
    Geändert von crabtack (24.11.2014 um 14:07 Uhr)

Ähnliche Themen

  1. Mpu-6050
    Von inka im Forum Robby RP6
    Antworten: 12
    Letzter Beitrag: 29.05.2013, 09:41
  2. Digitalpotio über SPI ansteuern
    Von shedepe im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 17.04.2013, 18:53
  3. Digitalpotio über SPI ansteuern
    Von shedepe im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 13.04.2013, 19:32
  4. Problem mit MPU-6050
    Von ni.c im Forum Sensoren / Sensorik
    Antworten: 0
    Letzter Beitrag: 06.04.2012, 11:53
  5. Max 7221 über SPI ansteuern --> Probleme :(
    Von Razer im Forum C - Programmierung (GCC u.a.)
    Antworten: 5
    Letzter Beitrag: 02.05.2006, 16:16

Berechtigungen

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

Labornetzteil AliExpress