TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Berto en 10 de Agosto de 2015, 18:23:10

Título: CCS e/s PORTC salidas inestables pin 2 3 4
Publicado por: Berto en 10 de Agosto de 2015, 18:23:10
Estoy utilizando el PIC <16f877.h> Cuando declaro todo el PORTC como Entradas todo va bien
Pero si hago esto.....

#BYTE PORTC=0X07
#BYTE TRISC=0XC7 //   1100 0111

#bit SALIDA=portc.2

main{

set_tris_C(0b11000111);


output_high(PIN_c2); ////Ninguna de las dos formas es fiable...
SALIDA=1              ////....entre PIN 2 a 4


}
/*E tenido que utilizar El PORTA como salida para que todo funcione.
De todas maneras me gustaria saber que estoy haciendo mal CON EL PORTC
Expecificamente pin 2 3 4 de PORTC dicen esto

RC2/CCP1
RC3/SCK/SCL
RC4/SDI/SDA
(Utilizo el simulador proteus)
*/
Título: Re: CCS e/s PORTC salidas inestables pin 2 3 4
Publicado por: RALF2 en 10 de Agosto de 2015, 18:55:32
Amigo, tienes un problema con el direccionamiento de los puertos del pic, aqui (https://www.google.co.ve/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CCMQFjABahUKEwiJ37eJwJ_HAhVMGB4KHZ61Dao&url=http%3A%2F%2Fwww.unioviedo.es%2Fate%2Fmanuel%2FESMC-EyA-Bolonia%2FProgramacion-en-C.pdf&ei=KB3JVYmrKcyweJ7rttAK&usg=AFQjCNG3CxJiqBERFlHEh6KR9lu3K1GAhA&sig2=FZxdN5rjJuMpIXgXuOcITg) te coloco un enlace donde te explican como direccionar los puertos entre otras cosas, espero te aclare el problema  :mrgreen:


Saludos
Título: Re: CCS e/s PORTC salidas inestables pin 2 3 4
Publicado por: AleSergi en 10 de Agosto de 2015, 21:26:59
si estás en CCS, mejor dejá de lado los tris y notris....    de eso se ocupa el compilador por Vos, a menos que requieras si o si manejarlo Vos, existe una directiva para hacerlo "a mano".
Mientras  ese no sea el caso, ningún tris!

Emplea el wizzard project, es util para configurar fusibles y circuiteria auxliar.
no veo en tu código unas directrices que suelen ir despues del main()...  tales como:

   setup_oscillator(OSC_4MHZ);
   setup_adc_ports(AN0);
   setup_adc(ADC_CLOCK_INTERNAL);   
   setup_spi(FALSE);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_32);
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
   setup_timer_2(T2_DISABLED,0,1);
   setup_ccp1(CCP_CAPTURE_FE);
   enable_interrupts(INT_TIMER0);
   enable_interrupts(INT_TIMER1);
   enable_interrupts(INT_CCP1);
   enable_interrupts(GLOBAL);

y yerbas así... (son ejemplo , no es para tu caso)


Título: Re: CCS e/s PORTC salidas inestables pin 2 3 4
Publicado por: Berto en 11 de Agosto de 2015, 11:37:32
No se de lo que me estais ablando es una paja que no e necesitado, donde todabia no me e metido. Solo quise poner lo fundamental lo que se que antes funcionaba. Esplicarme esto:

//ESTOY COMPLETAMENTE SEGURO DE QUE ESTE CODIGO FUNCIONA (Es original no hay nada modificado por my)
//PERO YA SEA POR EL COMPILADOR CCS O PROTEUS NO CONSIGO REALIZAR LECTURA ALGUNA DEL KEYPAD-PHONE 3X4
#include <16f877.h>
#FUSES NOWDT, XT, PUT, NOPROTECT, BROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG
#use delay(clock=4M)

#DEFINE use_portd_lcd TRUE
#DEFINE use_portb_kbd TRUE

#include <lcd.c>
#include <kbd.c>
#include <stdio.h>

#use fast_io(B)
#use fast_io(D)

#BYTE PORTA=0X07
#BYTE TRISA=0X85

#BYTE PORTB=0x06
#BYTE TRISB=0X86

#BYTE PORTC=0X07
#BYTE TRISC=0X87

#BYTE PORTD=0X08
#BYTE TRISD=0X88

#bit alarma=portc.0
#bit cerradura=portc.1

void main (){
   lcd_init();
   kbd_init();
   port_b_pullups(true);
   
   long comando;
   long acumulador;
   long total;
   long numero;
   long  intentos;
   
   comando=0;
   acumulador=0;
   total=0;
   numero=0;
   intentos=0;
   
   lcd_gotoxy(1,1);
   lcd_putc("CODIGO: ");
   lcd_gotoxy(9,1);
   
   trisc=0x00;
   portc=0x00;
   
     
   while(true){
comando=kbd_getc();
   
/*//SI AÑADO ESTE CODIGO................   
    delay_ms(1000);
for (total=0;total<1000;total++){
for(numero=0;numero<5;numero++){ 
comando=kbd_getc();
printf(lcd_putc," %x",comando); delay_ms(1000);
}
lcd_putc("\f");
}     
//.........kbd_getc(); NO REALIZA LECTURA ALGUNA SIEMPRE DEVUELBE 00   */     
     
      if(comando!=0 & comando!=42 & comando!=35){
         lcd_putc(comando);
         numero=comando-48;
         total=acumulador+numero;
         acumulador=total*10;
      }
      if(comando==42){
         if(total==2365){
            lcd_gotoxy(1,2);
            lcd_putc("CODIGO CORRECTO");
            cerradura=1;
         }
         if(total!=2365){
            lcd_gotoxy(1,2);
            lcd_putc("ERROR");
            delay_ms(200);
            lcd_putc("\f");
            lcd_gotoxy(1,1);
            lcd_putc("CODIGO: ");
            lcd_gotoxy(9,1);
            comando=0;
            acumulador=0;
            total=0;
            numero=0;
            intentos=intentos+1;
            if(intentos==3){
               while(intentos==3){
               alarma=1;}
            }
           
         }
      } 
   
   }
}

Las salidas son erroneas incluso en PORTB este program que no hice yo Y antes funcionaba ¿Tengo que corregir algo en opciones de compilacion?
Título: Re: CCS e/s PORTC salidas inestables pin 2 3 4
Publicado por: PalitroqueZ en 11 de Agosto de 2015, 13:56:05
No se de lo que me estais ablando es una paja que no e necesitado, donde todabia no me e metido. Solo quise poner lo fundamental lo que se que antes funcionaba.


pues me temo que debes leer un poco mas, porque precisamente lo que te han escrito tiene que ver mucho con el problema que tienes.

Título: Re: CCS e/s PORTC salidas inestables pin 2 3 4
Publicado por: RALF2 en 11 de Agosto de 2015, 16:09:50
No sera un problema en la conexion del teclado a tu pic?
Podrias mostrar la conexion que haz hecho?
Porque no pruebas simular el programa y ver si este funciona  :mrgreen:

Saludos
Título: Re: CCS e/s PORTC salidas inestables pin 2 3 4
Publicado por: Berto en 11 de Agosto de 2015, 17:11:26
La pagina que me dais a leer es sobre C en general, apenas habla algo de los PIC al final y no muy detallado
Las conexiones actuales que no funcionan ahora, son las mismas que hacve un mes cuando funcionaban del proyecto adjunto que incluyo
Actualmente no puedo manejar un KEYPAD-PHONE como antes siempre tengo que utilizar DIPSW o algo a si
La manera que tengo de detallar las salidas ya no es fiable escepto en PORTCA (todas)

MAS

E visto que muchos programas no hacen esto

#BYTE PORTB=0X07 ///Supongo que si no se asigna el micro siempre le dara una por defecto
#BYTE TRISB=0X85 ///No se le pide cuales son entradas o salidas ¿ Cual es la ventaja de declararlo ?
                 ///En ocasiones ni siquiera se aplica set_tris_C(0x85);
                 ///¿los pin 0 a 6 son tanto E/S si no se aplica esto?
Título: Re: CCS e/s PORTC salidas inestables pin 2 3 4
Publicado por: RALF2 en 12 de Agosto de 2015, 12:32:09
Ok aqui (https://www.google.co.ve/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CCQQFjABahUKEwiWsNm37aPHAhUGlB4KHVo0Dnw&url=http%3A%2F%2Fiesmachado.org%2Fweb%2520insti%2Fdepart%2Felectr%2Fapuntes%2Ffiles%2Fdpe%2Fcurso2%2Fproyectos%2FPIC%2520PROGRAMACION%2520EN%2520C%2FTEMA_7%2520FUNCIONES%2520EN%2520%2520CCS.pdf&ei=mGXLVZaED4aoetrouOAH&usg=AFQjCNEv4pEhHIsulCRGMpCaDgBQdVeXyQ&sig2=MxTSJWGY2SjsqhGwWMEPiw) te dejo ese enlace que te explicas las directivas para configurar los puertos de entrada y salida del pic en la pagina 14, empiesa la cosa.
La idea seria si puedes simular el programa paso a paso y ver donde este te esta fallando.

Saludos
Título: Re: CCS e/s PORTC salidas inestables pin 2 3 4
Publicado por: Berto en 24 de Agosto de 2015, 13:49:47
Si. Este a estado bien y me a llevado a otros enlaces igual de validos. Gracis