AVR & ADC mal wieder

Gast #218202
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 ######################
Gast #218203
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
Gast #218205
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
Gast #218206
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!?
Gast #218207
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
Gast #218209
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
#218210
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é

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.