www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Infrarot Distanzsensor AD-Wandler, Bitte Source Code Prüfen


Autor: Christian D. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Irgendwie fehlt der Prototyp für "init".

Autor: Dirk Dörr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> funktioniert jedoch nicht!

Wie wäre es mal mit einer vernünftigen Fehlerbeschreibung?

Autor: Christian D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also das programm soll den analogen eingangswert in einen digitalen
umwandeln und per uart senden, jedoch sendet er mir den wert des sensor
nicht ans terminal

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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();

Autor: Dirk Dörr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sehr viel besser ist die Beschreibung auch nicht.

Kommen überhaupt keine Ausgaben?
Kommen falsche Ausgaben?

Eine Vermutung ist, daß Du eine Endlosschleife in read_adc hast.

Autor: Christian D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was für eine headerdatei benötige ich für sei(); ?

Autor: Christian D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es kommt nur die ausgabe das die init funktion erfolgreich ausgeführt
wurde, danach kommt garnichts mehr, er reagiert also nicht mehr,

Autor: Christian D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Dirk Dörr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sag ich doch.

Du hast eine Endlosschleife in Deinem readadc() => while(1){...}

Autor: Branko Golubovic (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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;
}

Autor: Christian D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke für die funktion, wenn ich jedoch die funktion aufrufe hängt sich
das programm wieder auf! hm...

Autor: Christian D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
juhuuu^^ es geht, hatte vergessen die initialisierung des ad-wandlers zu
starten. vielen dank an alle für die hilfe

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.