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!
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.
> 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 ;)
> 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.
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!?!
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
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
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?
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!!
Brauchst Du denn PF6 unbedingt? Evtl. kannst Du einen Sensor von PF0 bis PF3 abklemmen. Torben
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.