Microcontroladores: Al usar interrupciones en ATmega8, encontré código en la web, que dice que los LED están activos bajos. ¿Es esto cierto?

Si los LED están activos bajo o alto depende del diseño de su circuito. Si el LED se enciende cuando configura el pin uc alto, está activo alto y si se apaga cuando configura el pin uc como alto, está activo bajo. Entonces, el código tiene que ser consistente con el circuito.

Ahora, para su segunda pregunta, según tengo entendido, está preguntando sobre las ventajas de las interrupciones sobre las encuestas. Sondeo significa verificar continuamente algún estado de hardware (por ejemplo, un pin gpio para ir alto) y luego realizar una acción. La principal desventaja de este enfoque es que su programa / CPU está ocupado esperando que algo suceda y, por lo tanto, desperdiciando ciclos. Por otro lado, el sistema basado en interrupciones puede hacer algún otro trabajo o irse a dormir (o modo de baja potencia) y puede realizar una acción cuando se despierta por interrupción de hardware. Esto lo hace más eficiente.

Pero, por supuesto, la elección de usar un diseño basado en encuestas o interrupciones depende totalmente del problema en cuestión según criterios como eficiencia, tiempo de respuesta, potencia, etc.

La primera pregunta ya está respondida, así que me enfocaré en la segunda. Imagine que el teléfono en su escritorio es su periférico / condición. Si está sondeando para verificar si tiene una llamada entrante, tendrá que levantar el receptor cada dos segundos para verificar si alguien está tratando de llamarlo. Todos podemos ver que este no es un uso eficiente de su tiempo cuando está en su escritorio. En cambio, reaccionas cuando te interrumpe (RingRing) optimizando cómo gastas tus recursos.

Del mismo modo, se puede utilizar un sistema de interrupción para optimizar el flujo del programa en un microcontrolador.

Sin embargo, tenga en cuenta que muchas interrupciones pueden ser algo malo cuando desea hacer las cosas, tanto en su escritorio como en su microcontrolador. Por eso tenemos RTOS, sistemas de eventos, DMA ++

@AndreasMCUguy

Los LED son solo diodos, no reconocen por sí mismos activo alto o activo bajo.

Probablemente el autor quiso decir que está usando el LED en modo de hundimiento –

Cuando conduce un cero lógico (activo bajo) a través del puerto A (0), el LED está polarizado hacia adelante, por lo tanto, se ilumina.

Por lo general, se prefiere el método de hundimiento para los LED, ya que los microcontroladores pueden hundir más corriente de la que pueden generar.

Si conecta el terminal -ve de un LED a tierra permanentemente y da salida en su terminal + ve usando su código, entonces se comportará como un dispositivo activo alto.
Y si conecta el terminal + ve de un LED a la lógica alta y le da salida (lógica baja / tierra) en su terminal -ve usando su código, entonces se comportará como un dispositivo bajo activo.

Piense en una situación en la que su código enciende y apaga un LED cada 30 segundos y el proceso continúa. Tiene una tecla conectada a su circuito y, si se presiona, el LED debe seguir encendido hasta que se presione la tecla de tiempo y luego seguir el código de parpadeo normal del LED.
Supongamos que ha escrito un programa como este:

forever_loop
{
si (tecla presionada)
{
función1 ();
}
más
{
TURN_LED_ON ();
RETARDO (30 segundos); —–UNA
TURN_LED_OFF ();
RETARDO (30 segundos); —–SI
}
}

función1 ()
{
while (clave_presionada)
{
TURN_LED_ON ();
}
}

¿Qué sucede si presiona el interruptor mientras la ejecución del código está en la etapa B?
¡El LED no brillará!
Esto es así porque nuestro código no verificará el estado de la clave durante el período de 30 segundos.

Aquí, usar interrupciones puede resolver nuestro problema.

Un LED por sí solo no se puede llamar “activo BAJO” o “activo ALTO”.
Lo que podría significar es que el LED se ENCIENDE cuando se aplica una señal BAJA a uno de sus terminales.
Como un LED tiene dos terminales, + ve y -ve, puede conectarlo de dos maneras:

  1. + ve terminal a + 5V (a través de la resistencia) y -ve terminal a un pin de puerto.
  2. -ve terminal a tierra y + ve terminal a puerto pin (a través de la resistencia).

En el primer caso, si tira de ese pin a BAJO, su LED se iluminará. En el segundo, se ilumina cuando coloca un ALTO en ese pin.

En cuanto a las interrupciones, creo que la respuesta de Punit Soni lo dice todo.
Es muy parecido al sistema de un timbre. En lugar de verificar continuamente si hay alguien en la puerta, puedes seguir haciendo otra cosa (¡dormir!) Y molestarte solo si escuchas un timbre.