PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ADC_Kanäle 8-15 des ATMega2560 mit GETADC



NeroII
19.02.2010, 14:42
Hallo,

ich möchte alle ADC-Kanäle des Mega2560 nutzen. Dazu benutze ich GETADC(Channel). Von 0-7 funktioniert es wunderbar wenn man einfach den gewünschnten Kanal in die Klammer schreibt, für 8-15 geht das dann nicht mehr.

Dazu gibt es eine Hilfe von Bascom: http://avrhelp.mcselec.com/index.html?getadc.htm

Diese meint die Kanäle 8-15 müssten folgendermaßen abgefragt werden: für Kanal 8 z.B. GETADC(0,64). Das funktioniert aber bei mir nicht. Deshalb hab ich mich im Datenblatt mal schlau gemacht und herausgefunden, dass für Singled Ended Input von Kanal 8-15, 100xxx geschrieben werden müsste. Dabei ist Offset aber 32 und nicht 64. Daraufhin gab ich GETADC(32) ein und tatsächlich ich konnte die Werte auslesen.

Ist das also der richtige Weg und irrt die Bascomhilfe? Hat jemand anderes schon diese Erfahrung gemacht?

Viele Grüße
Cornelius

Mitch64
03.04.2015, 15:38
Hallo,
ich weis dass der Thread Ur-Alt ist.
Warum ich schreibe ist, dass ich mit der aktuellsten Version von Bascom AVR 2.0.7.8 noch immer dieses Problem habe.
Lt. Bascomhilfe müßte für den Mega2560 und auch Mega1280 der ADC-Kanal 8 mit ADCWert=GetADC(0,32) ausgelesen werden. Die 32 ist der Offset, um den korrekten Kanal anzusprechen (Datenblatt vom ATMega2560).
Nun schreiben wir das Jahr 2015 und das Problem ist offensichtlich noch immer nicht behoben.

In der Bascomhilfe ist zwar der Fehler mit dem Offset von fälschlicherweise 64 auf den richtigen Wert 32 korrigiert.
Leider wird durch den obigen Befehl das MUX-Bit 5 in ADCSRB (ADCSRB.3) nicht gesetzt.

Wie Norell schreibt muss man den ADC Kanal 8 mit ADCWert=GetADC(32), den Kanal 9 mit GetADC(33) usw. auslesen.
Hier stimmt also seit 2008 bis dato (2015) die Bascomhilfe nicht!

Schade, dass Mark das Basom immer um neue Funktionen erweitert und bestehende Fehler nicht oder sehr unzufriedenstellend behebt.
Das Programm BascomAVR könnte so geil sein, wenn er nur wollte.

Wenn irgendjemand ihm den Rang mit Basic-Programmierung abläuft, ist er selbst daran schuld.

Soviel zu meinem Statement.

Rone
03.04.2015, 17:50
Dann schreib an den Support und nörgel nicht hier herum!

Edit:
Auszug aus der aktuellen Help:

Without the offset, you need to provide the proper value for the channel.
So GetADC(0,32) would become : GetADC(32)
And GetADC(1,32) would become : GetADC(33)

Also wo liegt Dein Problem?

Mitch64
03.04.2015, 20:05
Ich nörgel nicht. Ich stelle fest.
Und GetADC(0,32) funktioniert nicht, während GetADC(32) funktioniert.
Entweder stimmt die Hilfe nicht oder es liegt ein Bug vor.

Den Support kenne ich schon zu genüge. Aber ich will auch mal programmieren und nicht nur Fehler an den Mark durchgeben.
Das sollte hier nur als Hilfe fungieren.

Rone
03.04.2015, 20:16
Mein Edit hast Du gelesen?

Ich durchschau Dein Problem nicht!

Mitch64
03.04.2015, 20:36
Genau solche diskussionen habe ich mir mark auch.
Manchmal frage ich mich, ob nur ich den Fehler habe und die anderen bascom-Nutzer nicht?

Lass gut sein.