TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: olian en 06 de Octubre de 2009, 19:05:57
-
Estoy realizando un proyecto y me topé con problema en el puertoA donde puedo manejarlo bien como salida pero no como entrada.
Realicé un código simple, aparte para probar exclusivamente este puerto, y el código funciona perfecto salvo por el puertoA como entradas
Testeé que le llega tensión al pin correspondiente y además veo en el registro de funciones especiales cuando hago debugger
que no está recibiendo la señal, y que el TRISA se configura tal como se lo pido. El puerto B responde sin problema para lectura como escritura
/////////////////////////////////////////////////////////
//PORTx para Leer
//LATx para Escribir
////////////////////////////////////////////////////////
#include "P18F4620.h" // <pic18.h> + config bits //
#include <stdlib.h>
#include <stdio.h>
#include <delays.h>
//
#define Salida1 LATAbits.LATA0
#define Entrada1 PORTAbits.RA1
#define Entrada2 PORTAbits.RA2
#define Salida2 LATAbits.LATA3
void main()
{
TRISAbits.TRISA0 = 0; // is output
TRISAbits.TRISA1 = 1; // is input
TRISAbits.TRISA2 = 1; // is input
TRISAbits.TRISA3 = 0; // is output
//PuertoB como Salida
LATB=0x00;
LATA=0x00;
///////Con esto seteo el puertoA como digital//////////////////
CMCON=0x07;//Desactiva comparadores////////////////////////////
ADCON0=0x00;//ADC desactivado//////////////////////////////////
ADCON1=0x06;//Entradas y salidas digitales/////////////////////
///////////////////////////////////////////////////////////////
TRISB=0x00;
TRISA=0xFF;
Salida1=1;
Salida2=1;
while(1){
PORTB=0xFF;
Delay10KTCYx(255);
PORTB=0x00;
Delay10KTCYx(255);
if (Entrada1==1)
{
while (Entrada1==1)
{
PORTB=0xFF;
}
}
if (Entrada2==1)
{
while (Entrada2==1)
{
PORTB=0x00;
}
}
}
}
-
HOLA QUE TAL.... SEGUN TU PROBLEMA ES CONFIGURAR EL PUERTO A COMO ENTRADA Y/O SALIDA VERDAD, PUES YO LO HE INTENTADO Y ME HA RESULTADO 100% CON EXITO PERO NO PROGRAMO EN C SINO EN ASSEMBLER DEJAME HACER EL CODIGO EN C PARA SUBIRLO POR LO PRONTO TE DEJO EL CODIGO EN ASSEMBLER POR SI TE SIRVE DE ALGO O QUISIERAS PROBARLOOK... SI SABER MUCHO DE PROGRAMCION C NI ABERLO INTENTADO ANTES TE DIGO CUANDO MANDAS EL CLRF AL REGISTRO ADCON0 (SEGUSRO QUE ESTA BIEN SI CHEKAS LA HOJA DE DATOS) PARA HACER QUE TENGAS PORTA COMO I/O DIGITAL TIENES QUE DESACTIVAR CORRECTAMENTE EL ADC NO SOLO DESACTIVARLO SINO CONFIGURAR PINES Y CANALES DIGITALES ASI QUE CHEKA BIEN EL DATASHEET O MIRA LA PROGRAMACION EN .ASM Y GUIATE UN POCO Y PUES SOLO CAMBIAS TU FUNCION DECLARADA EN EL MAIN DE TU PROGRAMACION C... ASTA PRONTO NOS VEMOS.
BYE!! SALUDOS...
PT: EL PROGRAMA LO HICE EN MPLAB IDE V7.40 POR SI TE INTERESA MODIFICARLO DESDE ALLI.
-
Osukaru: En las Reglas del Foro (http://www.todopic.com.ar/foros/index.php?action=globalAnnouncements;id=1) pedimos que no se escriba todo en mayúsculas (Punto número 8º) , entre otras cosas importantes, te ruego que las leas y las apliques a tus intervenciones en nuestro Foro. Muchas gracias.
-
hola que tal redpic gracias por tu observacion lo tendre en cuenta ....perdon jajajajajjajajajajaja sorry
saludos!!!