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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.