Forum: Mikrocontroller und Digitale Elektronik Funktion über SPI senden


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Peter S. (Gast)


Bewertung
-3 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
-2 lesenswert
nicht lesenswert
Ich möchte gerne Daten übertragen.

von Peter S. (Gast)


Bewertung
-2 lesenswert
nicht 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:

Bewertung
2 lesenswert
nicht lesenswert
Peter S. schrieb:
> Ich möchte gerne Daten übertragen.

von Sascha_ (Gast)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht lesenswert
Joe F. schrieb:
> Ich bin "Joe F."

Du meinst also ich kann das nicht unterscheiden.

Ja .... du verstehst es nicht.

von Potenzklotz (Gast)


Bewertung
0 lesenswert
nicht lesenswert
....wer bin ich und vor allen Dingen, wie viele??

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.