Autor Tema: Posible fallo en el ADCON1  (Leído 1994 veces)

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

Desconectado Icat

  • PIC12
  • **
  • Mensajes: 68
Posible fallo en el ADCON1
« en: 13 de Junio de 2021, 22:13:49 »
Hola muy buenas, una vez más os voy ha dejar aquí un proyecto de proteus y un programa para el PIC18F4550 ya que tengo una pequeña duda que no he sabido resolver, en temas anteriores hable de los teclado matriciales para luego mandar la pulsación a través del USB, pero como esto se me estaba complicando mucho, he decidido tomarlo como una guerra  8) :D DIVIDE Y VENCERAS.

La cosa es que me he dispuesto a simular un teclado matricial con proteus, simplemente para asegurarme de que lo hago bien, de ahí que vereis que el programa no esta completo y que tiene delays de 300ms para poder ver como rota en cada columna.

El problema que estoy teniendo es con el ADCON1 he ido al aparatado del ADCON en el datasheet para verlo y yo se que en mi proyecto necesito 6 entradas analógicas, es por eso que yo en la instrucción ADCON1 pongo lo siguiente 0b1000 como indica el datasheet, el caso es que en proteus veo que el pin RB3/AN9 decide como "apagarse" y no entiendo el porque, he probado otros números por verificar el fallo y hay veces que no he tenido problema y otras me ha pasado exactamente lo mismo en el pin RB7, el caso es como he dicho más arriba, necesito seis entradas analógicas tres para unos sesores HALL y otras tres para potenciómetros de toda la vida.

Os dejo el programa y el proyecto de proteus para que los podáis descargar y así podamos resolver este enigma y si le sirve en un futuro a alguien pues oye aquí tendrá la explicación, un saludo y muchísimas gracias a todos como siempre.

P.D: El programa esta en XC8 V2.20
« Última modificación: 14 de Junio de 2021, 06:07:15 por Icat »

Desconectado Eduardo2

  • PIC24H
  • ******
  • Mensajes: 1004
Re:Posible fallo en el ADCON1
« Respuesta #1 en: 14 de Junio de 2021, 00:29:15 »
....
La cosa es que me he dispuesto a simular un teclado matricial con proteus, simplemente para asegurarme de que lo hago bien, de ahí que vereis que el programa no esta completo y que tiene delays de 300ms para poder ver como rota en cada columna.

El problema que estoy teniendo es con el ADCON1 he ido al aparatado del ADCON en el datasheet para verlo y yo se que en mi proyecto necesito 6 entradas analógicas, es por eso que yo en la instrucción ADCON1 pongo lo siguiente 0b1000 como indica el datasheet, el caso es que en proteus veo que el pin RB3/AN9 decide como "apagarse" y no entiendo el porque, he probado otros números por verificar el fallo y hay veces que no he tenido problema y otras me ha pasado exactamente lo mismo en el pin RB7, el caso es como he dicho más arriba, necesito seis entradas analógicas tres para unos sesores HALL y otras tres para potenciómetros de toda la vida.
...

Lo que subiste fue esto:
Código: [Seleccionar]
/*
 * File:   main.c
 * Author: minii
 *
 * Created on 16 de mayo de 2021, 1:37
 */


#include <xc.h>
#include "config.h"

unsigned char codigo[]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x98, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e, 0xff};
unsigned char tecla;

void main(void) {
   
    //set_all_digital();
    TRISA = 0b00000000;
    TRISD = 0x00;
    TRISB = 0xf0;
   
    //OPTION_REG = 0x7f;
   
    PORTA = 1;
   
    while(1){
       
        PORTB = 0xFE;
        if(RB4 == 0){tecla = 0;}
        if(RB5 == 0){tecla = 1;}
        if(RB6 == 0){tecla = 2;}
        if(RB7 == 0){tecla = 3;}
       
        PORTB = 0xFD;
        if(RB4 == 0){tecla = 4;}
        if(RB4 == 0){tecla = 5;}
        if(RB4 == 0){tecla = 6;}
        if(RB4 == 0){tecla = 7;}
       
        PORTB = 0xFB;
        if(RB4 == 0){tecla = 8;}
        if(RB4 == 0){tecla = 9;}
        if(RB4 == 0){tecla = 10;}
        if(RB4 == 0){tecla = 11;}
       
        PORTB = 0xF7;
        if(RB4 == 0){tecla = 12;}
        if(RB4 == 0){tecla = 13;}
        if(RB4 == 0){tecla = 14;}
        if(RB4 == 0){tecla = 15;}
       
        PORTD = codigo[tecla];
       
        if((RB4 && RB5 && RB6 && RB7)== 1){tecla = 16;}
    }
    return;
}

Donde no hay escrito nada de lo que comentas y lo único que se ve es que te faltó editar después de copiar la línea de IFs y que deberías activar las resistencias de pull-up
« Última modificación: 14 de Junio de 2021, 01:13:43 por Eduardo2 »

Desconectado Icat

  • PIC12
  • **
  • Mensajes: 68
Re:Posible fallo en el ADCON1
« Respuesta #2 en: 14 de Junio de 2021, 06:08:54 »
Ups disculpa me confundí de programa, culpa mía tanto en el primer mensaje como en este dejo el programa para descargar, disculparme.

Desconectado Icat

  • PIC12
  • **
  • Mensajes: 68
Re:Posible fallo en el ADCON1
« Respuesta #3 en: 15 de Junio de 2021, 10:39:54 »
Encontré el fallo y es que en el ADCON1 lo estaba configurando bien pero en el .h estaba configurando mal otra cosa concretamente en el Keypad_dir


 

anything