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 ######################
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
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
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
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!?
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
also laut code müsste die maximalspannung (1023) gleich der referenzspannung sein? kann der adc evtl defekt sein?
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
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é
Hallo, probier mal beim Konfigurieren des AD-Wandlers "reference=avcc" aus.
Hallo. Habe den Fehler gefunden kopf klatsch auf meinem experimentierboard war auf interne referenz gejumpert. BLÖD!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.