Gast
#2919789
Hallo, ich hab einen bool Array der 15 Elemente hat und jetzt möchte ich das Element 0-7 auf PINB geschoben wird und Element 8-15 auf PINC. also
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
Tim
|
Anzeige
|
Array auf PIN Register schieben
Gast
#2919789
Hallo, ich hab einen bool Array der 15 Elemente hat und jetzt möchte ich das Element 0-7 auf PINB geschoben wird und Element 8-15 auf PINC. also
Tim Ich empfehle ein C-Buch um Grundlagen zu lernen, am besten erst Mal am PC.
Gast
#2919797
Mach doch!
Gast
#2919802
Schön. Warum nimmst du bool Arrays? Ein Bitmuster auf PIN geht doch auch und ist nichts anderes als dein bool Array nur zusammengesetzt. Falls du da AVRs nutzt solltest du anstatt PINx lieber PORTx benutzen falls du das auf einem Port ausgeben willst.
Gast
#2919850
Danke für die schnelle Antwort mr. mo schrieb: > Falls du da AVRs nutzt solltest du anstatt PINx lieber PORTx benutzen > > falls du das auf einem Port ausgeben willst. Hab ich gemacht :D mr. mo schrieb: > Warum nimmst du bool Arrays? Ein Bitmuster auf PIN geht doch auch und > > ist nichts anderes als dein bool Array nur zusammengesetzt. Weil ich sonst später bei der USB-Übertragung Probleme bekomme. Hmm schrieb: > Mach doch! Ja, hab ich gemacht aber er setzt nur Bit0 die restlichen Bits ignoriert er!? Hallo, wenn man das Problem wirklich so angehen will, wie wäre es mit etwas in der Art:
Wie das für PORTC aussieht, darfst Du Dir selbst ausdenken :-) Für ein eigenes Programm würde ich mir das in eine Funktion packen, die einen Teil des Arrays in ein Byte packt und zurück gibt:
Man müsste noch Fehlerbehandlung und Plausibilitätsprüfung betrachten: Liegt at_index im Array? Was passiert, wenn ab at_index weniger als 8 Elemente vorhanden sind? Akzeptiert die Funktion besser nur Vielfache von 8 (minus 1) als Index? Wie erhält der Aufrufer einen Fehler rückgemeldet? Der Rückgabewert der Funktion ist ja schon in Benutzung . Hmm, würde doch noch ein wenig anders aussehen ;-) Aber mal als Ansatz, wenn das oben mal funktioniert... Ansonsten schließe ich mich meinen Vorrednern an: Walter S. schrieb: > Ich empfehle ein C-Buch um Grundlagen zu lernen mr. mo schrieb: > Warum nimmst du bool Arrays? Viele Grüsse, Dirk Tim schrieb: > Weil ich sonst später bei der USB-Übertragung Probleme bekomme. Und wenn Du das erklärst, kann man Dir sicher weiter helfen :-)
Gast
#2919885
Tim schrieb: > mr. mo schrieb: >> Warum nimmst du bool Arrays? Ein Bitmuster auf PIN geht doch auch und >> >> ist nichts anderes als dein bool Array nur zusammengesetzt. > Weil ich sonst später bei der USB-Übertragung Probleme bekomme. Ich verstehe nicht den Zusammenhang zwischen einem bool-Array und einer USB-Übertragung. Außerdem hat dieses Array natürlich einen recht großen Overhead. > Hmm schrieb: >> Mach doch! > > Ja, hab ich gemacht aber er setzt nur Bit0 die restlichen Bits ignoriert > er!? Ein bool hat ja auch nur ein genutztes Bit, und der Komma-Operator macht was völlig anderes, als du denkst. Zwei Fragen: - Warum hat das Array 15 Elemente? Wäre 16 nicht angemessener? - Warum definierst du das Array nicht als union mit alternativ 16 Bits und 2 uint8_t? Dann sparst du dir die Bitschieberei komplett. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|