www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC hat keine Lust zu funktionieren


Autor: Heinz (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

ich bräuchte Hilfe bei dem ADC. Das Eingangssignal wird mit der 
abtastFrequenz abgetastet und soll als PWM ausgegeben werden.


Die PWM funktioniert. Die ADC Messung scheint auch zu funktionieren, da 
der ADC Interrupt ausgelöst wird. Leider hat die PWM immer einen hohen 
Wert (an LED per Auge "gemessen") unabhängig von der Eingangsspannung.


Die Eingangsspannung geht auf C0 (ADC0) des ATmega8.


Wäre nett wenn jemand den Quellcode mal überfliegen könnte.


Vielen Dank.


Heinz

Autor: kbuchegg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du solltest in dein Programm noch die Endlosschleife

while( 1 )
  ;

mit aufnehmen.

Ich hab keine Ahnung was der gcc-Startupcode macht, wenn main zu ihm 
zurückkehrt.

Autor: Heinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
while(1); ist doch in der main Funktion vorhanden.

Habe vergessen zu erwähnen, dass der Atmel wie im Tutorial beschaltet 
ist (interne Referenzspannung).

http://www.mikrocontroller.net/articles/AVR-Tutori...



Sowohl die Eingangsspannung an C0 als auch die Spannungen VCC AVCC und 
AREF habe ich nachgemessen und haben die richtigen Werte.

Autor: PJ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich mich richtig erinnere, läuft der Prozesser auf einem Sprung auf 
sich selbst auf, wenn die main() {} verlassen wird. Sonst ist da ja nix.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Heinz wrote:
> while(1); ist doch in der main Funktion vorhanden.
>

Tschuldigung. Mein Fehler.
Hab im Code nach unten gescrollt und am Ende der letzten Funktion die 
Schleife vermisst. Hab nur nicht geschnallt, dass das gar nicht die 
main() ist, sondern eine init().

Autor: Heinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kein Problem.


Bin leider immer noch nicht schlauer und PJs Beitrag verstehe ich nicht 
so ganz. Die Hardware ist denke ich korekt. Es wird wohl vielleicht eine 
Einstellung im Register fehlen?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Teste die Komponenten mal einzeln.

1) Hast du eine Möglichkeit ADCH auszugeben und dir die Werte anzusehen?

2) Lass die PWM mal nicht über den ADC Interrupt laufen,
   sondern weise im main() einfach mal ein paar Werte an OCR2 zu und
   sieh nach, ob der Ausgang reagiert.

Erst mal das Subsystem identifizieren, welches nicht funktioniert, dann 
muss man nicht alles nach der fehlenden Einstellung absuchen.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Könnte es sein, das dein ADC wesentlich zu schnell läuft. Ich sehe keine 
Prescalereinstellungen.

MfG Spess

Autor: Heinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erstmal danke für deine Hilfe.

Zu 1: Ich hab zwar eine 4 Stellige 7 Segment Anzeige hier allerdings 
halte ich das für zu aufwendig (Programmcode schreiben um die 7 Segmente 
anzusteuert...)


Zu 2: Ich habe die PWM und den ADC Interrupt durch folgenden Code im 
Interrupt getestet:

int i=0;

ISR(ADC_vect)
{
    if(i==0)
    {
        OCR2=0;
    } else
    OCR2=255;
    i++;
    if(i==2) i=0;
}


Dies bei einer Abtastfrequenz von 1 Hz. Hat alles funktioniert.


Im ADCH steht somit wohl immer ein hoher Wert drin.


@ Spess53


Jop. Das wirds wohl sein. Ich probiers mal aus. Danke.

Autor: Heinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jo geht jetzt. Danke nochmal.

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.