Frage zur Initialisierung des Analog Comperators

OP #2035437
Lesenswert?

Hallo!

Ich möchte den Analog Comperator des AT90PWM316 für eine Überwachung der 
Akkuspannung verwenden.
Über einen Spannungsteiler prüfe ich am ACMP1 (PC6) die aktuelle 
Spannung und möchte sie mit der internen Referenzspannung (2,56V / 1,6) 
vergleichen.
Bei Unterschreitung soll ein Interrupt ausgelöst werden.

Wie kann ich dem Controller nun mitteilen, das ich die int. 
Referenzspannung / 1,6 verwenden möchte?

Hier meine derzeitige Initialisierungsroutine:
1
void ACMP1_Init (void)
2
{
3
  DDRC &=    ~(1<<PC6);  // ACMP1 = input
4
  AC1CON |=  (1<<AC1EN)  // Analog Comperator1 enable
5
  AC1CON |=  (1<<AC1IE)  // Analog Comperator1 Interrubt enable
6
  AC1CON |=  (1<<AC1IS1)  // Analog Comperator1 Interrupt sensitivity on falling edge
7
}
Moderator (Firma: Titel) Persönliche Seite #2035474
Lesenswert?

Heimo G. schrieb:
> Comperator
Jawoll mein Imparator.
Oder wars doch andersrum?  Comp-A-rator / Imp-E-rator

> möchte sie mit der internen Referenzspannung (2,56V / 1,6) vergleichen.
Hast du mal geschaut, wie genau diese interne Referenz ist?
VINT Internal Voltage Reference   min 2.52   typ 2.56   max 2.6 V
Das solltest du beachten...

> Wie kann ich dem Controller nun mitteilen, das ich die int.
> Referenzspannung / 1,6 verwenden möchte?
Such mal im Datenblatt nach AC1M2..0
OP #2035651
Lesenswert?

OK! Das habe ich soweit.

Jetzt habe ich "nur" mehr das Problem, das ich am Eingangspin (hier wird 
über den Spannungsteiler der zu vergleichende Wert gemessen) permanent 
0V habe.
1
DDRC &=    ~(1<<PC6);  // ACMP1 = input

Wie schalte ich den Pin hochohmig (auf Tristate)?
Persönliche Seite #2035753
Lesenswert?

DDRC  &= ~(1<<PC6); // ACMP1 Input
PORTC &= ~(1<<PC6); // Interner Pullup aus

Schaltung?
                       Vx = ?
                       |
                       # R1 = ?
                       #
                       |
ACMP1 (PC6) o----------+
                       |
                       # R2 = ?
                       #
                       |
                      ---
                      GND
                                    |
Vx fehlt? Multimeter nehmen und an -+ messen, wenn ACMP1 nicht 
angeschlossen ist.                  |

Falscher Pin am µC genommen? Lupe nehmen.

Lötbrücke des µC Pins zum Nachbarpin? µC aus Fassung nehmen und 
Isolationswiderstand der Pins an der Fassung messen. Wenn Fassung fehlt 
Lupe nehmen. Benachbare Pins als IO-Pin betreiben und auf Coreaktion bei 
PC6 achten.

Schutzdiode gegen GND an ACMP1 geschossen? Funktioniert der Pin noch als 
IO-Pin?
#2037101
Lesenswert?

Heimo G. schrieb:
> Ja, ginge schon.
> Aber wird das mein Problem lösen?

Möglich.
Du gibst ja Information immer nur in kleinen Häppchen frei, so das man 
nicht überprüfen kann, welche anderen Fehler/Probleme da noch vorhanden 
sind.

Typisches Newbie Verhalten: Die Software kanns nicht sein und die 
Hardware kanns auch nicht sein. Also brauch ich dazu auch nichts posten. 
Und wenn ich etwas posten muss, dann nur infinitesimale Ausschnitte, 
damit man bloss nichts erkennen kann. Ein guter Baumeister kann 
schliesslich auch aus eine Mikroskopaufnahme des verwendeten Sandes 
erkennen, warum der Dachstuhl eingestürzt ist.

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