Hallo,
ich habe ein Problem mit meinem ATMega128A.
Folgendes Problem der ADC misst nicht richtig b.z.w. wandelt die
Eingangsspannung nicht richtig um.
Fakten:
Es wird die interne RefSpg verwendet die ist auch da gemessen am vref.
je kleiner die Spannung am adc ist desto genauer ist er aber die
Abweichungen beginnen ab 10mv und der adc zeigt bei 4.2V schon 1023 an
obwohl 5V als refspg vorhanden ist und er dieses erst bei vrefmax tun
sollte.
Beispiel 2.5V müssten ca 512 sein die der ADC als wert liefert in meinem
Fall liefert der ADC den wert von 690.
und das auf jedem ADC Eingang ob nun beschaltet oder nicht.
Beschaltet sind die ADC Eingänge mit einem 10K und dahinter ein 39K auf
Masse und einem 100nF vom ADC Eingang auf Masse.
Die ganze Beschaltung und auch das Programm läuft auf einem ATMega32A
ohne Probleme ( natürlich mit den entsprechenden Anpassungen der Ports )
Jetzt habe ich halt nur meine Schaltung geändert auf einen ATMega128A
und der ADC misst nicht linear.
Im Datenblatt wir das als GAIN ERROR bezeichnet, aber es wir keine
Lösung für das Problem genannt.
Daher meine Frage an euch wisst ihr eine Lösung oder ist es einfach nur
ein fehlerhafter ATMega128A Chip.
Die ADC Routine ( siehe unten )ist die vom ADC Tutorial aber daran kann
es nicht liegen dann der ATMega32A misst mit der Routine alles richtig.
Vielleicht fällt euch ja was ein mir fällt nix mehr ein ausser den Chip
mal zu tauschen oder wieder zurück auf den ATMega32A zu gehen.
Danke im voraus.
1
#define ADCDDR DDRF
2
#define ADCPIN PINF
3
4
5
voidADC_Init(void)
6
{
7
ADMUX|=(1<<REFS0);// Set reference to AVcc
8
ADCSRA|=(1<<ADPS0)|(1<<ADPS1)|(1<<ADPS2);// Set prescaler to 128
9
10
ADCSRA|=(1<<ADEN);// ADC aktivieren
11
12
13
/* nach Aktivieren des ADC wird ein "Dummy-Readout" empfohlen, man liest
14
also einen Wert und verwirft diesen, um den ADC "warmlaufen zu lassen" */
15
16
ADCSRA|=(1<<ADSC);// eine ADC-Wandlung
17
while(ADCSRA&(1<<ADSC)){// auf Abschluss der Konvertierung warten
18
}
19
/* ADCW muss einmal gelesen werden, sonst wird Ergebnis der nächsten
20
Wandlung nicht übernommen. */
21
(void)ADCW;
22
}
23
24
25
26
27
/* ADC Einzelmessung */
28
uint16_tADC_Read(uint16_tchannel)
29
{
30
//setinput(channel);
31
// Kanal waehlen, ohne andere Bits zu beeinflußen
32
ADMUX=(ADMUX&~(0x1F))|(channel&0x1F);
33
ADCSRA|=(1<<ADSC);// eine Wandlung "single conversion"
34
while(ADCSRA&(1<<ADSC)){// auf Abschluss der Konvertierung warten
Florian W. schrieb:> Die ADC Routine ( siehe unten )ist die vom ADC Tutorial aber daran kann> es nicht liegen dann der ATMega32A misst mit der Routine alles richtig.
Dann liegt der Fehler evtl. im nicht geposteten Code...
Wird bei diesem Test immer nur der selbe Kanal gewandelt? Oder wird da
zwischendurch noch ein anderer Kanal z.B. mit 0V gewandelt?
> Es wird die interne RefSpg verwendet die ist auch da gemessen am vref.
Hast du einfach mal andere Modi für die Referenzspannung ausprobiert?
Hast du das ADMUX-Register ausgelesen, ob da wirklich die Werte drin
sind, die du möchtest?
BTW:
Der erste Zugriff in der Initialisierung sollte eine direkte Zuweisung
sein. Kein Read-Modify-Write. Oder andersrum: welchen Wert hatte ADMUX
vorher?
> Es wird die interne RefSpg verwendet die ist auch da gemessen am vref.
vs.
> obwohl 5V als refspg vorhanden ist
Die interne Ref ist 2,56 V, laut Code nimmst du AVCC (je nachdem 5V), wo
kommen die 5V her bzw. wie sauber sind diese?
Ist ein C am VREF-Pin?
@ Lothar Miller
Im eigentlich gesammt Programm werden 5 ADC Eingänge abgefragt.
Ich habe aber nachdem der Fehler von mir festgestellt wurde alle
auskommentiert so das nur noch ein ADC abgefragt wird und das Ergebnis
ohne irgendeine Berechnung direkt ausgegeben wird.
Bezüglich der ersten zugriff.
Ich habe mich an das Tutorial
AVR-GCC-Tutorial/Analoge Ein- und Ausgabehttps://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Analoge_Ein-_und_Ausgabe
gehalten.
Nein habe das ADMUX-Register nicht ausgelesen.
Und wie schon geschrieben alles funktioniert auf einem ATMega32A mit der
selben Schaltung mit dem selben Programm.
@ Holger
Ja AVCC = Versorgungsspannung( wie im Datasheet beschrieben mit
Kondensator gegen Masse und 10µH gegen VCC = 5V
@ Michael K.
Du hast natürlich recht das war mein Fehler.
Ich meine natürlich Referenz = AVCC with external capacitor at AREF pin
Bezüglich sauber 5V also sauber genug das es mit dem ATMega32A läuft und
mit dem ATMega128A nicht.
Hatte bis jetzt mit den erzeugten 5V noch kein Probleme aber der Fehler
tritt auch auf wenn die 5V vom Programmer kommen.
Miss mal die Spannung am ARef Pin mit einem Voltmeter. Der ADC liefert
als Zahlenwert das Verhaeltnis der Eingangsspannung zu ARef. Wenn der
Zahlenwert daher deiner Meinung nach zu hoch ist fuer die
Eingangsspannung, dann bleibt als Schlussfolgerung nur noch, dass dein
Aref nicht so hoch ist wie du glaubst. Ergo: nachmessen!
also hast du auch extern einen Stütz-C (z.B. 100nF) am AREF?
(Ich hab's noch nie ohne versucht und weiß nicht wie kritisch die ADCs
diesbezüglich sind, aber beim samplen wird die Referenz mit belastet,
bricht diese kurz ein, kann das theoretisch auch zu größeren Werten
führen)
Michael K. schrieb:> also hast du auch extern einen Stütz-C (z.B. 100nF) am AREF?> (Ich hab's noch nie ohne versucht und weiß nicht wie kritisch die ADCs> diesbezüglich sind, aber beim samplen wird die Referenz mit belastet,> bricht diese kurz ein, kann das theoretisch auch zu größeren Werten> führen)
Was habe ich oben geschrieben ( 3 Beiträge vorher) ?
Ja AVCC = Versorgungsspannung( wie im Datasheet beschrieben mit
Kondensator gegen Masse und 10µH gegen VCC = 5V
@Karl Heinz
Habe ich im anfangs Beitrag auch geschrieben habe halt nur verwechsel
interne referenz mit Referenz = vcc
Habe den ARef Pin gemessen liegen genau 5v an wie auch die vcc Spannung
ist.
Und nochmals diese Schaltung funktioniert mit einem ATMega32A ohne
Probleme.
Ergo kann es an der Schaltung nicht liegen.
Sonst würde es mit einem 32iger auch nicht funktionieren oder??
Frank äußerte um 15:57:
> Was habe ich oben geschrieben ( 3 Beiträge vorher) ?> Ja AVCC = Versorgungsspannung( wie im Datasheet beschrieben mit> Kondensator gegen Masse und 10µH gegen VCC = 5V
Wenn ich richtig lese steht da nur ein Zitat aus dem Datenblatt
"AVCC with external capacitor at AREF pin",
nichts von "Kondensator gegen Masse" und 10µH
Ebenso bzgl. nachmessen:
Im ersten Beitrag stand "Es wird die interne RefSpg verwendet die ist
auch da gemessen am vref.", aber nicht was und wieviel du gemessen hast
(schon garnicht "genau 5v" und das ist nämlich das, was Karl-Heinz
meinte.
Aber wenn du so intelligent bist und es dir leisten kanns auf Hilfe so
altklug zu reagieren dann hilf dir auch selbst :-)
Kann es vielleicht sein, dass die nicht funktionierende Schaltung mit
einem anderen Takt läuft als die funktionierende? Wurde bei der
Umstellung eventuell vergessen, die Fuses des neuen Controllers
anzupassen? Der ADC will ja mit einer Taktrate zwischen 50 kHz und 200
kHz laufen.
Von deinen ADC-Prescaler-Einstellungen ausgehend würde ich auf einen 16
MHz-Takt tippen, aber sagen das auch die Fuses?
Frank W. schrieb:> Und nochmals diese Schaltung funktioniert mit einem ATMega32A ohne> Probleme.> Ergo kann es an der Schaltung nicht liegen.> Sonst würde es mit einem 32iger auch nicht funktionieren oder??
Aber an irgendwas muss es liegen.
Gain Error in allen Ehren. Aber bei erwarteten 512 ist ein Ergebnis von
690 kein Gain Error sondern irgendein handfestes Problem. Über eines bin
ich mir allerdings ziemlich sicher: das Problem liegt nicht in der
internen Hardware des Mega128. Wenn du anstelle von erwarteten 512 ein
Ergebnis von 510 hast oder 514, ok. Aber nicht 690.
Mega128. Die M103 Kompatibilitätsfuse hast du abgeschaltet?
Frank W. schrieb:> Ich meine natürlich Referenz = AVCC with external capacitor at AREF pin
^^^^ ^^^^^^^
Du hast also AREF an AVCC angeschlossen? Habe ich das richtig
verstanden?
Klugscheiß schrieb:> Frank äußerte um 15:57:>> Was habe ich oben geschrieben ( 3 Beiträge vorher) ?>> Ja AVCC = Versorgungsspannung( wie im Datasheet beschrieben mit>> Kondensator gegen Masse und 10µH gegen VCC = 5V>> Wenn ich richtig lese steht da nur ein Zitat aus dem Datenblatt> "AVCC with external capacitor at AREF pin",> nichts von "Kondensator gegen Masse" und 10µH>> Ebenso bzgl. nachmessen:> Im ersten Beitrag stand "Es wird die interne RefSpg verwendet die ist> auch da gemessen am vref.", aber nicht was und wieviel du gemessen hast> (schon garnicht "genau 5v" und das ist nämlich das, was Karl-Heinz> meinte.>> Aber wenn du so intelligent bist und es dir leisten kanns auf Hilfe so> altklug zu reagieren dann hilf dir auch selbst :-)
Bei dem Namen ..... Ist jeder Kommentar überflüssig.
Den Rest beantworte ich wenn ich zu Hause bin.!
Frank M. schrieb:> Frank W. schrieb:>> Ich meine natürlich Referenz = AVCC with external capacitor at AREF pin> ^^^^ ^^^^^^^>> Du hast also AREF an AVCC angeschlossen? Habe ich das richtig> verstanden?
----------------->
Ja AVCC = Versorgungsspannung( wie im Datasheet beschrieben mit
Kondensator gegen Masse und 10µH gegen VCC = 5V
Hi
Du hast die letzte Frage vom Karl-Heinz:
>Mega128. Die M103 Kompatibilitätsfuse hast du abgeschaltet?
nicht beantwortet. Die M103-Fuse gibt es auch beim ATMega128A und ist im
Lieferzustand eingeschaltet.
MfG Spess
Felix P. schrieb:> Kann es vielleicht sein, dass die nicht funktionierende Schaltung mit> einem anderen Takt läuft als die funktionierende? Wurde bei der> Umstellung eventuell vergessen, die Fuses des neuen Controllers> anzupassen? Der ADC will ja mit einer Taktrate zwischen 50 kHz und 200> kHz laufen.>> Von deinen ADC-Prescaler-Einstellungen ausgehend würde ich auf einen 16> MHz-Takt tippen, aber sagen das auch die Fuses?
Nein die Schaltung mit dem ATMega32A läuft mit der selben Frequenz (
richtig 16MHz )
Fuse sind eingestellt auf ext Quarz
Oder meinst du andere Fußes.
Die M103 Kompatibilität ist ausgeschaltet mit läuft die ganze Schaltung
nicht b.z.w. das Display zeigt nix an.
@ Karl Heinz
Auf den Rest gehe ich ein wenn ich zu Hause bin.
Auf dem Handy schreiben ist mist.
@ Frank W.
Du hast die Frage nicht ganz verstanden, Frank M. meinte, ob du AVCC von
außen auf den AREF Pin gelegt hast?
> Frank M. schrieb:>> Du hast also AREF an AVCC angeschlossen? Habe ich das richtig>> verstanden?
Sollte aber auch nciht das Problem sein, wenn intern korrekt auf AVCC
geschaltet ist.
Was steht eigentlich in der Variable "channel"? Ist ausgeschlossen, dass
du differentiell misst?
Frank W. schrieb:> Nein habe das ADMUX-Register nicht ausgelesen.
Das hier sagt was anderes:
Frank W. schrieb:> void ADC_Init(void)> {> ADMUX |= (1<<REFS0);
|= ist read modify also vorher Auslesen und danach Schreiben
wolltest du das?
void ADC_Init(void)
{
ADMUX = (1<<REFS0);
das wäre echte Zuweisung ohne voriges Auslesen
Frank W. schrieb:> Und nochmals diese Schaltung funktioniert mit einem ATMega32A ohne> Probleme.
bevor wir weiter rumrätseln wäre ein Plan deines Aufbaus hilfreich,
nicht irgendeiner aus dem Netz sondern ein echter von dir aufgebauter.
Frank W. schrieb:> Es wird die interne RefSpg verwendet die ist auch da gemessen am vref.> je kleiner die Spannung am adc ist desto genauer ist er aber die> Abweichungen beginnen ab 10mv und der adc zeigt bei 4.2V schon 1023 an> obwohl 5V als refspg vorhanden ist
das wäre technisch unmöglich, da ist ein dicker Bug drin, die 1023
können bei 4,2V nur dann angezeigt werden wenn AREF 4,2V hat, du
schreibst aber:
Frank W. schrieb:> Es wird die interne RefSpg verwendet die ist auch da gemessen am vref
welche?
ich kenne keine 4,2V Ref
Entweder ist AREF = AVCC = VCC oder AREF ist 1,1V 2,56V gibt es noch
andere interne?
Frank W. schrieb:> ATMega128A
hier finde ich nur
Internal reference voltages of nominally 2.56V or AVCC are provided
On-chip. The voltage reference may be
externally decoupled at the AREF pin by
a capacitor for better noise performance.
wenn also intern 2,56V gewählt ist wundert mich 1023 nicht bei 4,2V
die 1023 dürften aber auch schon bei 2,6V gezeigt werden.
Lothar M. schrieb:> Der erste Zugriff in der Initialisierung sollte eine direkte Zuweisung> sein.
mal ne Frage sollte der erste ADC read nicht ein Dummy Read sein?
Ich erinnere mich an ältere ADC die erst nach einem Dummy Read beim
nächsten Mal richtig lieferten.
Ich erinnere mich auch an Einschwingen also ich mache immer zuerst ein
Dummyread, wenn er überflüssig sein sollte, schaden tut er nur selten im
setup, ausser es muss nach dem Start sofort losgehen, aber das ist
selten, meist hat der µC ja genügend Zeit nach dem power ON. Ob das
power ON 1 10 oder 100ms dauert ist ja oft nicht entscheidend und wenn
doch darf ich noch mal darüber nachdenken.
Hallo,
ich denke es ist auch wichtig zu Fragen, wie hoch die Eingangsimpedanz
der Spannungsquelle ist.
Und wie gut die Versorgungsspannung.
Iet evtl. Vcc = USB +5V ?
Karl M. schrieb:> ich denke es ist auch wichtig zu Fragen, wie hoch die Eingangsimpedanz> der Spannungsquelle ist.> Und wie gut die Versorgungsspannung.> Iet evtl. Vcc = USB +5V ?
guter Hinweis,ist VCC nur angenommen 5V und in Wirklichkeit aus dem USB
mit nur 4,2V?
Das würde einiges erklären, die Infos vom TO sind dünne.
Frank W. schrieb:> Ja AVCC = Versorgungsspannung( wie im Datasheet beschrieben mit> Kondensator gegen Masse und 10µH gegen VCC = 5V
gemessen oder vermutet?
ich kenne sehr selten nur 5,00V da ist entweder 5,1V oder 4,99V oder
4,85V
bei derlei Worten
Frank W. schrieb:> Ja AVCC = Versorgungsspannung( wie im Datasheet beschrieben mit> Kondensator gegen Masse und 10µH gegen VCC = 5V
denke ich nicht an Messung sondern die 5V nur vermutet.
Frank W. schrieb:> Ich meine natürlich Referenz = AVCC
aha und wenn AVCC 4,2V hat?
Hi
>mal ne Frage sollte der erste ADC read nicht ein Dummy Read sein?>Ich erinnere mich an ältere ADC die erst nach einem Dummy Read beim>nächsten Mal richtig lieferten.
Das interessiert den Gasmann.
Ich bin seit über 15 Jahren mit ATMega103/ATMega128 und ATMega1281
unterwegs. Und die tun alle was sie sollen.
MfG Spess
Wenn es Dir an einer Referenz mangelt, nimm doch einfach einen MCP1541,
dessen Ausgang Du an AREF anschließt. Der gibt genau 4.096V aus, d.h.
bei Deinem AVR entspricht dann eine Einheit genau 0.004V. Wegen der
einfachen Umrechnung nimmt man solche Referenzen.
http://ww1.microchip.com/downloads/en/DeviceDoc/21653C.pdf
Den Dummy-Read am Anfang haben andere Leute schon erwähnt.
fchk
So @ home
jetzt will ich mal versuchen alles auf zu arbeiten. :-)
@ Karl Heinz
M103 Kompatibilitätsfuse ist ausgeschaltet ja.
Ich habe die aufgebaute schalten mehrfach kontrolliert.
Daher ja auch die Vermutung in meinem eingangs Post das der ATMega einen
weg hat.
@ Michael K.
ja da habe ich mich verlesen sorry
also
AVCC = Versorgungsspannung( wie im Datasheet beschrieben ) mit
Kondensator gegen Masse und 10µH gegen VCC = 5V
http://www.atmel.com/Images/Atmel-8151-8-bit-AVR-ATmega128A_Datasheet.pdf
Seite 228.
Und AREF ist mit einem 100nF gegen masse geschaltet.
Die Variable Channel ist das was das Wort sagt sie enthält die Nummer
welcher ADC 0-5 in meinem Fall ausgelesen wird.
@ Joachim B.
Es findet doch eine Dummy Messung statt im ADC_Init !!
Zu den anderen Anmerkungen von dir ich habe meinen Fehler aus dem ersten
Post richtig gestellt und gesagt ich benutze AVCC with external
capacitor at AREF pin. :-)
VCC ist 5V ziemlich genau GEMESSEN mit mehreren Multimeter und auch mit
dem Oszilloskop.
wobei der der Fehler der auftritt nicht damit zusammenhängen kann ob nun
4.95V oder 5.1V anliegen weil der Referenzpunkt sich mit ändert und
zwischen 4.2V und 4.95V oder 5.1V doch ein Riesen unterschied ist.
Und wenn nicht ganz auf den kopp gefallen bin sollte der ADC erst dann
1023 anzeigen wenn am Eingang des zu messenden ADC die selbe Spg anliegt
wie auch die Referenzspannung ist.
Achso und noch was bitte unterlasse Unterstellungen wie
" denke ich nicht an Messung sondern die 5V nur vermutet"
Wenn ich schreibe gemessen dann meine ich das auch.
Ich muss so was nicht vermuten den dafür gibt es Messgeräte.
AVCC hat keine 4.2V ( siehe 2 Absätze vorher !!! )
@ Karl M
Zur Eingangsimpedanz:
Beschaltet sind die ADC Eingänge mit einem 10K und dahinter ein 39K auf
Masse und einem 100nF vom ADC Eingang auf Masse. ( hatte ich auch
geschrieben im ersten Post :-P )
@ Frank K.
Nein es mangelt mir nicht an der Referenz. :-)
Aber trotzdem danke für den tip.
Wie schon mehrfach erwähnt die selbe Schaltung läuft mit einem ATMega32A
ohne Problem nur mit diesem ATMega128A nicht.
Da ich die Schaltung schon mehrfach kontrolliert und gemessen habe bevor
ich hier meine frage gestellt habe.
Sollte ich auf der Seite eigentlich ( kann natürlich durch Blindheit der
Schaltung immer mal was übersehen )kein Fehler vorliegen.
Daher ja auch die Vermutung das der ATMega einen weg hat.
Und ich fragte halt bevor ich mir die Arbeit mache und ihn austausche.
Hätte ja sein können das jemand so was schon mal hatte und mir dazu
hätte was sagen können.
Und natürlich danke ich auch allen die sich daran beteiligen.
Frank W. schrieb:> Achso und noch was bitte unterlasse Unterstellungen wie> " denke ich nicht an Messung sondern die 5V nur vermutet">> Wenn ich schreibe gemessen dann meine ich das auch.
hier wird soviel geschrieben, noch mehr gemeint und 5V habe ich bei mir
noch auf keinen meiner Messgeräte (ca. 15 Stück) gesehen, von daher darf
ich alles vermuten und auch unterstellen.
wenn du 5V gemessen hast nenne doch 2 Nachkommastellen so du im 1%
Bereich misst, vielleicht misst du auch mit einem 6,5-stelligen auch da
würden 2 Nachkommastellen reichen, aber wie soll man 5V zu gemessen
übersetzen?
Hallo Frank W.,
danke für die Zusammenstellung der Fragen - Antworten.
Hast Du schon mal eine 1,5V Batterie neben den 100nF direkt an einen
ADC- Eingang angeschlossen.
Da sollte in etwas ADC-Wert 307 herauskommen.
Dann würde ich noch je eine Messung gegen
a) die 1,23V Bandgrap Referenz
MUX4:0 = [11110] 1.23V (V BG)
b) die 0V an AGND
MUX4:0 = [11111] 0V (GND)
machen.
Wie hoch war die ADC-Wandlergeschwingigkeit bzgl. der CPU-Taktfrequenz ?
Karl M. schrieb:> Hallo Frank W.,>> danke für die Zusammenstellung der Fragen - Antworten.>> Hast Du schon mal eine 1,5V Batterie neben den 100nF direkt an einen> ADC- Eingang angeschlossen.>> Da sollte in etwas ADC-Wert 307 herauskommen.>> Wie hoch war die ADC-Wandlergeschwingigkeit bzgl. der CPU-Taktfrequenz ?
Habe ich grad mal gemacht es kommen 383 als ADC-Wert
ADC-Wandlergeschwingigkeit sind 16MHz 128 prescaler 125kHz.
Ich habe mal die Beschaltung der ATMega im Anhang beigefügt.
Wie man sieht ist da nicht viel angeschlossen.
Von daher sind Fehler die man machen kann überschaubar.
Und ich konnte wie gesagt keine entdecken.
So Update...
Ich habe den Fehler gefunden.
Auf der Platine hatte der AREF immer die VCC Spannung um die 5V.
Habe jetzt aber festgestellt das irgendwie das Beinchen vom ATMEGA
keinen richtigen Kontakt hatte weil am Beinchen lagen nur um die 4.2 V.
Bin auch nur durch Zufall drauf gestoßen als ich die spg messen wollte
und plötzlich hatte ich richtige werte.. kam dadurch das ich das druck
auf das Beinchen gegeben habe und es damit richtigen Kontakt hatte..
Dämlicher Fehler mit großer Wirkung aber steckt man manchmal nicht drin.
Was dann natürlich alles erklärt falsche Referenz falsche werte wenn man
mit um die 5V rechnet.
Beinchen nach gelötet und siehe da alles löppt. freu..
Ich danke euch allen..
Ich gehe jetzt in bett
Frank W. schrieb:> Habe jetzt aber festgestellt das irgendwie das Beinchen vom ATMEGA> keinen richtigen Kontakt hatte
Ja, ganz oft ist bei solchen zähen Fehlern die Ursache nicht in den
gelieferten Informationen zu finden.
Es hat also ein brauchbares und scharfes Foto der Leiterplatte gefehlt.
vermutlich hätte man darauf die schlechte Lötstelle gesehen...
> weil am Beinchen lagen nur um die 4.2 V.
Aus diesem Grund darf man Versorgungen nie "auf der Platine"
nachkontrollieren, sondern es muss immer am Beinchen des ICs selbst
gemessen werden (oder wenigstens so nah wie möglich daran). Denn mit
dieser Fehlmessung sind natürlich auch die oben beharrlich gelieferten
Informationen "Avcc=5V" bzw. "Vcc=5V" flasch und irreführend.
Frank W. schrieb:> Habe jetzt aber festgestellt das irgendwie das Beinchen vom ATMEGA> keinen richtigen Kontakt hatte weil am Beinchen lagen nur um die 4.2 V.
Ach.
Frank W. schrieb:> Achso und noch was bitte unterlasse Unterstellungen wie> " denke ich nicht an Messung sondern die 5V nur vermutet">> Wenn ich schreibe gemessen dann meine ich das auch.> Ich muss so was nicht vermuten den dafür gibt es Messgeräte.> AVCC hat keine 4.2V ( siehe 2 Absätze vorher !!! )
Also doch nicht ganz so.
Was lehrt uns das? Nie fragen: "Hast Du das nachgemessen?"
Immer fragen: "Welchen Wert hat ...?", und beim leisesten Zweifel
nachfragen wo genau gemessen wurde und welcher Wert genau gemessen
wurde.
wendelsberg
Frank W. schrieb:> Ich habe den Fehler gefunden.> Auf der Platine hatte der AREF immer die VCC Spannung um die 5V.> Habe jetzt aber festgestellt das irgendwie das Beinchen vom ATMEGA> keinen richtigen Kontakt hatte weil am Beinchen lagen nur um die 4.2 V.
und warum hast du mich hier angemault?
Frank W. schrieb:> @ Joachim B.> VCC ist 5V ziemlich genau GEMESSEN mit mehreren Multimeter und auch mit> dem Oszilloskop.>> Achso und noch was bitte unterlasse Unterstellungen wie> " denke ich nicht an Messung sondern die 5V nur vermutet">> Wenn ich schreibe gemessen dann meine ich das auch.> Ich muss so was nicht vermuten den dafür gibt es Messgeräte.> AVCC hat keine 4.2V ( siehe 2 Absätze vorher !!! )
Q.E.D.
Frank W. schrieb:> Auf der Platine hatte der AREF immer die VCC Spannung um die 5V.
Also doch extern auf der Platine angeschlossen?!
Dann noch ADMUX auf externe Ref. umstellen oder die Verbindung auf der
Platine zu den 5 V noch beseitigen falls du mal auf interne Referenz
etc. umstellen willst oder wie hier einfach nur ADMUX falsch einstellst
(was dir aber auch schon x-mal gesagt wurde.)
Das führt dann zu dem Effekt, dass
> am Beinchen lagen nur um die 4.2 V.
Ein Spannungswert, der eigentlich nicht vorkommen sollte und vmtl. eine
Mischung aus der internen 2,56 V Referenz und den extern angelegten 5 V
ist
Michael K. schrieb:> Frank W. schrieb:> Also doch extern auf der Platine angeschlossen?!
Klar habe jedes mal geschrieben wie es beschaltet ist eine Induktivität
und einen Kondensator kann ich schlecht intern anbauen :-P
> Dann noch ADMUX auf externe Ref. umstellen oder die Verbindung auf der> Platine zu den 5 V noch beseitigen falls du mal auf interne Referenz> etc. umstellen willst oder wie hier einfach nur ADMUX falsch einstellst> (was dir aber auch schon x-mal gesagt wurde.)> Das führt dann zu dem Effekt, dass>> am Beinchen lagen nur um die 4.2 V.
Nein der ADMUX war nicht Falsch eingestellt.
Das Problem war wie schon beschrieben eine nicht korrekte Lötstelle vom
AREF Beinchen was aber nicht zu ersehen war.
So für mich ist damit das Thema abgeschlossen.
Ich danke allen nochmal.
@ Mods
Thread kann gelöscht werden.
@Frank W
> Thread kann gelöscht werden.
Threads werden hier nur gelöscht, wenn sie insgesamt unsachlich sind.
Alle anderen bleiben der Nachwelt erhalten...
WasStimmtHierNicht? schrieb im Beitrag #4224079:
> WasStimmtHierNicht?
Hallo, ihr drei Einen: in den paar wenigen Forenregeln steht recht klar,
dass man in 1 Thread nur mit 1 Namen teilnehmen darf.
https://www.mikrocontroller.net/articles/Hilfe:Forum_Nutzungsbedingungen
Dass die Aussagen sich teilweise widersprechen und stellenweise keinen
Sinn ergeben, dürfte einfach einem etwas unkoordinierten Vorgehen bei
der Fehlersuche geschuldet sein.
Natürlich können bei der Beschaltung entsprechend dem Datenblatt niemals
am Aref Pin 5V anliegen, wenn sonst an keinem Pin des Controllers (und
schon gar nicht an Avcc) 5V anliegen.
Das Threads erhalten bleiben ist auch sehr hilfreich.
Hab ihn komplett gelesen und gelernt, daß nur ein wahres Messen auch
wahre Werte bringt.
Beteuerungen wie: ist so ... , hab ich ... , so ist es verschaltet ...
Eigentlich sehr oft für die Katz, weil sie nur den Wunsch und die
Vorstellung des Bastlers wiedergeben. Die Realität ist oft anders.
Danke.
Um das nochmal klar zu stellen ich habe die angebenden Werte gemessen.
Nur ich habe am TQFP Package nicht direkt oben am Chip am Beinchen
gemessen sonder direkt dort wo es gelötet war.
Und dort lagen am AREF um die 5V(für die ganz genauen hier) an nur kam
das das nicht am Chip an wegen der nicht zu ersehenenden fehlerhaften
Lötverbindung.
Von daher ja man sollte in Zukunft direkt am Chip messen.
Frank W. schrieb:> Und dort lagen am AREF um die 5V(für die ganz genauen hier) an nur kam> das das nicht am Chip an wegen der nicht zu ersehenenden fehlerhaften> Lötverbindung.
Das wäre dann für den geposteten Code ja sogar der korrekte Aufbau:
1
If no external voltage is applied to the AREF pin, the user may switch
2
between AVCC and 2.56V as reference selection.
Und du hast ja AVCC ausgewählt:
Frank W. schrieb:>>>> ADMUX |= (1<<REFS0); // Set reference to AVcc
Wenn der AREF nicht angelötet ist, aber du die Referenz auf Avcc
stellst, dann sollte das trotzdem funktionieren. Denn das wäre dann
dieser Modus:
1
REFS1 REFS0 Voltage Reference Selection
2
0 1 AVCC with external capacitor at AREF pin
Der AVCC Pin war ja angelötet. Und ob der erwähnte Kondensator dran ist
oder nicht, macht nur ein paar Zappler auf dem MSB aus...
Mich würde der Schaltplan und der Code dazu interessieren. Denn wenn
eine Spannung am AREF angelegt wird, dann darf NUR der Aref-Pin als
Quelle ausgewählt werden. Und das wäre dieser Modus:
1
REFS1 REFS0 Voltage Reference Selection
2
0 0 AREF, Internal Vref turned off
Sie es wie es will. Das Fazit ist: wenn man die Schaltung richtig
aufbaut, dann funktioniert auch der uC. Und spätestens, wenn etwas nicht
funktioniert, sollte man das Datenblatt genauer ansehen...
Aref wird aber vom AVR "versorgt" und sollte nur mit C 100n gegen Masse
verschaltet sein. Es war also eine "schlechte" Lötstelle im Spiel, die
0,8 V generiert hat. Da wundert man sich!
Bastler schrieb:> Aref wird aber vom AVR "versorgt"
Wie war das mit dem Datenblatt?
1. Man darf AREF mit einer Referenzspannung im Bereich von 0V..Vcc
"versorgen". Nur darf man dann nicht AVCC oder die internen 2,56V als
Referenz auswählen.
2. Wäre nichts am AREF Pin angeschlossen (z.B. weil der nicht angelötet
ist), dann könnte man AVCC als Referenz auswählen, und dann käme diese
Spannung AVCC am AREF-Pin zum Vorschein.
Im 2. Fall wäre es besser, wenn ein Pufferkondensator am AREF-Pin
angeschlossen wäre. Es muss dort aber keiner engschlossen sein. Es
hätte auch so funktionieren müssen...
@Lothar:
Hallo du Einer, bitte bleib sachlich und lösch nicht einfach Beiträge
mit abstrusen Behauptungen.
Und da ich es eine berechtigte und interessante Frage finde, wie die 4.2
V jetzt Zustande gekommen sind trotz der "korrekten" Beschaltung durch
den TE stell ich diese Frage einfach nochmal.
Ansonsten wäre es nett wenn du meinen Beitrag wiederherstellst, weil ich
gegen keine Regeln verstoßen habe!
Lothar M. schrieb:>> Und dort lagen am AREF um die 5V(für die ganz genauen hier) an nur kam>> das das nicht am Chip an wegen der nicht zu ersehenenden fehlerhaften>> Lötverbindung.> Das wäre dann für den geposteten Code ja sogar der korrekte Aufbau:
eben nicht, er hat AVCC intern gewählt aber extern 5 V
angeschlossen. In dem Fall nicht schlimm, aber auch nicht korrekt, du
zitierst es ja selbst:
> If no external voltage is applied to the AREF pin
und Frank hat 5V am Pin, die aber am ATMEGA nicht ankommen, also von
extern anliegen!