Kaito C. schrieb:
> Habe auf den DDR das ganze nun mit ner dirketzuweisung gelöst, das
> scheint wohl abhilfe geschaffen zu haben. Ich sollte meinen Kopf nochmal
> ins Lehrbuch stecken :D
Nope.
Du solltest erst mal die Bitmanipulationen sicher beherrschen.
Genau dazu dienen die ersten Übungen in der µC-Programmiererei.
Überraschung! Da geht es in wirklichkeit nicht darum, dass ein paar LED
vor sich hin leuchten oder nicht leuchten oder blinken oder ein
Lauflicht bilden. Das Ergebnis ist nur Mittel zum Zweck, eine fundierte
Basis für Bitoperationen zu schaffen
Bit setzen (auf 1)
1 | xy |= ( 1 << bit );
|
2 | abc |= ( 1 << bit1 ) | ( 1 << bit2 );
|
bit löschen (auf 0)
1 | xy &= ~( 1 << bit );
|
2 | abc &= ~( ( 1 << bit1 ) | ( 1 << bit2 ) );
|
bit abfragen
1 | if( xy & ( 1 << bit ) )
|
solange das nicht im Schlaf sitzt, machen weiterführende Themen keinen
Sinn. Und genau dazu dienen diese LED-Übungen: damit das im Schlaf sitzt
und man in der Lage ist, genau 1 Bit (oder mehrere) an einem Port so zu
beeinflussen, wie man das braucht und nicht immer auf die
Rundumschlagmethode 'Oooch, da weise ich einfach dem Port als ganzes was
zu; passt schon' zurückzufallen.
Genauso wie diese Übungen das Verständnis für Eingang/Ausgang/Pullup
etablieren sollen.
Im DDRx bedeutet ein 1 Bit, dass der Pin auf Ausgang geschaltet ist. Ein
0 Bit hingegen bedeutet, dass der Pin auf Eingang geschaltet ist.
Ist ein Pin auf Eingang geschaltet, dann schaltet ein 1 Bit an
korrespondierender Stelle im PORTx Register den Pullup Widerstand dazu
bzw. ein 0 Bit schaltet ihn wieder weg.
Und da auf einem Port üblicherweise mehrere Dinge hängen, die logisch
betrachtet voneinander unabhängig sind (wie zb eine LED und ein Taster),
ist es unumgänglich, dass man die Einzelbitoperationen beherrscht. Denn
ansonsten beeinflusst man mit kompletten Portzuweisungen immer auch alle
anderen Dinge, die an diesem Port hängen. Womit man bei einfachen
Porgrammen, wie zb einem Lauflicht bei dem an einem Port nichts anders
als die LED hängen, noch durchkommt, wächst sich nämlich sonst zu einem
Albtraum aus, weil kein Mensch mehr verfolgen kann, welche anderen Bits
an diesem Port wie stehen müssen und das auch erhalten bleiben muss,
obwohl man doch eigentlich nur eine LED einschalten wollte.