Autor Tema: cambiar estado de las entradas  (Leído 2099 veces)

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

Desconectado ojkarin

  • PIC10
  • *
  • Mensajes: 39
cambiar estado de las entradas
« en: 27 de Noviembre de 2009, 06:27:23 »
Hola a todos, estoy trabajando con el Pic Simulator Ide y el pic 16F877A y me ha surguido una dudilla:
Tengo alguno de los pines del puerto B configurado como entradas, eso sin ningún problema. El caso es que yo quiero que esa entrada, aunque esté activa, poderla ignorar desde el pic internamente si se dan determinadas condiciones ya que si esta activá y yo le doy la instrucción de ponerla a cero no se cambia (lo cual me parece lógico ya que se trata de una entrada).
He probado con "TOGGLE" y lo que me ocurre es que se me quita la T de cambiar el valor de la entrada pero la entrada sigue activa.
También se me habia ocurrido hacer una parte del programa teniendo en cuenta esa entrada y la otra parte sin tenerlo en cuenta  y haciendo prioritaria la orden interna, pero eso creo que haría que mi programa fuera muy largo.
Esto es todo, si alguien sabe alguna forma de hacerlo pues muchas gracias, si no lo haré en dos partes. Hace poco que estoy trabajando con esto y la verdad que aún me faltan de enterarme de muchos "truquillos"...
Saludos y gracias

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: cambiar estado de las entradas
« Respuesta #1 en: 27 de Noviembre de 2009, 11:41:00 »
No te entiendo, pero de todas maneras los pin digitales se pueden cambiar en tiempo de ejecucion:

'Ejemplo de cambio de configuracion de 1 pin I/O en tiempo de ejecucion.
AllDigital  'Los pin tipo digitales
TRISA = %00011111  'Configuracion E/S puerto A
TRISB = %00000000  'Puerto B como salidas
'********
main:
   If RA.0 = 1 Then TRISB.0 = 0  'RB.0 COMO SALIDA
   If RA.0 = 0 Then TRISB.0 = 1  'RB.0 COMO ENTRADA
Goto main
End
'*********

Pero hacer esto puede ser peligroso si antes no se tuvo en cuenta, ya que se puede provocar un daño en el Pic o en el componente asociado al pin.
Saludos desde Granada, España.

Desconectado ojkarin

  • PIC10
  • *
  • Mensajes: 39
Re: cambiar estado de las entradas
« Respuesta #2 en: 30 de Noviembre de 2009, 06:00:42 »
Hola, gracias por responder. A lo mejor me extendí demasiado en lo que quería decir. Simplemente se trata de que si hay alguna manera de ignorar una entrada sin tener que tener en cuenta si está activa o no. Que el pic tome el control sin importar lo que haya a la entrada.
Si cuando quiero que tome el control el pic cambio la entrada por salida y luego lo vuelvo a cambiar, ¿eso dañaría el pic?
Saludos y gracias.

Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4919
Re: cambiar estado de las entradas
« Respuesta #3 en: 30 de Noviembre de 2009, 07:35:55 »
pues claro que se puede hacer, en el caso que que puede poner a esperar a micro que se active esperando la correspondiente orden para activar el modulo que use, Ej, USB,UART,I2C etc, hay muchas manera de dejar el micro en modo Sleep(durmiendo) o activo esperando orden.
creo que esa es tu respuesta??
Saludo

Desconectado ojkarin

  • PIC10
  • *
  • Mensajes: 39
Re: cambiar estado de las entradas
« Respuesta #4 en: 30 de Noviembre de 2009, 07:53:26 »
Gracias, pero no, no es esa mi respuesta.
Yo me refiero a ignorar una entrada pero mientrar el pic sigue funcionando y ejecutando otras instrucciones.
Por ejemplo, tengo una entrada que me dice que tengo que activar un motor y el pic da orden de activarlo.
Por otra entrada tengo un sensor que me dice que tengo que parar ese motor y en ese momento lo para y ejecuta otras instrucciones pero, aunque la primera entrada esté activa, el motor no debe funcionar.
Espero que así se entienda mejor.
Un saludo

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: cambiar estado de las entradas
« Respuesta #5 en: 30 de Noviembre de 2009, 10:14:46 »
Pero para eso no vale nada de lo anterior, por eso al principio te decía que no te entendía. Para hacer lo que quieres y algunas cositas mas se inventaron las variables tipo flag o también llamadas semáforos.
Un ejemplo:

'Ejemplo de inhibición de entrada.
Dim ctr_ra0 as byte '(Flag) ctr_ra0 = 0 inhibe entrada, control entrada activación motor
AllDigital  'Los pin tipo digitales
TRISA = %00011111  'Configuración E/S puerto A
TRISB = %00000000  'Puerto B como salidas
'********
ctr_ra0=1 'Entrada activa por defecto.
'********
main:
   If RA.0 = 1 and ctr_ra0 =1 Then TRISB.0 = 1  'RB.0 = 1 motor on y control entrada motor
   If RA.1 = 1 Then 'Inhibe entrada control motor, para motor
     crt_ra0 = 0 'Entrada inactiva control motor
     RB.0 = 0 'Motor off
   endif
Goto main
End
'*********
Saludos desde Granada, España.

Desconectado jansuini

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 566
Re: cambiar estado de las entradas
« Respuesta #6 en: 30 de Noviembre de 2009, 13:51:02 »
Hola:
Para no marearte ,la cosa es sencilla ,deberías crear una variable intermedia con los bit que te interesa ingnorar puestos en 0 ,luego hacer una AND entre esta variable y el registro de entrada del puerto ,el resultado de la operación te dira que entradas están en 1 .
Sds.
Jorge

Desconectado ojkarin

  • PIC10
  • *
  • Mensajes: 39
Re: cambiar estado de las entradas
« Respuesta #7 en: 01 de Diciembre de 2009, 05:24:20 »
Gracias a todos, ya lo he solucionado usando una variable intermedia y un if. La verdad que esa era mi primera opción pero era por saber si se podía hacer de una manera directa ya que aun me falta práctica con esto de los pic.
Saludos a todos.


 

anything