Hallo Zusammen, nach dem ich nochmal über alles drüber geschaut haben und es auch im VS 10 ausprobiert haben. Hab ich leider im AtmelStudio immer noch keinen erfolg. Scheinbar bekommt die Funktion die gesetzten Variablen nicht über mittelt, siehe: PCA9635.c und PCA9635.h. Vielleicht hat jemand von euch noch eine idee..? Grüße, Kay
Kay Ulbricht schrieb: > Scheinbar bekommt die Funktion die gesetzten Variablen nicht über > mittelt, siehe: PCA9635.c und PCA9635.h. welche sollten denn wohin übergeben werden? (In deinem Quelltext ist nichts dazu zu finden!)
Von der PCA9635_OFF bzw der FULL_ON sollen die LED0.. LED26 und andere gesetzt und dann in der PCA9635 an den Chip gesendet werden..
Kay Ulbricht schrieb: > Scheinbar bekommt die Funktion die gesetzten Variablen nicht über > mittelt, siehe: PCA9635.c und PCA9635.h. Weil es unterschiedliche Variablen sind. LED[1] ist eine andere Variable als LED1.
Was jetzt? Benutzt du ein Array um die LED Werte zu halten
1 | uint8_t LED[NR_LEDS]; |
2 | ....
|
3 | |
4 | // Set all Output of 0x00(0)
|
5 | for( i = 0; i < NR_LEDS; i++ ) |
6 | LED[i] = 0x00; |
7 | ....
|
oder benutzt du einzelne Variablen
1 | ...
|
2 | //Reg 0x02-0x11 - PWM0-15 - LED Helligkeit
|
3 | //RGB_LED5:(der Zeit defekt :( )
|
4 | TWIM_Write(LED12); //OUT0 - R |
5 | TWIM_Write(LED13); //OUT1 - G |
6 | TWIM_Write(LED14); //OUT2 - B |
7 | |
8 | //RGB_LED6:
|
9 | TWIM_Write(LED15); / |
10 | ....
|
für eines von beiden musst du dich entscheiden. Aber nicht beides gleichzeitig und dann erwarten, dass irgendwie magisch die Werte aus dem Array in den einzelnen Variablen landen, die du im Header File hast. Wenn du Arrays benutzen willst, dann schmeiss die Variablen
1 | ...
|
2 | // LED_OUT_Variablen
|
3 | // RGB_LED1:
|
4 | unsigned char LED0; |
5 | unsigned char LED1; |
6 | unsigned char LED2; |
7 | ...
|
aus dme Header File raus. Der Compiler wird dir dann sagen, was noch alles auf Array umgestellt werden muss.
Karl Heinz schrieb: > Benutzt du ein Array um die LED Werte zu halten ... > oder benutzt du einzelne Variablen > diese Frage wollte ich auch gerade stellen :-)
okay okay.. verstehe was du meinst aber mir eröffnet sich die frage wie ich dann die einzelnen werte ändern kann ohne alles nochmal zuschreiben. Also ich meine ich will einfach nur den wert von LED5 ändern und dazu nicht alles nochmal schreiben.. Also verstehst du was ich meine.
...mal Offtopic... In Tcl würde so etwas ähnliches sogar gehen --> Variablennamen in einer Zählerschleife "generieren" und später dann ganz normal ansprechen ("Alles ist ein String")
Ja war quasi die idee.. funktioniert aber eben nicht.. auch wenn ich das Array rausnehme.. genau da liegt mein Problem..
und weil ich nicht hundert mal LED0 .. LED26 = 0x00 oder so schreiben wollte.. kam die idee mit dem Array (auch ein Tipp aus dem Forum)..
Kay Ulbricht schrieb: > Ja war quasi die idee.. funktioniert aber eben nicht.. auch wenn ich das > Array rausnehme.. genau da liegt mein Problem.. Nein. dein Problem liegt ganz woanders. Aber ich bin es mitlerweile leid, mir jeden Tag 5 mal den Mund fusselig zu reden. Ganz andere Frage. Hat denn die Ansteuerung der LED schon mal geklappt? Wenn ja, mit welchem Code?
Du solltest vielleicht erstmal erklären was du eigentlich machen möchtest!
Kernighan Ritchie. Programmieren heist nicht rumprobieren sondern erst mal Grundlagen lernen!
danke erstmal für die Tipps.. es funktioniert jetzt aber ohne das Array.. Ja sry war eventuell etwas dumm formuliert. Was ich vorhabe.. ich würde gerne über eine UART Schnittstelle vom PC aus die LED werte ändern können. Dazu hab ich mir gedacht Variablen zu verwenden um die eingaben einfacher zu machen. Ja es hat schon mal Funktioniert nur war der Code Aufwand wesentlich höher darum haben ich es nochmal umgeschrieben...
Du musst dich schon entscheiden, ob Array oder einzelne Variablen. Das scheinst du nicht verstanden zu haben! LED5 ist nicht LED[5] Schreibe alles auf Arrays um und schmeisse die bekloppten Variablen LEDxx aus dem Quelltext! Passe dementsprechend auch den Rest deines Programms an! Vor allem die Funktion PCA9635(). Kleiner Tipp: for (i=0; i<NR_LEDS; i++) TWIM_Write(LED[i]); geht auch! Und nebenbei, halte dich bitte an den C-Quasistandard: Variablen, Funktionen etc. kleingeschrieben; Makros, Defines großgeschrieben. Dein Quelltext ist schwer zu lesen! Im Kommentar oben steht Diplomarbeit --> was studierst du eigentlich?
gcc schrieb: > Du musst dich schon entscheiden, ob Array oder einzelne Variablen. Das > scheinst du nicht verstanden zu haben! hab mir so eben in meinem Info Unterlagen ein Array nochmal angeschaut. Jupp.. hatte das eine dezenten Denkfehler :D. > Und nebenbei, halte dich bitte an den C-Quasistandard: da ich kein Informatiker bin und mit µC im Studium nur kurz zu tun hatte. Ist das mit dem Quasistandard mir Quasi nicht ganz so geläufig.. > Im Kommentar oben steht Diplomarbeit --> was studierst du eigentlich? Elektrotechnik
Kay Ulbricht schrieb: > danke erstmal für die Tipps.. es funktioniert jetzt aber ohne das > Array.. Ja sry war eventuell etwas dumm formuliert. > > Was ich vorhabe.. ich würde gerne über eine UART Schnittstelle vom PC > aus die LED werte ändern können. Ja, das ist das langfristige Ziel Aber wenn du alles gleichzeitig machen willst, dann verzettelst du dich nur. So gut bist du noch lange nicht. Fang erst mal damit an, die Ansteuerung der LED ausber hinzukriegen. Und nur das! Alles was da nicht dazu gehört, das wirfst du raus und bringst erst mal nur deine LED ordentlich zum Leuchten. Dazu definierst du dir dann sukzessive immer mächtigere Funktionen bzw. du passt sie an deine Bedürfnisse an. Aber es bringt nichts, gleich mal einen Haufen Code zu schreiben, der hinten und vorne nicht funktioniert. Um die Leds zum leuchten zu bringen brauchst du keine UART und auch keine Tasten. Alles was du brauchst ist das TWI Interface und die Funktionen um die Bausteine anzusteuern. Mehr nicht. (Mangels Hardware kann ich das nicht testen. Ich hab mich im wesentlichen an deinen Code gehalten, hab ihn ein wenig anders strukturiert und was nicht zum eigentlichen ersten Zwischenziel gehört, ist gnadenlos rausgeflogen)
:
Bearbeitet durch User
Kay Ulbricht schrieb: >> Und nebenbei, halte dich bitte an den C-Quasistandard: > > da ich kein Informatiker bin Das hat nichts damit zu tun, dass du ganz offensichtlich keine vernünftigen Unterlagen bzw. ein ordentliches Lehrbuch hast. Wieder einer der denkt, ausgerechnet er könne C von 11 Uhr bis Mittags durch ein paar Wweb-Seiten im Internet lernen. Was da dabei rauskommt sehen wir hier jeden Tag.
> Wieder einer der denkt, ausgerechnet er könne C von 11 Uhr bis Mittags > durch ein paar Wweb-Seiten im Internet lernen. Was da dabei rauskommt > sehen wir hier jeden Tag. Naja 3Semester C, C++ sollte doch schon mehr Untergrund bieten also 1h web-seiten studium ;). Ja werde mich bemühen eure Wundervolle Form zu erfüllen.. die war für mich nur grade Nebensache. Aber denke jetzt Funktionierts auch mit Array.. bei Interesse kann ich den ganzen Code nochmal reinstellen..
Kay Ulbricht schrieb: > Aber denke jetzt Funktionierts auch mit Array.. bei Interesse kann ich > den ganzen Code nochmal reinstellen.. ja bitte!
Kay Ulbricht schrieb: >> Wieder einer der denkt, ausgerechnet er könne C von 11 Uhr bis Mittags >> durch ein paar Wweb-Seiten im Internet lernen. Was da dabei rauskommt >> sehen wir hier jeden Tag. > > Naja 3Semester C, C++ sollte doch schon mehr Untergrund bieten also 1h > web-seiten studium ;). Nach 3 Semestern sollte man allerdings auch in der Lage sein, Arrays korrekt einzusetzen und diesen banalen Fehler selbst zu finden
Karl Heinz schrieb: > Nach 3 Semestern sollte man allerdings auch in der Lage sein, Arrays > korrekt einzusetzen und diesen banalen Fehler selbst zu finden klingt hart... aber er hat Recht ;-)
Natürlich hat er recht.. viel vergessen oder zu viel chemisch gelöscht.. :/
chemisch gelöst? Hör auf mit den Drogen und fang an zu programmieren. Gruß Jonas
Kay Ulbricht schrieb: > Naja 3Semester C, C++ sollte doch schon mehr Untergrund bieten Wie man Arrays benutzt kann man nach 3 Abenden Kernighan-Ritchie lesen sich selbst beibringen. Und nein, dazu muss man man kein Übermensch sein. Kay Ulbricht schrieb: > viel vergessen oder zu viel chemisch gelöscht. Sorry aber soviel kann man gar nicht saufen. Da hätte man dich mindestens 1 mal pro Woche mit Alkoholvergiftung einliefern müssen. Karl Heinz schrieb: > Mangels Hardware kann ich das nicht testen. Ich hab mich im > wesentlichen an deinen Code gehalten, hab ihn ein wenig anders > strukturiert und was nicht zum eigentlichen ersten Zwischenziel gehört, > ist gnadenlos rausgeflogen) Du bist echt zu gutmütig :-)
Ohje hat wieder mal der Geist des Forums zugeschlagen! Also ist schon okay, mir zusagen das man das hätte wissen müssen aber wenn Forum Typisch. Leute nicht mehr gut gemeinte Tipps geben, sonst nur recht sinn frei einem erklären wir bescheuter man doch ist. Dann wird es echt etwas albern.. Aber ist okay.. jeder wie er es gerne hat ;o)...
Kay Ulbricht schrieb: > Ohje hat wieder mal der Geist des Forums zugeschlagen! Also ist schon > okay, mir zusagen das man das hätte wissen müssen aber wenn Forum > Typisch. Leute nicht mehr gut gemeinte Tipps geben, sonst nur recht sinn > frei einem erklären wir bescheuter man doch ist. Dann wird es echt etwas > albern.. Aber ist okay.. jeder wie er es gerne hat ;o)... Häh? Kannst Du das nochmal in verständlichem Deutsch schreiben? Ich habe nichts, aber auch gar nichts verstanden.
>Häh? Kannst Du das nochmal in verständlichem Deutsch schreiben? Ich habe >nichts, aber auch gar nichts verstanden. siehe: >viel vergessen oder zu viel chemisch gelöscht.. Gruß jonas
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.