MLX90316 probleme beim auswerten

Gast #1937481
Lesenswert?
• ▲
▼
Hallo Leute ,

ich versuche gerade den Drehgeber MLX90316 (SPI version) mit den µC : 
Atmega16 als auszuwerten allerdings bekomme ich unveränderlische Werte 
nicht wie es sein soll, als Transistor verwende ich BUK9535-55A, und die 
Auswertungsergebnisse sehen so aus :

1.Byte : 01111111
2.Byte : 11111111
3.Byte : 11111111
4.Byte : 11111111
5.Byte : 11111111
6.Byte : 11111111
7.Byte : 11111111
8.Byte : 11111111
9.Byte : 11111111
10.Byte : 11111111

ich habe das Code vereinfacht um die ersten daten zubekommen, es sieht 
so aus :

//====================================================

PORTB &=~(1<<CS);
_delay_us(13);

  SPDR = 0xaa;
  while (!(SPSR&(1<<SPIF)));
  SPDR = 0x00;
  while (!(SPSR&(1<<SPIF)));
  r_daten[0] = SPDR;
        x0 = r_daten[0];
  _delay_us(13);


  SPDR = 0xff;
  while (!(SPSR&(1<<SPIF)));
  SPDR = 0x00;
  while (!(SPSR&(1<<SPIF)));
  r_daten[1] = SPDR;
  x1 = r_daten[1];
  _delay_us(13);

  SPDR = 0xff;
  while (!(SPSR&(1<<SPIF)));
  SPDR = 0x00;
  while (!(SPSR&(1<<SPIF)));
  r_daten[2] = SPDR;
  x2 = r_daten[2];
  _delay_us(13);

  SPDR = 0xff;
  while (!(SPSR&(1<<SPIF)));
  SPDR = 0x00;
  while (!(SPSR&(1<<SPIF)));
  r_daten[3] = SPDR;
  x3 = r_daten[3];
  _delay_us(13);

  SPDR = 0x00;
  while (!(SPSR&(1<<SPIF)));
  SPDR = 0x00;
  while (!(SPSR&(1<<SPIF)));
  r_daten[4] = SPDR;
  x4 = r_daten[4];
  _delay_us(13);

  SPDR = 0x00;
  while (!(SPSR&(1<<SPIF)));
  SPDR = 0x00;
  while (!(SPSR&(1<<SPIF)));
  r_daten[5] = SPDR;
  x5 = r_daten[5];
  _delay_us(13);

  SPDR = 0x00;
  while (!(SPSR&(1<<SPIF)));
  SPDR = 0x00;
  while (!(SPSR&(1<<SPIF)));
  r_daten[6] = SPDR;
  x6 = r_daten[6];
  _delay_us(13);

  SPDR = 0x00;
  while (!(SPSR&(1<<SPIF)));
  SPDR = 0x00;
  while (!(SPSR&(1<<SPIF)));
  r_daten[7] = SPDR;
  x7 = r_daten[7];
  _delay_us(13);

  SPDR = 0x00;
  while (!(SPSR&(1<<SPIF)));
  SPDR = 0x00;
  while (!(SPSR&(1<<SPIF)));
  r_daten[8] = SPDR;
  x8 = r_daten[8];
  _delay_us(13);

  SPDR = 0x00;
  while (!(SPSR&(1<<SPIF)));
  SPDR = 0x00;
  while (!(SPSR&(1<<SPIF)));
  r_daten[9] = SPDR;
  x9 = r_daten[9];
  _delay_us(13);

PORTB|=(1<<CS);
_delay_ms(1);

//====================================================

Das müsste doch eigentlich funktionieren, oder?

Allerdings bin ich auch kein so erfahrener programmierer und wäre froh 
wenn
mir da jemand tips geben kann!

Vielen Dank
Gast #1937523
Lesenswert?
• ▲
▼
ich habe hier einen kleines Fehler beim tippen gemacht, die Werte die 
ich von MOSI sende sehen soaus:
SPDR = 0xaa;
SPDR = 0xff;
SPDR = 0xff;
SPDR = 0xff;
SPDR = 0xff;
SPDR = 0xff;
SPDR = 0xff;
SPDR = 0xff;
SPDR = 0xff;
SPDR = 0xff;

an Kritik bin ich auch interessiert.

danke im vorraus
#2036630
Lesenswert?
• ▲
▼
Ich bin gerade beim Suchen nach Ideen wie man einen Schrittmotor 
mithilfe eines AVR Prozessors auf einen vorgegebenen Winkel stellen kann 
auf den MLX90136 gestossen, und dann beim Googeln auf Deinen Beitrag.

Bist Du weiter gekommen? Vielleicht hilft ein anderer Beitrag, den ich 
beim Googeln fand: 
http://www.anyma.ch/blogs/research/2010/04/07/very-nice-sensor-mlx90316-rotary-position-sensor/

Bei dem scheint es geklappt zu haben, und er gibt an, was der Drehgeber 
über SPI bekommen muss, damit er dann den Winkel ausspuckt - vielleicht 
hilft Dir das. Was für einen Magneten verwendest Du (und von wo 
bezogen)? und was für einen FET?

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.