BASCOM SPI Gyro auslesen

Gast #3862667
Lesenswert?
• ▲
▼
Hallo,
ich habe ein neues Gyro bekommen:
Hier das Datenblatt:
http://www.siliconsensing.com/media/30649/DocNo-CRG20-00-0100-110-Rev-9PDF.pdf
SPI Interface Seite 10-11.

In Bascom habe ich mit SPI noch nichts gemacht, deshalb ein paar Fragen.

Ich benutze zum Flashen die ISP Schnittstelle.
Das bedeutet, das Hardware SPI ist besetzt.
Ist es da schlauer für den Sensor gleich Software SPI zu verwenden?

Also mein AVR wäre dann der Master, mein Gyro Slave,
ansonsten ist an dem Bus nix mehr.
Wie geht das bei SPI mit der Adressierung?

Also laut Datenblatt muss ich erst mal 6 Bytes senden.
Erstes ist Control Byte:
bit 7-4: Reserved: 0 setzten
bit 3: 0 = Deactivate CBIT_A test
bit 2-0: 011 = Rate / Temperature sensor data
Also Control Byte: &B00000011
Die nächsten 4 Bytes sind Null, dann Checksum

Die 6 Bytes per Spiout ausgeben?

Folgt nach dem SPIOUT dirrekt Spiin?

Ist das soweit richtig?
Gast #3862679
Lesenswert?
• ▲
▼
Chris schrieb:
> Das bedeutet, das Hardware SPI ist besetzt.

Zumindest dein Sensor hat für die Nutzung des SPI mit mehr als zwei 
Teilnehmern ein SPI-Selekt Signal.

> Folgt nach dem SPIOUT dirrekt Spiin?

Die Daten fließen bei SPI immer gleichzeitig auf Input und Output. Ob 
das leere oder notwendige Daten sind, entscheidet die Applikation.
Gast #3862732
Lesenswert?
• ▲
▼
> Folgt nach dem SPIOUT dirrekt Spiin?

>Die Daten fließen bei SPI immer gleichzeitig auf Input und Output. Ob
>das leere oder notwendige Daten sind, entscheidet die Applikation.

Ich hatte mich auf den Quellcode bezogen.
Gast #3865291
Lesenswert?
• ▲
▼
Hab jetzt mal ein kleines Programm geschriben.
Kann da mal jemand drüber schauen?
Haut das so hin wie ich mir das vorstelle?
1
$regfile = "m644adef.dat"
2
$crystal = 16000000
3
$hwstack = 50
4
$swstack = 50
5
$framesize = 50
6

7
Dim Temp_out As Integer
8
Dim Gyro_zout As Integer
9
Dim Y As Byte
10

11
Config Spi = Soft , Din = Pina.0 , Dout = Porta.1 , Ss = Porta.2 , Clock = Porta.3
12
Dim Out_byte(6) As Byte
13
Dim In_byte(6) As Byte
14
Out_byte(1) = &B00000011
15
Out_byte(2) = 0
16
Out_byte(3) = 0
17
Out_byte(4) = 0
18
Out_byte(5) = 0
19
Out_byte(6) = &B00000011
20

21
Spiinit
22

23

24
Gyro_data:
25
Spiout Out_byte(1) , 6
26
Spiin In_byte(1) , 6
27

28
Temp_out = Makeint(in_byte(3) , In_byte(2))
29
Gyro_zout = Makeint(in_byte(5) , In_byte(4))
30

31
Return

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.