Autor Tema: Algoritmo 74HC164 Expansor I/O con MikroC  (Leído 5672 veces)

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

Desconectado jonathanPIC888

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
Re: Algoritmo 74HC164 Expansor I/O con MikroC
« Respuesta #15 en: 13 de Julio de 2009, 18:25:49 »
Ahi el circuito dió sus primeras señales de vida pero no hace lo que el código dice, la verdad ya no se que más modificar:
Código: C
  1. // Pines intercambiables según necesidades del usuario.
  2. #define ena_ser   PORTA.F3      // Pin HABILITACIÓN.
  3. #define ckl_ser   PORTA.F4      // Pin RELOG.
  4. #define dat_ser   PORTA.F5      // Pin DATOS.
  5.  
  6. // Declaramos la función.
  7. char lee_entradas();
  8.  
  9. char lee_entradas() {
  10.   char contador,ei,resultado;
  11.  
  12.     ckl_ser = 1;       // Pone el pin de ckl a nivel alto.
  13.     ena_ser = 0;      // Guarda el estado de las entradas.
  14.     ena_ser = 1;      // Habilita al 74165 para recibir nuevos datos.
  15.      
  16.       ei = 0;
  17.       for(contador=1;contador<=8;++contador) {  // Genera clock para hacer el corrimiento de bits de la estructura.
  18.  
  19.         if(dat_ser=1){ei+=1;}
  20.         ei<<1;
  21.  
  22.            ckl_ser = 0;    // Pone a nivel bajo el pin de ckl.
  23.            ckl_ser = 1;    // Pone a nivel alto el pin de ckl.
  24.            resultado = ei;
  25.   }
  26.  
  27.   return(ei);
  28.   ena_ser = 0;
  29. }
  30.  
  31. void main()     {
  32.   int i;
  33.   TRISA.F5 = 0x01;
  34.   TRISA.F4 = 0x00;
  35.   TRISA.F3 = 0x00;
  36.  
  37.   TRISB = 0x00;
  38.  while(1) {
  39.   i = lee_entradas();
  40.   PORTB = i;
  41.       }
  42.  
  43.    }

PD: Adjunto el esquemático del isis junto con el archivo para simularlo.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Algoritmo 74HC164 Expansor I/O con MikroC
« Respuesta #16 en: 13 de Julio de 2009, 23:18:07 »
Prueba de esta manera:
Código: C
  1. // Pines intercambiables según necesidades del usuario.
  2. #define ena_ser   PORTA.F3      // Pin HABILITACIÓN.
  3. #define ckl_ser   PORTA.F4      // Pin RELOG.
  4. #define dat_ser   PORTA.F5      // Pin DATOS.
  5.  
  6. char lee_entradas() {
  7.   char contador,ei,resultado;
  8.  
  9.     ckl_ser = 1;       // Pone el pin de ckl a nivel alto.
  10.     ena_ser = 0;      // Guarda el estado de las entradas.
  11.     ena_ser = 1;      // Habilita al 74165 para recibir nuevos datos.
  12.      
  13.       ei = 0;
  14.       for(contador=1;contador<=8;++contador) {  // Genera clock para hacer el corrimiento de bits de la estructura.
  15.         if(dat_ser=1){ei+=1;}
  16.         if(contador<8){ei<<1;}
  17.  
  18.            ckl_ser = 0;    // Pone a nivel bajo el pin de ckl.
  19.            ckl_ser = 1;    // Pone a nivel alto el pin de ckl.
  20.   }
  21.   ena_ser = 0;
  22.   return(ei);
  23. }

Si no se coloca la linea if(contador<8){ei<<1;} el último bit leído provoca que se rote ei, perdiendo el bit7 e introduciendo un 0 en bit0, corrompiendo el byte recibido.
No contesto mensajes privados, las consultas en el foro

Desconectado jonathanPIC888

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
Re: Algoritmo 74HC164 Expansor I/O con MikroC
« Respuesta #17 en: 14 de Julio de 2009, 00:25:44 »
Sigue sin funcionar tanto en el simulador como en la práctica la verdad es rarísimo........... :shock: :shock: :shock: :lol:

Desconectado jonathanPIC888

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
Re: Algoritmo 74HC164 Expansor I/O con MikroC
« Respuesta #18 en: 14 de Julio de 2009, 00:33:21 »
Según como has detallado la función tiene que funcionar sin ningún drama , pero el tema es que no me muestra nada por el puerto B del micro no se que puede llegar a estar mal.

Desconectado jonathanPIC888

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
Re: Algoritmo 74HC164 Expansor I/O con MikroC
« Respuesta #19 en: 14 de Julio de 2009, 13:56:29 »
Puede ser que la función no me esté devolviendo el valor de ei ??? ya es la única que se me ocurre.  :(

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Algoritmo 74HC164 Expansor I/O con MikroC
« Respuesta #20 en: 14 de Julio de 2009, 15:55:31 »
Faltaban un = en el if  :mrgreen:

El ejemplo que probé en un 16F84A:
Código: C
  1. // Pines intercambiables según necesidades del usuario.
  2. #define ena_ser   PORTA.F2      // Pin HABILITACIÓN.
  3. #define ckl_ser   PORTA.F0      // Pin RELOG.
  4. #define dat_ser   PORTA.F1      // Pin DATOS.
  5.  
  6. char lee_entradas() {
  7.   char contador,ei;
  8.  
  9.     ckl_ser = 1;       // Pone el pin de ckl a nivel alto.
  10.     ena_ser = 0;      // Guarda el estado de las entradas.
  11.     ena_ser = 1;      // Habilita al 74165 para recibir nuevos datos.
  12.  
  13.       ei = 0;
  14.       for(contador=1;contador<=8;++contador) {  // Genera clock para hacer el corrimiento de bits de la estructura.
  15.         if(dat_ser==1){ei+=1;}
  16.         if(contador<8){ei<<=1;}
  17.  
  18.            ckl_ser = 0;    // Pone a nivel bajo el pin de ckl.
  19.            ckl_ser = 1;    // Pone a nivel alto el pin de ckl.
  20.   }
  21.   ena_ser = 0;
  22.   return(ei);
  23. }
  24.  
  25.  
  26. void main(){
  27.      char lectura;
  28.      TRISA.F1=1;
  29.      TRISA.F0=0;
  30.      TRISA.F2=0;
  31.      
  32.      TRISB=0;
  33.      
  34.      while(1){
  35.      delay_ms(100);
  36.      lectura=lee_entradas();
  37.      PORTB=lectura;
  38.      }
  39. }


Adjunto imagen del circuito.
Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado jonathanPIC888

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
Re: Algoritmo 74HC164 Expansor I/O con MikroC
« Respuesta #21 en: 14 de Julio de 2009, 16:44:05 »
Grandeeeeeeeeeeeeeeeeeeeeeeeeee Suki  :-/ :-/ :-/ :-/ :-/ :-/ :-/

Funcionó perfecto la librería !!!!!!!!!!!!!!  8)

Ahora el tema con el PIC18F2550 no funciona y estoy seguro que es por una mala configuración de los fuses.

Gracias por tu paciencia para ayudarme te estoy muy agradecido  :o

Desconectado jonathanPIC888

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
Re: Algoritmo 74HC164 Expansor I/O con MikroC
« Respuesta #22 en: 14 de Julio de 2009, 22:08:23 »
La librería no se como hacerla funcionar con el puerto A que bronca ...........funciona con los otros puertos.

Para colmo en mi entrenadora el 74HC165 está conectado al puerto A y no se como hacer. :lol: