wie lange sollte man den elektonen zeit geben?.. mehrere nops?..
muss man das PIN register übergeben oder kann man in die Funktion auch den Port übergeben?
bspw: outSet((IO_REG*)&PORTB, 3, inGet((IO_REG*)&PORTB,2,1) );
Ja, die drei Register für ein IO port sind immer gleich aufsteigend hintereinander
+0 PINx
+1 DDRx
+2 PORTx
Bei inGet(...) gibt es nur ein theoretisches Risiko: die Zeit zwischen Pullup einschalten und Pin abfragen ist sehr kurz, ev. ist da noch kein stabiler Zustand auf der Leitung (von wegen Kapazitäten etc.).
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
wie lange sollte man den elektonen zeit geben?.. mehrere nops?..
muss man das PIN register übergeben oder kann man in die Funktion auch den Port übergeben?
bspw: outSet((IO_REG*)&PORTB, 3, inGet((IO_REG*)&PORTB,2,1) );
ok.. hat sich erledigt.. da sie aufeinanderfolgend sind sollte das erste übergeben werden. also PINA.. dann ist das nächste DDRA..
du kannst natürlich auch den PORT übergeben, dann musst du halt in deiner Funktion ein wenig umrechnen...
D.h. am Anfang von inGet und outSet musst du noch port -= 2; schreiben.
Dann musst du allerdings auch wirklich immer &PORTx übergeben.
Dann ist die Sache aber nicht mehr wirklich koscher. denn dann ist ja das funktions-argument nicht wirklich korrekt. Und das wiederum betrachte ich als "bäh", andere stören sich mehr an Warnings
Ich glaube schon, dass man sich daran gewöhnen kann, immer "PINx" zu verwenden.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
genau so mache es ich jetzt auch.
Warnings sind halt "unschön" manche kann man zwar ignorieren aber mir ist es immer lieber wenn da steht das er mit 0 warnings compiliert hat
Lesezeichen