Hallo, ich hänge da schon wieder an einem Problem: wie kann ich in C einem Array mehrere Werte auf einmal übergeben ? Also ich kann ja z.B. ein Array erstellen mit int test[3] = {1,2,3] wenn ich jetzt aus 1,2,3 jedoch 4,7,2 machen möchte müsste ich dann test[0] = 4; test[1] = 7; test[2] = 2; schreiben... geht das auch anders ? So wie beim initialisieren... test = {4,7,2}; da meckert der Compiler leider... vielleicht könnt ihr mir helfen ? danke schon mal gruß Thomas
Hallo, ich würde die übergabe entweder dynamisch über Variablen praktizieren (also wenn du zB. den Wert errechnest etc.) oder wenn möglich das ganze in eine For-Schleife zu packen. Direkte mehrfach übergaben sind nicht möglich. Vielleicht können wir dir besser helfen, wenn du angibst was für Werte du die in Felder übergeben willst und wo sie her kommen. Gruß Christian
diese Werte sind leider nicht berechnet, sondern so was ähnliches wie ASCII Code. Da wird es mit einer for-Schleife ziemlich schwierig bzw. zu aufwendig. Ich möchte jeweils 16 Zeichen an ein Display übergeben. Das wird so eine Art Bedienerführung. Wenn Taste 1 gedrückt soll auf dem Display "Uhrzeit: ..." erscheinen und beim nächsten drücken z.B. "Temperatur" usw. Die Zeichen sind jedoch kein ASCII Code, sondern selbsterstellte. Also A=11, B=12, C=13,... Nun wäre es schön, wenn man für das Wort "Menue" einfach Display = {24,42,51,58,42,10}; schreiben könnte (10 ist ein Leerzeichen). Hoffe ich konnte das so einigermassen verständlich rüberbringen. gruß Thomas
Könntest du es nicht einfach mit memcpy(..) aus einem Array in das andre Daten kopieren. Du müsstest nur berücksichtigen wie gross ein Feld ist. int 2Byte ?
hmm das versteh ich nicht... das array "Display" bleibt doch bestehen... also wenn ich z.B. "Menue 1", "Menue 2", ... usw. anzeigen lassen will, ist klar, brauch ich nur die Zahl ändern. Oder sollte ich mir für die versch. Anzeigen Arrays als Const definieren ? hmm dann brauch ich aber kein memcpy mehr.. ??
So wie ich es verstanden habe, sind diese Zahlenfolgen, die du auf einmal übergeben willst vordefiniert. Wenn das so ist, kann man diese Zahlenfolgen in einem einzigen Array speichern, und dann einfach aus diesem Array in das "text"-Array kopieren, so etwa:
1 | #include <avr/pgmspace.h> |
2 | |
3 | bla.bla... |
4 | //Array im Flash
|
5 | const int tabelle[256] PROGMEM = {24,42,51,58,42,10 |
6 | 12,43,32,10,51,24 |
7 | .......... }; |
8 | //kopieren
|
9 | memcpy_P (text, tabele, laenge); |
Das was du hier versucht hast,und was nicht geht: >Display = {24,42,51,58,42,10}; richtig: dislpay[0]=24; ..... dislpay[n]=xx; ist auch im prinzip nichts anderes als aus einem Speicherbereich in das Andere Daten zu kopieren (hier aus Flash ins SRAM). Darüber hinaus denke ich das in deinem Fall besser als int wäre unsigned char, du wirst ja keinen negativen Zahlen oder über 255 benutzen, oder ? Ansonsten lese noch einmal Abschnitt "Programmspeicher" im AVR-GCC-Tutorial: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Programmspeicher_.28Flash.29 Und in avr-libc doku, Abschnitt "Modules->Program Space String Utilities": http://www.nongnu.org/avr-libc/user-manual/
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.