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

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.