Autor Tema: Tengo una pregunta sobre Freescale, como testeo un pulsador y prendo un led?  (Leído 13396 veces)

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

Desconectado cicloide2

  • PIC18
  • ****
  • Mensajes: 359
Hola eso, como serian las lineas simples de codigo para testear un pulsador en el pinX de un puerto y en funcion de esta respuesta encender un led, en C?

Con los PIC y en asm lo se hacer pero con los Freescale y en C no, se como configurar los pines como entradas y salidas con PTXDD pero no se como atender a un pulsador, como hago esto que debe ser tan simple para lapersona que quiera responder?

Gracias. :-/ :-/ :( :-/ :-/

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Tengo una pregunta sobre Freescale, como testeo un pulsador y prendo un led?
« Respuesta #1 en: 10 de Mayo de 2012, 20:20:35 »
Hola, siempre referite al archivo H correspondiente a tu familia. Suponete que el PORTB0 es el port de manejo del led y PORTB1 el pulsador

Código: [Seleccionar]
if ( PTBD_PTBD1 )
 {
    PTBD_PTBD0 = 1; // Prende
 }
 else
 {
    PTBD_PTBD0 = 0; // Apaga
 }

Saludos !

Desconectado cicloide2

  • PIC18
  • ****
  • Mensajes: 359
Re: Tengo una pregunta sobre Freescale, como testeo un pulsador y prendo un led?
« Respuesta #2 en: 10 de Mayo de 2012, 20:38:46 »
Gracias RICHI777, si que sos rapido y se agradeces, ya lo estoy probando.

Muchisimas pero muchicimas  gracias, (soy novato y esto es oro, va a ser mi segunda practica). ((:-))

Estoy haciendo pruevas con el MC9S08SH8, sin cristal externo, logre hacer parpadear un led sin precicion (con la sentencia for), espero poder seguir abanzando y lograr hacerlas con precicion utilizando los TIM, con info de la web y de foros.

Salu2 y espero no te moleste si te hago alguna pregunta. :-/ :mrgreen: :-/  
« Última modificación: 10 de Mayo de 2012, 21:28:25 por cicloide2 »

Desconectado cicloide2

  • PIC18
  • ****
  • Mensajes: 359
Re: Tengo una pregunta sobre Freescale, como testeo un pulsador y prendo un led?
« Respuesta #3 en: 10 de Mayo de 2012, 20:47:25 »
RICHI777, cuando te refieres a que me refiera (valga la redundancia) al archivo H de la familia de micro que este utilizando es la que coloca Code Warrior como #include <hidef.h> o a la #include "derivative.h" ?

Si es asi, que es lo que tengo que buscar precisamente en esta .h y como accedo a su contenido, yo probe parandome sobre ellas , boton derecho del mouse >preproces (y aparecen un monton de lineas de codigo) y las mismas cosas tanto para #include <hidef.h> como para #include "derivative.h".
Gracias.
« Última modificación: 10 de Mayo de 2012, 21:04:38 por cicloide2 »

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Tengo una pregunta sobre Freescale, como testeo un pulsador y prendo un led?
« Respuesta #4 en: 10 de Mayo de 2012, 21:01:01 »
Hola. No, ese no. Es el que corresponde a la familia de micro que estas usando. Ejemplo, en este momento estoy usando un HCs08GW, entonces el archivo H que incluye toda la definición de ports, etc es MC9S08GW64.h

Normalmente los encontras en este folder.

..\Program Files\Freescale\CodeWarrior for Microcontrollers V6.1\lib\hc08c\device\include

Saludos !

Desconectado cicloide2

  • PIC18
  • ****
  • Mensajes: 359
Re: Tengo una pregunta sobre Freescale, como testeo un pulsador y prendo un led?
« Respuesta #5 en: 10 de Mayo de 2012, 21:10:26 »
YA ME ESTOY FIJANDO GRACIAS. YO TENGO LA V6.3 DE CODE WARRIOR.

PERO YA ME FIJO Y COMENTO.

GRACIAS. :-/

Desconectado cicloide2

  • PIC18
  • ****
  • Mensajes: 359
Re: Tengo una pregunta sobre Freescale, como testeo un pulsador y prendo un led?
« Respuesta #6 en: 10 de Mayo de 2012, 21:18:29 »
AHORA SI VOS DECIS, EN LA VENTANA QUE CONTIENE EL ARBOL CON TODO LO CONTENIDO EN EL PROYECTO (NORMALMENTE LA SUB VENTANA QUE CODE WARRIOR DESPLIEGA A LA IZQUIERDA DE LA VENTANA DEL CODIGO, AHI ENCONTRE EL .h QUE EN MI CASO ES main.c>derivative.h> MC9S08SH8.h (NO ESTOY UTILIZANDO PROCES EXPERT ESTOY TRATANDO DE APRENDER SIN ESTA GUIA).

SALUDOS, GRACIAS. :-/
« Última modificación: 10 de Mayo de 2012, 21:29:34 por cicloide2 »

Desconectado cicloide2

  • PIC18
  • ****
  • Mensajes: 359
Re: Tengo una pregunta sobre Freescale, como testeo un pulsador y prendo un led?
« Respuesta #7 en: 13 de Mayo de 2012, 13:13:07 »
RICHI777 aca dejo mi umilde codigo, gracias a ti :
Código: C
  1. #include <hidef.h> /* for EnableInterrupts macro */
  2. #include "derivative.h" /* include peripheral declarations */
  3. #include <MC9S08SH8.h>
  4.  
  5.  
  6. void main(void) {
  7.  
  8.    
  9.     PTBD_PTBD7=0 ; //inicializo PTB7 en 0
  10.     PTBDD_PTBDD7=1;//configuro PTB7 como salida
  11.     PTBDD_PTBDD0=0;//cofiguro  PTB0 como entrada
  12.  
  13.  
  14.   EnableInterrupts; /* enable interrupts */
  15.   /* include your code here */
  16.  for(;;){
  17.  
  18.  if (PTBD_PTBD0==0) //pregunto si PTB0 es igual a 0
  19.        
  20.        PTBD_PTBD7=1;//encender el led
  21.  
  22.   else
  23.        PTBD_PTBD7=0;//apagar el led
  24.   }
  25.    
  26.   /*La coneccion del pulsador es
  27.  
  28.   VCC
  29.    |
  30.    |
  31.    |                   ------------>PTB0 del micro
  32.     Resistencia 4.7K  |
  33.                       |
  34.                       |
  35.            Pulsador  |
  36.                       |
  37.                       |
  38.                       - GND
  39.                      
  40.    La coneccion del led es
  41.    
  42.     PTB7
  43.      |
  44.      |   anodo              
  45.     led  
  46.      |   catodo
  47.      |
  48.      _gnd
  49.                      
  50.   De la manera que conectete el pulsador el led deberia encender
  51.   solo cuando precione el pulsador .
  52.  Ahora quisiera agregarle un antirebote por sofware y aprender a utilizarlas Pull-Up intrnas en cuanto tenga algo lo subo :-/ :lol: :-/    Gracias.
  53.   */
  54.    }

              
« Última modificación: 15 de Mayo de 2012, 19:16:37 por cicloide2 »

Desconectado cicloide2

  • PIC18
  • ****
  • Mensajes: 359
Re: Tengo una pregunta sobre Freescale, como testeo un pulsador y prendo un led?
« Respuesta #8 en: 13 de Mayo de 2012, 15:00:17 »
Aca el mismo codigo pero con dos led, solo esas modificaciones (todabia sin antirrebotes ni pull-up iternas), lo unico que cuando intento compilarlo me dice que falta una "{"
Código: C
  1. #include <hidef.h> /* for EnableInterrupts macro */
  2. #include "derivative.h" /* include peripheral declarations */
  3. #include <MC9S08SH8.h>
  4.  
  5.  
  6. void main(void) {
  7.  
  8.     PTCD_PTCD0=0 ; //inicializo PTC0 en 0
  9.     PTBD_PTBD7=0 ; //inicializo PTB7 en 0
  10.     PTBDD_PTBDD7=1;//configuro PTB7 como salida
  11.     PTCDD_PTCDD0=1;//configuro PTC0 como salida
  12.     PTBDD_PTBDD0=0;//cofiguro  PTB0 como entrada
  13.  
  14.  
  15.   EnableInterrupts; /* enable interrupts */
  16.   /* include your code here */
  17.  for(;;)
  18.  {
  19.  
  20.  if (PTBD_PTBD0==0) //pregunto si PTB0 es igual a 0
  21.        PTBD_PTBD7=1;//enciende el led
  22.        PTCD_PTCD0=0;//APAGA el led    
  23.   else                                                           //la falta de la llave "{" me dice que es aca
  24.                                                                    //eso significa que esta faltando en la linea anterior no?
  25.                                                                    //pero no estaria bien asi como esta , no es posible ejecutar
  26.                                                                    // este if, else asi como esta donde esta el verddero problema, Gracias. :-/
  27.        PTBD_PTBD7=0;//apaga led
  28.        PTCD_PTCD0=1;//ENCIENDE el led
  29.  }
  30.  
  31.   /*La coneccion del pulsador es
  32.  
  33.   VCC
  34.    |
  35.    |
  36.    |                   ------------>PTB0 del micro
  37.     Resistencia 4.7K  |
  38.                       |
  39.                       |
  40.            Pulsador  |
  41.                       |
  42.                       |
  43.                       - GND
  44.                      
  45.    La coneccion del led es
  46.    
  47.     PTB7
  48.      |
  49.      |   anodo              
  50.     led  
  51.      |   catodo
  52.      |
  53.      _gnd
  54.                      
  55.  */
  56.    }
               
« Última modificación: 15 de Mayo de 2012, 19:26:26 por cicloide2 »

Desconectado cicloide2

  • PIC18
  • ****
  • Mensajes: 359
Re: Tengo una pregunta sobre Freescale, como testeo un pulsador y prendo un led?
« Respuesta #9 en: 13 de Mayo de 2012, 16:09:27 »
Correccion para que el codigo anterior funcione, lo que yo no entendia era por que con una sola intruccion luego de la sentencia  compilaba  y si funcionaba, o sea el caso anterior en el que tenia un solo LED.
Prueba y error, descubri que para que resuelva varias condiciones lugo del for o el else estas no pueden estar sin ser agrupadas dentro de un par de llaves "{}".
Con el ejemplo anterior no fue necesario pues era una sola intruccion luego de la sentencia, pero en este caso son dos intrucciones luego de la sentencia, (me gustaria que alguien abanzado pueda decirme por que esto y si es correcto lo que deduge )

Aca el codigo:
Código: C
  1. #include <hidef.h> /* for EnableInterrupts macro */
  2. #include "derivative.h" /* include peripheral declarations */
  3. #include <MC9S08SH8.h>
  4.  
  5.  
  6. void main(void) {
  7.  
  8.     PTCD_PTCD0=0 ; //inicializo PTC0 en 0
  9.     PTBD_PTBD7=0 ; //inicializo PTB7 en 0
  10.     PTBDD_PTBDD7=1;//configuro PTB7 como salida
  11.     PTCDD_PTCDD0=1;//configuro PTC0 como salida
  12.     PTBDD_PTBDD0=0;//cofiguro  PTB0 como entrada
  13.  
  14.  
  15.   EnableInterrupts; /* enable interrupts */
  16.   /* include your code here */
  17.    for(;;){
  18.  if   (PTBD_PTBD0==0) //pregunto si PTB0 es igual a 0
  19.       {
  20.        PTBD_PTBD7=1;   //enciende el led  
  21.        PTCD_PTCD0=0;   //APAGA el led  
  22.        }
  23.  
  24.   else {
  25.        PTBD_PTBD7=0;   //apaga led    
  26.        PTCD_PTCD0=1;   //ENCIENDE el led
  27.       }
  28.      }
  29.     }
  30.   /*La coneccion del pulsador es
  31.  
  32.   VCC
  33.    |
  34.    |
  35.    |                   ------------>PTB0 del micro
  36.     Resistencia 4.7K  |
  37.                       |
  38.                       |
  39.            Pulsador  |
  40.                       |
  41.                       |
  42.                       - GND
  43.                      
  44.    La coneccion del led es
  45.    
  46.     PTB7
  47.      |
  48.      |   anodo              
  49.     led  
  50.      |   catodo
  51.      |
  52.      _gnd
  53.                      
  54.  */
                  Gracias. :lol:  
« Última modificación: 15 de Mayo de 2012, 19:31:11 por cicloide2 »

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Tengo una pregunta sobre Freescale, como testeo un pulsador y prendo un led?
« Respuesta #10 en: 13 de Mayo de 2012, 17:59:33 »
Felicitaciones, una cosita para decirte. Cuando pegas código te conviene poner la porción del mismo encerrado entre estos tags, de esta manera el visualizar del foro te lo formatea.

Lo escribo textual ...
"Abrir corchete" + code=c  + "Cerrar corchete"
....
"Abrir corchete" + /code  + "Cerrar corchete"

Saludos !

Desconectado cicloide2

  • PIC18
  • ****
  • Mensajes: 359
Re: Tengo una pregunta sobre Freescale, como testeo un pulsador y prendo un led?
« Respuesta #11 en: 13 de Mayo de 2012, 18:24:59 »
  Gracias RICHI77, si hago como tu dices me aparecera como a ti? asi con fondo gris y por ejemplo el ciclo infinito For no se confundira con un emoticon?

Corchetes     [copiado de code warrior]  asi? o debo incluir los signos "+"

Saludos y gracias  :-/        
« Última modificación: 13 de Mayo de 2012, 18:39:26 por cicloide2 »

Desconectado juanml

  • PIC10
  • *
  • Mensajes: 30

Desconectado cicloide2

  • PIC18
  • ****
  • Mensajes: 359
Re: Tengo una pregunta sobre Freescale, como testeo un pulsador y prendo un led?
« Respuesta #13 en: 14 de Mayo de 2012, 19:45:14 »
Sin palabras  ((:-)) justo lo que intentaba hacer yo por mis propios medios , si me sirve? pero, claro estoy aprendiendo toda informacion, correccion o sugerencia  al respecto es bienvenida.
Tal vez para personas mas abanzadas esto sea una pabada, pero yo no se de C y muy poco de ASM en PIC, por lo tanto boy a estudiar ese codigo y quisa les tenga que hacer algunas preguntas a ustedes que son los que saben.

Gracias juanml. :-/

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Tengo una pregunta sobre Freescale, como testeo un pulsador y prendo un led?
« Respuesta #14 en: 14 de Mayo de 2012, 19:47:48 »
  Gracias RICHI77, si hago como tu dices me aparecera como a ti? asi con fondo gris y por ejemplo el ciclo infinito For no se confundira con un emoticon?

Corchetes     [copiado de code warrior]  asi? o debo incluir los signos "+"

Saludos y gracias  :-/         

Utilizando:
No contesto mensajes privados, las consultas en el foro