Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα,

έχω ένα Arduino UNO και προσπαθώ να πάρω δεδομένα από το MPU-9150 .

Το πρώτο πρου προσπαθώ να κάνω είναι να διαβάσω τον REGISTER 0x75 (WHO_AM_I) για να μου φέρει σαν αποτέλεσμα το 0x68 για να βεβαιωθώ για τη σύνδεση.

Έχω γράψει την ακόλουθη μέθοδο η οποία όμως δουλεύει μόνο αν είναι στο σώμα της setup και όχι στη loop...

void identify()
{
  Wire.beginTransmission(DEVICE_ADDRESS);
  Wire.write(WHO_AM_I);
  Wire.endTransmission();

  Wire.requestFrom(DEVICE_ADDRESS, 1);

  uint8_t test;
  while (Wire.available()) {
    test = Wire.read();
  }

  Serial.println(test, HEX);
}

Μετά προσπαθώντας να φτιάξω μία πιο γενική μέθοδο να διαβάσω Registers έφτιαξα την readFrom η οποία όμως δεν διαβάζει σωστά από τους καταχωρητές. Έβαλα στο σώμα της readFrom() ακριβώς τον ίδιο κώδικα από την identify() αλλά δεν παίζει.

void readFrom(uint8_t Address, short length, uint8_t data[])
{
  Wire.beginTransmission(DEVICE_ADDRESS);
  Wire.write(WHO_AM_I);
  Wire.endTransmission();
  
  Wire.requestFrom(DEVICE_ADDRESS, 1);

  uint8_t test;
  while (Wire.available()) {
    test = Wire.read();
  }
  Wire.endTransmission();
  Serial.println(test, HEX);
}

Ο ίδιο κώδικας στην main παίζει κανονικά, όπως και στην identify(). Στην readFrom() όμως δεν θέλει.

Έχει κανένας ιδέα τι μπορεί να παίζει με αυτό;

 

Χρησιμοποιώ Arduino Uno με IDE 1.0.1 σε Fedora.

Ευχαριστώ πολύ

Δημοσ.

Γιατί κάνεις Begin και end το session σου κάθε φορά που καλείς την συνάρτηση; Μπορείς να κάνεις μία φορά στην αρχή και μετά απλά να διαβάζεις δεδομένα; για τσέκαρε το και πες...

Δημοσ.

Το έχω έτσι γιατί έτσι το έδειχνε στο παράδειγμα στο site του Arduino.

 

Το πρόβλημα τελικά ήταν με το MPU το οποίο ήθελε reset σε κάθε άνοιγμα αλλά εγώ δεν έκανα και κοίταζα σε λάθος διεύθυνση.

Το γιατί είχε αποτελέσματα η συνάρτηση παραμένει ένα μυστήριο!

 

Ευχαριστώ για τον χρόνο σου πάντως

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...