Girino - snabb Arduino oscilloskop (12 / 26 steg)
Steg 12: Ställa in Analog komparator
void initAnalogComparator(void)
{
//---------------------------------------------------------------------
ACSR inställningar
//---------------------------------------------------------------------
När denna bit skrivs logik, makten att analoga
Komparator är avstängd. Denna bit kan ställas in när som helst att vända
av den analoga motsvarigheten. Detta kommer att minska energiförbrukningen i
Aktivt och inaktivt läge. När du ändrar det ACD lite, Analog
Jämförelseperson avbrott måste inaktiveras genom att avmarkera ACIE lite i
ACSR. Annars kan ett avbrott inträffa när lite ändras.
CBI(ACSR,ACD);
När denna bit är inställd, en fast bandgap referensspänningen ersätter den
positiv input till den analoga motsvarigheten. När denna bit är avmarkerad
AIN0 används till positiva ingången på den analoga motsvarigheten. När
bandgap referance används som indata till den analoga motsvarigheten, det
tar en viss tid för spänningen till stabilisera. Om inte
stabiliserad, kan första omvandlingen ge ett fel värde.
CBI(ACSR,ACBG);
När ACIE lite är skrivet logik en och -bitars i Status
Registret är inställd, Analog komparator avbrottet är aktiverad.
När skriftlig logik noll, avbrottet är inaktiverad.
CBI(ACSR,ACIE);
När skriftlig logik en, denna bit gör att funktionen input capture
i Timer/Counter1 som utlöses av den analoga motsvarigheten. Den
jämförelseperson produktion är i detta fall direkt ansluten till ingången
fånga front-end logik, att göra den motsvarigheten utnyttja buller
Canceler och edge Välj funktioner för Timer/Counter1 ingång
Fånga avbrott. När skriftlig logik noll, inget samband mellan
den Analog motsvarigheten och funktionen input capture finns. Till
göra den motsvarigheten utlösa Timer/Counter1 Input Capture
avbryta, ICIE1 lite i Timer-avbrott Mask Register
(TIMSK1) måste anges.
CBI(ACSR,ACIC);
Dessa bitar avgöra vilka komparator händelser som utlöser analogt
Jämförelseperson avbrott.
ACIS1 ACIS0 läge
0 0 växla
0 1 reserverade
1 0 Falling edge
1 1 stigande kanten
SBI(ACSR,ACIS1);
SBI(ACSR,ACIS0);//---------------------------------------------------------------------
DIDR1 inställningar
//---------------------------------------------------------------------
När denna bit skrivs logik en, digitalt ingången buffert på den
AIN1/0 PIN-koden är inaktiverad. Motsvarande stift Register bit kommer att
Läs alltid som noll när denna bit är inställd. När en analog signal är
tillämpas på AIN1/0 stift och digital input från detta stift är inte
behövs, bör denna bit skrivas logik att minska makten
konsumtion som digital indatabufferten.
SBI(DIDR1,AIN1D);
SBI(DIDR1,AIN0D);
}