Sé que la interrupción de tratamiento obviamente se utiliza para guardar la interrogación, pero ¿por qué el TX uno también?
Respuestas
¿Demasiados anuncios?El objetivo principal de la TX de interrupción (realmente un FINAL DE TX) es enviar el contenido de un buffer (múltiples bytes) de forma automática. Cuando se implementa de una manera adecuada:
- Habilitar el TX de interrupción.
- El código de usuario inicia la transmisión al enviar sólo el primer byte en el buffer.
- Al final de TX (del primer byte), una interrupción se genera.
- En el TX de ISR (Rutina de Servicio de Interrupción), el código debe enviar el siguiente byte en el buffer y actualizar el índice de búfer.
- Al final de esta transmisión, una nueva interrupción se produce, y así sucesivamente, hasta que todo el contenido del búfer es enviado "automáticamente".
- Deshabilitar el TX de interrupción.
El comportamiento exacto depende del microcontrolador. Que es una descripción general.
La interrupción de TX es principalmente para datagramas más. Puede iniciar a la transferencia para un búfer de longitud conocida (bytecount). Ahora puede insertar el puntero de búfer tan a menudo como hay bytes a enviar, Cuándo interrumpir el TX se produce. Esto garantiza a la transferencia "tan rápida como sea posible" de su tampón, sin la necesidad de sondear cualquier "TransferComplete"-bandera/Statusbit.
El TX de interrupción de incendios cuando no hay espacio en el búfer de transmisión.
Para los dispositivos que no tienen un búfer de transmisión (es decir, cuando se escribe un byte, el cual es transferido de inmediato), la interrupción se afirma cuando la transmisión de registro puede ser escrito con el siguiente byte.
Para los dispositivos con un tampón, la interrupción se afirma en una aplicación de tiempo definido. Para algunos, es cuando el buffer está medio vacío, para algunos es cuando la transmisión del último byte se ha iniciado y que el buffer se vacía completamente.
Algunos UARTS tiene un buffer interno que es mayor que uno, el 16xxx serie por uno.
El procedimiento que aquí se
- Establecer una transmisión de la ventana de máscara, por ejemplo a 4 restantes.
- llene el búfer posiciones hasta que la UART dijo completa o no hay más datos se deben enviar
- hacer otras cosas
- cuando sólo 4 búfer de posiciones de la izquierda unsend, conjunto de TX de interrupción
- espere a que la interrupción sea atendido
- si hay más datos se deben enviar vaya a 2.
Esto disminuye la carga de la CPU mediante la descarga de algún tipo de procesamiento para la UART, permitiendo así más lento de la CPU para mantener y servicio de otras tareas en lugar de llegar interrumpe todo el tiempo.
Otro caso es cuando usted conecta el UART a otra interfaz de comunicación como RS485. El controlador tiene que liberar al conductor tan pronto como el último bit se ha desplazado fuera del buffer de TX. Esto es fácil de manejar en la interrupción de TX, pero sería engorroso aplicar sin, ya que tendría que esperar una hora exacta después de escribir el último byte en el buffer de salida que también variará con la velocidad en baudios.