Infrarot Distanzsensor AD-Wandler, Bitte Source Code Prüfen

Gast #322754
Lesenswert?

hallo, versuche gerade mit dem ad-wandler ein analoges signal von einem
infrarot distanz sensor einzulesen und per uart an die serielle
schnittstelle zu senden, funktioniert jedoch nicht! weis nicht mehr was
ich noch tun kann, quelltext ist im anhang, habe einen atmega8 mit
integriertem ad wandler und programmiere ihn in c, bitteee sourcecode
prüfen! thx schonmal
Angehängte Dateien:
Gast #322758
Lesenswert?

Hi,

ohne direkte Fehlerangabe sind meine Vermutungen nur aus der Glaskugel
geholt.

Deine globalen Variablen werden vom Compiler weg optimiert. Setze mal
diese auf volatile.

Globaler Interrupt enable fehlt? sei();
Gast #322762
Lesenswert?

hm ich habe nun den watchdog aktiviert und das timeout auf 1 sekunde
eingestellt, und nun resettet er mir den atmega ständig also muss etwas
mit der funktion readadc() nicht stimmen, denn wenn ich die funktion
auskommentiere resettet der wd nicht!
Gast #322764
Lesenswert?

Hallo Christian

#define ADC_VREF_TYPE 0x00  //External VREF
 //#define ADC_VREF_TYPE 0x40  //AVCC
 //#define ADC_VREF_TYPE 0xc0  //Interne 2,56V Spannung

unsigned int read_adc(unsigned char adcinput)
{
ADMUX=adcinput|ADC_VREF_TYPE;

// Starte AD Konversion
ADCSRA|=1<<ADSC;

// Warte  bis AD Konversion fertig ist
while ((ADCSRA & (1<<ADIF))==0);

ADCSRA|=(1<<ADIF);  // Lösche ADC Interrupt Flag

return ADCW;
}

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