www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zu dieser SPI Kommunikation mit einen ALTIMETER Sensor


Autor: Hans Peter (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag

Habe einen HÖHENSENSOR von INTERSEMA und komme irgendwie nicht weiter.

der Sensor läuft mit einer Clock Frequenz von 500KHZ.

So sieht meine SPI INIT aus.


#define alt_disable()    PORTC &= ~(1<<1);
#define alt_enable()    PORTC |= (1<<1);

void SPI_alt_on()
{
  DDRB &=~(1<<SPI_DI);
  DDRB |= (1<<SPI_Clock);
  DDRB |= (1<<SPI_DO);
  DDRC |= (1<<altcs);  //PINC1
  DDRA |= (1<<4);  //Flash Atmel
  DDRA |= (1<<3);  //SD Card
  DDRC |= (1<<0);  //RTC
  DDRB |= (1<<SPI_SS);
  PORTC &= ~(1<<altcs); //ALT Sensor
  PORTA|=(1<<4);  //Flash Atmel
  PORTA|=(1<<3);  //SD Card
  PORTC|=(1<<0);  //RTC


    SPCR= 0x0056;
    SPSR = 0x0001;  // 8-bit size
}


da der Sensor keinen CS Pin besitz ist laut hersteller ein Levelshifter 
zu benutzen der die CS Leitung an den OE Pin verbindet und am Ausgang 
des LEVELSHIFTERS geht es zu MISO des AVR und am EINGANG geht es zum 
Sensor.

Wenn der PIN CS des AVR auf Height geht geht der OE pin auf Masse und 
der LEVELSHIFTER ist an diesen Port aktiv.Wenn der CS Pin auf Low geht 
dann sit der OE pin offen und der LEVELSHIFTER Port ist disable der AVR 
empfängt nichts vom Sensor. So laut hersteller.

Ist meine Initialisierung richtig???


nun schreibe ich an den SPI WORD1.

void read_word1()
{
char word11,word12,word1;
alt_enable();
Write_SPI(0x1d);
Write_SPI(0x50);
read_SPI();
Write_SPI(0);  //DUMMY
word11=read_SPI();
Write_SPI(0); //DUMMY
word12=read_SPI();
alt_disable();
word1=word11<<8 & word12;
printf("Word1 %d\r",word1);
}

unsigned char read_SPI()
{
while(!(SPSR & (1<<SPIF)));
return (SPDR);
}



void Write_SPI(unsigned char data)
{SPDR=data;
while(!(SPSR & (1<<SPIF)));
}


ich bekomme als antwort 0.


habe ich ein verständiss Problem mit dem Datenbalatt???



Autor: Hans Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe es soweit geschafft das mir jetzut über SPI die Daten 
rübergschickt werden.

nur wie bekomme ich diese zusammen

Word 1.8Bit MSB und Word 2. 8 Bit LSB.


Laut Datenblatt

Word1=MSB Word1 << 8 & LSB Word1.

wenn ich das mache kommt bei mir immer 0 raus.

Word1=73 << 8 & 128;
Word1=0;

wie bringe ich die MSB und LSB zusammen.

Im Beispiel

MSB=196
LSB=250
Word1=50426

Kann mir da einer weiterhelfen????

Danke

Autor: Hans Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habs rausgefunden

MSB=196;
LSB=250;

Word1=(MSB<<8)+250;
Word1=50426;

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.