<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://www.marcelpost.com/wiki/index.php?action=history&amp;feed=atom&amp;title=ATtiny84_ADC</id>
	<title>ATtiny84 ADC - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.marcelpost.com/wiki/index.php?action=history&amp;feed=atom&amp;title=ATtiny84_ADC"/>
	<link rel="alternate" type="text/html" href="https://www.marcelpost.com/wiki/index.php?title=ATtiny84_ADC&amp;action=history"/>
	<updated>2026-05-17T03:59:14Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://www.marcelpost.com/wiki/index.php?title=ATtiny84_ADC&amp;diff=2138&amp;oldid=prev</id>
		<title>Admin at 02:54, 1 February 2016</title>
		<link rel="alternate" type="text/html" href="https://www.marcelpost.com/wiki/index.php?title=ATtiny84_ADC&amp;diff=2138&amp;oldid=prev"/>
		<updated>2016-02-01T02:54:35Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Here&amp;#039;s a snippet of code to use the ADC from an ATtiny84 microcontroller. In this example, the code was written for a t84 (Atmel AVR ATtiny84), but with minimal adjustments this code should work on microcontrollers from the same family (such as the ATtiny25, ATtiny45, ATtiny24, ATtiny44 and ATiny85) as well.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void initADC()&lt;br /&gt;
{&lt;br /&gt;
  /* this function initialises the ADC &lt;br /&gt;
&lt;br /&gt;
        ADC Notes&lt;br /&gt;
	&lt;br /&gt;
	Prescaler&lt;br /&gt;
	&lt;br /&gt;
	ADC Prescaler needs to be set so that the ADC input frequency is between 50 - 200kHz.&lt;br /&gt;
	&lt;br /&gt;
	Example prescaler values for various frequencies&lt;br /&gt;
	&lt;br /&gt;
	Clock   Available prescaler values&lt;br /&gt;
   ---------------------------------------&lt;br /&gt;
	 1 MHz   8 (125kHz), 16 (62.5kHz)&lt;br /&gt;
	 4 MHz   32 (125kHz), 64 (62.5kHz)&lt;br /&gt;
	 8 MHz   64 (125kHz), 128 (62.5kHz)&lt;br /&gt;
	16 MHz   128 (125kHz)&lt;br /&gt;
&lt;br /&gt;
   below example set prescaler to 16 for mcu running at 1MHz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  */&lt;br /&gt;
&lt;br /&gt;
   ADMUX =&lt;br /&gt;
            (0 &amp;lt;&amp;lt; REFS1) |     // Sets ref. voltage to Vcc, bit 1   &lt;br /&gt;
            (0 &amp;lt;&amp;lt; REFS0) |     // Sets ref. voltage to Vcc, bit 0&lt;br /&gt;
            (0 &amp;lt;&amp;lt; MUX5)  |     // use ADC1 for input (PA1), MUX bit 5&lt;br /&gt;
            (0 &amp;lt;&amp;lt; MUX4)  |     // use ADC1 for input (PA1), MUX bit 4&lt;br /&gt;
            (0 &amp;lt;&amp;lt; MUX3)  |     // use ADC1 for input (PA1), MUX bit 3&lt;br /&gt;
            (0 &amp;lt;&amp;lt; MUX2)  |     // use ADC1 for input (PA1), MUX bit 2&lt;br /&gt;
            (0 &amp;lt;&amp;lt; MUX1)  |     // use ADC1 for input (PA1), MUX bit 1&lt;br /&gt;
            (1 &amp;lt;&amp;lt; MUX0);       // use ADC1 for input (PA1), MUX bit 0&lt;br /&gt;
&lt;br /&gt;
  ADCSRA = &lt;br /&gt;
            (1 &amp;lt;&amp;lt; ADEN)  |     // Enable ADC &lt;br /&gt;
            (1 &amp;lt;&amp;lt; ADPS2) |     // set prescaler to 16, bit 2 &lt;br /&gt;
            (0 &amp;lt;&amp;lt; ADPS1) |     // set prescaler to 16, bit 1 &lt;br /&gt;
            (0 &amp;lt;&amp;lt; ADPS0);      // set prescaler to 16, bit 0 &lt;br /&gt;
			&lt;br /&gt;
  ADCSRB = &lt;br /&gt;
            (1 &amp;lt;&amp;lt; ADLAR);      // left shift result (for 8-bit values)&lt;br /&gt;
	//        (0 &amp;lt;&amp;lt; ADLAR);      // right shift result (for 10-bit values)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main( void ) &lt;br /&gt;
{&lt;br /&gt;
  &lt;br /&gt;
  initADC();&lt;br /&gt;
&lt;br /&gt;
  while(1)&lt;br /&gt;
  {&lt;br /&gt;
&lt;br /&gt;
    ADCSRA |= (1 &amp;lt;&amp;lt; ADSC);         // start ADC measurement&lt;br /&gt;
    while (ADCSRA &amp;amp; (1 &amp;lt;&amp;lt; ADSC) ); // wait till conversion complete &lt;br /&gt;
&lt;br /&gt;
    if (ADCH &amp;gt; 128)&lt;br /&gt;
    {&lt;br /&gt;
      // ADC input voltage is more than half of VCC&lt;br /&gt;
&lt;br /&gt;
    } else {&lt;br /&gt;
&lt;br /&gt;
      // ADC input voltage is less than half of VCC&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
* [[ATtiny84_PWM]]&lt;br /&gt;
* [[ATtiny85_ADC]]&lt;br /&gt;
* [[C and C++]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>