Autor Tema: PIC184620 en ASM, semaforo con petición peatones  (Leído 6718 veces)

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

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: PIC184620 en ASM, semaforo con petición peatones
« Respuesta #15 en: 18 de Junio de 2012, 15:12:13 »
Problema de este sistema...  siempre alguien que no tenga nada que hacer, estaria pulsando, para molestar...  o para hacer parar inutilmente a un vehiculo.
Por eso, yo si o si, le daria un tiempo minimo de paso a los vehiculos  :mrgreen:

A este sistema lo usa mucho Estados Unidos desde hace décadas. El algorítmo es algo más complejo, ya que cuantas más personas presionen el pulsador, más rapido se les concede el paso. Está altamente multado presionar el pulsador más de una vez por persona.

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado aklamath

  • PIC10
  • *
  • Mensajes: 13
Re: PIC184620 en ASM, semaforo con petición peatones
« Respuesta #16 en: 18 de Junio de 2012, 15:37:35 »
Bueno entendido perfectamente lo del flag, osea como hacer una memoria, pero sigo teniendo la misma duda de como hacer esa memoria mientras estoy en un ciclo iniciado el cual puede dudar pongamos 1 minuto.

En este caso del semaforo no aplica, pero en otro proceso de automatización podria ser que si, me refiero si tengo una condición de que me haga una secuencia1, pero si mientras hace la secuencia1 (que dura 10 minutos de encender y apagar leds y temporizaciones), quiero que salga al instante de secuencia1 si se pulsa pongamos RB1 para hacer una secuencia2, como sale a mitad secuencia1 sin terminar los 10 minutos ?, sin tener que poner muchos tests de RB1 durante la secuencia1 ?

osea la secuencia1 dura 10 minutos, osea en pic son (pongamos 100 lineas) como se hace el test de RB1, para que salga a mitad de lectura de esas 100 lineas ? pongamos  a la linea 50 que serian 5 minutos ? decis por bandera, pero si la pongo antes de inicio de la secuencia primero hará las 100 lineas y luego verá RB1, si la pongo al final lo mismo, hará las 100 lineas igualmente.

espero haberme explicado.

Gracias a todos por vuestro aportes. ;-)

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: PIC184620 en ASM, semaforo con petición peatones
« Respuesta #17 en: 18 de Junio de 2012, 15:39:23 »
Citar
El pulsador lo tienen que poder accionar en cualquier momento del ciclo, quedando memorizado en el flag que se ha solicitado el paso para darle salida a la fase de vede de peatones cuando le corresponda.

Pues si, tienes razon se podria memorizar si alguien lo pulsa en esos 3 minutos, entonces se harian temporizaciones mas pequeñas para detectar, por ejemplo 100ms, se repetiria 30 veces y cada vez que se llama se chequea y solo cambia si se ha pulsado y han pasado los 3 minutos (he puesto este tiempo a voleo)

Citar
A este sistema lo usa mucho Estados Unidos desde hace décadas. El algorítmo es algo más complejo, ya que cuantas más personas presionen el pulsador, más rapido se les concede el paso. Está altamente multado presionar el pulsador más de una vez por persona.

Pues tambien se pueden contar las veces que se pulsa y acortar el tiempo, aqui en España si la gente lo sabe llega uno solo y pulsa 20 veces para que le abra antes  :lol: este es modelo para España asi que a esperar toca  :lol: . Aqui en España hace muchos años que funcionan tambien.

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: PIC184620 en ASM, semaforo con petición peatones
« Respuesta #18 en: 18 de Junio de 2012, 16:46:31 »

MAIN
btfsc  BOTON
bsf  FLGS,0  ; se pulso activamos FLAG
call  100ms  ; temporizacion 100ms para repetir
incf   CONTADOR,1  ;para contar veces que desborda
movlw  .30   ;repetimos 30 veces 100ms=3minutos
subwf   CONTADOR,0
btfss  STATUS,Z   ; miramos si acabo la cuenta
goto  MAIN    ; no repetimos
btfsc  FLAGS,0    ; miramos si se activo FLAG en los 3 minutos
goto  PEATONES       ;  se activo va PEATONES
btfsc   BOTON  ; ya pasaron los 3 minutos
goto   PEATONES ; si se pulsa ahora va a secuencia peatones


PEATONES
resto programa

Los estoy haciendo asi a bote pronto, simulalos a ver si van bien.

¿Te has bajado el PDel para hacer las temporizaciones?

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: PIC184620 en ASM, semaforo con petición peatones
« Respuesta #19 en: 22 de Junio de 2012, 06:26:08 »
Código: [Seleccionar]
MAIN
btfsc  BOTON
bsf  FLGS,0  ; se pulso activamos FLAG
call  100ms  ; temporizacion 100ms para repetir
incf   CONTADOR,1  ;para contar veces que desborda
movlw  .30   ;repetimos 30 veces 100ms=3minutos
subwf   CONTADOR,0
btfss  STATUS,Z   ; miramos si acabo la cuenta
goto  MAIN    ; no repetimos
btfsc  FLAGS,0    ; miramos si se activo FLAG en los 3 minutos
goto  PEATONES       ;  se activo va PEATONES
[b]btfss  BOTON  ; ya pasaron los 3 minutos
goto   $-1 ; si se pulsa ahora va a secuencia peatones[/b]

PEATONES
resto programa

Habia un error en las dos ultimas lineas .

btfss  BOTON  ; ya pasaron los 3 minutos
goto   $-1 ; si se pulsa ahora va a secuencia peatones
« Última modificación: 22 de Junio de 2012, 06:32:14 por tapi8 »