Forum: Mikrocontroller und Digitale Elektronik Atmega16 Analog Comperator: Flanke reagiert nicht


von Rene (Gast)


Lesenswert?

Ich möchte zu einem den Analog Comperator benutzen um bei fallender 
Flanke eine LED zum leuchten zu bringen und zum anderen später per ADC 
eine Spannung messen.

Ist es zu einem möglich dies irgendwie parallel laufen zu lassen oder 
geht es wirklich nur eins vom beiden?

ADC funktioniert super, nur der Comperator noch nicht:

#ifndef F_CPU
#   define  F_CPU   8000000    /* 8 MHz */
#endif
#include <avr/io.h> // Registernamen
#include <stdlib.h>
#include <util/delay.h>
#include <inttypes.h>
#include <avr/wdt.h>
#include <avr/interrupt.h>

volatile uint16_t AC0 = 0;

void AC_Init(void)
{
  ACSR &= ~(1<<ACD);      //AnalogComparator ein
  ADCSRA &= ~((1<<ADEN));  // ADC aus
  ACSR = (1<<ACIS1)|(1<<ACIE); //fallende Flanke

  DDRB = 0xFF;  // Alle Pins von Ports B als Ausgang
  DDRB &= ~((1 << DDB2) | (1 << DDB3));// b2,b3 eingänge
  PORTB |= 0xFF;
  PORTB &= ~ ((1 << PB0) | (1 << PB2) | (1 << PB3));
}

ISR( ANA_COMP_vect )    //ANALOG COMPARTOR Interrupt Routine
{
  //acflag=1;
  // AINO const: Interrupt wenn AIN1 < AIN0: Kein Licht
  PORTB = (1 << PB0); // LED ein
}

int main(void)
{
    AC_Init();
    sei();
    while(1){}
}

Ist die simple Software so richtig? Wenn AIN0>AIN1 ist müsste LED 
angehen, macht es aber nicht. PB0 ist weiterhin auf Low -.-.

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
Noch kein Account? Hier anmelden.