XMEGA Calibration Byte.wofür?

Gast #4126291
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 ;-)
Gast #4126797
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?
Gast #4126807
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
#4128002
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) );
#4129145
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 ;)
Gast #4129172
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.