getadc() bringt manchmal falsches Ergebnis

  • 1
  • 2
  • 3
  • 4
  • Seite 4 von 4
E-labUser555
 
Avatar
 
Betreff:

Re: getadc() bringt manchmal falsches Ergebnis

 · 
Gepostet: 10.07.2010 - 19:16 Uhr  ·  #25
Ok. Ich danke aber auf jeden Fall mal für die schnelle Antwort.

Viele Grüße,

E-LabUser
E-labUser555
 
Avatar
 
Betreff:

Re: getadc() bringt manchmal falsches Ergebnis

 · 
Gepostet: 10.07.2010 - 19:46 Uhr  ·  #26
Noch ein Nachtrag:

Mit der Variablen-Deklaration
tempadc[@_ADCBUFF]: word;
tempadc1[@_ADCBUFF+2]: word;
tempadc2[@_ADCBUFF+4]: word;

konnte ich die Kanäle separieren und die drei Variablen enthalten immer den Inhalt der drei ADC-Kanäle. Im Simulator wieder alles korrekt. In real Life nicht. Ich gebe jetzt erstmal auf und versuche es mit Assembler
Gunter
Administrator
Avatar
Geschlecht:
Herkunft: Frankfurt Main / Germany
Beiträge: 1697
Dabei seit: 02 / 2003
Betreff:

Re: getadc() bringt manchmal falsches Ergebnis

 · 
Gepostet: 10.07.2010 - 19:52 Uhr  ·  #27
ich denke, rh gibt da auch noch eine Antwort.
_ADCBUFF ist jedenfalls am Ende des benutzen Ram Bereich.
Dahinter wäre noch Raum.
Auch _ADCBUFF+x ist im ASM zu finden!
Ich habe aber mit AVR-ASM zu wenig Erfahrung, um mich da
"mal eben schnell" im Listing zu orientieren.
Gunter
Administrator
Avatar
Geschlecht:
Herkunft: Frankfurt Main / Germany
Beiträge: 1697
Dabei seit: 02 / 2003
Betreff:

Re: getadc() bringt manchmal falsches Ergebnis

 · 
Gepostet: 12.07.2010 - 01:36 Uhr  ·  #28
Hi again,

ich habe jetzt mal rh gefragt.

Zitat
Mit der Variablen-Deklaration
tempadc[@_ADCBUFF]: word;
tempadc1[@_ADCBUFF+2]: word;
tempadc2[@_ADCBUFF+4]: word;
konnte ich die Kanäle separieren


rh: "das ist OK. GetADC macht nichts anderes".
Der Compiler merkt sich intern bis wohin das RAM schon belegt ist.
Deshalb muss in _ADCBUFF nur die Startadresse des Buffers gespeichert sein.

rh vermutet einen Stack/Frame Überlauf in der realen Hardware.
Zum Test einfach mal probieren und diese kräftig vergrößern!

Gruß
Gunter
Gunter
Administrator
Avatar
Geschlecht:
Herkunft: Frankfurt Main / Germany
Beiträge: 1697
Dabei seit: 02 / 2003
Betreff:

Re: getadc() bringt manchmal falsches Ergebnis

 · 
Gepostet: 12.07.2010 - 01:52 Uhr  ·  #29
p.s.:
bitte auch mal die Demo "AVR ADCsampling" anschauen!
Sollte es an der Geschwindigkeit hängen, könnte das nützlich sein.

Gunter
E-labUser555
 
Avatar
 
Betreff:

Re: getadc() bringt manchmal falsches Ergebnis

 · 
Gepostet: 12.07.2010 - 17:28 Uhr  ·  #30
Hallo,

vielen Dank auf jeden Fall mal für die Hilfe. Das mit dem Stack habe ich auch langsam im Verdacht. Da scheint vielleicht irgendwo etwas zu überlappen. Sobald ich das Problem gelöst habe, poste ich die Lösung für die Nachwelt.

Viele Grüße,
E-labUser
  • 1
  • 2
  • 3
  • 4
  • Seite 4 von 4
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 15 · Cache Hits: 14   96   110 · Page-Gen-Time: 0.029452s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI