closed

Loginbox

Please enter your username and password into the following fields to log in.


  • Username:
  • Password:
  •  
  • Auto log in on every visit.


  •  

XMEGA und READPRODUCTIONROW Probleme



rage offline
Benutzer
Avatar
Gender: n/a
Location: n/a 
Age: 60
Posts: 187
Registered: 02 / 2007
Homepage Private message
Subject: Re: XMEGA und READPRODUCTIONROW Probleme  -  Posted: 27.07.2020 - 12:53   -  
Guten Tag,
ich habe das auch nochmal mit anderen CPUs getestet. Bei einem Board mit xmega32e5 steht genauso $00 drin und bei einem Board mit einem xmega128A4U steht $0444 drin. Aber hierzu mal
https://www.mikrocontroller.net/topic/337355#3709946 lesen. Ich weiß nicht in wie weit das sachlich richtig ist, deckt sich aber mit meinen Tests.
cu Ralf

P.S. @Thomas.AC
Du hast geschrieben
Quote
Bei meinen getesteten xmega32A4 und xmega128A1U stehen Werte drin. Hab das nicht simuliert sonder mit dem debugger ausgelesen.
. Hast Du das mit dem ISP3-X ausgelesen?
This post has been edited 1-times. Last edit: 27.07.2020 - 12:55 by rage.
go down go up
pvs-deck offline
PowerUser
Avatar
Gender: male
Location: GERMANY 
Age: 49
Posts: 1128
Registered: 02 / 2009
Homepage Private message
Subject: Re: XMEGA und READPRODUCTIONROW Probleme  -  Posted: 27.07.2020 - 15:24   -  
Quote by rage

Guten Tag,
ich habe das auch nochmal mit anderen CPUs getestet. Bei einem Board mit xmega32e5 steht genauso $00 drin und bei einem Board mit einem xmega128A4U steht $0444 drin. Aber hierzu mal
https://www.mikrocontroller.net/topic/337355#3709946 lesen. Ich weiß nicht in wie weit das sachlich richtig ist, deckt sich aber mit meinen Tests.
cu Ralf

P.S. @Thomas.AC
Du hast geschrieben
Quote
Bei meinen getesteten xmega32A4 und xmega128A1U stehen Werte drin. Hab das nicht simuliert sonder mit dem debugger ausgelesen.
. Hast Du das mit dem ISP3-X ausgelesen?


Hallo Ralf,

kann man das überhaupt mit den ELAB Programmern lesen? Ich habe keine Funktion dafür gefunden!
Der MK2 ICE von Atmel kann es.

Thorsten
---------------------------------------------------------
Nichts ist unmöglich in der Elektronik und der Software, die Grenzen
setzt nur das Budget, Zeit und der Entwickler! ( P V S - D E C K )
go down go up
Thomas.AC offline
Benutzer
Avatar
Gender: n/a
Location: n/a 
Age: 39
Posts: 281
Registered: 07 / 2013
Private message
Subject: Re: XMEGA und READPRODUCTIONROW Probleme  -  Posted: 27.07.2020 - 19:53   -  
Ja, ich habe den isp3-x und auch keine Funktion gefunden, die Production row mit dem avrcoProg Tool auszulesen. Deshalb habe ich den Mikrocontroller programmiert und den avrcoDebugger benutzt, um meine variablen auszulesen. Die xmegas lassen sich über pdi debuggen, ist das nicht bekannt?

Ich glaube auch langsam, das manche xmegas da einfach 0 drin stehen haben, auch wenn der von mir heute getestete xmega128A4U $0444 oder $0333 drin hat. Hab meinen Screenshot gerade nicht zur Hand. Die Werte werden vermutlich benutzt, um den nicht linearen Verlauf der ADCs zu kompensieren. Ich glaube, dass es sich bei dem Wert um einen Koeffizient für eine quadratische Gleichung handelt und dass die Kalibrierung keine einzelne Ausreißer korrigieren kann.
Wie ich Thorstens Bild entnehmen kann, liegt der umkreiste Wert etwa 20LSB daneben. Sind die Werte gemittelt? Wie stark schwanken die Werte bei mehrmaligen messen?

20 LSB Genauigkeit bei 12 bit sind schon eine Herausforderung. 1% Abweichung entsprechen bereits 40 LSB. Welche Referenz verwendest du? Wie sieht die Messchaltung aus? In welchem Temperaturbereich soll das ganze funktionieren?

Gruß
Thomas
go down go up
pvs-deck offline
PowerUser
Avatar
Gender: male
Location: GERMANY 
Age: 49
Posts: 1128
Registered: 02 / 2009
Homepage Private message
Subject: Re: XMEGA und READPRODUCTIONROW Probleme  -  Posted: 28.07.2020 - 16:57   -  
Quote by Thomas.AC

Ja, ich habe den isp3-x und auch keine Funktion gefunden, die Production row mit dem avrcoProg Tool auszulesen. Deshalb habe ich den Mikrocontroller programmiert und den avrcoDebugger benutzt, um meine variablen auszulesen. Die xmegas lassen sich über pdi debuggen, ist das nicht bekannt?

Hallo Thomas,

doch das ist bekannt. Aber wenn ich einfach per Programmer diese Werte auslesen könnte wäre das zur Kontrolle praktisch. Und der PDI Debugger/Simulator stürzt ständig ab und dabei hängt sich der Programmer auf.


Quote by Thomas.AC

Ich glaube auch langsam, das manche xmegas da einfach 0 drin stehen haben, auch wenn der von mir heute getestete xmega128A4U $0444 oder $0333 drin hat. Hab meinen Screenshot gerade nicht zur Hand. Die Werte werden vermutlich benutzt, um den nicht linearen Verlauf der ADCs zu kompensieren. Ich glaube, dass es sich bei dem Wert um einen Koeffizient für eine quadratische Gleichung handelt und dass die Kalibrierung keine einzelne Ausreißer korrigieren kann.
Wie ich Thorstens Bild entnehmen kann, liegt der umkreiste Wert etwa 20LSB daneben. Sind die Werte gemittelt? Wie stark schwanken die Werte bei mehrmaligen messen?

Ich arbeite hier mit einem AVFilfer vom AVRCO, hierzu habe ich einen Filter von 0..15 angelegt, auch ein Test mit 31 (oder so) hat keinen Unterschied gebracht.

In Ruhe schwanken diese Werte ca. 5 Digits, aber wenn der XMEGA etwas anderes macht schwanken diese Werte auch mal stärker 12-13 Digits. Ich kann es hier noch nicht genau erklären, aber wenn Ausgänge geschaltet werden, kann man dies sofort erkennen. Ich dachte erst, das hier ab und an Fehlerhafte Werte gelesen werden, aber ich habe es zur Kontrolle mal anch jeder Messung ausgegeben. 3000 Werte ab und an steigt der Wert und fällt dann wieder.

Für ein gemittelten Wert, finde ich es zu unruhig, lese ich die Werte weniger häufig aus, wird der Wert ruhiger. XMEGA384C3 muss zur Messung auf die einzelnen Kanäle umgeschaltet werden, ich vermute hier evtl. ein Problem und werde hier mal die ersten 4-5 Messungen in den NIL legen ;-)

Quote by Thomas.AC

20 LSB Genauigkeit bei 12 bit sind schon eine Herausforderung. 1% Abweichung entsprechen bereits 40 LSB. Welche Referenz verwendest du? Wie sieht die Messchaltung aus? In welchem Temperaturbereich soll das ganze funktionieren?


Der Temp.-Bereich liegt bei -20 bis +50°C

Thorsten
You must be logged in or your permissions are to low to see this Attachment(s).
---------------------------------------------------------
Nichts ist unmöglich in der Elektronik und der Software, die Grenzen
setzt nur das Budget, Zeit und der Entwickler! ( P V S - D E C K )
go down go up
Thomas.AC offline
Benutzer
Avatar
Gender: n/a
Location: n/a 
Age: 39
Posts: 281
Registered: 07 / 2013
Private message
Subject: Re: XMEGA und READPRODUCTIONROW Probleme  -  Posted: 29.07.2020 - 18:05   -  
Quote

Für ein gemittelten Wert, finde ich es zu unruhig


Habe gerade bei mir getestet.
Ungemittelt bekomme ich 7 lsb Schwankungen bei einem xmega128A1U mit intVcc als Referenz. Gemittelt wären die Schwankungen weg.
You must be logged in or your permissions are to low to see this Attachment(s).
This post has been edited 2-times. Last edit: 29.07.2020 - 18:09 by Thomas.AC.
go down go up
Thomas.AC offline
Benutzer
Avatar
Gender: n/a
Location: n/a 
Age: 39
Posts: 281
Registered: 07 / 2013
Private message
Subject: Re: XMEGA und READPRODUCTIONROW Probleme  -  Posted: 29.07.2020 - 22:11   -  
Hallo Thorsten,
nur aus Interesse, was ist deine Referenz?

Hätte da einen Verbesserungsvorschlag für deine Schaltung, siehe Bild.

Wofür ist D2? Für Überspannungsschutz reicht ZD1 aus.

Gruß
You must be logged in or your permissions are to low to see this Attachment(s).
This post has been edited 2-times. Last edit: 29.07.2020 - 22:41 by Thomas.AC.
go down go up
pvs-deck offline
PowerUser
Avatar
Gender: male
Location: GERMANY 
Age: 49
Posts: 1128
Registered: 02 / 2009
Homepage Private message
Subject: Re: XMEGA und READPRODUCTIONROW Probleme  -  Posted: 30.07.2020 - 17:41   -  
Quote by Thomas.AC

Hallo Thorsten,
nur aus Interesse, was ist deine Referenz?

Hätte da einen Verbesserungsvorschlag für deine Schaltung, siehe Bild.

Wofür ist D2? Für Überspannungsschutz reicht ZD1 aus.

Gruß


Hallo Thomas,

die ZD1 ist zu langsam! Bei schnellen Überspannungen im EMV-Test gab es damit Probleme, dafür ist die D2 für pos./neg. Überspannungsimpulse.

Int Ref über AVCC:

Code
  ADCAREFCTRL   := $10;   // INTVCC / 1.6


Thorsten
You must be logged in or your permissions are to low to see this Attachment(s).
---------------------------------------------------------
Nichts ist unmöglich in der Elektronik und der Software, die Grenzen
setzt nur das Budget, Zeit und der Entwickler! ( P V S - D E C K )
go down go up
Thomas.AC offline
Benutzer
Avatar
Gender: n/a
Location: n/a 
Age: 39
Posts: 281
Registered: 07 / 2013
Private message
Subject: Re: XMEGA und READPRODUCTIONROW Probleme  -  Posted: 30.07.2020 - 22:45   -  
Hast du einen Schaltregler oder Linearregler für die 3.3V?
go down go up
pvs-deck offline
PowerUser
Avatar
Gender: male
Location: GERMANY 
Age: 49
Posts: 1128
Registered: 02 / 2009
Homepage Private message
Subject: Re: XMEGA und READPRODUCTIONROW Probleme  -  Posted: 30.07.2020 - 23:01   -  
Quote by Thomas.AC

Hast du einen Schaltregler oder Linearregler für die 3.3V?


Hallo Thomas,

ich nutze einen Schaltregler für 5V und habe einen LDO auf 3V3.
Aber am AVCC sind keine Schwankungen erkennbar, es sind genug Filter und Kondensatoren vorhanden. Die Spannung ist hier sauber.

Thorsten
---------------------------------------------------------
Nichts ist unmöglich in der Elektronik und der Software, die Grenzen
setzt nur das Budget, Zeit und der Entwickler! ( P V S - D E C K )
go down go up
Thomas.AC offline
Benutzer
Avatar
Gender: n/a
Location: n/a 
Age: 39
Posts: 281
Registered: 07 / 2013
Private message
Subject: Re: XMEGA und READPRODUCTIONROW Probleme  -  Posted: 31.07.2020 - 12:11   -  
Code
und habe einen LDO auf 3V3

Okay, danke für die Rückmeldung.

Was mich noch wundert ist, dass der ADC Eingang mit der geposteten Schaltung übersteuert wird.
Für den Messbereich 0R bis 36kR erhalte ich eine Aussteuerung von 1,62V bis 2,45V. Bei 32kR erhalte ich 2,4V. Die Referenzspannung ist kleiner und beträgt 2.063V.

Ansonsten hier noch ein paar Ideen und Fragen.

- Mit welchem Clock läuft die ADC, sprich wie hoch ist der peripheral clock und wie ist der prescaler für die ADC eingestellt?
- Welche sampling time ist eingestellt?
- Welcher conversion mode? single ended signed, unsigned, differential
- pullup/pull-down am Eingang deaktiviert?
- Man kann INTPUT_DISABLE Bit im PINnCTRL register setzten.
- Testweise PLL abschalten, hängt auch an AVCC
- keine Ports schalten während der Messung, wie bereits von dir angemerkt.

Kannst du dein Programm posten? Oft beantworten sich dem Leser viele Fragen, wenn man Ihnen den Programmcode mitteilt.

Mir ist auch eine Idee gekommen warum der Ausreiser bei ungefähr 7/8*FullScale entsteht.
Die sukzessive Conversion vergleicht zuerst mit ref/2, dann mit ref/4 oder 3/4ref, und dann mit 1/8, 3/8, 5/8, oder 7/8ref, und so weiter.
Angenommen der Messwert liegt etwas unterhalb 7/8ref, dann können Schwankungen beim Messwert oder bei der Referenzspannung bewirken, dass bereits beim dritten Konversationsschritt frühzeitig eine falsche Entscheidung getroffen wird und sich daraus ein statistisch höherer Mittelwert ergibt als in Wirklichkeit vorhanden ist.

Gruß
Thomas
You must be logged in or your permissions are to low to see this Attachment(s).
This post has been edited 2-times. Last edit: 31.07.2020 - 12:13 by Thomas.AC.
go down go up
pvs-deck offline
PowerUser
Avatar
Gender: male
Location: GERMANY 
Age: 49
Posts: 1128
Registered: 02 / 2009
Homepage Private message
Subject: Re: XMEGA und READPRODUCTIONROW Probleme  -  Posted: 31.07.2020 - 14:02   -  
Hallo Thomas,
Quote by Thomas.AC

Code
und habe einen LDO auf 3V3

Okay, danke für die Rückmeldung.

Was mich noch wundert ist, dass der ADC Eingang mit der geposteten Schaltung übersteuert wird.
Für den Messbereich 0R bis 36kR erhalte ich eine Aussteuerung von 1,62V bis 2,45V. Bei 32kR erhalte ich 2,4V. Die Referenzspannung ist kleiner und beträgt 2.063V.


Ursprünglich war die Schaltung für einen ATMEGA erstellt, der hat eine interne Ref-Spannung von 2,56V. Im Normalfall sind 10k an der Linie und max. 20k.

Die interne Ref.Spannung ist doch AVCC/1,6 also 3,6V / 1,6 = 2,25V oder?

Quote by Thomas.AC

Ansonsten hier noch ein paar Ideen und Fragen.

- Mit welchem Clock läuft die ADC, sprich wie hoch ist der peripheral clock und wie ist der prescaler für die ADC eingestellt?
- Welche sampling time ist eingestellt?
- Welcher conversion mode? single ended signed, unsigned, differential
- pullup/pull-down am Eingang deaktiviert?
- Man kann INTPUT_DISABLE Bit im PINnCTRL register setzten.
- Testweise PLL abschalten, hängt auch an AVCC
- keine Ports schalten während der Messung, wie bereits von dir angemerkt.

Kannst du dein Programm posten? Oft beantworten sich dem Leser viele Fragen, wenn man Ihnen den Programmcode mitteilt.


Clock Eintrag:
Code
OSCtype                = int2MHz, PLLmul = 31, prescB = 1, prescC = 1, overdrive; // 62 MHz 


Hier ist der InitCode:
Code
//  INIT ADC

  ADCACTRLB     := $00;   // Auflösung auf 12bit und rechtsbündig
  ADCAREFCTRL   := $10;   // INTVCC / 1.6
  //ADCAPRESCALER := %00000100;   // ADCAPRESCALER auf 64 zum test
  ADCAPRESCALER := %00000111;   // ADCAPRESCALER auf 512
  
  ADCACTRLA.0   := true;  // Enable ADCA
  ADCAEVCTRL    := %00000000;   // no events input

// INIT CH0
  DDRA.0:= 0;  // 0=EINGANG  1=Ausgang
  DDRA.1:= 0;  // 0=EINGANG  1=Ausgang
  DDRA.2:= 0;  // 0=EINGANG  1=Ausgang
  DDRA.3:= 0;  // 0=EINGANG  1=Ausgang

// InitADCCH0
  ADCACH0CTRL    := $01; // singleended
  ADCACH0MUXCTRL := $0; // MUX CTRL MAXPOS ADC0
  ADCACH0CTRL    := ADCACH0CTRL OR $01; // singleended
  ADCACH0INTCTRL := %00000000;
  ADCACH0CTRL.7  := true;    // Starte neue Messung


Die weiteren Messungen und Auswertungen laufen dann in Zyklus, beim XMEGA384C3 hat man nur einen ADC Wandler, dieser muss nach jeder Messung eines ADC Eingangs erst auf den nächsten PIN umgeschaltet werden. Das ganze läuft bei mir im Zyklus, ich starte die Messung, der Zyklus läuft weiter und bei jedem Zyklus wird überprüft ob die Messung fertig ist, wenn ja wird der Wert verarbeitet und der nächste PIN eingestellt und die Messung gestartet.

Code
// READADC
if adPort >=4 then adPort:=0;endif; // ADC Zähler auf 0 stellen


//Messung abgeschlossen?
if ADCACH0INTFLAG.0 then
    ADCACH0INTFLAG.0:=false;  // Flag reset

    // PORTPIN ADC0
     if    adPort = 0  then
       LO(wADCBuffer):= ADCACH0RESL;    // Ziehe Werte
        HI(wADCBuffer):= ADCACH0RESH;
         AddAVfilter(ADC0Filter,integer(wADCBuffer) );
         
            ADCACTRLA.1   := true;  // flush
             inc(adPort);
              ADCACH0MUXCTRL := %00001000; // MUX CTRL MAXPOS ADC1 nächster Port
               wADC0:= GetAVfilter(ADC0Filter);
  
    // PORTPIN ADC1
     elsif adPort = 1  then
       LO(wADCBuffer):= ADCACH0RESL;    // Ziehe Werte
        HI(wADCBuffer):= ADCACH0RESH;
         AddAVfilter(ADC1Filter,integer(wADCBuffer) );
            ADCACTRLA.1   := true;  // flush
             inc(adPort);
              ADCACH0MUXCTRL := %00010000; // MUX CTRL MAXPOS ADC2 nächster Port
                wADC1:= GetAVfilter(ADC1Filter);
  
    // PORTPIN ADC2
     elsif adPort = 2  then
         LO(wADCBuffer):= ADCACH0RESL;    // Ziehe Werte
        HI(wADCBuffer):= ADCACH0RESH;
         AddAVfilter(ADC2Filter,integer(wADCBuffer) );
        inc(xForADC);
            ADCACTRLA.1   := true;  // flush
             inc(adPort);
              ADCACH0MUXCTRL := %00011000; // MUX CTRL MAXPOS ADC3 nächster Port
                wADC2:= GetAVfilter(ADC2Filter);

    // PORTPIN ADC3
     elsif adPort >= 3  then
       LO(wADCBuffer):= ADCACH0RESL;    // Ziehe Werte
        HI(wADCBuffer):= ADCACH0RESH;
         AddAVfilter(ADC3Filter,integer(wADCBuffer) );
            ADCACTRLA.1   := true;  // flush
             inc(adPort);
              ADCACH0MUXCTRL := %00000000; // MUX CTRL MAXPOS ADC0 nächster Port
                wADC3:= GetAVfilter(ADC3Filter);

     endif;
          ADCACH0CTRL.7  := true;    // Starte neue Messung
endif;  // Endif Flag ADC Messung fertig


Quote by Thomas.AC

Mir ist auch eine Idee gekommen warum der Ausreiser bei ungefähr 7/8*FullScale entsteht.
Die sukzessive Conversion vergleicht zuerst mit ref/2, dann mit ref/4 oder 3/4ref, und dann mit 1/8, 3/8, 5/8, oder 7/8ref, und so weiter.
Angenommen der Messwert liegt etwas unterhalb 7/8ref, dann können Schwankungen beim Messwert oder bei der Referenzspannung bewirken, dass bereits beim dritten Konversationsschritt frühzeitig eine falsche Entscheidung getroffen wird und sich daraus ein statistisch höherer Mittelwert ergibt als in Wirklichkeit vorhanden ist.

Gruß
Thomas


Thorsten
---------------------------------------------------------
Nichts ist unmöglich in der Elektronik und der Software, die Grenzen
setzt nur das Budget, Zeit und der Entwickler! ( P V S - D E C K )
This post has been edited 1-times. Last edit: 31.07.2020 - 14:03 by pvs-deck.
go down go up
Thomas.AC offline
Benutzer
Avatar
Gender: n/a
Location: n/a 
Age: 39
Posts: 281
Registered: 07 / 2013
Private message
Subject: Re: XMEGA und READPRODUCTIONROW Probleme  -  Posted: 31.07.2020 - 14:48   -  
DAs ist eine Schnellantwort von mir,
ich schaue mir das noch einmal in Ruhe an.

Quote

Die interne Ref.Spannung ist doch AVCC/1,6 also 3,6V / 1,6 = 2,25V oder?

Ich dachte der LDO macht 3,3V

Code

ADCACH0INTFLAG.0:=false;  // Flag reset

Das ist falsch. Zum Löschen muss man true setzten.

Tipp:
Ins SAMPCTRL Register höhere Werte reinschreiben und testweise kein overclocking betreiben.

Gruß
go down go up
pvs-deck offline
PowerUser
Avatar
Gender: male
Location: GERMANY 
Age: 49
Posts: 1128
Registered: 02 / 2009
Homepage Private message
Subject: Re: XMEGA und READPRODUCTIONROW Probleme  -  Posted: 04.09.2020 - 10:02   -  
Quote by Thomas.AC

DAs ist eine Schnellantwort von mir,
ich schaue mir das noch einmal in Ruhe an.

Quote

Die interne Ref.Spannung ist doch AVCC/1,6 also 3,6V / 1,6 = 2,25V oder?

Ich dachte der LDO macht 3,3V

Code

ADCACH0INTFLAG.0:=false;  // Flag reset

Das ist falsch. Zum Löschen muss man true setzten.

Tipp:
Ins SAMPCTRL Register höhere Werte reinschreiben und testweise kein overclocking betreiben.

Gruß


Hallo Thomas,

sorry für die späte Antwort. Da die XMEGA384C3, scheinbar keine Kalibrierung hat, werde ich das Ganze anderst lösen, ich mache eine Kalibrierung mit sehr guten Widerständen nach der Bestückung, beim ersten einschalten der Steuerung. Ich glaube dies ist erstmal der bessere Weg.
Aber schon mal vielen Dank für Deine Denk- und Lösungsansätzte.

Thorsten
---------------------------------------------------------
Nichts ist unmöglich in der Elektronik und der Software, die Grenzen
setzt nur das Budget, Zeit und der Entwickler! ( P V S - D E C K )
go down go up
Thomas.AC offline
Benutzer
Avatar
Gender: n/a
Location: n/a 
Age: 39
Posts: 281
Registered: 07 / 2013
Private message
Subject: Re: XMEGA und READPRODUCTIONROW Probleme  -  Posted: 17.09.2020 - 18:13   -  
Danke. Mache ich nur zur Beruhigung. Sorry auch für meine späte Rückmeldung, aber ich muss es gesagt haben.

Code

Da die XMEGA384C3, scheinbar keine Kalibrierung hat


Der IC Hersteller muss nur die Spezifikationen aus dem Datenblatt einhalten.
Dies kann auch mit CAL-Werten von 0 möglich sein.

Bei hoher Genauigkeit ist vielleicht eine externe Referenzspannung empfehlenswert.


Code
ich mache eine Kalibrierung mit sehr guten Widerständen nach der Bestückung

Kurzschuss wäre ein super genauer Widerstand.

Gruß
go down go up
 


Registered users in this topic
Currently no registered users in this section

Delete cookies of this forum  •  FAQ / Help  •  Team page  •  Imprint   |  Local time: 26.09.2020 - 19:57