ATtiny2313 analog comparator - nix tut sich

Gast #770302
Lesenswert?
• ▲
▼
Also eigentlich ein einfaches Problem - man nehme eine Spannung und 
schließe sie an den analog comparator des Controllers an (AIN1), als 
Referenz dient ein Spannungsteiler, der ca. 2,1V liefert (AIN0). Zur 
Auswertung dient eine LED. So und dann schreibt man folgenden Code:

void main (void)
{
DDRD = 0b00000000;      // PD0,1,2,3,4,5 Eingang
PORTD = 0b00000010;    // Pull-up PD1
DDRB = 0b11100100;      // PB0,1 Eingang, PB2,5,6,7 Ausgang
ACSR = 0b01000000;
while(1)
  {
  if ((ACSR & 0b00100000) == 0b00100000)
    {
    PORTB = PORTB | 0b01000000;
    }
  else
    {
    PORTB = PORTB & 0b10100100;
    }
  }
}

Aber es passiert rein gar nix an meiner LED, egal wie sich die varibale 
Spannung verhält. Liegt das jetzt an meinem Code oder daran, daß es wenn 
überhaupt nur mit Interrupt funktionert?
Danke schonmal vorab.
Gast #770381
Lesenswert?
• ▲
▼
die LED hängt an PB6

Spannung VCC 5V, Vref (AIN0) 2,1V Vsig (AIN1) entweder ca.0V oder ca. 
3,1V

sonst macht der µC ja noch nix, aber wenn ich den Inahlt der if-Schleife 
vertausche dann leuchtet die LED

die LED über n Taster per Software einschalten geht ...

if((PIND & 0b00000010) == 0b00000010)
Gast #770387
Lesenswert?
• ▲
▼
ja ich weiß daß das einfacher geht, aber der Mensch is n 
Gewohnheitstier, wobei das in dem Fall ausnahmsweise nicht das 
eigentliche Problem ist - wenn ich das gewußt hätte, hätte ich es mit 
nem OP gemacht
Gast #770910
Lesenswert?
• ▲
▼
ja klar ... ist nicht mein erstes C-Programm und wenn ich anstatt des 
Komparators einen Taster zur Ansteuerung der LED verwende, dann 
funktioniert das Ganze ja reibungslos.
Mein Controller is übrigens SMD und neu aus der Stange.

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