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
Ich glaube das war wegen der internen Takterzeugung damit die UART passt...
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 ;-)
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
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?
ach egal, hier gibts eh keine brauchbare Antwort :-( Die Welt gehört wirklich bald google bei solchen Usern :-(
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 :-)
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
achja..eine eien Antwort zum Thema hast Du natürlich nicht beigetragen..wozu das ganze...bist ein Hecht
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) ); |
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?
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.
@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
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.