/*****************************************************************
Device : MCP3426/7/8 16-Bit ADC
*****************************************************************/
//#define ADC_SDA PORTB.2 // 12 =
//#define ADC_Data PINB.2
//#define ADC_SCL PORTB.3 // 13 =
#define SADC_SDA_input DDRB &= 0b11111011
#define SADC_SDA_output DDRB |= 0b00000100
void SADC_Start()
{
SADC_SDA_output; // Serial data pin set = output
ADC_SDA = 0;
delay_us(5);
ADC_SCL = 0;
delay_us(5);
}
void SADC_Stop()
{
SADC_SDA_output; // Serial data pin set = output
ADC_SCL = 1;
delay_us(1);
ADC_SDA = 1;
}
void WriteByte(unsigned char comm)
{
unsigned char i;
SADC_SDA_output; // Serial data pin set = output
for(i=0;i<=7;i++){
ADC_SCL = 0;
if(comm & 0x80) ADC_SDA = 1;
else ADC_SDA = 0;
comm <<= 1;
ADC_SCL = 1; // Data clock
delay_us(1);
}
ADC_SCL = 0;
SADC_SDA_input; // Serial data pin set = input
ADC_SCL = 1;
delay_us(1);
ADC_SCL = 0; //while(ADC_Input==0) delay_us(10);
}
unsigned char Read_Byte()
{
unsigned char i, k;
SADC_SDA_input; // Serial data pin set = input
for(i=0;i<=7;i++){
k <<= 1;
ADC_SCL = 1; // Data clock
if(ADC_Input) k |= 1;
else k &= 0xFE;
ADC_SCL = 0;
}
SADC_SDA_output; // Serial data pin set = output
ADC_SDA = 0;
delay_us(1);
ADC_SCL = 1;
delay_us(1);
ADC_SCL = 0;
delay_us(1);
return k;
}
//==========================================
void SADC_Initial()
{
SADC_Start();
WriteByte(0b11011110); // Read
WriteByte(0b00011000); // Read
SADC_Stop();
}
//unsigned long int SADC_Buffer=0;
//unsigned int SADC_Data, SADC_Highvolt;
//unsigned char SADC_Count;
void SADC_Control()
{
unsigned char i, k;
unsigned int da;
SADC_Initial();
/*
#asm("cli")
SADC_Start();
WriteByte(0b11011111); // Read
delay_us(10);
//da = i2c_read(1); // ACK
da = Read_Byte();
da <<= 8;
//da |= i2c_read(0); // NACK
da |= Read_Byte();
SADC_Stop();
#asm("sei")
SADC_Data = da;
//mcp_3426_init_zelle_1();
*/
return;
}
//#end
'AVR & ATmega' 카테고리의 다른 글
AVR Studio Download (0) | 2015.01.29 |
---|---|
마이컴을 배우고 싶어 하시는 분이 있어서.. (0) | 2014.03.26 |
MCP3426A7-E/SN control program (0) | 2014.01.14 |
A/D 교육용 완료(Atmega16 Board) (0) | 2013.01.28 |
2012년 11월 30일 (5주차) 교육자료 (0) | 2012.11.30 |