ADCwert auf AVRStudio anzeigen

#2137061
Lesenswert?

Jörg Wunsch schrieb:
> ADC = 0x3EB

vielen dank

ich habe so gefragt, weil die Value von ergebnis sich in for schleife 
ändert und dachte ich die ganze zeit, dass der mittelwert des ADCwerts 
steht in WATCH==> value.
  for(i=0;i<5;i++)
  {
    ADCSRA |= (1<<ADSC);            // eine Wandlung "single conversion"
    while ( ADCSRA & (1<<ADSC) ){
  ;}   // auf Abschluss der Konvertierung warten
    ergebnis += ADCW;        // oder ergebnis+= ADCL,ADCH; ADCL,ADCH 
oder  durch ADCW ersetzen adc word Wandlungsergebnisse aufaddieren
  }
 ADCSRA &= ~(1<<ADEN);             // ADC deaktivieren (2)

  ergebnis /= 5;                     // Summe durch 5 teilen = 
arithm.Mittelwert

  return ergebnis;
}

also mit diesenm wert ADC = 0x3EB kann ich meine spannung rechnen : V= 
ADC/1024*1,1v ? und nicht mit dem wert, der im Value steht oder??
vielen dank
#2137065
Lesenswert?

Wovon redest du eigentlich?

Dieser Programmteil bestimmt den Mittelwert von 5 ADC Messungen.

(ICh geh davon aus, dass es sich dabei um eine Funktion handelt).
Die Funktion liefert diesen Wert an den aufrufenden Code und was auch 
immer dieser Code mit dem Wert machen will, kann er damit machen.

Wie dein AVR-Studio in der Simulation den aktuellen ADC Wert anzeigt, 
ist davon völlig getrennt und hat damit nichts zu tun.
#2137095
Lesenswert?

Karl Heinz Buchegger schrieb:

danke Buchegger
> Wovon redest du eigentlich?
wenn ich deine frage rechtig verstanden habe, dann rede ich spannung, 
die mein Poti liefert. ich probiere die zu digitalisieren durch ADC 
einer Tiny 24.
> Dieser Programmteil bestimmt den Mittelwert von 5 ADC Messungen.
ja rechtig.
ich möchte es verstehen, warum der wert der Spannung im View==>Watch==> 
value in der for schleife ändert.

> Wie dein AVR-Studio in der Simulation den aktuellen ADC Wert anzeigt,
> ist davon völlig getrennt und hat damit nichts zu tun.
also ist der endgültige ADCwert  im ADC DATA regester geschpeicher als 
Hex??
und dies wert kann ich ihn in meinem Berechnung einsetzen
oder das ist nur quatch??

vielen Dank
Gast #2137104
Lesenswert?

1
  uint16_t ergebnis = 0;
2
  ...
3
  for(i=0;i<5;i++) {
4
    ADCSRA |= (1<<ADSC);
5
    while ( ADCSRA & (1<<ADSC) ){ }
6
    ergebnis += ADCW; // #1
7
  }
8
  ADCSRA &= ~(1<<ADEN);
9
  ergebnis /= 5; // #2
10
  return ergebnis;
11
}

ergebnis im Watch-Fenster
ADCW im I/O View Fesnster (ADC Data Register Bytes)

Vor der Schleife
ergebnis
========
0

Schleife mit #1
(Vereinfacht mit konstantem ADCW)
i ADCW  ergebnis
================
0 0x3EB 0x03EB
1 0x3EB 0x07D6
2 0x3EB 0x0BC1
3 0x3EB 0x0FAC
4 0x3EB 0x1397

Mittelwertberechnung #2
ergebnis
========
0x1397 / 5 = 0x03EB
#2137118
Lesenswert?

wesam aymen schrieb:

> ich möchte es verstehen, warum der wert der Spannung im View==>Watch==>
> value in der for schleife ändert.

Weil 5 Messungen gemacht werden und die Ergebnisse dieser Messungen 
aufsummiert werden. Logisch, dass sich dann der Summenwert ändert.
Aber: Nach der Schleife wird ja dann wieder durch 5 dividiert.


> also ist der endgültige ADCwert  im ADC DATA regester geschpeicher als
> Hex??

Vergiss, das das Hex ist. Es ist eine Zahl. Hex ist nur eine bestimmte 
Schreibweise, wie man Zahlen schreiben kann. Genausogut hätte AVR-Studio 
diesen Wert auch dezimal hinschreiben können.

> und dies wert kann ich ihn in meinem Berechnung einsetzen
> oder das ist nur quatch??

Ich hab dich immer noch nicht.
Was willst du mit dem Wert? Händisch kontrollieren, ob sich dein µC 
verrechnet hat?
#2137139
Lesenswert?

wesam aymen schrieb:
> Karl Heinz Buchegger schrieb:
>
>> Ich hab dich immer noch nicht.
>> Was willst du mit dem Wert? Händisch kontrollieren, ob sich dein µC
>> verrechnet hat?
>
> jaaaaaaaaaaaaaaaaaaa genau du hast mich verstanden

Ah, ok!
Ja, in dem Fall nimmst du den ADC Wert. Du könntest auch den Wert im 
Watch-Fenster vom Ergebnis am Ende der Funktion nehmen. Kommt aufs 
gleiche hinaus.
#2137164
Lesenswert?

1
  for(i=0;i<5;i++)
2
  {
3
    ADCSRA |= (1<<ADSC);            // eine Wandlung "single conversion"
4
    while ( ADCSRA & (1<<ADSC) ){
5
  ;}   // auf Abschluss der Konvertierung warten
6
    ergebnis += ADCW;        // oder ergebnis+= ADCL,ADCH; ADCL,ADCH
7
oder  durch ADCW ersetzen adc word Wandlungsergebnisse aufaddieren
8
  }
bis hier her werden die Messungen addiert

1
  ADCSRA &= ~(1<<ADEN);             // ADC deaktivieren (2)
2

3
  ergebnis /= 5;                     // Summe durch 5 teilen = arithm.Mittelwert
und jetzt wurde der Mittelwert berechnet


ergebnis hat innerhalb der Funktion 2 Bedeutungen, je nachdem an welcher 
Stelle du bist, wenn du dir die Variable ansiehst
Moderator Persönliche Seite #2137202
Lesenswert?

wesam aymen schrieb:
> hallo,
> ich habe es so gemacht ich habe den Hex Wert, der in ADC Data regester
> bytes genommen und in den ADC Forml ( V=ADCwert/1024*1,1v) eingesetzt
> die Berechnete V ist klein bissschen nicht das gleiche wie der
> Eingangwert

Hast du denn vorher mal die Referenzspannung nachgemessen?  Die 1,1 V
sind doch nur der Sollwert, der tatsächliche Wert kann ein Stück
davon abweichen.  Kann man mit einem Multimeter am Pin AREF nachmessen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren