Frage zu SCA61T-FA1H1G mit PIC18F4620

OP #1744775
Lesenswert?

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

6

7
int16 x;
8
void main()
9
{
10
   setup_spi(SPI_MASTER| SPI_L_TO_H| SPI_CLK_DIV_4);
11
  while(1)
12
  {
13
    x = SPI_Read();
14
    printf("Zahl %u\r\n", x);
15
    delay_ms(500);  }
16
}

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
OP #1744807
Lesenswert?

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

6
#define SPI_MODE_0_0 0x4000
7

8
int16 x;
9
void main()
10
{
11
  output_high(PIN_A5);
12
  delay_ms(50);
13
   setup_spi(SPI_MASTER| SPI_MODE_0_0| SPI_CLK_DIV_64);
14
  while(1)
15
  {
16
    output_low(PIN_A5);
17
    spi_write(0x10);
18
    x = SPI_Read(0x10);
19
    output_high(PIN_A5);
20
    printf("Zahl %ld\r\n", x);
21
    delay_ms(50);
22

23
  
24
  }
25
}
Danke schon mal
mfg
TDK
Gast #1744817
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.
OP #1744913
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
1
 spi_write(0x10)
 und bekomme dann aus dem Register 0x10 durch
1
 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
Gast #2077338
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren