mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR & ADC mal wieder


Autor: Bob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich versuche zum ersten mal einen adc in betrieb zu nehmen, aber es
will nicht so wie ich will.. Problem: wert 1024 ist bei ca 1.6V
erreicht

Anschluss (Mega128)

AVCC,AREF an +5V (mit spule und 10nF kondi gelättet)
AGND an GND

den eingang (ADC1) habe ich mit nem 1kOhm geschützt und mit nem
weiteren 10nF gegen masse geglättet. habe ein 5K spindeltrimmer
(mittelabgriff an dem 1k, rest an 5V und GND) damit ich erstmal so
werte einstellen kann.


hier der Bascom code

$regfile = "m128def.dat"
$crystal = 16000000
$baud = 9600

Config Adc = Single , Prescaler = Auto , Reference = Off

Start Adc


Dim W As Word

Channel = 0

Do
  W = Getadc(1)
  Print " value " ; W
Waitms 500
Loop
End
'################## ENDE CODE ######################

Autor: Michael von Gersdorff (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Bob
Du hast vergessen die Variable "Channel" zu dimensionieren. Du
verwendest diese nicht wie im Bascom-Beispiel.
Bist Du sicher das Dein Eingangssignal auf ADC 1 angeschlossen ist?
oder vielleicht doch an ADC 0

Michael

Autor: Bob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die zeile habe ich rausgenommen, sorry das sie hier noch drin steht.
aber das ändert nix daran, weil ich nur kanal 1 auslese. Hängt an PF1

Autor: Michael von Gersdorff (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Bob
Druckt er überhaupt etwas? also dauwernd Null oder dauernd 1023 und
hast Du die 5 Volt an die Eingänge AVcc und Aref angeschlossen.
Michael

Autor: Bob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja hatte ich doch geschrieben. aal-glatte 5v an aref aud avcc. ich
kriege werte von 0 bis 1023 je nachdem was ich am poti einstelle. aber
nur bis 1,6V!?

Autor: Michael von Gersdorff (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Bob
Wenn Du wirklich nur diesen code geladen hast (und das nicht nur ein
Auszug ist) ist die Sache sehr merkwürdig. Bei mir funktioniert das
seit Jahren in vielen Anwendungen, so wie Du es programmiert hast,
problemlos.
Melde Dich doch nochmal wenn das Problem gelöst ist. Würde mich
interessieren woran es lag.
Michael

Autor: Bob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also laut code müsste die maximalspannung (1023) gleich der
referenzspannung sein? kann der adc evtl defekt sein?

Autor: Michael von Gersdorff (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Bob
Das kann schon sein aber dann müßtest Du ihn irgendwie zerstört haben.
Hinweis: Die Eingangsspannung der Analogsignale darf nie höher sein als
die verwendete ADC-Referenzspannung.
Michael

Autor: André K. (andre-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In Bascom 1.11.7.9 gibts in der getadc() nen kleinen Bug (tritt
zumindest beim Mega88 auf). Ob der nun auch beim Mega128 von Belang
ist, weiss ich nicht.

Ersetze den entsprechenden Teil in der mcs.lib durch folgenden:

[_GETADC]
_GetADC:
* #IF _CHIP >30
* LDS R24, ADCSR
* Ori R24, 128+64
* STS ADCSR , R24
*_GetADC_1:
* LDS R24, ADCSR
* SBRC R24,6
* Rjmp _GetADC_1   ;  not ready
* #ELSE

* Sbi ADCSR,6    ;  start conversion
_GetADC_1:
* Sbic ADCSR,6   ;  skip next instruction if ready
Rjmp _GetADC_1   ;  not ready

;--- remark the next 4 lines for single conversion
* Sbi ADCSR,6            ; we need 2 conversions for a good result
_GetADC_2:
* Sbic ADCSR,6           ; skip next instruction if ready
* Rjmp _GetADC_2         ; not ready
;-------------------------------------------------
*#ENDIF
* In r24,ADCL            ; first read lower data register
* In r25,ADCH            ;then read upper data register
Ret

[END]

Anschliessend die mcs.lib ueber den Lib-Manager neu compilieren.

MfG,
André

Autor: Fujisie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
probier mal beim Konfigurieren des AD-Wandlers  "reference=avcc" aus.

Autor: Bob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.
Habe den Fehler gefunden kopf klatsch auf meinem experimentierboard
war auf interne referenz gejumpert. BLÖD!

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.