mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zu SCA61T-FA1H1G mit PIC18F4620


Autor: Philipp H. (tdk29)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
ich versuche heute schon den ganzen Nachmittag eine Übertragung vom 
SCA61T auf den USB-Port zu bekommen.
Folgender Code bis jetzt:
#include <18F4620.h>
#fuses HS
#use delay(clock=16000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, parity=N, bits=8)


int16 x;
void main()
{
   setup_spi(SPI_MASTER| SPI_L_TO_H| SPI_CLK_DIV_4);
  while(1)
  {
    x = SPI_Read();
    printf("Zahl %u\r\n", x);
    delay_ms(500);  }
}

Leider bekomme ich nur 255 bei Putty empfangen.
Das Problem muss irgendwo zwischen Empfangen vom Lagesensor und Senden 
vom PIC auf die Serielle Schnittstelle liegen.
Ich denke das Problem liegt daran die 11 Bits aus dem Lagesensor 
auszulesen.
Hat jemand eine Idee woran dies liegen könnte?
Danke
mfg
TDK

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Hat jemand eine Idee woran dies liegen könnte?

Ja, das liegt daran das CS nicht benutzt wird.
Wie man das macht sieht man sehr schön im Timing Diagramm.

Autor: Philipp H. (tdk29)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke erstal. Trotzdem bekomme ich nur 8 Bit Empfangen.
(von 00 bis FF / 0 - 255).
#include <18F4620.h>
#fuses HS
#use delay(clock=16000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, parity=N, bits=8)

#define SPI_MODE_0_0 0x4000

int16 x;
void main()
{
  output_high(PIN_A5);
  delay_ms(50);
   setup_spi(SPI_MASTER| SPI_MODE_0_0| SPI_CLK_DIV_64);
  while(1)
  {
    output_low(PIN_A5);
    spi_write(0x10);
    x = SPI_Read(0x10);
    output_high(PIN_A5);
    printf("Zahl %ld\r\n", x);
    delay_ms(50);

  
  }
}
   

Danke schon mal
mfg
TDK

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Danke erstal. Trotzdem bekomme ich nur 8 Bit Empfangen.
>(von 00 bis FF / 0 - 255).

Das wird wohl daran liegen das du nur 8 Bit abholst.

>int16 x;
>printf("Zahl %ld\r\n", x);

int16 und %ld passt nicht so gut zusammen.

Autor: Philipp H. (tdk29)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So,
jetzt bin ich echt verwirrt...
SPI arbeitet doch als Schieberegister?
Gut
das heißt ich schicke in den 8(?) Bit Buffer in meinen Code dann einfach
 spi_write(0x10)
 und bekomme dann aus dem Register 0x10 durch
 spi_read(0x10)
 die Daten aus dem Registern 0x10?
Oder dient "spi_write" als Speicheradressauswahl? aber warum schreib ich 
dann bei "spi_read" auch 0x10 hinzu?...
Sprich - müsste ich um die nächsten 3 bits auszulesen dann noch 3 Bits 
rüberschicken oder müsste ich dann die Adresse 0x18 angeben?...
mfg
Philipp

Autor: Martin Leonhardt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Mit spi_write(0x10) gibst du denn Command an den SCA61 weiter. In dem 
Fall RDAX was für "Read X-channel acceleration through SPI" steht.

Danach musst du 2 mal 8 Bit auslesen und diese zusammenfügen. Die ersten 
11 MSB sind dann die du benötigst.

Gruß Martin

P.S. welche Header Datei verwendet ihr?

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.