Forum: Mikrocontroller und Digitale Elektronik XMEGA Calibration Byte.wofür?


von gerald (Gast)


Lesenswert?

Es gibt ja beim Xmega das Calibraion Byte...doch was genau macht es?
Sorgt es für die Linearität? Oder dem Offset? Oder was?

: Gesperrt durch Admin
von Thomas (Gast)


Lesenswert?

Ich glaube das war wegen der internen Takterzeugung damit die UART 
passt...

von Max M. (jens2001)


Lesenswert?


von gerald (Gast)


Lesenswert?

Ne, ich dachte für den ADC gibt es ein eigenes Calibration Byte, das nur 
für den ADC ist

schon klar, wenn alle google benutzen würden, das Interent ziemlich fürn 
Arsch wär?! Dann gäbe es einen eintrag und egal wie schlecht der auch 
wäre..der wäre die ref. weil neu fragen ja nicht erlaubt ist, nach 
Meinung einiger weniger in diesem Forum ;-)

von Timmo H. (masterfx)


Lesenswert?

gerald schrieb:
> Ne, ich dachte für den ADC gibt es ein eigenes Calibration Byte, das nur
> für den ADC ist

Gibt es auch: ADCACAL0/1
Wird ausgelesen und dann in ADCA.CALL/H eingetragen

: Bearbeitet durch User
von gerald (Gast)


Lesenswert?

genau das meine ich :-)
Und dessen Funktion?

von gerald (Gast)


Lesenswert?

so, mittlerweile hab ichs seleb gefnden...traurig..
Es ist ein linearitäts Byte :-)
Bleibt noch die Frage..wozu??!?
Warum ist es nicht standardmäßig geladen? Wann benötigten man einen 
nicht linearen ADC?

von gerald (Gast)


Lesenswert?

ach egal, hier gibts eh keine brauchbare Antwort :-( Die Welt gehört 
wirklich bald google bei solchen Usern :-(

von Dussel (Gast)


Lesenswert?

gerald schrieb:
> so, mittlerweile hab ichs seleb gefnden...traurig..
Stimmt. Richtig traurig, dass du selber was geschafft hast :-(
Wie schön wäre es doch, wenn du nichts könntest :-)

von gerald (Gast)


Lesenswert?

na dann brauchen wir ja die Foren nicht mehr, kann man ja schliesslich 
auch alles irgendwo nachlesen lol
Deine Fragen hier, sind sicher auch noch in keinem Buch erklärt 
worden...oder du warst einfach zu dämlich zu suchen?
Na wie gut das Du so viel besser bist als alle anderen hehe

von gerald (Gast)


Lesenswert?

achja..eine eien Antwort zum Thema hast Du natürlich nicht 
beigetragen..wozu das ganze...bist ein Hecht

von Timmo H. (masterfx)


Lesenswert?

Da scheint jemand etwas frustriert zu sein, dabei sagen die AppNotes 
doch alles:
1
The calibration value is not loaded automatically, and should always be
2
loaded from the production signature row (ADCxCAL0/1) and written to the 
3
corresponding ADC calibration registers (CALL/CALH) before enabling the ADC.
Immerhin ist Atmel so nett es schon zu messen und man muss es nicht 
selbst erledigen, die zwei Zeilen Code sind ja nicht die Tat:
1
  //Read factory calibration bytes
2
  ADCA.CALL = ReadCalibrationByte( offsetof(NVM_PROD_SIGNATURES_t, ADCACAL0) );
3
  ADCA.CALH = ReadCalibrationByte( offsetof(NVM_PROD_SIGNATURES_t, ADCACAL1) );

von Karl (Gast)


Lesenswert?

ja, danke, aaaaber...es bleibt ja immer noch die Frage..wieso?
Wieso muss man es überhaupt laden? Warum ist es nicht immer geladen?
Wann hätte denn jemand Interesse an einem nicht linearen ADC?

von Timmo H. (masterfx)


Lesenswert?

Vielleicht um den Anwender die Möglichkeit zu geben die 
Temperaturabhängigkeit des ADC selbst auch noch kompensieren zu können?!

Übrigens steht bei mir in ADCACAL0 und ADCACAL1 eh immer "0x00". 
Möglicherweise hatten die ersten Revisionen damit eher Probleme.

von Christian (dragony)


Lesenswert?

@Karl:

Der Grund ist, dass die ganzen Kalibrierungen (von denen es beim xmega 
eine ganze Menge gibt) in einem festen NVM Addressbereich liegen, der 
nicht dem Flash zugehörig ist. In ASM muss man vorher abenteuerliche 
Umbiegungen machen, damit man da erstmal drauf zugreifen kann. Bekommen 
die ganzen c User natürlich nicht mit ^^

Jetzt will der xmega jedoch den Wert im Ram haben, da liegt er aber 
nicht. Also musst du ihn da rein legen. Damit Atmel das für dich tun 
könnte, müssten die selbst Assemblercode in den Flash legen, der das 
dann macht. Hätte man technisch gesehen auch machen können, den PC (und 
das ist jetzt kein Personal Computer) offsetten und dann halt ein paar 
Bytes weniger für den restlichen Programmcode freigeben. Vielleicht 
hätten die dann jedoch zu sehr in den AVR Kern eingreifen müssen, 
weshalb die sich gesagt haben, dass der User, der freiwillig mit xmega 
arbeitet, sowas im Schlaf macht ;)

Die Kalibrierungsbytes sind übrigens nicht immer dolle. Habe ich grade 
selber erst beim USB Modul feststellen dürfen.

Ach und das Einladen einfach mal weglassen ist eine GANZ blöde Idee. Da 
die Werte aus dem SRAM geladen werden, stehen da am Anfang 
"Zufallswerte" drin. Du hast dann bei jedem Reset je nach 
"Starttemperatur" ein anderes Byte da drin stehen. Kann natürlich auch 
lustig sein ;)

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

gerald schrieb:
> Die Welt gehört wirklich bald google bei solchen Usern :-(

ACK

Max Mustermann schrieb:
> Google kaput?
>
> 
http://www.google.de/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=0CCwQFjAB&url=http%3A%2F%2Fwww.atmel.com%2FImages%2Fdoc8277.pdf&ei=HCdSVcayNIeNsAGG64D4CQ&usg=AFQjCNH3q09Y0W0LAOlUO_QTVD2Et5SSrw&bvm=bv.92885102,d.bGg

... insbesondere, wenn die User zu blöd sind, ein Suchergebnis so zu 
verlinken, dass die Datenkrake nicht bei jedem Aufruf des Ergebnisses 
eine Nachricht bekommt.

http://www.atmel.com/Images/doc8277.pdf
als Link auf die Atmel AppNote "AVR1606: XMEGA Internal RC Oscillator 
Calibration" täte es mindestens genauso gut.

Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.