Guten Morgen Experten, kann jemand mir bitte schreiben, wo der ADCwert auf AVRstudio angezeigt wird. ich glaube es unter View ==>Watch Value. ist das rechtig?? vielen Dank
:
Verschoben durch Moderator
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
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.
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
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
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?
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
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
Karl Heinz Buchegger schrieb: > wesam aymen schrieb: > 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. ich habe es in dezimal gewandert :-)
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.
beim wtch ergebnis steht nur die aufeinander addiereten 5 Messungen aber der mittelwert finde ich nicht bei watch. hat es ein sinn, dass ich berechnete spannung mit dem analogeingang(von 0v bis 5) zu vergleichen)??
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
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.
ich habe den Mittelwert gerechnet und das hat gestimmt. es wurde keinen Mitelwert dargestellt, da der gelbe Pfeil(show next statement) springt nicht auf ergibnis/=5 warum ?? ich habe keine Ahnung, deswegen habe ich den mittel wert mit tachenrechner gemacht.
wesam aymen schrieb: > da der gelbe Pfeil(show next > statement) springt nicht auf ergibnis/=5 warum ? Weil die Optimierung des Compilers den Code nicht immer 1:1 in der Form generiert, wie du ihn aufgeschrieben hast. Solange er dabei überhaupt den Mittelwert ausrechnet, ist es dem Compiler überlassen, mit welchen Schritten er dies tut.
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.