Código Arduino - ¿Por qué necesitamos leer el flanco ascendente?

Tengo dificultades para entender por qué necesitamos leer el flanco ascendente en lugar de usar ambos flancos.

Estamos haciendo un laboratorio escolar usando interrupciones en el código Arduino, y entiendo que necesitamos la interrupción para leer el flanco ascendente, pero ¿ por qué estamos leyendo el flanco ascendente ?

La pregunta que estoy tratando de responder específicamente es la parte B de lo siguiente:

Escribe un párrafo que explique cómo estás midiendo la frecuencia. Asegúrese de incluir:

a. por qué debes usar una interrupción.

b. por qué habilitó la interrupción en el flanco ASCENDENTE, en lugar de ambas transiciones.

C. Comenta sobre la precisión de las mediciones de frecuencia de tu Arduino

¿Qué pasaría si usaras ambos? Pista: ¿el tiempo entre subir y bajar es el mismo que entre bajar y subir? Si usas subir o bajar, bruja (sic) tiene más sentido, ¿o hay alguna diferencia?

Respuestas (3)

Obviamente, esperan que responda según el laboratorio o la conferencia, no según el uso real.

No hay ninguna razón por la que tenga que interrumpir en el borde ascendente en lugar del borde descendente, o al revés, o en ambos. O interrupción de borde en lugar de interrupción de nivel.

Su diseño determina qué tipo de interrupción necesita. Una señal activa baja necesitará un flanco descendente o una interrupción de nivel bajo, mientras que una señal activa alta necesitará un flanco ascendente o una interrupción de nivel alto.

A veces desea interrumpir en ambos lados de la señal, como desde un sensor o un botón. Alguien presionó un botón y usted quiere hacer x cuando se presiona e y cuando se suelta. O está cronometrando cuánto tiempo pasa la señal de un estado a otro. Etc.

Si desea medir la frecuencia, debe medir la cantidad de pulsos en un tiempo específico o un período de tiempo entre dos pulsos. En cualquier caso, debe iniciar/detener en el mismo umbral de inicio o final de una señal, pero con el uso de ambos bordes no le dará la frecuencia, sino la duración del pulso.

Funcionaría igualmente bien usar el borde descendente. El punto es que solo debes usar uno de los dos, incluso si la pregunta está un poco mal redactada.

No tiene que usar interrupciones, y no tiene que usar solo el flanco ascendente para medir la frecuencia. Estas son opciones de diseño de su sistema.

Piensa en cómo estás midiendo la frecuencia. Hay dos formas básicas, contar ciclos durante un tiempo fijo o medir el tiempo por ciclo. Piensa en cómo harías cada uno de estos a escala humana si la frecuencia que intentas medir fuera lo suficientemente lenta.

La interrupción del flanco ascendente es como recibir un clic en cada ciclo. Podría mirar su reloj y contar los clics durante un período fijo, como 15 segundos. El otro método sería usando un cronómetro. Lo inicias con un clic, luego lo detienes con el siguiente.

Ahora considere cómo obtener una interrupción (clic) en los flancos ascendente y descendente podría estropear cualquiera de estos procedimientos. Puede ajustar la diferencia, pero ¿qué sucede si el tiempo desde el flanco descendente hasta el ascendente es diferente que desde el flanco ascendente hasta el descendente?