{"id":19,"date":"2008-09-15T18:04:53","date_gmt":"2008-09-15T16:04:53","guid":{"rendered":"http:\/\/oktay.com\/wp\/wordpress\/?p=19"},"modified":"2008-09-15T18:04:53","modified_gmt":"2008-09-15T16:04:53","slug":"avr-adc-einfach-auslesen","status":"publish","type":"post","link":"https:\/\/wp.oktay.com\/?p=19","title":{"rendered":"AVR: ADC einfach auslesen"},"content":{"rendered":"<p>\u00a0<\/p>\n<p>\/\/ ADC STUFF<br \/>\nuint16_t ReadChannel(uint8_t mux)<br \/>\n{<br \/>\n\u00a0 uint8_t i;<br \/>\n\u00a0 uint16_t result;<br \/>\n\u00a0<br \/>\n\u00a0 ADMUX = mux;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Kanal waehlen<br \/>\n\u00a0 ADMUX |= (0&lt;&lt;REFS1) | (1&lt;&lt;REFS0); \/\/ interne Referenzspannung nutzen<br \/>\n\u00a0<br \/>\n\u00a0 ADCSRA = (1&lt;&lt;ADEN) | (1&lt;&lt;ADPS1)| (1&lt;&lt;ADPS2) | (0&lt;&lt;ADPS0);\u00a0\u00a0\u00a0 \/\/ Frequenzvorteiler<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ setzen auf 8 (1) und ADC aktivieren (1)<br \/>\n\u00a0<br \/>\n\u00a0 \/* nach Aktivieren des ADC wird ein &#8220;Dummy-Readout&#8221; empfohlen, man liest<br \/>\n\u00a0\u00a0\u00a0\u00a0 also einen Wert und verwirft diesen, um den ADC &#8220;warmlaufen zu lassen&#8221; *\/<br \/>\n\u00a0 ADCSRA |= (1&lt;&lt;ADSC);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ eine ADC-Wandlung<br \/>\n\u00a0 while ( ADCSRA &amp; (1&lt;&lt;ADSC) ) {<br \/>\n\u00a0\u00a0\u00a0\u00a0 ;\u00a0\u00a0\u00a0\u00a0 \/\/ auf Abschluss der Konvertierung warten<br \/>\n\u00a0 }<br \/>\n\u00a0 result = ADCW;\u00a0 \/\/ ADCW muss einmal gelesen werden,<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ sonst wird Ergebnis der n\u00e4chsten Wandlung<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ nicht \u00fcbernommen.<br \/>\n\u00a0<br \/>\n\u00a0 \/* Eigentliche Messung &#8211; Mittelwert aus 4 aufeinanderfolgenden Wandlungen *\/<br \/>\n\u00a0 result = 0;<br \/>\n\u00a0<\/p>\n<p>\u00a0 for( i=4; i&gt;=1; i&#8211; )<br \/>\n\u00a0 {<br \/>\n\u00a0\u00a0\u00a0 ADCSRA |= (1&lt;&lt;ADSC);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ eine Wandlung &#8220;single conversion&#8221;<br \/>\n\u00a0\u00a0\u00a0 while ( ADCSRA &amp; (1&lt;&lt;ADSC) ) {<br \/>\n\u00a0\u00a0\u00a0\u00a0\u00a0 ;\u00a0\u00a0 \/\/ auf Abschluss der Konvertierung warten<br \/>\n\u00a0\u00a0\u00a0 }<br \/>\n\u00a0\u00a0\u00a0 result += ADCW;\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Wandlungsergebnisse aufaddieren<br \/>\n\u00a0\/\/if (ADCW &lt;= 350){lo++;lo1+=ADCW;}else{hi++;hi1+=ADCW;}<\/p>\n<p>\u00a0 }<br \/>\n\u00a0 ADCSRA &amp;= ~(1&lt;&lt;ADEN);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ ADC deaktivieren (2)<br \/>\n\u00a0<\/p>\n<p>\/\/\u00a0if (lo&gt;=hi){lo1\/=lo; result=hi1;} else {hi1\/=hi;result=hi1;}<\/p>\n<p>\u00a0 result \/= 4;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Summe durch vier teilen = arithm. Mittelwert<br \/>\n\u00a0<br \/>\n\u00a0<br \/>\n\/\/\u00a0mux==5?uart_puts(&#8220;5: &#8220;):uart_puts(&#8220;7: &#8220;);<br \/>\n\u00a0\/\/ Ausgabe an UART<br \/>\n\u00a0\u00a0 \/\/ if (debug==1)<br \/>\n\u00a0\u00a0<br \/>\n\u00a0<br \/>\n\u00a0 \/* uart_puts(itoa((1024-result),h,10));<\/p>\n<p>\u00a0<br \/>\n\u00a0\u00a0 uart_puts(&#8220;\\n\\r&#8221;);<br \/>\n\u00a0<br \/>\n*\/<\/p>\n<p>\u00a0<\/p>\n<p>\u00a0<br \/>\n\u00a0\u00a0\u00a0\u00a0<br \/>\n\u00a0 return result;<br \/>\n}<br \/>\n\u00a0<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00a0 \/\/ ADC STUFF uint16_t ReadChannel(uint8_t mux) { \u00a0 uint8_t i; \u00a0 uint16_t result; \u00a0 \u00a0 ADMUX = mux;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Kanal waehlen \u00a0 ADMUX |= (0&lt;&lt;REFS1) | (1&lt;&lt;REFS0); \/\/ interne Referenzspannung nutzen \u00a0 \u00a0 ADCSRA = (1&lt;&lt;ADEN) | (1&lt;&lt;ADPS1)| (1&lt;&lt;ADPS2) | (0&lt;&lt;ADPS0);\u00a0\u00a0\u00a0 \/\/ Frequenzvorteiler \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ setzen auf 8 (1) und ADC aktivieren (1) \u00a0&hellip; <a class=\"more-link\" href=\"https:\/\/wp.oktay.com\/?p=19\">Continue reading <span class=\"screen-reader-text\">AVR: ADC einfach auslesen<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-19","post","type-post","status-publish","format-standard","hentry","category-avr","entry"],"_links":{"self":[{"href":"https:\/\/wp.oktay.com\/index.php?rest_route=\/wp\/v2\/posts\/19","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wp.oktay.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wp.oktay.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wp.oktay.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wp.oktay.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=19"}],"version-history":[{"count":0,"href":"https:\/\/wp.oktay.com\/index.php?rest_route=\/wp\/v2\/posts\/19\/revisions"}],"wp:attachment":[{"href":"https:\/\/wp.oktay.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=19"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wp.oktay.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=19"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wp.oktay.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=19"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}