Frage zu (ACSR&(1<<ACO))

Gast #2435478
Lesenswert?
• ▲
▼
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
#2435489
Lesenswert?
• ▲
▼
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
Gast #2435495
Lesenswert?
• ▲
▼
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
#2435502
Lesenswert?
• ▲
▼
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.
#3119044
Lesenswert?
• ▲
▼
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren