コード例 #1
0
struct slidepos_t getSlidePosition(uint8_t number)//returns the slider position
{
	struct slidepos_t r;
	if(number==1)//if number is 1 we read the first slider
	{
		r.x=ADC_read(L_SLIDER);
	}
	else//we read the second one
	{
		r.x=ADC_read(R_SLIDER);
	}	
	return r;
}
コード例 #2
0
ファイル: admoveo.c プロジェクト: Cilph/libadmoveo
void AMV_getProxSensors(uint16_t* left, uint16_t* middle, uint16_t* right){
	//Set external multiplexer and read ADC
	AMV_setExtMux(FRONT,LEFT);
	*left = ADC_read(ID_ADC_DISTANCE);

	//Set external multiplexer and read ADC
	AMV_setExtMux(REAR,LEFT);
	*middle = ADC_read(ID_ADC_DISTANCE);

	//Set external multiplexer and read ADC
	AMV_setExtMux(FRONT,RIGHT);
	*right = ADC_read(ID_ADC_DISTANCE);
}
コード例 #3
0
slider_position JOY_getSliderPosition(void) {
	slider_position position;
	uint8_t l, r;
	
	//Read left slider from channel 2
	l = ADC_read(2);
	//Read right slider from channel 3
	r = ADC_read(3);
	
	//Calculate position percentage
	position.left = 100 * l / 0xFF;
	position.right = 100 * r / 0xFF;
	
	return position;
}
コード例 #4
0
ファイル: angle_v7.c プロジェクト: Simu3/RobotLog
void Main()
{
  double accele_x_bias = 0.0, accele_y_bias = 0.0;
  double jyro_x_bias   = 0.0, jyro_y_bias   = 0.0;
  double accele_x      = 0.0, accele_y      = 0.0, accele_z = 0.0;
  double jyro_x        = 0.0, jyro_y        = 0.0;
  double theta_x       = 0.0, theta_y       = 0.0;
  double roll          = 0.0, pitch         = 0.0;
  int    i             = 0;

  SetUp();

  for(i = 0; i < 100; i ++){
    accele_x_bias += ADC_Read(ANAROG_PIN_ACCELE_X);
    accele_y_bias += ADC_Read(ANAROG_PIN_ACCELE_Y);
    jyro_x_bias   += ADC_Read(ANAROG_PIN_JYRO_X);
    jyro_y_bias   += ADC_Read(ANAROG_PIN_JYRO_Y);
  }

  accele_x_bias /= 100.0;
  accele_y_bias /= 100.0;
  jyro_x_bias   /= 100.0;
  jyro_y_bias   /= 100.0;

  while(1){
    TMR0 = 0;

    accele_x = (ADC_read(ANAROG_PIN_ACCELE_X) - accele_x_bias) * ACCELE_COEFFICIENT;
    accele_y = (ADC_read(ANAROG_PIN_ACCELE_Y) - accele_y_bias) * ACCELE_COEFFICIENT;
    accele_z = (ADC_read(ANAROG_PIN_ACCELE_Z) - ACCELE_Z_BIAS) * ACCELE_COEFFICIENT;
    jyro_x   = (ADC_read(ANAROG_PIN_JYRO_X)   - jyro_x_bias)   * JYRO_COEFFICIENT;
    jyro_y   = (ADC_read(ANAROG_PIN_JYRO_Y)   - jyro_y_bias)   * JYRO_COEFFICIENT;

    theta_x = atan(accele_x / sqrt(accele_y * accele_y + accele_z * accele_z)) * (180.0 / PI);
    theta_y = atan(accele_y / sqrt(accele_x * accele_x + accele_z * accele_z)) * (180.0 / PI);

    roll  += (jyro_x * DT) - (W * roll  * DT) + (W * theta_x * DT); //相補フィルタ
    pitch += (jyro_y * DT) - (W * pitch * DT) + (W * theta_y * DT);
    
    if(-0.15 < roll  && roll  < 0.15)
      roll = 0.0;
    if(-0.15 < pitch && pitch < 0.15)
      pitch = 0.0;

    #if DEBUG_MODE
    #if ACCELE_CHECK_MODE
    accele_x = ADC_read(ANAROG_PIN_ACCELE_X);
    accele_y = ADC_read(ANAROG_PIN_ACCELE_Y);
    accele_z = ADC_read(ANAROG_PIN_ACCELE_Z);
    AcceleCheck(accele_x, accele_y, accele_z);
    #else
    Debug(roll, pitch);
    #endif
    #else
    OutPut(pitch - roll, pitch + roll);  //right, left
    #endif
  }
}
コード例 #5
0
ファイル: codepoint.c プロジェクト: CMUAbstract/edb-firmware
static void append_watchpoint_event(unsigned index)
{
    if (watchpoint_events_count[watchpoint_events_buf_idx] <
            param_num_watchpoint_events_buffered) {

        watchpoint_event_t *watchpoint_event =
            &watchpoint_events_buf[watchpoint_events_count[watchpoint_events_buf_idx]++];

        watchpoint_event->timestamp = SYSTICK_CURRENT_TIME;
        watchpoint_event->index = index;
        if (watchpoints_vcap_snapshot & (1 << index))
            watchpoint_event->vcap = ADC_read(ADC_CHAN_INDEX_VCAP);
        else // TODO: don't stream vcap at all if snapshot is not enabled
            watchpoint_event->vcap = 0;

    }

    if (watchpoint_events_count[watchpoint_events_buf_idx] ==
            param_num_watchpoint_events_buffered) {// buffer full
        if (!(main_loop_flags & FLAG_WATCHPOINT_READY)) { // the other buffer is free
            swap_buffers();
            // clear error indicator
            GPIO(PORT_LED, OUT) &= ~BIT(PIN_LED_RED);
        } else { // both buffers are full
            // indicate error on LED
            GPIO(PORT_LED, OUT) |= BIT(PIN_LED_RED);

            // drop the watchpoints on the floor
        }
    } else {
        // clear error indicator
        GPIO(PORT_LED, OUT) &= ~BIT(PIN_LED_RED);
    }
}
コード例 #6
0
ファイル: daq.c プロジェクト: nsaspook/mandm
void zero_amploc(void) // set zero current setpoint from ADC reading from a10_x a10_z a10_y, write to EEPROM
{
	static uint8_t z;

	adc_cal[11] = adc_cal[12] = adc_cal[13] = adc_cal[14] = ADC_NULL; // reset offsets to zero (ADC_NULL)
	// read adc data for zero setpoint
	ADC_read(); // a10_x=adc_[11], a10_z=adc_cal[12], a10_y=adc_cal[13]
	adc_cal[11] = (uint8_t) (ADC_NULL + (int) ((int) a10_x - (int) AMP10_ZERO));
	adc_cal[12] = (uint8_t) (ADC_NULL + (int) ((int) a10_z - (int) AMP10_ZERO));
	adc_cal[13] = (uint8_t) (ADC_NULL + (int) ((int) a10_y - (int) AMP10_ZERO));

	if (checktime_eep(EEP_UPDATE, FALSE)) {
		term_time();
		putrs2USART(zero0);
		sprintf(bootstr2, "\n\r Zero offset %i, X current %i, AMP10_ZERO %i", (int) adc_cal[11], a10_x, AMP10_ZERO);
		puts2USART(bootstr2);
		sprintf(bootstr2, "\n\r Zero offset %i, Y current %i, AMP10_ZERO %i", (int) adc_cal[12], a10_z, AMP10_ZERO);
		puts2USART(bootstr2);
		sprintf(bootstr2, "\n\r Zero offset %i, Z current %i, AMP10_ZERO %i", (int) adc_cal[13], a10_y, AMP10_ZERO);
		puts2USART(bootstr2);
		write_data_eeprom(adc_cal[z], ADC_SLOTS, z, 8);
		checktime_eep(EEP_UPDATE, TRUE);
		putrs2USART(zero1);
	}
}
コード例 #7
0
ファイル: lualib.c プロジェクト: j0t4/espardino
static int ADC_input_lua(lua_State *L)
{
	int const ADC_masks[32] = 
			{0,0,0,0,AD0_6, AD0_7, AD1_0, 0, AD1_1, 0, AD1_2, 0, AD1_3, AD1_4, 0, AD1_5, 0,
			 0,0,0,0,AD1_6, AD1_7, 0, 0,AD0_4, 0,0,AD0_1, AD0_2, AD0_3,0};

	int port=lua_tonumber(L,1);
	int pin =lua_tonumber(L,2);
	int adc_mask=0;
	double fval;
	
	if ((port==0) && (pin>=0) && (pin<=31)) adc_mask = ADC_masks[pin];
	if (ADC_check_port_pin(L,port,pin,adc_mask))
	{
	
		ADC_init(adc_mask);
		fval = ADC_read(adc_mask);
		fval = fval / 1023.0f;
		
	}
	else
	{ 
		fval = -1;
	}
	
	lua_pushnumber(L,fval);
	return 1;
}
コード例 #8
0
ファイル: colmix.c プロジェクト: rhaido/arduino-lessons
int main(void){
  uint16_t v0,v1,v2;
  double t0,t1,t2;
  char t_chr[7];

  memset(t_chr, '\0', sizeof(t_chr));

  USART_init(MYUBRR);
  /* Remove garbage from serial terminal */
  USART_transmit('\r');

  ADC_init();
  PWM_init();

  while(1){
    v0 = ADC_read(0);  /* read from ADC0 */
    v1 = ADC_read(1);  /* read from ADC0 */
    v2 = ADC_read(2);  /* read from ADC0 */

    t0 = v0 / 4;
    t1 = v1 / 4;
    t2 = v2 / 4;

    dtostrf(t0, 5, 1, t_chr);
    USART_write("0: ");
    USART_write(t_chr);
    USART_write("\r\n");

    dtostrf(t1, 5, 1, t_chr);
    USART_write("1: ");
    USART_write(t_chr);
    USART_write("\r\n");

    dtostrf(t2, 5, 1, t_chr);
    USART_write("2: ");
    USART_write(t_chr);
    USART_write("\r\n");

    OCR0A = t0;
    OCR0B = t1;
    OCR2A = t2;

    _delay_ms(500);
  }

  return 1;
}
コード例 #9
0
ファイル: main.c プロジェクト: Aditya-Balaji/Projects12-14
void main(void)
{

	WDTCTL = WDTPW + WDTHOLD; // Stop WDT

	P1DIR|=0x41; 		// Declare P1.0 as output
	P1REN |= BIT3;
	P1OUT |= BIT3;

	Uart_init();

	while(1)
	{
		if(k%2==1)
			{
			ADC_init();
			a=ADC_read();
			ADC_send(a);

			}
		if(P1IN & 0x08)
		{
			P1OUT&=~0x01;	//Turn-off LED on P1.0
			flag=0;
		}
		else
		{
			if(flag==0)
			{
				flag=1;
				P1OUT|=0x41;//Turn-on LED on P1.0
				k++;
				if(k%2==1)
				{
					ADC_init();
					a=ADC_read();


				}
				if(k%2==0)
				{
					P1OUT&=~0x40;
				}
			}
		}
	}
}
コード例 #10
0
uint32 SENSOR_read(uint8 a_chNum)
{
	uint32 temp;
	temp= ADC_read(a_chNum); /* Read channel zero where the temp sensor is connect */
	temp = (temp*150*5)/(1023*1.5);
	
	return temp;
		
}
コード例 #11
0
ファイル: comp_adc.c プロジェクト: mekatronik-achmadi/openpv
unsigned int USB_check(void){
    unsigned int vadc,vret;
    vadc=ADC_read(ADC_USB);

    if(vadc>=MIN_USB){vret=1;}
    else{vret=0;}

    return vret;
}
コード例 #12
0
ファイル: comp_adc.c プロジェクト: mekatronik-achmadi/openpv
unsigned int LED_check(void){
    unsigned int vadc,vret;
    vadc=ADC_read(ADC_LED);

    if(vadc>=MIN_LED){vret=1;}
    else{vret=0;}

    return vret;
}
コード例 #13
0
ファイル: comp_adc.c プロジェクト: mekatronik-achmadi/openpv
unsigned int PV_check(void){
    unsigned int vadc,vret;
    vadc=ADC_read(ADC_PV);

    if(vadc>=MIN_PV){vret=1;}
    else{vret=0;}

    return vret;
}
コード例 #14
0
void accel_init(uint8_t pin_x, uint8_t pin_y, uint8_t pin_z,
    uint16_t * avg_x, uint16_t * avg_y, uint16_t * avg_z) {
	uint8_t i;
	uint16_t temp;
	
	for (i = 0; i < 50; i++) {
		temp = ADC_read(pin_x);
		*avg_x = (*avg_x * (i) + temp) / (i + 1);
		
		temp = ADC_read(pin_y);
		*avg_y = (*avg_y * (i) + temp) / (i + 1);
		
		temp = ADC_read(pin_z);
		*avg_z = (*avg_z * (i) + temp) / (i + 1);

		_delay_ms(50);
	}
}
コード例 #15
0
ファイル: main.c プロジェクト: sbobovyc/Potentiometer
int main(void) {
	uint16_t reading = 0;

	ADC_init();

	while(1) {
		_delay_us(1);
		reading = ADC_read(ADC0D);
	}
}
コード例 #16
0
ファイル: main.c プロジェクト: ellbur/little-stuff
int main(void) {
	
	int s1, s2, s3, s4;
	
	uart_init();
	
	stdout = &uart_stream;
	stdin  = &uart_stream;
	
	while (1) {
		_delay_ms(2000);
		
		ADC_init(4); s1 = ADC_read();
		ADC_init(5); s2 = ADC_read();
		ADC_init(6); s3 = ADC_read();
		ADC_init(7); s4 = ADC_read();
		
		printf("Read: %3d %3d %3d %3d\r\n", s1, s2, s3, s4);
	}
}
コード例 #17
0
void setDelay()
{
	unsigned int num;
	while (1)
	{
		num = ADC_read(0, 10, true);
		delay = num >> 5;
		x_yield();
	}
	
}
コード例 #18
0
ファイル: controller_min.c プロジェクト: run1c/Master
void setBiasVoltage(){
	float temperature;
	uint16_t biasVoltage_5mV;	// bias voltage in 5mV steps
	uint16_t DACcounts;
	// get the temperature and calculate the voltage	
	temperature = getTemperature( ADC_read() );
	biasVoltage_5mV = calcAdjustedBiasVoltage(temperature);
	// calculate dac counts
	DACcounts = (uint16_t) ( (biasVoltage_5mV*5. - DACOffA)/DACGainA );
	// apply changes to PWM register
	OCR1A = DACcounts;
	return;
}
コード例 #19
0
void ADC_init()
{
	int dummy = 0;
	
    ADMUX = 1;   

    // set ADC prescaler to , 1MHz / 8 = 125kHz    
    ADCSRA = (1<<ADEN) | (1<<ADPS1) | (1<<ADPS0);    

    //  Take a dummy reading , which basically allows the ADC 
    // to hack up any hairballs before we take any real readings
    dummy = ADC_read();       
}
コード例 #20
0
ファイル: comp_adc.c プロジェクト: mekatronik-achmadi/openpv
unsigned int BATT_check(void){
    unsigned int vadc,vret;
    vadc=ADC_read(ADC_BATT);

    if(vadc<=BATT_1){vret=1;}
    else if((vadc>BATT_1) && (vadc<=BATT_2)){vret=2;}
    else if((vadc>BATT_2) && (vadc<=BATT_3)){vret=3;}
    else if((vadc>BATT_3) && (vadc<=BATT_4)){vret=4;}
    else if((vadc>BATT_4) && (vadc<=BATT_5)){vret=5;}
    else if(vadc>BATT_5){vret=6;}

    return vret;
}
コード例 #21
0
ファイル: main.c プロジェクト: abubakr88/Embedded_Diploma
uint8 main (void){
	uint16 result=0, temp=0;
	LCD_init();
	ADC_init();
	LCD_Display_String_Row_Col(0,3,"Temp=");
	while (1){
		result = ADC_read(3);
		temp = (150*result*5)/(1.5*1023);
		LCD_go_To_ROW_Col(0 ,8);
		LCD_intger_TO_String(temp );

	}
	return (0);
}
コード例 #22
0
void mcu_main()
{
	int value;
	while(1)
	{
		value = ADC_read();
		len = mcu_snprintf(buf, 32,"%d\n",value);
		host_send((unsigned char*)buf, len);

		//This will prevent the atom from freezing
		mcu_sleep(1);
	}

}
コード例 #23
0
//***********************************************************
unsigned int RtcVoltRd(void)
{
 unsigned int i, Voltage_Value;
 ADCON1=0x17;
 ADCON2=0x90;
 Delay_ml(5);
 for(i=0;i<5;i++)
 {
   Voltage_Value=ADC_read(4);
   Delay_ml(7);
 }
 ADCON0=0x0;
 ADCON1=0x0F;
 return (Voltage_Value/40);
}//RtcVoltRd
コード例 #24
0
ファイル: AandDEE_DA.c プロジェクト: coupdair/AandDEE
void convert(void)
{
  result=ADC_read();//(5);

  if(result > compare)                 // Compare the converted result with 0.5 V
  {
    TTL_PORT|=_BV(TTL_UL);//TTL on
//    LED_PORT|=_BV(LED_BR);//LED on
  }
  else
  {
    TTL_PORT&=~_BV(TTL_UL);//TTL off
//    LED_PORT&=~_BV(LED_BR);//LED off
  }
}//convert
コード例 #25
0
ファイル: powerSystem.c プロジェクト: tyharbert/SeniorDesign
// main function; program starts here
void main(void) 
{
    unsigned char data = 0;
    unsigned int battery_voltage = 0; // ADC reading of battery voltage
    
    ports_initialize();    // set up ports 
    ADC_initialize();      // configure ADC
    SPI_initialize();      // set up SPI module
    sleep_initialize();    // set up sleep mode
    ISR_initialize();      // set up ISR
    
    while(1)
    {
        SLEEP(); // sleep PIC until WDT expires
        
        time++; // increment time (+16s)
        
        battery_voltage = ADC_read(0x09); // read battery voltage
        
        if ( time >= 1 ) // 1*16s=16s
        {        
            time = 0; // reset time
            if(battery_voltage >= 690) //690 = 11v
            {
                LATCbits.LATC4 = 1; // turn relay on
                
                SPI_enable(); // turn on SPI module
            
                while( data != 0xDA ) // wait for shutdown command to be received
                {
                    while(!SSP1STATbits.BF) // wait till data is in the buffer
                    {
                        CLRWDT();
                    }
                    data = SSP1BUF; // read data outside
                }
            
                data = 0x00;
            
                SPI_disable(); // turn off SPI module
                
                __delay_ms(10000); // wait for R Pi to shutdown
            
                LATCbits.LATC4 = 0; // turn relay off
            }  
        }
    }    
}
コード例 #26
0
//***********************************************************
int TempRd(void)
{
     unsigned int i, Temp_Value;
     ADCON1=0x17;
     ADCON2=0x90;
     CMCON=0x07;
     Delay_ml(5);
     for(i=0;i<5;i++)
     {
       Temp_Value=ADC_read(7);
       Delay_ml(7);
     }
     ADCON0=0x0;
     ADCON1=0x0F;
     return (((Temp_Value-41)/4)-50);
}//TempRd
コード例 #27
0
ファイル: user.c プロジェクト: banksh/lAAAHzertag
uint8_t handle_fire(){
    static uint16_t timer = 0; // for holdoff
    static uint16_t counter = 0; // for power
    uint16_t a;

    a=ADC_read();
    if (a > config.fire_cheating){
        cheat();
    }
    if (a > config.fire_threshold && a < config.fire_cheating)
    {
        while(!my_random_number){
            my_random_number = TMR0;
        }
        if(timer < config.fire_holdoff)
        {
            timer ++;
        }
        else
        {
            if(!config.power || counter <= config.power)
            {
                if(!counter)
                {
                    green_led_on();
                    play_song((uint16_t*)fire_song,sizeof(fire_song)/sizeof(uint16_t),3000,!(config.power));
                }
                Send_Byte(config.id);
                counter++;
            }
            else
            {
                led_off();
            }
        }
    }
    else
    {
        led_off();
        if(!config.power && counter) stop_song();
        timer = 0;
        counter = 0;
        return 0;
    }
    return 1;
}
コード例 #28
0
void adc_conv_test(int64_t delay){
	char buf[50];
	uint16_t adcvalue=ADC_read(3);

	double Rb=100.0;
	double Rt=1000.0;
	double Uref=1.1972;
	double Bits=65535;

	float convert=((Rb+Rt)*Uref)/(Rb*Bits);
	float voltage;
	voltage=convert*adcvalue;
	global_adc_voltage=voltage;
	//sprintf(buf,"ADC: %f",1.234);
	//mcu_tracer_msg(buf);

	uint16_t grid_adc=ADC1_read(7);
	convert=(4000*Uref)/(5.5*Bits);
	global_adc_grid=(grid_adc-32768)*convert;

	Rb=2.2;
	Rt=2000;
	convert=((Rb+Rt)*Uref)/(Rb*Bits);
	float dclink=convert*ADC1_read(4);
	global_adc_dclink=dclink;

	//if(CMP1_SCR & CMP_SCR_COUT_MASK){
	if(CMP0->SCR & CMP_SCR_COUT_MASK){
		global_overcurrent=1;
	}else{
		global_overcurrent=0;
	}
	if(global_clear_error){
		FTM_clear_error();
		global_clear_error=0;
	}

	//SI8900_manual_req(0);

	global_Si8900_var=SI8900_get_ch(2);



	_taskcall_task_register_time(&task_adc_conv_test,(120000000/29));

}
コード例 #29
0
ファイル: mech.c プロジェクト: Aditya-Balaji/Projects12-14
int main(void)
{
	float value;
	float temp;
	DDRB=0xFF;
	ADC_init();	// Initialization of ADC
	while(1)
	{
		value=ADC_read(0);
		temp=(value/1023)*5*100;
		if(temp>30 && temp<33)
		{PORTB=0x00;
		}		
		else
		{PORTB=0x01;
		}		
	}
}
コード例 #30
0
ファイル: DC_Motor_controlling.c プロジェクト: blumn/DA5
// ------------------------------------------------
int main(void)
{
	uint16_t value;
	DDRB=0xFF;
	ADC_init(); // Initialization of ADC
	while(1)
	{
		value=ADC_read(0);
		PORTB|=1<<motor;
		if(value<1)
		value=0;
		for (int i=0;i<value;i++)
		_delay_us(1);
		PORTB&=~(1<<motor);             
		for(int i=0;i<1023-value;i++)
		_delay_us(1);
	}
}