#include <htc.h>
__CONFIG(LVP_OFF & BOREN_OFF & PWRTE_ON & WDTE_OFF & FOSC_HS);
#define _XTAL_FREQ 20000000
#define SDATA RC4
#define SCLK RC3
void I2C_init(),I2C_start(void),I2C_write(char x), I2cSTOP(void);
void i2c_Wait(void);
adc();
void main(void){
TRISA = 0xff ;
ADCON1=0b00000000;
ADCON0=0b10000001;//000 = channel 0, (RA0/AN0)
ADIF=0;
TRISC3=1; //direction to input have be changed
TRISC4=1;
TRISC5=0;
RC5=0;
RC5=1;
__delay_ms(500);
RC5=0;
unsigned int a;
while(1){
a=adc();
I2C_init();
__delay_ms(50);
I2C_start();
I2C_write(0x12);//esc default addr
I2C_write(a);//testing speed 0-255
I2cSTOP();
}
}
void I2C_init(void)
{
SSPCON = 0x38; // set I2C master mode
SSPCON2 = 0x00;
SSPADD = 0x0C; //400KHZ 20MHz xtal
SSPSTAT|=0X80;
PSPIF=0; // clear SSPIF interrupt flag
BCLIF=0; // clear bus collision flag
}
void I2C_start(void)
{
i2c_Wait();
SEN=1;
}
void I2C_write(char x){
i2c_Wait();
SSPBUF=x;
}
void i2c_Wait(void){
while((SSPCON2 & 0X1F || (SSPSTAT & 0X04)));
}
void I2cSTOP(void)
{
i2c_Wait();
PEN=1;
}
adc(){
__delay_us(10);
GO_DONE=1;
__delay_us(10);
return ADRESH;
}