Autor Tema: CCS e/s PORTC salidas inestables pin 2 3 4  (Leído 2955 veces)

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

Desconectado Berto

  • PIC16
  • ***
  • Mensajes: 191
CCS e/s PORTC salidas inestables pin 2 3 4
« 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)
*/

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2060
Re: CCS e/s PORTC salidas inestables pin 2 3 4
« Respuesta #1 en: 10 de Agosto de 2015, 18:55:32 »
Amigo, tienes un problema con el direccionamiento de los puertos del pic, aqui te coloco un enlace donde te explican como direccionar los puertos entre otras cosas, espero te aclare el problema  :mrgreen:


Saludos

Conectado AleSergi

  • PIC16
  • ***
  • Mensajes: 209
Re: CCS e/s PORTC salidas inestables pin 2 3 4
« Respuesta #2 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)



Desconectado Berto

  • PIC16
  • ***
  • Mensajes: 191
Re: CCS e/s PORTC salidas inestables pin 2 3 4
« Respuesta #3 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?

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: CCS e/s PORTC salidas inestables pin 2 3 4
« Respuesta #4 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.

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2060
Re: CCS e/s PORTC salidas inestables pin 2 3 4
« Respuesta #5 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

Desconectado Berto

  • PIC16
  • ***
  • Mensajes: 191
Re: CCS e/s PORTC salidas inestables pin 2 3 4
« Respuesta #6 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?

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2060
Re: CCS e/s PORTC salidas inestables pin 2 3 4
« Respuesta #7 en: 12 de Agosto de 2015, 12:32:09 »
Ok aqui 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

Desconectado Berto

  • PIC16
  • ***
  • Mensajes: 191
Re: CCS e/s PORTC salidas inestables pin 2 3 4
« Respuesta #8 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


 

anything