ADC কনভার্টারের জন্যে আমদের বেশ কয়েতা কাজ করতে হবে।

 

১। রেফারেন্স ভোল্টেজ সিলেকশন।

২। প্রি স্কেলার সিলেকশন

৩। ADC এনাবল করতে হবে।

৪। চ্যানেল সিলেক্ট করতে হবে।

৫। ADC কনভার্সন শুরু করতে হবে।

৬। কনভার্শন রেজাল্ট ADCW রেজিস্টারে রাখতে হবে।

 

তারপর মেইন ফাংশনে নিচের মত করে কোড   লিখতে হবে।

ডিজিটাল ক্লক সম্পর্কে জানতে এখানে দেখুন 

#define F_CPU 8000000UL

#include <avr/io.h>

#include <util/delay.h>

#include “adc.h”

 

#include <avr/io.h>

 

 

 

void adc_init(void);

//uint16_t adc_read(uint8_t ch);

 

 

void adc_init(void)

{

ADMUX |= (1<<REFS0);                         // For Aref=AVcc;

ADMUX &= ~(1<<REFS1);

 

ADCSRA &= ~(1<<ADPS0); //Prescalar div factor =64 – 011

ADCSRA |= (1<<ADEN)|(1<<ADPS2)|(1<<ADPS1); //Prescalar div factor =64 – 011

}

 

uint16_t adc_read(void)

{

//5 channel selection

ADMUX &= ~(1<<MUX0);

ADMUX &= ~(1<<MUX1);

ADMUX &= ~(1<<MUX2);

ADMUX &= ~(1<<MUX3);

 

//6. start conversion

ADCSRA |= (1<<ADSC);

while (bit_is_set(ADCSRA,ADSC)); //Wait for conversion to complete

 

//read adc data

return ADCW;

}

 

 

int main()

{

uint16_t adc_result = 0;

adc_init();

DDRC |=((1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7));

while(1)

{

adc_result =0;

adc_result = adc_read();

if(adc_result>700)

{

PORTC &= ~((1<<0)|(1<<1)|(1<<2)|(1<<4)|(1<<5)|(1<<6)|(1<<7));

}

else

{

PORTC |= 0xFF;

}

}

return 0;

}