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.
Eine Funktion ? Was fuer eine Funktion : Sin(x), "Ein" SPI uebertraegt Bytes. Was hat das mit der Funktion zu tun ?
#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.
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.
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
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!
Sherlock Holmes schrieb: > Hallooooo .... aufwachen! Kannst du dich mal schlafen legen, bitte? Dieses ewige "Das-ist-doch-ein-Troll"-getrolle nervt.
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.
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?
Joe F. schrieb: > Ich bin "Joe F." Du meinst also ich kann das nicht unterscheiden. Ja .... du verstehst es nicht.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.