Autor Tema: Problema con multiplexacion en turnero...  (Leído 9356 veces)

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

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re:Problema con multiplexacion en turnero...
« Respuesta #15 en: 15 de Febrero de 2016, 20:11:04 »
if PORTA.3 = 0 THEN ;SUMA
    pausa 15ms
   if PORTA.3 = 0 THEN
     w1=w1+1
     goto MOSTRAR     
  end if
endif
if PORTA.2 = 0 THEN ;RESTA
pausa 15ms
   if PORTA.2 = 0 THEN
    IF w1>000 THEN
        w1=w1-1   
    ENDIF
    goto MOSTRAR
   endif
end id
if PORTA.4 = 0 THEN ;RESET
pausa 15ms
  if PORTA.4 = 0 THEN
    w1 = 0
    w2 = 0
    w3 = 0
    goto MOSTRAR
  end if
endif
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado luchoc

  • PIC10
  • *
  • Mensajes: 47
Re:Problema con multiplexacion en turnero...
« Respuesta #16 en: 15 de Febrero de 2016, 20:21:39 »
Revisa el hardware, tiene que estar mal, por más que lo miro no veo el fallo.

Gracias dogflu66  voy a sacar todo lo del pic y a armarlo de nuevo a ver q pasa. En un rato les cuento, nuevamente gracias!


Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re:Problema con multiplexacion en turnero...
« Respuesta #17 en: 15 de Febrero de 2016, 20:55:08 »
No es necesario que lo desmontes, con un polímetro o multímetro con la opción "LOGIC" podrías comprobar los niveles lógicos y ahorrarías tiempo.

Palitroquez ya te dejo un código, pero en fin te dejo otro que cumple con las normas actuales de programación para un lenguaje de alto nivel como este:

No puede haber subrutinas dentro de otra subrutina.
No puede haber más de un goto en el programa, se pone uno solo por tradición para generar el bucle de la subrutina principal, en este caso inicio.
No se emplean las pausas en programación, como esto es más difícil de implementar solo las elimino en la validación de las teclas como ejemplo.

Código: Visual Basic
  1. Define CLOCK_FREQUENCY = 4  'Definimos la frecuencia
  2. 'Define SIMULATION_WAITMS_VALUE = 1
  3. Include "_FuncionesGeneralLibrary.bas"
  4.  
  5. AllDigital
  6. TRISA.0 = 1
  7. TRISA.1 = 1
  8. TRISA.2 = 1
  9. TRISA.3 = 1
  10. TRISA.4 = 1
  11.  
  12. TRISB.0 = 0
  13. TRISB.1 = 0
  14. TRISB.2 = 0
  15. TRISB.3 = 0
  16. PORTB.4 = 0
  17. PORTB.5 = 0
  18.  
  19. Dim w1 As Word
  20. Dim w2 As Word
  21. Dim w3 As Word
  22.  
  23. 'Contadores validación teclas
  24. Dim dl_ra3 As Word
  25. Dim dl_ra2 As Word
  26. Dim dl_ra4 As Word
  27. dl_ra3 = 0
  28. dl_ra2 = 0
  29. dl_ra4 = 0
  30. Dim wait As Word
  31. wait = 10  'Tiempo para validar tecla
  32.  
  33. inicio:
  34.         If PORTA.3 = 0 Then  ';suma
  35.                 dl_ra3 = dl_ra3 + 1  'Contador tiempo tecla pulsada
  36.                 If dl_ra3 > wait Then  'Valida la tecla
  37.                         w1 = w1 + 1
  38.                         dl_ra3 = 0  'Reset contador tecla
  39.                 Endif
  40.         Endif
  41.         If PORTA.2 = 0 Then  ';resta
  42.                 dl_ra2 = dl_ra2 + 1
  43.                 If dl_ra2 > wait Then
  44.                         dl_ra2 = 0
  45.                         If w1 > 0 Then
  46.                                 w1 = w1 - 1
  47.                         Endif
  48.                 Endif
  49.         Endif
  50.         If PORTA.4 = 0 Then  ';reset
  51.                 dl_ra4 = dl_ra4 + 1
  52.                 If dl_ra4 > wait Then
  53.                         w1 = 0
  54.                         w2 = 0
  55.                         w3 = 0
  56.                         dl_ra4 = 0
  57.                 Endif
  58.         Endif
  59.  
  60.         Gosub mostrar
  61.        
  62.         'Reset contador teclas
  63.         If PORTA.3 = 1 Then dl_ra3 = 0
  64.         If PORTA.2 = 1 Then dl_ra2 = 0
  65.         If PORTA.4 = 1 Then dl_ra4 = 0
  66.  
  67. Goto inicio
  68. End
  69. 'Subrutinas ***************************                                              
  70. mostrar:
  71.         If w1 = 100 Then w1 = 0
  72.  
  73.         w2 = _getdig32(w1, 0)
  74.         w3 = _getdig32(w1, 1)
  75.  
  76.         PORTB = 240 Or w2
  77.         Low PORTB.5
  78.         High PORTB.4
  79.         WaitMs 10  'pause 10
  80.  
  81.         PORTB = 240 Or w3
  82.         Low PORTB.4
  83.         High PORTB.5
  84.         WaitMs 10  'pause 10
  85. Return

Recuerda que la variable Wait es la que aumenta el tiempo que se necesita para que la tecla pueda ser validada.
Solo lo he probado en simulación, pero parece que funciona, es cuestión de que lo pruebes y lo ajustes a tus necesidades.
« Última modificación: 15 de Febrero de 2016, 21:16:28 por dogflu66 »
Saludos desde Granada, España.

Desconectado luchoc

  • PIC10
  • *
  • Mensajes: 47
Re:Problema con multiplexacion en turnero...
« Respuesta #18 en: 15 de Febrero de 2016, 21:37:32 »
Perdon, se ve que justo cuando envio el codigo de ejemplo Palitroquez se me fue internet. Recien volvio.

Probe el codigo de Palitroquez y luego de corregir algunas cositas que estaban mal tipeadas lo pase a la protoboard y sigue haciendo lo mismo.

Respecto a tu codigo dogflu66, me tira una lista de errores que seguramente tenga que ver con esa libreria:
Include "_FuncionesGeneralLibrary.bas"



* errores.png
(66.97 kB, 812x1054 - visto 429 veces)


De donde la saco?

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re:Problema con multiplexacion en turnero...
« Respuesta #19 en: 16 de Febrero de 2016, 07:12:43 »
No uso la misma versión de lengauje Basic, no puedes compilar el programa exactamente como está.
Saludos desde Granada, España.

Desconectado luchoc

  • PIC10
  • *
  • Mensajes: 47
Re:Problema con multiplexacion en turnero...
« Respuesta #20 en: 16 de Febrero de 2016, 10:52:34 »
Gracias por la respuesta, con que compilas?

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re:Problema con multiplexacion en turnero...
« Respuesta #21 en: 16 de Febrero de 2016, 11:18:13 »
Lenguaje Basic del Pic Simulator IDE.
Saludos desde Granada, España.

Desconectado luchoc

  • PIC10
  • *
  • Mensajes: 47
Re:Problema con multiplexacion en turnero...
« Respuesta #22 en: 16 de Febrero de 2016, 11:35:26 »
Disculpa mi ignorancia pero con el mismo simulador compilas? Q programas usas en total? para saber si sirve lo q estoy usando o no.

Este seria?

* picscreenshot1.png
(78.83 kB, 1099x685 - visto 408 veces)
« Última modificación: 16 de Febrero de 2016, 11:38:12 por luchoc »

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re:Problema con multiplexacion en turnero...
« Respuesta #23 en: 16 de Febrero de 2016, 13:33:33 »
Todo pertenece al mismo entorno, el editor y compilador del lenguaje Basic es una herramienta más del simulador (Pic Simulator IDE), se abren mediante los menus.
Saludos desde Granada, España.

Desconectado luchoc

  • PIC10
  • *
  • Mensajes: 47
Re:Problema con multiplexacion en turnero...
« Respuesta #24 en: 17 de Febrero de 2016, 03:21:38 »
Todo pertenece al mismo entorno, el editor y compilador del lenguaje Basic es una herramienta más del simulador (Pic Simulator IDE), se abren mediante los menus.

Claro pero esa librería parece una librería creada por vos, o viene con el programa?

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re:Problema con multiplexacion en turnero...
« Respuesta #25 en: 17 de Febrero de 2016, 05:26:54 »
La librería no tiene importancia, está escrita por mí y tiene entre otras la función DIG equivalente al Protón que no tiene mi lenguaje.

DIG equivalente a _getdig32().
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re:Problema con multiplexacion en turnero...
« Respuesta #26 en: 18 de Febrero de 2016, 19:55:32 »
He probado las teclas en la realidad y me funcionan correctamente.
Saludos desde Granada, España.