Beispiel #1
0
void main ()
{
  set_tris_a(0xff);//se pone el puerto RA analogo de entrada
  set_tris_d(0x00);//se pone el puerto RD en salida para prender los led

  setup_adc_ports(ALL_ANALOG);//configuracion de los puertos analogos
  setup_adc(ADC_CLOCK_DIV_32);//el osilador del ADC

  while (true)
  {

    set_adc_channel(0);
    delay_us(10);
    valor = read_adc();
    if(valor){
      output_d(0x01);
    }else{
      output_d(0x00);
    }

    set_adc_channel(1);
    delay_us(10);
    valor = read_adc();
    if{
      output_d(0x02);
    }else{
      output_d(0x00);
    }
  }
Beispiel #2
0
void sampling_ADC()
{
  float data[50][6];

  for(int i = 0; i <= 49; i++)
  {
    for(int j = 0; j <= 8; j++)
    {
      if (j==4) //Cambiar a AN8
      {
         j=8;
         set_adc_channel(j);
         delay_us(20);
         data[i][j-3] = read_adc();
   
         printf("%g\t",tconv*data[i][j-3]);
         delay_us(10);
      }
      
      else
      {
         set_adc_channel(j);
         delay_us(20);
         data[i][j] = read_adc();
   
         printf("%g\t",tconv*data[i][j]);
         delay_us(10);
         }
    }
    
    delay_us(10);
    printf("\r\n");
    
  }
}
void main()
{

   setup_adc_ports(ALL_ANALOG);
   setup_adc(ADC_CLOCK_INTERNAL);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

   // TODO: USER CODE!!
   
      set_adc_channel(0);            // set ref valus
      delay_ms(100);
      ref_0 =read_adc();
      delay_ms(100);
      
      set_adc_channel(3);            // set ref valus
      delay_ms(100);
      ref_3 =read_adc();
      delay_ms(100);
   
   output_b(0b11111111);
   delay_ms(700);
   output_b(0);
   
   while(1){
      set_adc_channel(0);
      delay_ms(20);                        // take readings
      adc_val_0 =read_adc();
      delay_ms(20);
      if(adc_val_0 > ref_0+cons){
         l_0 =1;
         output_high(pin_d7);
         delay_ms(500);
      }
      else{
         l_0=0;
         output_low(pin_d7);
     //    delay_ms(500);
      }
      
      set_adc_channel(3);
      delay_ms(20);                        // take readings
      adc_val_3 =read_adc();
      delay_ms(20);
      if(adc_val_3> ref_3+cons){
         l_3 =1;
         output_high(pin_d6);
         delay_ms(500);
      }
      else{
         l_3=0;
         output_low(pin_d6);
      }
   }
}
   void lect_adc(int canal){
   if (canal == 0){
   set_adc_channel(0);//CONVIERTE CANAL 0
   } else if(canal==1){
   set_adc_channel(1);//CONVIERTE CANAL 0
   } else {
   set_adc_channel(0);//CONVIERTE CANAL 0
   }
   n=read_adc();
   lectura = n*5.0/1023.0;
   delay_ms(150);
   printf(lcd_putc,"ADC%i : %lu",canal,n);
   lcd_putc("\n");
   printf(lcd_putc,"ADC%i : %f",canal,lectura);
}
Beispiel #5
0
main() {

    int i,value,min,max;

    printf("Sampling:");

    setup_port_a( ALL_ANALOG );
    setup_adc( ADC_CLOCK_INTERNAL );
    set_adc_channel( 0 );

    do {
        min=255;
        max=0;
        for(i=0; i<=30; ++i) {
            delay_ms(100);
            value = Read_ADC();
            if(value<min)
                min=value;
            if(value>max)
                max=value;
        }
        printf("\n\rMin: %2X  Max: %2X\r\n",min,max);

    } while (TRUE);

}
//---------------------------------
   void main()
{  //#byte TRISB=0b11000000;
   SET_TRIS_B(0xC0);    //configura PORTB entrada / 0=salida / 1=entrada
   OUTPUT_D(0x00);   //inicializando PORTD en 0x00
   //#byte PORTB=0x00;
   setup_adc_ports(AN0);
   setup_adc(ADC_CLOCK_INTERNAL);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);//|RTCC_8_bit);      //51.2 us overflow
  // setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);      //13.1 ms overflow

  // setup_ccp1(CCP_COMPARE_SET_ON_MATCH);

  // enable_interrupts(INT_RTCC);
   enable_interrupts(INT_RTCC);
   enable_interrupts(GLOBAL);
   cont=0;
   comp1=0;

   while(TRUE)
   {

   set_adc_channel(0);
   delay_ms(1);//tiempo  de offset necesario
   comp1=((read_adc())/1024.0*250.0); 
   delay_ms(1);//tiempo  de offset necesario
 
   }

}
Beispiel #7
0
int main(void) {

	SETUP_ADC(ADC_CLOCK_INTERNAL);
	SETUP_ADC_PORTS(AN0);
	set_adc_channel(0);

	while (TRUE) {

		if (!input(botStart)) {
			delay_ms(100);
			if (!input(botStart) && !ctrl) {
				ctrl = TRUE;
				cont = 0;
				while (cont < bufferSize) {
					vetor[cont++] = read_adc();
					while (!adc_done())
						;
				}
				for (cont = 0; cont < bufferSize; ++cont) {
					printf("%lu\n\r", vetor[cont]);
				}
				cont = 0;
			} else if (ctrl)
				ctrl = FALSE;
		}
	}
	return 0;
}
Beispiel #8
0
void main() {
   BYTE i, j, address, value;

   int16 q,q1;
   float p;

   q1=0;
   
   setup_adc_ports(AN0|VSS_VDD);
   setup_adc(ADC_CLOCK_INTERNAL);
   set_adc_channel(0);

   usb_cdc_init();
   usb_init();

//      while(!usb_cdc_connected()) {}

   do {
      usb_task();
      if (usb_enumerated()) {

      delay_ms(500);
      q = read_adc();
      if (q!=q1){
      p = 5.0 * q / 1024.0;
      printf(usb_cdc_putc,"\r Voltage=%01.2fV", p);
      }
      q1=q;
   }
      } while (TRUE);
}
void main()
{
   int16 valor;
   float tensao;
   lcd_init();



   setup_adc_ports(AN0|VSS_VDD);
   setup_adc(ADC_CLOCK_DIV_16);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_wdt(WDT_OFF);
   setup_timer_0(RTCC_INTERNAL);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   set_adc_channel(0);
//Setup_Oscillator parameter not selected from Intr Oscillator Config tab

   // TODO: USER CODE!!

   while(1)
   {
      valor = read_adc();
      tensao = valor*5.0/1024.0;
      printf("ADC = %04ld",valor);
      printf("    Tensao = %.3fV\r", tensao);
      printf(lcd_putc,"\fADC = %ld",valor);
      printf(lcd_putc,"\nTensao = %.3fV",tensao);
      delay_ms(250);
   }
   
}
Beispiel #10
0
int16 read_supply()
{
   int8 i;
   int16 volts;
   int32 result,reading;
   
   result=0;
   set_adc_channel(0,VSS);
   
   for(i=1;i<51;++i){
      reading=read_adc();
      delay_ms(5);
   }
   
   for(i=1;i<101;++i){
      reading=read_adc();
      result=(((result*(i-1))+reading)/i);
      delay_ms(5);
   }   

   volts=((result*100)/272)+86;
   
   //printf("%Ld,%Ld,%Lu\r\n",reading,result,volts);

   return(volts);
}
void init_pic()
{
   setup_adc_ports(AN0);
   setup_adc(ADC_CLOCK_DIV_32);
   setup_psp(PSP_DISABLED);
   setup_spi(FALSE);
   setup_counters( RTCC_INTERNAL, RTCC_DIV_1 | RTCC_8_BIT);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   enable_interrupts(INT_RTCC);
   enable_interrupts(INT_EXT);
   enable_interrupts(GLOBAL);

   EXT_INT_EDGE(L_TO_H);

   OUTPUT_B(0);
   OUTPUT_C(0);

   SET_TRIS_B(0b01000111);   //pins B0, B1, B2 and B6 are set to give inputs. B0 is the external interuupt pin
                             //B0, B1 & B2 are used for people counting. B6 for zero crossing detection in fan controlling
   SET_TRIS_C(0b00000000);
   SET_TRIS_D(0b00000000);   //D port except D0 pin, is used for lcd panel

   set_adc_channel(0);            //the next read_adc call will read channel 0
}
int16 temp_probe()
{
   int8 i;
   int16 temp;
   int32 result,reading;
   
   result=0;
   set_adc_channel(1,VSS);
   
   output_bit(PIN_D0, 1);
   
   for(i=1;i<51;++i){
      reading=read_adc();
      delay_ms(5);
   }
   
   for(i=1;i<101;++i){
      reading=read_adc();
      result=(((result*(i-1))+reading)/i);
      delay_ms(5);
   }   
   
   output_bit(PIN_D0, 0);

   temp=((result*4133)/100)-20513;
   
   //printf("%Ld,%Ld,%Lu\r\n",reading,result,temp);

   return(temp);
}
void init_pic()
{
   setup_adc_ports(AN0);
   setup_adc(ADC_CLOCK_DIV_32);
   setup_psp(PSP_DISABLED);
   setup_spi(FALSE);
   setup_counters( RTCC_INTERNAL, RTCC_DIV_1 | RTCC_8_BIT);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   enable_interrupts(INT_RTCC);
   enable_interrupts(INT_EXT);
   enable_interrupts(GLOBAL);

   EXT_INT_EDGE(L_TO_H);

   OUTPUT_B(0);
   OUTPUT_C(0);

   SET_TRIS_B(0b01000111);   //pins B0, B1 and B2 are set to give inputs. b0 is the external interuupt pin
   SET_TRIS_C(0b00000000);
   SET_TRIS_D(0b00000000);

   set_adc_channel(0);            //the next read_adc call will read channel 0
}
void main(void){

	int8_t data=0;
	setup_adc(ADC_CLOCK_DIV_8);
	//ADCのサンプリング設定	

	setup_wdt(WDT_1152MS);
	while(1){
		restart_wdt();/*
		output_high(PIN_A0);
		output_low(PIN_A1);
		output_high(PIN_A2);
		//以上アドレスピン設定
		output_low(PIN_A3);
		output_low(PIN_A4);
		output_high(PIN_A5);
		//以上エネーブルピン設定*/
		output_a(0b00001111);
		setup_adc_ports(ALL_ANALOG);
		set_adc_channel(6);
		/*
		ここでADCを適用できるピンと実際に適用するピンを決めます。
		ちなみに仕様として各ピンの役割を個別に設定できないようです。
		ですがすべてアナログに設定しても問題なくエネーブルピンやアドレスピンは動いてくれているので見なかったことにしましょう。
		*/
		delay_us(20);
		restart_wdt();
		data=read_adc();
		setup_adc_ports(NO_ANALOGS);//一応戻しています。
		putc((char)data);
		sleep();
	}
}
Beispiel #15
0
// Setup ports and ADC config
void setup()
{
	SET_TRIS_C(0); // Sets PORT C to output only
    setup_adc_ports(sAN2);
    setup_adc(adc_clock_internal);
    set_adc_channel(2);
}
//Leo el valor del sensor4 -> AN3 ------------------------------------//
 int sensor4 (void){
  set_adc_channel(0);
  delay_ms(1);
  sen4=read_adc();   // sen4 -->sensor4
  delay_ms(1);
  delay_ms(37);
  return sen4;
 }
//Leo el valor del sensor3 -> AN2 ------------------------------------//
 int sensor3 (void){
  set_adc_channel(0);
  delay_ms(1);
  sen3=read_adc();   // sen3 -->sensor3
  delay_ms(1);
  delay_ms(37);
  return sen3;
 }
//Leo el valor del sensor2  -> AN1 ------------------------------------//
 int sensor2 (void){
  set_adc_channel(0);
  delay_ms(1);
  sen2=read_adc();   //sen2  ---> sensor2
  delay_ms(1);
  delay_ms(37);
  return sen2;
 }
//Leo el valor del sensor1 -> AN0 ------------------------------------//
 int sensor1 (void){
 
  set_adc_channel(0);
  delay_ms(1);
  sen1=read_adc();     //sen1  --> sensor1
  delay_ms(1);
  delay_ms(37);
  return sen1;
 }
Beispiel #20
0
void get_data(void) {
    int i;
    signed int pos;

    if ((input(LEFT_BUTTON))&&(mouse.left)) {
        mouse.left=0;
        mouse.delta=1;
    }
    if ((input(RIGHT_BUTTON))&&(mouse.right)) {
        mouse.right=0;
        mouse.delta=1;
    }
    if ((input(MIDDLE_BUTTON))&&(mouse.middle)) {
        mouse.middle=0;
        mouse.delta=1;
    }

    if ((!input(LEFT_BUTTON))&&(!mouse.left)) {
        mouse.left=1;
        mouse.delta=1;
    }
    if ((!input(RIGHT_BUTTON))&&(!mouse.right)) {
        mouse.right=1;
        mouse.delta=1;
    }
    if ((!input(MIDDLE_BUTTON))&&(!mouse.middle)) {
        mouse.middle=1;
        mouse.delta=1;
    }

    set_adc_channel(X_CHANNEL);
    delay_us(10);
    pos=read_adc() & 0xF8;
    mouse.x=(pos-0x80)/10;

    set_adc_channel(Y_CHANNEL);
    delay_us(10);
    pos=read_adc() & 0xF8;
    mouse.y=(pos-0x80)/10;

    if ((mouse.x)||(mouse.y)) {
        mouse.delta=1;
    }
}
Beispiel #21
0
void temp_sensor(int8 j) 
{ 
 set_adc_channel(j); 
 delay_ms(5); 
 Vout = Read_ADC();  
 Temp = (((float)Vout*5)/1023) * 100.0; // div by 1024/5 (=204.8) for 10 bit 
 //Temp = (Temp - 32) * (0.55555); 
 printf(usbWrite,"V:%Lu T:%.2f     ",Vout, Temp);
 return;
}
Beispiel #22
0
void inicializar() {
   output_low(PIN_B4);
   output_low(PIN_B5);
   output_low(PIN_B6);
   output_low(PIN_B7);
  
   setup_adc_ports(RA0_ANALOG);           //puerto A0 como entrada analoga
   setup_adc(adc_clock_internal);         //configura el clk interno para el muestreo analogo
   set_adc_channel( 0 );                  //activa el canal a0
   delay_us(30);                          //retardo de 30 micro segundos

}
void leer_ADC0_ADC1_ADC2_ADC3()
{
   
  
  set_adc_channel(0); //habilitacion canal 0
  delay_ms(2);
  AN_0=read_adc();   //lectura canal 0
 
  set_adc_channel(1); //habilitacion canal 1
  delay_ms(2);
  AN_1=read_adc();   //lectura canal 0
  ;
  set_adc_channel(2); //habilitacion canal 1
  delay_ms(2);
  AN_2=read_adc();   //lectura canal 0
   
  set_adc_channel(4); //habilitacion canal 1
  delay_ms(2);
  AN_3=read_adc();   //lectura canal 0
 
  //delay_ms(100);
}
Beispiel #24
0
void analog_read()
{
set_adc_channel(0);
delay_us(10);
buffer_adc=read_adc();
//delay_us(10);
//lcd_gotoxy(1,1);
//delay_ms(10);
//printf(lcd_putc,"Valor %3u",buffer_adc);
//lcd_gotoxy(1,2);
//printf(lcd_putc,"Buffer %3u",buffer_pos);

}
int8 analogRead(int8 _Channel)
{
   int8 _adcReading;
   
   setup_adc(ADC_CLOCK_INTERNAL);
   setup_adc_ports(ALL_ANALOG);
   set_adc_channel(_Channel);
   delay_us(10);
   
   _adcReading = read_adc();
     
   setup_adc_ports(NO_ANALOGS);
   return(_adcReading);
}
void main(){
  set_tris_a(0x01);
  set_tris_b(0x00);
  setup_adc(adc_clock_internal);
  setup_adc_ports(AN0);
  Servo_init(48); //Coloca a +-90° los servos declarados

  while(true){
    set_adc_channel(0); //RA0 sensor del dedo pulgar
    delay_us(20);
    sensor_pulgar = getc_adc();
    sensor_pulgar = map(sensor_pulgar, 511, 1023, 0, 180);
    Servo_PWM(SERVO_DEDO_PULGAR, sensor_pulgar);
  }
}
void main()
{

   char dato=0;
   int16 lectura=0;

   setup_adc_ports(AN0);
   setup_adc(ADC_CLOCK_INTERNAL);
//CONFIGURACIÓN BUS SPI-------------------------------------------------------------
 setup_spi(spi_master | spi_l_to_h | spi_clk_div_16);//Vamos a trabajar como maestro|que funciona en activo alto
 //lcd_init();
 set_adc_channel(0);
 
 while(true)
 {
  set_adc_channel(0);
  delay_ms(200);
  lectura=read_adc();
  spi_write(lectura);//Escribir lo que haya en el pin A0
  //lcd_gotoxy(1,1);
  //printf(lcd_putc," %Ld   ",lectura);
 // delay_ms(200);
 }
}
Beispiel #28
0
//PROGRAMA PRINCIPAL
void main ()
{
   int8 DisNumbs[10] = {   //Este arreglo guarda los códigos para la representación de los números en el display.
      0b00111111, //0
      0b00000110, //1
      0b01011011, //2
      0b01001111, //3
      0b01100110, //4
      0b01101101, //5
      0b01111101, //6
      0b00000111, //7
      0b01111111, //8
      0b01101111  //9
   };
//Parámetros de Timer0.
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_16);
//Habilitación de interrupciones.
   enable_interrupts(INT_RTCC);
   enable_interrupts(GLOBAL);
//Parámetros del ADC.
   setup_adc_ports(RA0_ANALOG);
   setup_adc(ADC_CLOCK_INTERNAL);
   set_adc_channel(0);
   delay_us(10);   //Se requiere un pequeño delay para estabilizar la señal al cambiar de canal.
//Puertos usados para displays en salida.
   set_tris_b(0x00);
   set_tris_c(0x00);
   set_tris_d(0x00);
   output_b(0x00);
   output_c(0x00);
   output_d(0x00);

   while (true) {
   //Se le da salida a los números calculados de acuerdo al display al que están conectados.
      if (readSens){
         readSens=false;
         ValAnalog = read_adc();   //Se lee y convierte el valor analógico a digital.
         Temperatura = (float)ValAnalog * (0.48875);   //Se convierte el valor digital a ºC
         Calcs();
      }
      output_b(DisNumbs[Decena]);
      output_c(DisNumbs[Unidad]);
      output_d(DisNumbs[Decimal]);
   }
}
Beispiel #29
0
//======================================
//Chuong trinh chinh
//======================================
void main()
{
enable_interrupts(int_rda); //Cai datngattruyen thong
ext_int_edge( H_TO_L );
   setup_timer_1(T1_INTERNAL | T1_DIV_BY_8); //Cai dat bo chia Timer 1
enable_interrupts(INT_TIMER1); //Timer1 65536
   set_timer1(3036); //Cai dat Timer 1 ngat trong 0.1s
enable_interrupts(INT_EXT);
enable_interrupts(global);
   //Datcac gia tri ban dau cho cacbien
xung = 0;
vantoc = 0;
Vdat = 0;
kp = 0;
ki = 0;
kpi = 0;
kii = 0;
kd = 0; //Bien TG khoi dong
//Cai dat vao ra
set_tris_a(0xFF);
set_tris_b(0xFF);
set_tris_c(0xc0);
set_tris_d(0x00);
delay_ms(50);
   //Cai dat ADC
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(RA0_ANALOG);
set_adc_channel(0);
setup_comparator(NC_NC_NC_NC); 
setup_vref(FALSE); 
delay_ms(50);
while(1)
   {
   //Do dong dien
do_dong();
delay_ms(50); 
do_dong();
delay_ms(50);
   //Xuat len may tinh
printf("!%4.0f|%1.3f@",(float)vantoc,(float)ampe);
  }
}
void main() {
   
   setup_adc_ports(AN0);
   setup_adc(ADC_CLOCK_INTERNAL);
   set_adc_channel(0);
   set_tris_b(0x00);                
   output_b(0x00);
   LED_ON(LEDR);
   LED_OFF(LEDV); 
   usb_init();                      
   usb_task();   //Monitorea el estado de la coneccion conectandose y desconectandose automaticamente
   usb_wait_for_enumeration();  //espera infinitamente hasta que el dispositivo fue enumerado    
   LED_ON(LEDV);
   LED_OFF(LEDR); 
   
   while (TRUE) 
   {
      usb_task();
      if (usb_enumerated()) 
      {
        
            Salida[0]=read_adc();
            usb_put_packet(1, Salida, 1, USB_DTS_TOGGLE);

         if (usb_kbhit(1)) 
         {
         
           usb_get_packet(1, Entrada, 1);
           if (Entrada[0]==1)
            {      
             LED_ON(PIN_B0);
              
            }

            else 
            LED_OFF(PIN_B0);

         }
         
      }
   }
   }