¿Cómo usar la rutina de servicio de interrupción sin el archivo de interrupt.h en avr? [cerrado]

-2

En el microcontrolador avr, al utilizar la rutina de servicio de interrupción, escribe la función:

ISR(Int_Vect){

}

Para utilizar esta función, debe incluir < avr / interrupt.h & gt ;. así que ahora, no quiero usar el archivo interrupt.h porque estoy tratando de escribir mi controlador. ¿Cómo usar la rutina de servicio de interrupción sin el archivo de interrupt.h?

    
pregunta Ahmed Yasen

2 respuestas

2

avr / interrupt.h es realmente bastante simple en lo que respecta a los encabezados de interrupción . Mirando a través de él, no veo nada que no necesite mantener para que funcionen las interrupciones. Hay muy poca pelusa extraña. Sería útil tomarse el tiempo para llegar a donde interrupt.h es comprensible antes de que intente escribir su propio reemplazo. Diría que si miras las macros definidas que necesitas (es decir, no mires a ISR_ALIAS a menos que necesites un alias ISR). De las partes que está mirando, yo diría que el 90-100% es esencial para manejar las interrupciones. Lo único que podría ser opcional es que puedes evitar el uso de macros variadic y __VA_ARGS__ si estás dispuesto a reescribir ese código cada vez en lugar de usar una macro.

Las interrupciones dependen mucho del compilador y dependen mucho del procesador. Puede buscar en el manual el procesador para encontrar exactamente en qué partes de la memoria escribir para habilitar las interrupciones, y luego puede hacer que su controlador haga eso. Sin embargo, tendrá que usar todos los indicadores que interrupt.h pone en sus funciones para asegurarse de que sean compatibles con la llamada como una interrupción (o escriba su propio controlador de interrupciones en el ensamblaje).

    
respondido por el Cort Ammon
0

La forma en que escribes los controladores de interrupciones es extremadamente dependiente del compilador. Si está tratando de escribir una biblioteca independiente del compilador, básicamente debería tener un conjunto de directivas #ifdef que intentan detectar el entorno del compilador en el que se encuentra y emiten las codificaciones y códigos específicos correspondientes, luego delegue todo el código independiente del compilador a Funciones en línea.

    
respondido por el vicatcu

Lea otras preguntas en las etiquetas