Practico 7, ejercicio 8

Practico 7, ejercicio 8

de Daniel Padron Simon -
Número de respuestas: 2

Buenas noches, 

Un par de dudas con este ejercicio: 

Entiendo que un pulso es mientras haya uno en la entrada, por lo que me genera la siguiente duda lo siguiente: 

1)La función flanco solo se ejecuta cuando hay un flanco ascendente, pero si el pulso es puramente cuando es 1, entonces ¿Como excluyo el tiempo 0 entre flancos?. Podría en el timer fijarme cual es el estado del pulso, pero en ese caso no creo que tenga mucho sentido la interrupción flanco ,ademas que debería estarle preguntando al controlador PULSO cada un milisengudo su estado, cosa que creo que no es la intención. 

2) hay algún rango para la codificación 1 y 0 en PWM, porque a menos que el timer comience exactamente en el flanco, puede ser que hay un error de al menos 1ms. Hay un rango aceptado para los 30 y 50 ms?. me imagino algo así como se codifica 1 si esta entre 29 y 31 ms.


Saludos y gracias

Daniel 

En respuesta a Daniel Padron Simon

Re: Practico 7, ejercicio 8

de Federico Rivero -
Buen día!

1)La función flanco solo se ejecuta cuando hay un flanco ascendente, pero si el pulso es puramente cuando es 1, entonces ¿Como excluyo el tiempo 0 entre flancos?. Podría en el timer fijarme cual es el estado del pulso, pero en ese caso no creo que tenga mucho sentido la interrupción flanco ,ademas que debería estarle preguntando al controlador PULSO cada un milisengudo su estado, cosa que creo que no es la intención.

Tenés razón ahí, la interrupción flanco() podría no estar. La idea sí es hacer polling para detectar cuándo el pulso baja a 0. En este sentido, también se podría hacer polling para ver cuándo el pulso sube a 1,en definitiva obteniendo la misma información que con la interrupción flanco()

2) hay algún rango para la codificación 1 y 0 en PWM, porque a menos que el timer comience exactamente en el flanco, puede ser que hay un error de al menos 1ms. Hay un rango aceptado para los 30 y 50 ms?. me imagino algo así como se codifica 1 si esta entre 29 y 31 ms.

Esto es un problema general de las computadoras :), siempre vas a tener problemas de precisión. En este caso tenés que aceptar forzosamente +-1 ms como rango válido, por lo que mencionás. 

Saludos,
Federico
En respuesta a Federico Rivero

Re: Practico 7, ejercicio 8

de Felipe Ignacio Garcia Maidana -
Hola, ¿cómo les va?
Para intentar resolver el ejercicio generé 2 estados: ENFLANCO y ESPERANDO.
Durante el estado ENFLANCO, se calculan los bits del buffer y se envian a SALIDA en caso de que in(PULSO) sea 0.
Mi duda es que pasa si flanco() interrumpe durante el estado ENFLANCO. Es decir que, durante el tiempo que considero que la senial está en 1 ya que aún no hice pulling para saber si el valor de PULSO es 0, PULSO se hace 0 y luego nuevamente vuelve a 1 interrumpiendo "rapidamente".
Saludos.