www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MLX90316 probleme beim auswerten


Autor: Simon (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Simon (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Juergen Harms (harms)
Datum:

Bewertung
0 lesenswert
nicht 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...

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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.