Forum: Mikrocontroller und Digitale Elektronik AVR-Butterfly ADC


von Butterfly (Gast)


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!

von Butterfly (Gast)


Lesenswert?

Problem gelöst!
Besten Dank!

von N. G. (newgeneration) Benutzerseite


Lesenswert?

und wie?
Könnte andere interessieren

von Butterfly (Gast)


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.

von N. G. (newgeneration) Benutzerseite


Lesenswert?

>     unsigned char sreg;
>     sreg=SREG;
>     cli();
>     MCUCR |= (1<<JTD);
>     MCUCR |= (1<<JTD);
>     SREG=sreg;
Darf man fragen warum du das Bit 2mal setzt? Tippfehler?
Ich hab jetzt mal nicht im datasheet nachgeschaut, also einen evtl. 
Fehler meinerseits übersehen ;)

von Butterfly (Gast)


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.

von Butterfly (Gast)


Angehängte Dateien:

Lesenswert?

Das Display geht von 00 bis 99 und zeigt dan eben dann noch 4 Balken in 
einer "Grafik".
Die 4 Balken sind die 4 ADCs Channel 4,5,6,7.
Channel 6 liegt etwas daneben. Komisch!?!

von Torben (Gast)


Lesenswert?

N. G. schrieb:
>>     MCUCR |= (1<<JTD);
>>     MCUCR |= (1<<JTD);
>>     SREG=sreg;
> Darf man fragen warum du das Bit 2mal setzt? Tippfehler?
Nein, kein Tippfehler. Schau im Datenblatt nach. Das ist ein 
Schutzmechanismus, um nicht versehentlich JTAG auszuschalten.

Torben

von Torben (Gast)


Lesenswert?

Butterfly schrieb:
> ADC 6 liegt jetzt auch um ein paar % neben den anderen 4, 5, 7 Channels.
> Komisch!
Was hast Du denn an die Pins angeschlossen? Wenn die Pins floaten, 
reicht schon eine andere Innenbeschaltung im AVR, um eine solche 
Abweichung zu verursachen.

Torben

von Butterfly (Gast)


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?

von Butterfly (Gast)


Angehängte Dateien:

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!!

von Torben (Gast)


Lesenswert?

Brauchst Du denn PF6 unbedingt?
Evtl. kannst Du einen Sensor  von PF0 bis PF3 abklemmen.

Torben

von Butterfly (Gast)


Angehängte Dateien:

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.

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
Noch kein Account? Hier anmelden.