Forum: Mikrocontroller und Digitale Elektronik Funktion über SPI senden


von Peter S. (Gast)


Lesenswert?

Hallo zusammen,

ich möchte eine Funktion über meinem SPI senden und ich weiß nicht wie 
bzw. wo ich meine Funktion im SPI übergeben kann, damit die Daten 
gesendet werden. Theoretisch müsste man sie dem FIFO übergeben oder soll 
man sie nach der Initialisierung vom SPI in der main.c erst aufrufen? Es 
geht nämlich darum über SPI einen Treiber zu steuern der LEDs ansteuern 
soll.

Danke Euch.

von Pandur S. (jetztnicht)


Lesenswert?

Eine Funktion ?
Was fuer eine Funktion : Sin(x), "Ein"

SPI uebertraegt Bytes.
Was hat das mit der Funktion zu tun ?

von Peter S. (Gast)


Lesenswert?

Ich möchte gerne Daten übertragen.

von Peter S. (Gast)


Lesenswert?

#define BLUE  1
#define GREEN 1
#define RED   1

struct TLC5971 {
  uint16_t GS[4][3];
  uint8_t BCB:7;
  uint8_t BCG:7;
  uint8_t BCR:7;
  uint8_t BLANK:1;
  uint8_t DSPRPT:1;
  uint8_t TMGRST:1;
  uint8_t EXTGCK:1;
  uint8_t OUTTMG:1;
  uint8_t cmd:6;
} tlc5971;

void tlc5971_init()
{
  tlc5971.BLANK = 1;
  tlc5971.DSPRPT = 0;
  tlc5971.TMGRST = 1;
  tlc5971.EXTGCK = 1;
  tlc5971.OUTTMG = 0;
  tlc5971.BCR = 127;
  tlc5971.BCG = 127;
  tlc5971.BCB = 127;
}
void sendBits()
{
  uint8_t n;
  uint8_t  *p = (uint8_t*)&tlc5971;

  for (n = 28; n-- > 0; )
  {
    SPI_Send(p[n]);
  }
  delay_us(3);
}

void writeSPIFIFO(){

  tlc5971_init();
  tlc5971.cmd = 0x25;
  tlc5971.TMGRST = 1;
  tlc5971.DSPRPT = 1;
  tlc5971.BCR = 127;
  tlc5971.BCR = 0;
  tlc5971.BCB = 20;

  tlc5971.GS[0][BLUE] = 0xAAAA;  // 1010 1010 1010 1010
  tlc5971.GS[3][RED] = 0x5555;
    while(1)
        {
          //CS_lo();
          sendBits();
          //CS_hi();
        }
}

Würde gerne die writeSPIFIFO() funktion senden.

von Sherlock Holmes (Gast)


Angehängte Dateien:

Lesenswert?

Peter S. schrieb:
> Ich möchte gerne Daten übertragen.

von Sascha_ (Gast)


Lesenswert?

Peter S. schrieb:

> Würde gerne die writeSPIFIFO() funktion senden.

Du möchtest nicht die Funktion selbst senden, oder? Weil man kann 
natürlich mit malloc Speicher reservieren, da Programmcode hinterlegen 
und den dann aufrufen. In der Regel geht davon alles kaputt.

Du möchtest eigentlich gewisse Bytes mittels sendBits (warum heisst die 
nicht sendBytes?) senden. Und zwar genaugenommen alle Bytes in deinem 
TLC... struct.

Dann würde ich zuallererst mal über while(1) nachdenken.

von Joe F. (easylife)


Lesenswert?

Sascha_ schrieb:
> Dann würde ich zuallererst mal über while(1) nachdenken.

und dann vielleicht auch über

> #define BLUE  1
> #define GREEN 1
> #define RED   1

Was du vermutlich willst, ist writeSPIFIFO() ausführen

Dazu schreibst du eine funktion main(), initialisiert SPI und darin 
rufst du dann

writeSPIFIFO();

auf.

Copy&Paste von Code aus dem Netz 
(http://cboard.cprogramming.com/c-programming/167080-simple-structure-array-issue.html), 
ohne die Programmiersprache auch nur im Ansatz verstanden zu haben, hat 
noch niemanden weitergebracht.
Lerne doch erstmal C.

: Bearbeitet durch User
von Sherlock Holmes (Gast)


Lesenswert?

Joe F. schrieb:
> Was du vermutlich willst, ist

...... hier auf der Seite Datenverkehr erzeugen.

Joe F. schrieb:
> Lerne doch erstmal C.

... und ihr lasst euch alle vera....en.

Hallooooo .... aufwachen!

von Joe F. (easylife)


Lesenswert?

Sherlock Holmes schrieb:
> Hallooooo .... aufwachen!

Kannst du dich mal schlafen legen, bitte?
Dieses ewige "Das-ist-doch-ein-Troll"-getrolle nervt.

von Sherlock Holmes (Gast)


Lesenswert?

Joe F. schrieb:
> Dieses ewige "Das-ist-doch-ein-Troll"-getrolle nervt.

Interessant auch mit welcher Vehemenz die Trollung hier
vom Initator abgestritten wird.

Das sollte einem zu denken geben. Aber es geht ja nichts
über ein bisschen sich selbst produzieren, da lassen sich
solche waghalsigen Behauptungen von mir leicht über Bord
werfen.

von Joe F. (easylife)


Lesenswert?

Sherlock Holmes schrieb:
> Interessant auch mit welcher Vehemenz die Trollung hier
> vom Initator abgestritten wird.

Hä? Wer ist denn der "Initator"? Meinst du den Thread-Eröffner? Er 
heisst "Peter Stark". Deine Unterstellung der "Trollung" habe ich 
angezweifelt. Ich bin "Joe F.".
Was ist kaputt mit dir?

von Sherlock Holmes (Gast)


Lesenswert?

Joe F. schrieb:
> Ich bin "Joe F."

Du meinst also ich kann das nicht unterscheiden.

Ja .... du verstehst es nicht.

von Potenzklotz (Gast)


Lesenswert?

....wer bin ich und vor allen Dingen, wie viele??

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.