Hy leute ich bin noch nicht so wirklich gut im umgang mit mikrocontrollern, und möchte aber gerne ein register auslesen. Es handelt sich dabei um die Register ADCL und ADCH. Da ich genau wissenmöchte was für werte die einzelnen Bits haben würde ich diese gerne auslesen, also zum Beispiel ob das 1 bit im Register ADCH den Wert 0 oder den Wert 1 trägt. Ist das so überhaupt möglich wie ich mir das vorstelle? ich danke schonmal
Hallo. Wenn du das ganze Register auslesen möchtest: variableL = ADCL variableH = ADCH Wenn du nur einzelne Bits checken willst: if (ADCL & (1<<Bit)) //Bit gesetzt else //Bit nicht gesetzt
Fisch wrote: > Hallo. > Wenn du das ganze Register auslesen möchtest: > variableL = ADCL > variableH = ADCH Dafür bietet jeder mir bekannte AVR-C-Compiler ein 16-Bit-Register ADC oder ADCW an. Das Auslesen der Einzelregister ist in C unsinnig, außer, man hat ADLAR gesetzt und will nur das High-Byte auslesen. Die Verwendung des 16-Bit-Registers sorgt auch dafür, dass man sich um die Reihenfolge des Auslesens keine Gedanken machen muss. Und wenn man es doch unbedingt machen will, muss man eben unbedingt beachten, dass das Low-Byte vor dem High-Byte gelesen werden muss. > Wenn du nur einzelne Bits checken willst: > > if (ADCL & (1<<Bit)) > //Bit gesetzt > else > //Bit nicht gesetzt Das geht schief. Wenn ADCL gelesen wird, muss IMMER anschließend ADCH gelesen werden, weil sonst beide Register gesperrt bleiben und der ADC keinen neuen Wert reinschreiben kann! Abgesehen davon ist es i.d.R. sinnfrei, in den ADC-Datenregistern einzelne Bits abzufragen...
um den sin möchte ich mir gerade keinen gedanken machen, ich habe das so als augabe gestellt bekommen und möchte es daher auch so erledigen ( ich bitte um verständnis) wenn ich
1 | if (ADCL & (1<<Bit)) |
schreibe, möchte er das ich "Bit" deklariere. Wie muss ich das machen?
@ Patrick (Gast) >if (ADCL & (1<<Bit)) > schreibe, möchte er das ich "Bit" deklariere. >Wie muss ich das machen?
1 | #define bit 4
|
Aber du willst sicher ein bereits definertes Bit nutzen. Die haben den gleichen Namen wie im Datenblatt. http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#ADC_.28Analog_Digital_Converter.29 MFG Falk
"Bit" ist ein Platzhalter. Hier kannst Du einfach die Nummer des gewünschten Bits einsetzen, also 0 bis 7. Diese Schreibweise bedeutet, dass der Wert "1" (0x01) um Bit Stellen nach links verschoben wird, eine sehr gebräuchliche Schreibweise in C.
ah cool ich danke euch für eure hilfe, auf ein gwissen teil hätte ich eigentlich kommen können, aber naja man lernt nie aus thx
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.