mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC - AT90S8535


Autor: David B. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Der AD-Wandler am At90S8535 funktioniert nicht.
Laut Datenblatt müsste die C-Funktion siehe Dateianhang funktionieren.
Ich kann da keinen Fehler finden?

Für jede Unterstützung bin ich sehr danbar!

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was funktioniert denn nicht?
Diese Zeile
> result += (ADCL + (ADCH<<8));       // mit uint16_t x
ist schon mal sehr fehlerverdächtig. Praktisch jeder C-Compiler für AVRs 
(auch CodeVision, falls es sich um den handelt) bietet die Möglichkeit, 
16-Bit-I/O-Register auch als solche anzusprechen. Und das sollte man 
auch tunlichst nutzen, da z.B. dieser Einzeiler in keinster Weise 
garantiert, dass die beiden Teilregister in der richtigen Reihenfolge 
ausgelesen werden, was aber für die Funktion der ganzen Geschichte 
unbedingt erforderlich ist.

Außerdem ist es sinnvoll, wenn man den Verdacht hegt, dass eine 
Komponente nicht funktioniert, entweder ein Testprogramm speziell für 
diese Komponente zu schreiben, ohne den ganzen anderen Rotz, der damit 
eigentlich nichts zu tun hat, oder wenigstens die Sachen aus dem 
bestehenden komplett-Programm rauswerfen, die mit der Sache nichts zu 
tun haben.

Autor: David B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also die Uhr und das Display (Controller T6963) funktioniert problemlos.
Dieses Projekt habe ich vor ein paar Monaten begonnen. Aufgrund des 
Studiums musste ich meine privaten Interessen zurückstellen. Auf meinem 
Display sehe ich nur den Wert 1023. Normalerweise schwankt dieser Wert 
heftig.

Autor: David B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verwende den CodeVision AVR.
Wie könnte man dies mit CodeVision AVR tun?

Autor: David B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe die Funktion so umgeschrieben:

#define ADC_VREF_TYPE 0x00
// Read the ADC conversion result
unsigned int read_adc(unsigned char adc_input)
{
 ADMUX=adc_input|ADC_VREF_TYPE;
 ADCSR.6=1;
 while (ADCSR.4==0);
 ADCSR.4=1;
 return ADCW;
}

Hauptprogramm setzte ich dann noch das Register ADCSR auf den Wert:0x86


Autor: David B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da tut sich auch nichts. Verhält sich genauso wie vorher.
Ich komme da nicht drauf wo der Fehler liegen könnte.

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

1023 ist Maximal-Wert, was hast Du eigentlich als ARef und wo kommt 
Deine zu messende Spannung her?

Ich habe jetzt auch nicht im Source nachgeschaut, aber ADC-Pin ist auch 
Eingang, PullUp ist ausgeschaltet?

Gruß aus Berlin
Michael

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ADC_VREF_TYPE im ADMUX kannste Dir sparen. Der 90S8535 hat keine 
interne Referenzauswahl.

Ich hoffe, Du weißt, dass der ADC bei der Frequenz, mit der Du ihn 
betreibst, nur noch maximal 8 Bit Auflösung hat.

Ansonsten schließe ich mich Michael an: Ist AREF korrekt angeschlossen? 
Der Analog-Eingangsport sollte explizit als Eingang ohne Pull-Up 
konfiguriert werden, auch wenn der Reset-Wert der betreffenden Register 
eigentlich die korrekte Einstellung liefern sollte. Sicher ist sicher.

Autor: David B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank Michael und Johnny.
Der AD-Wandler funktioniert jetzt.
Kann mir jemand sagen wo ich genauere Infos zu dem temperatursensor
KTY16-6 (Siemens) herbekommen kann? Ich habe zwar das Datenblatt, das 
bringt mir leider nichts.

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.