Autor Tema: Problemillas al leer de dos puertos analógicos..............  (Leído 2895 veces)

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

Desconectado jmg

  • PIC10
  • *
  • Mensajes: 14
Problemillas al leer de dos puertos analógicos..............
« en: 06 de Marzo de 2007, 07:07:53 »
Bien estoy intentando leer de dos puertos de un mismo pic, concretamente del A= y A1, lo hago en C el programa es de la siguiente forma:

// hello16f88.c
//
// jackie lee
// jackylee@media.mit.edu
// 2005/10/06
//
// This example demonstrates how to use 16F88 ADC.
//
// 
// For full details on the iRX board and this program, refer to
// http://www.media.mit.edu/~r/projects/picsem/GettingStarted/
//
//

#include "C:\Program Files\PICC\Devices\16f88.h"

// Configure PIC to use: HS clock, no Watchdog Timer,
// no code protection, enable Power Up Timer
//

#fuses HS,NOWDT,NOPROTECT,PUT
#fuses INTRC_IO,NOWDT,NOPROTECT,PUT, NOLVP, MCLR, NODEBUG, NOFCMEN, NOIESO

// Tell compiler clock is 8MHz.  This is required for delay_ms()
// and for all serial I/O (such as printf(...).  These functions
// use software delay loops, so the compiler needs to know the
// processor speed.
//
#use delay (clock=8000000)

// Declare that we'll manually establish the data direction of
// each I/O pin on port B.
//
#use fast_io(B)

// Standard definitions for the irx2_1 board
//
#define RS232_XMT       PIN_B1  // (output) RS232 serial transmit
#define RED_LED         PIN_B2  // (output) Red LED (low true)
#define IR_LED          PIN_B3  // (output) Infrared LED (low true)
#define IR_SENSOR       PIN_B4  // (input) IR sensor (Sharp IS1U30)
#define RS232_RCV       PIN_B5  // (input) RS232 serial receive

// Macros to simplify I/O operations
//
#define RED_LED_ON      output_low(RED_LED)
#define RED_LED_OFF     output_high(RED_LED)
#define IR_LED_ON       output_low(IR_LED)
#define IR_LED_OFF      output_high(IR_LED)
#define IR_RECEIVED   (!input(IR_SENSOR))

// Default tri-state port direction bits: all PORT B bits are
// output except for IR_SENSOR (bit 4) and RC232_RCV (bit 5).
//
#define IRX_B_TRIS      0b00110000

// Inform printf() and friends of the desired baud rate
// and which pins to use for serial I/O.
//
#use rs232(baud=9600, xmit=RS232_XMT, rcv=RS232_RCV)

void main() {
  setup_adc_ports(sAN0 | sAN1 | VSS_VDD);
  setup_adc(ADC_CLOCK_DIV_64);

  while (1) {
    RED_LED_ON;                  // turn on the led
   set_adc_channel(0);
   adc_value = read_adc();
    volts_read = adc_value*20.00000/1024;
   volts_send = (double) volts_read;
    printf("Voltage %i: %f --- %x \r\n", volts_send, volts_read); // print to serial port
delay_ms(500);
   set_adc_channel(1);
   adc_value = read_adc();
    volts_read = adc_value*20.00000/1024;
   volts_send = (double) volts_read;
    printf("Voltage %i: %f --- %x \r\n", volts_send, volts_read); // print to serial port
    RED_LED_OFF;                 // turn off the led
    delay_ms(500);               // do nothing for half a second
  }
}

los resultados de la segunda variable, no dan lo que debene de dar, y otra cosa que pasa es que cuando pasa de 1 voltio de entrada se desestabiliza sin dar ningun resultado coherente.
gracias foreros



Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Problemillas al leer de dos puertos analógicos..............
« Respuesta #1 en: 06 de Marzo de 2007, 08:21:48 »
Comienza probando hacer esto

mueve
Código: C
  1. delay_ms(500);
  2.    set_adc_channel(1);
  3.    adc_value = read_adc();

a

Código: C
  1. set_adc_channel(1);
  2.    delay_ms(500);
  3.    adc_value = read_adc();

Esto garantiza que tengas suficiente tiempo de muestreo para leer el canal #1.  Por supuesto es exagerado pero hay que tener siempre un tiempo después de setear el canal para que se pueda hacer el proceso de toma de muestra de la señal.

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado jmg

  • PIC10
  • *
  • Mensajes: 14
Re: Problemillas al leer de dos puertos analógicos..............
« Respuesta #2 en: 09 de Marzo de 2007, 06:00:01 »
Se resolvio el problemilla dando más tiempo entre el multiplexado del convertidor, es algo que me resulta raro pero a sido asi.
gracias por respoder tanr apido y un saludo

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Problemillas al leer de dos puertos analógicos..............
« Respuesta #3 en: 10 de Marzo de 2007, 09:56:15 »
existe muy pocas cosas q no se pueden explicar acerca de como funciona un pic, entre ellas el ADC, lo q te sucedio es q no respetabas el tiempo Tad q hay tener entre una conversion y otra, asi sean de diferentes canales, el modulo de conversion es el mismo para todos los canales, la explicacion mas detallada esta en el datasheet o http://www.box.net/public/3xke74iggx  es un pdf q se basa en el datasheet pero mejor explicado y en castellano  :-/ exitos!!!
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Problemillas al leer de dos puertos analógicos..............
« Respuesta #4 en: 10 de Marzo de 2007, 10:53:25 »
existe muy pocas cosas q no se pueden explicar acerca de como funciona un pic, entre ellas el ADC, lo q te sucedio es q no respetabas el tiempo Tad q hay tener entre una conversion y otra, asi sean de diferentes canales, el modulo de conversion es el mismo para todos los canales

micro_cadaver no se qué quisiste decir o si fue un error, pero estás diciendo que hay pocas cosas que no se pueden explicar y luego a continuación dices que una de ellas es el ADC.  ¿Es esto lo que quisiste decir o fue un error de tipeo?

Si no fue un error de tipeo y realmente crees que el ADC es una de las cosas que no tienen explicación en un PIC, me gustaría saber qué es lo que puntualmente te parece que no está claro de este módulo. 

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Problemillas al leer de dos puertos analógicos..............
« Respuesta #5 en: 10 de Marzo de 2007, 11:42:54 »
jojojoj
 haber yo quise decir...
existen muy pocas cosas = casi nada
q no se puedan explicar = q no tenga explicacion

casi nada q no tenga explicacion = todo tiene un porque en el PIC (salvo unos nanominimos detalles)

eso era  :mrgreen: era una afirmacion positiva. por eso puse el link donde explican esa parte. sorry si escribi asi, mucho edgar allan poe, ya sabia q es elibro "Los crimenes de la calle Morgue" me iba a traumar !!!

a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Problemillas al leer de dos puertos analógicos..............
« Respuesta #6 en: 10 de Marzo de 2007, 12:58:40 »
En realidad, no era esa la suda sino que la frase continúa...

existe muy pocas cosas q no se pueden explicar acerca de como funciona un pic, entre ellas el ADC,

Entonces, al menos este humilde lector, interpreta que una de las cosas que NO tienen explicación es el ADC. 

y de ahí mi confusión. 

PD. no soy de interferir en temas de estilo de escritura o de corregir errores, solo lo hago cuando creo que es necesario como en este caso en que casualmente se lee justamente lo opuesto a lo que se quiso decir. 

Espero lo tomes a bien,  Saludos


« Última modificación: 10 de Marzo de 2007, 13:31:19 por maunix »
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Problemillas al leer de dos puertos analógicos..............
« Respuesta #7 en: 10 de Marzo de 2007, 14:19:37 »
se gracias maunix y 10000 disculpas por mi poca atencion a lo q escribo  :-)
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com