Daten, Array und SPI

  • 1
  • 2
  • 3
  • Seite 1 von 3
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Daten, Array und SPI

 · 
Gepostet: 17.01.2016 - 14:00 Uhr  ·  #1
Hallo @ all,

der Titel ist vielleicht etwss dämlich, aber ein besserer fällt mir nicht ein :D

Angenommen ich definiere ein Array mit:

Data : Array[0..2,0..3] of Byte;

und die Werte sind:
Data[0]=255,0,1,2
Data[1]=255,3,4,5
Data[2]=255,6,7,8

und sende das mit
SPIOut1(@Data,12)

In welcher Reihenfolge kommt das aus dem SPI raus bzw. wie muß das aussehen, daß am SPI folgende Reihenfolge gesendet wird?
255,0,1,2,255,3,4,5,255,6,7,8

Gruss
Harry
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: Daten, Array und SPI

 · 
Gepostet: 17.01.2016 - 15:42 Uhr  ·  #2
Ich schieb jetzt die Daten einzeln in einer Schleife raus und dann funktioniert es. Würde mich aber trotzdem interessieren, wie das mit dem Pointer funktioniert.

Schönen Sonntag noch
Harry
Harald_K
 
Avatar
 
Betreff:

Re: Daten, Array und SPI

 · 
Gepostet: 17.01.2016 - 16:22 Uhr  ·  #3
also wenn du das so deklarierst:

const
Data : Array[0..2,0..3] of Byte =((255,0,1,2),(255,3,4,5),(255,6,7,8));


dann steht das so im Speicher:
; ============ array-constant tables ============
.SYM xxx.Data
xxx.Data:
.BYTE 0FFh
.BYTE 000h
.BYTE 001h
.BYTE 002h
.BYTE 0FFh
.BYTE 003h
.BYTE 004h
.BYTE 005h
.BYTE 0FFh
.BYTE 006h
.BYTE 007h
.BYTE 008h

jetzt nehme ich mal an, daß es der SPI-Treiber dann auch genausorum rausschiebt ...
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: Daten, Array und SPI

 · 
Gepostet: 17.01.2016 - 16:31 Uhr  ·  #4
Hi Harald,

so hab ich es auch versucht, aber es ging nicht. SPIOut1(@Data,12) hat nicht funktioniert.
Erst mit zwei verschachtelten Schleifen und SPIOutByte1(Data[Var1,Var2]) ging es.

Gruss
Harry
rh
Administrator
Avatar
Geschlecht:
Herkunft: Germany
Alter: 25
Homepage: e-lab.de
Beiträge: 5558
Dabei seit: 03 / 2002
Betreff:

Re: Daten, Array und SPI

 · 
Gepostet: 17.01.2016 - 17:30 Uhr  ·  #5
Hallo Harry,

zeige mal den ASM Code für "SPIOut1(@Data,12)"
ist das Array eine Konstante ???

rolf
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: Daten, Array und SPI

 · 
Gepostet: 17.01.2016 - 20:31 Uhr  ·  #6
Hi Rolf,

heute nicht mehr .... wenn ich wieder am PC bin.
Nein das ist keine Konstante. Das Array (of Byte) wird zur Laufzeit immer wieder verändert.

Achja: Wie schnell ist der SoftSPI-Takt bei 20MHz Controllerfrequenz? Kommen grob 1.25MHz hin? Ich hab das was von 1/16 Takt im Kopf.

Gruss
Harry

Falls es jemand interessiert: Ich habe versucht einen LED-Stripe mit 5m/180 LEDs zum Leben zu erwecken. Und es funktioniert :). LED-Typ APA102. Das Protokoll sieht wie folgt aus:
Start: 32 Bit 0 ($00000000)
je LED $FF + 8 Bit blauwert + 8 Bit grünwert + 8 Bit rotwert
Stop: 32 Bit 1 ($FFFFFFFF)
d.h. bei 180 LEDs sind das 4+(180*4)+4=728 Byte

Und ja: Jede LED kann eine andere Farbe haben. Funktioniert wie ein riesen Schieberegister.
miparo
Schreiberling
Avatar
Geschlecht:
Herkunft: Germany
Alter: 59
Beiträge: 988
Dabei seit: 09 / 2007
Betreff:

Re: Daten, Array und SPI

 · 
Gepostet: 17.01.2016 - 21:46 Uhr  ·  #7
Hi Harry,
habe es gerade mal getestet und SPIout1 beackert den SS nicht. Mause Tot.
Bug ?

CLK sind übrigens 888 Hz.

Gruß
miparo
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: Daten, Array und SPI

 · 
Gepostet: 17.01.2016 - 21:54 Uhr  ·  #8
Hi miparo,

der SS wäre mir egal, da die LEDs nur von SCK und MOSI leben, oder sind die auch tod?

Wieso nur 888Hz??? Mega644 @ 20MHz ..... nix XMega ;)

Gruss
Harry
  • 1
  • 2
  • 3
  • Seite 1 von 3
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 15 · Cache Hits: 14   135   149 · Page-Gen-Time: 0.032562s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI