AVR-Butterfly ADC

Gast #3482693
Lesenswert?

Hallo,
ich verwende einen AVR Butterfly und will den ADC benutzen.
Die ADC-Channel sind im Butterfly folgendermaßen belegt:
Channel 0: NTC,temperature
Channel 1: Voltage
Channel 2: LDR
Channel 3: frei
Channel 4: ADC-Channel 4, JTAG Connector
Channel 5: ADC-Channel 5, JTAG Connector
Channel 6: ADC-Channel 6, JTAG Connector
Channel 7: ADC-Channel 7, JTAG Connector
Ich möchte Channel 4...7 benutzen. Das ist PF4...PF7
Das funktioniert wunderbar mit Cannel 4, 5 und 7, nur Channel 6 ist fest 
auf 1023 genagelt.
PF6 ist von TDO (JTAG) belegt und lässt sich nicht als ADC benutzt 
werden.
JTAG ist ausgeschaltet.
Was muß ich tun, um Channel 6 zu nutzen?
Vielen Dank!
Gast #3482951
Lesenswert?

Beim Atmega169 muß zusätzlich JTAG explizit mit der Software 
ausgeschaltet werden:
//----------------------------
void Disable_JTAG(void)
{
    unsigned char sreg;
    sreg=SREG;
    cli();
    MCUCR |= (1<<JTD);
    MCUCR |= (1<<JTD);
    SREG=sreg;
}
//----------------------------
Wenn man das beim Atmega169 nicht macht dann bleibt der ADC Channel 6 
auf 1023 fest geklebt.
Bei anderen Atmegas habe ich das noch nie erlebt gehabt.
Gast #3482978
Lesenswert?

> Darf man fragen warum du das Bit 2mal setzt? Tippfehler?
Einmaliges Bitsetzen scheint nicht zu reichen - ??!
Ich bin aber noch am Forschen an diesem Phänomen!
ADC 6 liegt jetzt auch um ein paar % neben den anderen 4, 5, 7 Channels.
Komisch!
Vorher war ADC 6 auf 1023 festgenagelt.
Gast #3483520
Lesenswert?

Die Pins F4...F7 sind jetzt miteinander verbunden.
Uref ist 1.1 V.
Die Channels liefern dann folgende Werte:

Voltage =  0.0V;  ADC4 = ADC5 = ADC 7 =    0;  ADC 6 = 368
Voltage =  0.1V;  ADC4 = ADC5 = ADC 7 =  100;  ADC 6 = 400
Voltage =  0.2V;  ADC4 = ADC5 = ADC 7 =  200;  ADC 6 = 455
Voltage =  0.3V;  ADC4 = ADC5 = ADC 7 =  300;  ADC 6 = 500
... usf ...
Voltage =  1.1V;  ADC3 = ADC5 = ADC 7 = 1023;  ADC 6 = 700

Wie kann so was passieren?
Gast #3485720
Lesenswert?

Nach meinen bisherigen Forschungen scheint sich PF6 beharrlich im 
tri-state-Zustand zu befinden.
In diesem Zustand erscheint es nicht möglich, den PF6-ADC-Eingang 
definiert zu nutzen.
So funktiniert dieser Analogeingang nur mit einem Fehler von 3...50 %.
Wie kann ich PF6 als definierten ADC-Eingang nutzen?
Die beiliegenden Files sind der Kommentar von ATMEL, der ATMEGA169 ist 
seit weit über 10 Jahren im Handel.
Bin ich zu unfähig, den PF6 zu einem brauchbaren ADC-Eingang zu bringen, 
oder muß ich mit diesem Zustand leben?
Vielen Dank!!
Angehängte Dateien:
Gast #3489073
Lesenswert?

Bisher habe ich gelernt, daß ADC6 nicht verwendbar ist.
Also verwende ich statt dessen den ADC2 beim Butterfly-LDR.
Der ADC funktionierte auch nur völlig falsch, obwohl ich den LDR leer 
hatte und R210 entfernte hatte.
Das Geheimnis:
ATMEL verbaut gerne einen undokumentierten zusätzlichen Widerstand.
Auf den Bildern sieht man das ATMEL-Dokument und die zwei real verbauten 
Widerstände.
Will man also ADC2 benutzen, so muß man beide Widerstände 
rausscchmeißen.
Dann geht der ADC2 auch.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren