¿Cuál es el mecanismo utilizado para conservar el registro de estado, sreg, en un microcontrolador AVR? RETI
implica que estos bits no están en la pila. ¿Uno de los registros de propósito general es también el sreg o algo así?Preservar sreg en interrupciones AVR
8
A
Respuesta
11
Esto se explica en cada hoja de datos de AVR. Por ejemplo, en la página 8 de la ATtiny2313 datasheet que dice:
el registro de estado no se guarda automáticamente al entrar en una rutina de interrupción y restaurado al volver de una interrupción. Esto debe ser manejado por software.
Esto se puede conseguir mediante el almacenamiento en un registro temporal:
interrupt:
in r16, SREG ; save SREG
...
out SREG, r16 ; restore SREG
reti
También tenga en cuenta que si estás acceso a los registros que no se usan exclusivamente en esta rutina de interrupción, lo que necesita para salvar a aquellos, también. Además se puede insertar el valor de SREG a la pila si estás bajo de registros:
interrupt:
push r16 ; save global registers on stack
push r17
push r18
in r16, SREG ; save SREG
push r16 ; do this if you want to use r16 in your interrupt routine
...
pop r16 ; do this if you pushed SREG above
out SREG, r16 ; restore SREG
pop r18 ; restore global registers
pop r17
pop r16
reti
Para más información lee here.
1
Alternativamente
PUSH Rn
LDS Rn, SREG
PUSH Rn
y
POP Rn
STS SREG, Rn
POP Rn
parece ser válida.
Cuestiones relacionadas
- 1. Arduino Interrupciones en serie
- 2. AVR Analog Comparator + Internal Pullup?
- 3. AMQP/RabbitMQ remitente en AVR (Arduino)
- 4. posición: interrupciones fijas en IE9
- 5. ¿Ir a puerto a la arquitectura AVR?
- 6. AVR Studio 5: Código de compilar C++
- 7. Lenguajes de programación Dirigido a Arduino/AVR
- 8. manejo de interrupciones (Linux/General)
- 9. Probando interrupciones de red en el software
- 10. ¿Cómo se manejan las interrupciones en SMP?
- 11. ¿Cómo distinguir/identificar usuarios con OpenID sin solicitar campos SReg?
- 12. OpenID Simple Registration (sreg) vs. Attribute Exchange (ax)
- 13. Excel: ClearContent preservar fórmulas
- 14. Preservar números grandes
- 15. preprocesador Preservar definiciones
- 16. preservar argspec al decorar?
- 17. ¿Debería markdown preservar nuevas líneas en blockquotes?
- 18. Preservar espacios en blanco de atributos
- 19. Preservar etiquetas SCRIPT (y más) en CKEditor
- 20. Preservar todas las mayúsculas en BibTeX
- 21. ¿Qué se entiende por deshabilitar las interrupciones?
- 22. Cómo preservar la transparencia png?
- 23. preservar el medio ambiente sudo
- 24. Python: Señal de teclado/interrupciones incorporadas
- 25. ¿Cómo manejar adecuadamente las interrupciones de audio?
- 26. Desactivar interrupciones de hardware y software
- 27. preservar la calidad de imagen
- 28. Preservar ls colorear después grep'ing
- 29. Uso de un codificador rotatorio con controlador AVR Micro
- 30. ¿Cuál es la diferencia/relación entre AVR y Arduino?
El registro de estado no es un registro de propósito general. Reside en el archivo de registro de E/S y se puede acceder mediante las instrucciones 'in' y' out'. –