Hallo, zur Erklärung: Ich nutze einen atxmega16d4 und messe einen Eingang, ich habe 30 Geräte. die Messkurve entspricht bei etwa der hälfte einer Geraden. Aber bei der anderen kommen Ausschläge zu stande. Die Ausprägungen sind sehr unterschiedlich. Ich vermute es liegt an der Kalibration, die scheint nicht zu funktionieren. in der Headerdatei habe ich bisher nur den ADC ergänzt (bug). Gibt es auch zum Thema Kalibration beim atx16d4 einen bug ? Mit dem avrisp mkII kann ich die Kalibrationsbytes auslesen, leider stehen diese immer bei 0x0444, darum nehme ich an, dass diese nicht übernommen werden, Zum COde: ADCA.CALL=read_calibration_byte(PROD_SIGNATURES_START+ADCACAL0_offset); ADCA.CALH=read_calibration_byte(PROD_SIGNATURES_START+ADCACAL1_offset); .... uint8_t read_calibration_byte( uint8_t index ) { uint8_t result; /* Load the NVM Command register to read the calibration row. */ NVM_CMD = NVM_CMD_READ_CALIB_ROW_gc; result = pgm_read_byte(index); /* Clean up NVM Command register. */ NVM_CMD = NVM_CMD_NO_OPERATION_gc; return( result ); } Leider bringt auch der direkte Eintrag nicht viel: Keine Verbesserung oder Verschlechterung, auch das auslesen mit avrstudio4 + mkII bringt immernoch 0x0444 Kurz vor dem aktivieren des adc´s nutze ich die calibration. Kann mir jemand hierbei helfen, vielleicht korrekte io Headerdatei zum atxmega1d4 ? danke.
Hallo, gutzia schrieb: > Kann mir jemand hierbei helfen dein Code zur Kalibrierung ist soweit in Ordnung. #define ADCACAL0_offset 0x20 // zum Auslesen ADC Offset aus Flash #define ADCACAL1_offset 0x21 // dsgl Du liest aus dem Flash 0x0444 und schreibst es automatisch in die Register ADCA.CALL/ADCA.CALH. Hier wird es verarbeitet. Im Flash bleibt der Wert 0x0444 immer gleich!! Jetzt eine Frage zur Messung: ADC -> Diff- oder Unsigned-Mode (gegen GND)? Nur im Unsigned-Mode kommt der Offset zum Tragen! Näheres zur Ungenauigkeit und Kalibrierung des ADC hier: http://bascom-forum.de/showthread.php?2198-ATXMEGA-kleines-einmaleins-Erste-Schritte-mit-ATxmega/page3 Gruß XMEGA
Hallo Xmega und danke für die Antwort. Ich nutze Unsigned-Mode. Der Offfset ist klar, mich wunderts halt nur wenn ich mit der Spannung am ADC eingang hochfahre, dass dann dort ein Sprung oder sogar mehrere drinnen ist. Im Code nehme ich keinen Fehler an, da je nach Gerät unterschiedliche Ausprägungen der Sprünge vorkommen. Ich nutze auch drei Eingänge und bei allen passiert das gleiche, obwohl andere shunts genutzt werden. Daher ging ich davon aus, dass es mit dem ADC zusammenhängt, da bei allen Eingängen der selbe genutzt wird. Kalibration ist da meine letzte Hoffnung. Mich wunderts eben das ich im avrstudio immer nur 0x0444 auslesen kann. Was ist das für eine Kalibration wenn immer der selbe WErt da steht, dann kann ichs ja gleich lassen. In dem Link, den du mir genannt hast, ist die rede davon, dass das reinschreiben in seiner Version noch nicht möglich ist, zu der D-Reihe konnte ich nichts finden. Hat jemand noch eine Idee oder den D4 mit gleichem Problem ?
Hallo gutzia, gutzia schrieb: > Kalibration ist da meine letzte Hoffnung an der Kalibrierung kann es nicht liegen, die Änderungen liegen im 1..2 mV Bereich. Wenn du die Kalibrationsdaten mit dem AVRISP mk2 auslesen kannst, kann auch dein Xmega die Funktion ausführen! Was das Ganze aber soll, habe ich an meinen neueren Xmegas auch noch nicht zwingend erforschen können. Änderungen im Messergebnis waren nicht erkennbar. Kann bei allen Atxmegas.. 0x0444 auslesen. Was das am Ergebnis ändern soll habe ich bereits erwähnt. Das "Zappeln" der Werte kann natürlich auch an Hardware und Software liegen! Eine Qualitäts-Referenzspannung am externen Eingang(AREF) bewirkt Wunder. Ich habe auch 20 bis 30 Versuche unternommen, um diese Schwankungen zu erforschen. Bin von komplexen Projekten wieder auf kleinste Versuche mit dem ADC zurückgefallen. Mit dem Erfolg, dass ich jetzt in der Lage bin, mit sauberer Leiterbahnführung, Abblock-Kondensatoren, guten Referenzquellen ein einigermaßen zufriedenes Ergebnis zuhaben.Fast vergessen: Auch der Wert des Taktes (ADC_PRESCALER_DIV128_gc) sollte nicht zu nieder sein. Das "Zappeln" beginnt bei mir erst ab der 4. bis 5. Kommastelle. Einen Demo-Code liegt zum studieren bei. Viel Spß beim basteln Gruß Xmega
Hallo, habe noch einen Vermerk über die Kalibration gefunden: early revisions (xmega board) were not calibrated, thus 0xff later revisions have a "best guess" middle value (=0x444), this is the middle calibration value for each of the first three adc stages. 0x444 will already improve adc performance further test improvement with indiviuall chip calibration will then improve again 1-2LSBs Gruß Xmega
Wir konnten jetzt eine Fehlereingrenzung machen und die Aussage treffen, dass diese Stufen nur bei der internen 1 V zu stande kommt. Mit der VCC/1,6 funktioniert alles einwandfrei.
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.