Servus, bin grad daran einen C-Code zu entschlüsseln und hab grad ein kleines Verständnissproblem mit: #define SENSE (ACSR&(1<<ACO)) Also, AC0 wertet doch das Ergebnis einer ADC Messung aus? ACSR ist das Register? In dem Fall wird "SENSE" im Fall IST < SOLL den Wert 1 annehmen und bei IST > SOLL den Wert 0? Ist das so Richtig? Gruß Andi
Hallo Andi > #define SENSE (ACSR&(1<<ACO)) > > Also, AC0 wertet doch das Ergebnis einer ADC Messung aus? ACSR ist das > Register? Ja, ACSR ist das Analog Comparator Register , ACO ist der Komperator Ausgang (von einer ADC Messung würde ich da nicht sprechen, ausser Du machst gerade einen Delta-Sigma-Wandler) > > In dem Fall wird "SENSE" im Fall IST < SOLL den Wert 1 annehmen und bei > IST > SOLL den Wert 0? Ist das so Richtig? Nein, da ACO nicht "0" ist. (0x20 oder 0x00) Bye Andi
Erstmal vielen Dank für deine schnelle Hilfe. Aber kann SENSE nicht ein TRUE oder FALSE annehmen? Weil in einem weiteren Codeschnipsel wird eine If- Abfrage auf SENSE gemacht. if(!SENSE || startup) Also wenn SENSE = 0 ist & STARTUP = 1 dann... Mein Problem ich kenn diese Schreibweise nicht. (ACSR&(1<<ACO)) Gruß Andi
Andi schrieb: > Erstmal vielen Dank für deine schnelle Hilfe. Aber kann SENSE nicht ein > TRUE oder FALSE annehmen? > > Weil in einem weiteren Codeschnipsel wird eine If- Abfrage auf SENSE > gemacht. > > if(!SENSE || startup) > > Also wenn SENSE = 0 ist & STARTUP = 1 dann... > > Mein Problem ich kenn diese Schreibweise nicht. (ACSR&(1<<ACO)) > > Gruß Andi wenns denn 0 oder 1 sein soll, dann kannst Du es so schreiben: (ACSR&(1<<ACO))>>ACO obiges If geht auch, aber solltest Du mal auf die Idee kommen folgendes zuschreiben: if(SENSE==TRUE) .... so wird diese Bedingung nie erfüllt sein.
Vielen vielen Dank. Hab das mit der Schreibweise jetzt in etwa kapiert. Das es bei C Mikrocontrollern auch immer tausend Schreibweisen für alles gibt :) Hast mir echt geholfen, Danke :)
Ich habe das auch noch nicht ganz verstanden: (1<<ACO) ist doch eine Bitverschiebung (ACO Bit 5 im ACSR Register)? 0b00100000 (ACSR&(1<<ACO) 0b00100000 -> ACSR 0b00100000 -> ACO 0b00100000 -> nach der UND Verknüpfung Was bringt mir das dann in Verbindung mit #define SENSE_H (ACSR&(1<<AC0) ? Was würde SENSE oder !SENSE für Ergebnisse liefern? Schönen Sonntag. Gruß Steffen
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.