Autor Tema: Puerto ADC 4 es distinto de los otros  (Leído 3926 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado PabloFiscella

  • PIC16
  • ***
  • Mensajes: 154
Puerto ADC 4 es distinto de los otros
« en: 13 de Mayo de 2004, 11:27:00 »
Hola a todos:

Estoy haciendo un polimetro multiplexado con leds que testean 5 sondas y funciona perfecto con las primeras 4 pero no con la ultima.
Probe el programa para que solo funcione con AD0 luego con la 1, pero cuando pruebo la entrada A4 me marca cualquier cosa.

Tiene idea si es algo diferente para la entrada A4.
Les muestro el codigo y si lo necesitan les mando el diseño en el proteus.

La variable pos en en procedimento Conversion_Ad() es la que selecciona la sonda.

Saludos y gracias.
Pablo

#use delay(clock=4000000)
#fuses XT, NOPROTECT, NOPUT, NOWDT, NOBROWNOUT, NOLVP, NOCPD, NOWRT

byte const sensor[] = {0b00011110,0b00011101,0b00011011,0b00010111,0b00001111};
byte const ledB[] = {0b00000000,0b00000000,0b00000001,0b00000011,0b00000111,0b00001111,0b00011111,0b00111111,0b01111111,0b11111111};

float value=0;
float cant=0;
int pos=0, int_count=0;


#int_rtcc // This function is called every time
clock_isr() { // the RTCC (timer0) overflows (255->0).
   if(int_count++==10) { // per milisecond.
      int_count=0;

      output_low(PIN_D0);
      output_low(PIN_D1);
      output_low(PIN_B0);
      output_low(PIN_B1);
      output_low(PIN_B2);
      output_low(PIN_B3);
      output_low(PIN_B4);
      output_low(PIN_B5);
      output_low(PIN_B6);
      output_low(PIN_B7);



   output_c(sensor[pos]);
   if(cant <= 0.5){
      output_bit( PIN_D0, 0);
      output_bit( PIN_D1, 0);
      output_b(ledB[0]);
   }else if((cant > 0.5) && (cant <= 1)){
      output_bit( PIN_D0, 1);
      output_bit( PIN_D1, 0);
      output_b(ledB[0]);
   } else if((cant > 1) && (cant <= 1.5)) {
      output_bit( PIN_D0, 1);
      output_bit( PIN_D1, 1);
      output_b(ledB[1]);
   } else if((cant > 1.5) && (cant <= 2)) {
      output_bit( PIN_D0, 1);
      output_bit( PIN_D1, 1);
      output_b(ledB[2]);
   } else if((cant > 2) && (cant <= 2.5)) {
      output_bit( PIN_D0, 1);
      output_bit( PIN_D1, 1);
      output_b(ledB[3]);
   } else if((cant > 2.5) && (cant <= 3)) {
      output_bit( PIN_D0, 1);
      output_bit( PIN_D1, 1);
      output_b(ledB[4]);
   } else if((cant > 3) && (cant <= 3.5)) {
      output_bit( PIN_D0, 1);
      output_bit( PIN_D1, 1);
      output_b(ledB[5]);
   } else if((cant > 3.5) && (cant <= 4)) {
      output_bit( PIN_D0, 1);
      output_bit( PIN_D1, 1);
      output_b(ledB[6]);
   } else if((cant > 4) && (cant <= 4.5)) {
      output_bit( PIN_D0, 1);
      output_bit( PIN_D1, 1);
      output_b(ledB[7]);
   } else if((cant > 4.5) && (cant <= 5)) {
      output_bit( PIN_D0, 1);
      output_bit( PIN_D1, 1);
      output_b(ledB[8]);
   } else if(cant > 5) {
      output_bit( PIN_D0, 1);
      output_bit( PIN_D1, 1);
      output_b(ledB[9]);
   }
   }
}


#INT_AD
Conversion_Ad()
{
      set_adc_channel(pos);
      cant = (read_adc(ADC_READ_ONLY) * 0.0048828125)*5;
      delay_ms(100);

   pos = 4;    // NUMERO DE SONDA

   read_adc(ADC_START_ONLY);
}


void main(void) {
   int valor;

   setup_adc(ADC_CLOCK_INTERNAL);
   setup_adc_ports( ALL_ANALOG );
   enable_interrupts(global);
   enable_interrupts(INT_AD);
   read_adc(ADC_START_ONLY);
   set_adc_channel(0);

   set_timer0(56);
   setup_counters( RTCC_INTERNAL, RTCC_DIV_256);
   enable_interrupts(INT_RTCC);
   enable_interrupts(GLOBAL);

   set_tris_a(0xFF);
   set_tris_b(0b00000000);
   set_tris_c(0b10000000);
   set_tris_d(0b00000000);

      output_low(PIN_D0);
      output_low(PIN_D1);
      output_low(PIN_B0);
      output_low(PIN_B1);
      output_low(PIN_B2);
      output_low(PIN_B3);
      output_low(PIN_B4);
      output_low(PIN_B5);
      output_low(PIN_B6);
      output_low(PIN_B7);
   while(true) {
   }
}


Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
RE: Puerto ADC 4 es distinto de los otros
« Respuesta #1 en: 13 de Mayo de 2004, 12:27:00 »
Que PIC es el que utilizas??
No esta en el codigo...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado PabloFiscella

  • PIC16
  • ***
  • Mensajes: 154
RE: Puerto ADC 4 es distinto de los otros
« Respuesta #2 en: 13 de Mayo de 2004, 12:43:00 »
Si se me paso esa linea
Es el 16F874 que tiene 8 entradas Analogicas

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: Puerto ADC 4 es distinto de los otros
« Respuesta #3 en: 13 de Mayo de 2004, 12:45:00 »
Podrías explicar como funciona " un polimetro multiplexado con leds que testean 5 sondas ".

Sería conveniente que dejases el fuente y el dibujo con PROTEUS para que se pueda simular y se intente ver que pasa con A4.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
RE: Puerto ADC 4 es distinto de los otros
« Respuesta #4 en: 13 de Mayo de 2004, 12:50:00 »
Pero en el programa siempre interrogas el puerto 4 solo??
Porque no subes la simulacion al foro??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado PabloFiscella

  • PIC16
  • ***
  • Mensajes: 154
RE: Puerto ADC 4 es distinto de los otros
« Respuesta #5 en: 13 de Mayo de 2004, 12:55:00 »
Como cuelgo los archivos para que los veas?

Esto sensa 5 voltages que provienen de un motor. Tiene 5 sondas que estan conectadas desde A0 a A4.
Como puden ser voltages de hasta 15v puse un divisor por resistencias que seguramente esta mal pero por ahora funciona.
Estos divisores dividen el voltage de entrada 5 veces.
Por medio de codigo vuelvo a multiplicarlo antes de mostrar el resultado.

Cada sonda esta representada por una fila de 10Leds cada una.
la variable sonda hace que se encienda una sonda por ves mandando masa solo a una a la ves.
Eso lo hace por el puerto C0 a c4

y los 10 leds se encienden con el puerto  D0 y D1 los dos primeros y los otros 8 con el puerto b

Espero que me hallan entendido.

Saludos.
Pablo

Desconectado PabloFiscella

  • PIC16
  • ***
  • Mensajes: 154
RE: Puerto ADC 4 es distinto de los otros
« Respuesta #6 en: 13 de Mayo de 2004, 12:57:00 »
El codigo ahora esta en 4 porque es con el que tenia problemas.
Pero el codigo original va cambiando del 0 a 4 y vuelve a empezar.

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: Puerto ADC 4 es distinto de los otros
« Respuesta #7 en: 13 de Mayo de 2004, 13:15:00 »

Desconectado PabloFiscella

  • PIC16
  • ***
  • Mensajes: 154
RE: Puerto ADC 4 es distinto de los otros
« Respuesta #8 en: 13 de Mayo de 2004, 14:10:00 »
Lo puse donde me indicaste.
Ahora acabo de probar el pueto A5 y el programa funciona perfecto.

Definitivamente es el A4, no entiendo nada.

Gracias.
Pablo

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Puerto ADC 4 es distinto de los otros
« Respuesta #9 en: 13 de Mayo de 2004, 19:27:00 »
No estoy puesto en el tema pero en el diagrama de pines de la hoja de características RA4 no parece constar como entrada analógica,correspondiendo AN4 al pin RA5.Corríjanme si me equivoco.
Saludos

Desconectado pikman

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 682
RE: Puerto ADC 4 es distinto de los otros
« Respuesta #10 en: 13 de Mayo de 2004, 21:18:00 »
Hola, no RA4 no es una entrada analogica, es I/O digita de colector abierto  y la entrada del TMR0, la entrada digital AN4 esta en el pin RA5, ese el el problema, RTFM.

saludos

Ariel
saludos
PikMan

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: Puerto ADC 4 es distinto de los otros
« Respuesta #11 en: 13 de Mayo de 2004, 22:57:00 »
Pués sí viendo el dibujo ya es otra cosa (la memoria es mala consejera), fíjate que en el PIN 6 tienes dibujado RA4/T0CKI y no aparece ningún AN4. El AN4 está en el PIN 7

Desconectado PabloFiscella

  • PIC16
  • ***
  • Mensajes: 154
RE: Puerto ADC 4 es distinto de los otros
« Respuesta #12 en: 14 de Mayo de 2004, 08:47:00 »
Error visual. Tienen razon. Muchas gracias a todos.

Saludos
Pablo


 

anything