Autor Tema: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion  (Leído 25931 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion
« Respuesta #15 en: 08 de Enero de 2010, 21:02:28 »
Otra cosa el PIC16F887 tiene comparadores analogicos.

¿Le dices al programa que los deshabilite y deje el puerto como digital? Fijate que hay una intruccion ANsel= = de por medio que alguna vez has eliminado en el programa.


Fer.
Todos los días se aprende algo nuevo.

Desconectado janiro74

  • PIC10
  • *
  • Mensajes: 44
Re: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion
« Respuesta #16 en: 08 de Enero de 2010, 21:11:32 »
si si lo ke pasa es ke cuando lo hago con el 16f84a no es necesario y cuando lo hago con el 887 lo pongo y uso 8 de ntrada y 8 de salida
pero con los 2 pic me hacen cosas raras.
la intruccion select case simplificaria el programa dando le estabilidad ?
y como se haria ke esa es otra!!!!!

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion
« Respuesta #17 en: 08 de Enero de 2010, 21:15:08 »
No se como funciona mikrobasic.
Has probado con: while  (porta <=2)

De todas formas por mi ya por hoy es suficiente, espero que lo soluciones, mientras seguire pensando.

Fermin

Todos los días se aprende algo nuevo.

Desconectado janiro74

  • PIC10
  • *
  • Mensajes: 44
Re: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion
« Respuesta #18 en: 08 de Enero de 2010, 21:19:01 »
sisi muchas gracias por todo yo sigo probando ke hasta mañana a las 8 ke salga se guardia tengo tiempo
hasta pronto . ya os contaré

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion
« Respuesta #19 en: 08 de Enero de 2010, 21:20:21 »
Hola amigos, janiro pega tu diagrama pues si estas usando las entradas con resistencias pullup tu codigo no haria lo que esperas.

Saludos
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion
« Respuesta #20 en: 09 de Enero de 2010, 14:54:03 »
Hola Janiro:

He estado realizndo pruebas con tu programa. No tengo el MiKrobasic pero lo he simulado con el Pic Simulator IDE. Para ello he cogido tu programa y lo he adaptado a PSI. Decirte que funciona correctamente pero los cambios que he realizado son:
Como dices que quieres tener como maximo 2 salidas activas he cambiado:
-   porta<=2 por <=3
-   Delay_MS (40) por WaitMs 40. esto por que Delay_Ms no existe en PSI.
-   End if   por   Endif
-   He recolocado la sintaxis del programa que  no se por que razon no lo reconoce el PSI.
-   Los Wait los he comentado porque si no la simulacion era muy lenta, pero funciona bien con ella habilitada.

Te adjunto el codigo:
Código: [Seleccionar]
Define CLOCK_FREQUENCY = 4  'Frecuencia del reloj en Mhz

TRISA = %11111111
TRISB = %00000000
main:

'WaitMs 40
PORTB = 0

While PORTA <= 3
If PORTA.0 = 1 Then
PORTB.0 = 1
Else
PORTB.0 = 0
'WaitMs 40
Endif

If PORTA.1 = 1 Then
PORTB.1 = 1
Else
PORTB.1 = 0
'WaitMs 40
Endif

If PORTA.2 = 1 Then
PORTB.2 = 1
Else
PORTB.2 = 0
'WaitMs 40
Endif

If PORTA.3 = 1 Then
PORTB.3 = 1
Else
PORTB.3 = 0
'WaitMs 40
Endif

If PORTA.4 = 1 Then
PORTB.4 = 1
Else
PORTB.4 = 0
'WaitMs 40
Endif

Wend
Goto main
End
Por que no pruebas a eliminar las eliminar las lineas del endif

Fermin
« Última modificación: 09 de Enero de 2010, 18:17:05 por Fer_TACA »
Todos los días se aprende algo nuevo.

Desconectado janiro74

  • PIC10
  • *
  • Mensajes: 44
Re: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion
« Respuesta #21 en: 10 de Enero de 2010, 15:19:21 »
acabo de hacer el programa haciendo los cambios a mikrobasic osea poner delay_ms, end if etc pero no funciona es decir ke cuando pulso porta.0 se enciende el led de portb.0 pero si pulso un tercer pulsado se enciende un tercer led .... y un cuarto..... y un quinto despues lo he cargado en el simulator id pero no se muy bien como va. he cargado el hex. he abierto una pantalla con 8 led board y microcontroler view con el 16f84a y cuando pongo en on porta.0 no se enciende portb.0 . ke es lo ke hago mal?


program ecli
TRISA = %11111111
TRISB = %00000000
main:

delay_ms(40)
PORTB = 0

While PORTA <= 3
   If PORTA.0 = 1 Then
      PORTB.0 = 1
   Else
      PORTB.0 = 0
delay_ms(40)
   end if

   If PORTA.1 = 1 Then
      PORTB.1 = 1
   Else
      PORTB.1 = 0
delay_ms(40)
   End if

   If PORTA.2 = 1 Then
      PORTB.2 = 1
   Else
      PORTB.2 = 0
delay_ms(40)
   End if

   If PORTA.3 = 1 Then
      PORTB.3 = 1
   Else
      PORTB.3 = 0
delay_ms(40)
   End if

   If PORTA.4 = 1 Then
      PORTB.4 = 1
   Else
      PORTB.4 = 0
delay_ms(40)
   End if

Wend
Goto main
End



ah!!! y otra cosa cuando en mi probador pulso por ejemlo porta.1 se enciende portb.1 pero ademas los otros port  de por debajo tambien se enciende por un instante

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion
« Respuesta #22 en: 10 de Enero de 2010, 15:26:15 »
Con PSI la secuencia seria:
- Ejecutas PSI
- Seleccionas el tipo de micro, ejemplo 16F84
- Abres el tool el basic compiler y copias el programa que adjunté.
-Lo compilas con F9
-Como bien dices el 8-leds board
-En Rate seleccionas la velocidad, por ejmplo: Normal o fast.
Le das a Star simulation y verás como funciona.

Si ves que funciona se puede pensar que o bien es el Mikrobasic o la placa de desarrollo.

Fermin
Todos los días se aprende algo nuevo.

Desconectado janiro74

  • PIC10
  • *
  • Mensajes: 44
Re: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion
« Respuesta #23 en: 10 de Enero de 2010, 15:59:32 »
mira he copiado tu programa lo he pegado lo he modificado a mikrobasic y lo he compilado pero esta vez bien ya ke la otravez no me habia dado cuenta de ke faltaba el "." en el end de el fin de programa pero ahora pasa ke si activo mas de 2 pulsadores se apagan los led de portb ke habian encendidos y otracosa he cargado el hex en pic simulator y cuando le doy a la T on de por ejemplo porta.0 este se enciende en los en porta.0de los 8 led pero no se enciende su correspondiente en portb.0 y ya creo ke la preba de fuego seria ke me mandaras tu hex y lo simulara tanto en mi palca como en pic simulator para descartar si faya mi compilador con mikrobasic, mi placa o yoke se

Desconectado janiro74

  • PIC10
  • *
  • Mensajes: 44
Re: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion
« Respuesta #24 en: 10 de Enero de 2010, 16:09:01 »
espera me he dado cuenta ke lo ke no hace es encender un bit superior a 2 y no la suma de 1 led mas 1 led porke si pulso
porta.0 =1 ---- portb.0 = 1
portb.1 =1 ---- portb.0 = 1
porta.2= 0 ---- portb.2 = 0


pero si activamos un tercer pulsador

porta.0 =1 ---- portb.0 = 0
portb.1 =1 ---- portb.0 = 0
porta.2= 1 ---- portb.2 = 0

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion
« Respuesta #25 en: 10 de Enero de 2010, 16:23:04 »
 A ver 2 cosas:

- No hace falta poner ningun " ." en el END.
-Segun esta tu programa cada vez que pulsas a la T de cualquier entrada se enciende su correspondiente led del portB.
- Si dejas pulsados 2 se encienden los 2 correspondientes, pero si en ese caso actuas sobre un 3º segun el punto del programas en que lo actues(puedes verlo en el simulador) Se enciende el led de ese 3 pulsador. Lo unico que solo lo realiza hasta que el programa despues de recorrer todos los pulsadores, regresa al main con la instruccion goto main. Hecho lo cual como tienes puesto portB=0 despues del main, pues se apagan los 3, hasta que el programas detecta que solo tienes dos pulsadores actuados.

Mas o menos eso es o que planteabas que quirias realizar. Date cuenta que a la velocidad que va el micro en realidad(no en el simulador) el encendido del 3º led no lo apreciarias. Si quisieses evitar ese pulso, tendrias que trabajar un poco mas el programa.

Fer.
Todos los días se aprende algo nuevo.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion
« Respuesta #26 en: 10 de Enero de 2010, 16:39:46 »
Mira he probado mas cosas y me parece que tendrás que cambair algo en el programa por que si haces : While porta<= 3 , cada vez que haya 2 pulsadores, dependiendo de cuales sean se te activaran los 2 o no  ¿Porque? muy sencillo:
Con while <=3 cada vez que se detecten 2 pues como se comparan  con un registro de 8 bits y si están actuados RA0 y RA3 entonces esto en binario seria:

portA= 00000101 en binario =>  5 en decimal y como es mayor que 3 entonces siempre estaras en portb=0

Entendido?

Fermin
Todos los días se aprende algo nuevo.

Desconectado janiro74

  • PIC10
  • *
  • Mensajes: 44
Re: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion
« Respuesta #27 en: 10 de Enero de 2010, 16:51:26 »
mira Fer con lo crudo ke estoy y lo mal ke me explico te estoy liando. Esta vez he segudo bien los pasos ke me dijistes del pic simulator para compilar tu codigo . Yo habia compilado tu codigo con mi mikrobasic y usado el hex ke este crea  de ahí ke me hacia falta el "." en el end y ya siguiendo tus instrucciones lo simulo bien pero lo ke el programa deberia de hacer es ke cuando pulsaramos un tercer pulsador no se encendiera un tercer led pero ke tampoco se apagaran los 2 ke ya habian encendidos y lo de <=3 se debe referir al numero de leds encendidos y este programatuyo lo hace segun una posicion maxima en decimal (no mas de el  2º bit de mayor peso creo) y no si hay mas de 2 pusadore pulsados cualesquiera que sea su peso por eso si pulsas porta.2 (ke ocupa una posicion  3 3n decimal) no se enciense el portb.2

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion
« Respuesta #28 en: 10 de Enero de 2010, 16:58:15 »
Bueno ya voy intentndo comprenderte mejor.
Segun eso tu programa es muy basico y creo que deberias de crearte, creo,  al menos 2 variables 1 para guardar el numero de pulsadores actuados y otra para guardar el numero (2) y cuales son las entradas activadas.
Todos los días se aprende algo nuevo.

Desconectado janiro74

  • PIC10
  • *
  • Mensajes: 44
Re: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion
« Respuesta #29 en: 10 de Enero de 2010, 17:12:44 »
yo pensaba ke era senciyo pero no doy con la tecla y si es verdad lo de las variables pero no tengo claro para vincularlas a pusdores  y demas sobretodo cuando la variable ke almacena la suma de "unos" en pulsadores ,,,,,,, ke ago con so?
bueno voy a ver si soy capaz


 

anything