Qual è il meccanismo utilizzato per conservare il registro di stato, sreg, in un microcontrollore AVR? RETI
implica che questi bit non sono in pila. Uno dei registri di scopo generale è anche lo sreg o qualcosa del genere?Conservazione della sreg negli interrupt AVR
8
A
risposta
11
Questo è spiegato in ogni scheda tecnica AVR. Per esempio a pagina 8 del ATtiny2313 datasheet si dice:
Il registro di stato non viene memorizzato automaticamente quando si entra in una routine di interrupt e restaurato al ritorno da un interrupt. Questo deve essere gestito dal software.
È possibile raggiungere questo obiettivo riporlo in un registro temporaneo:
interrupt:
in r16, SREG ; save SREG
...
out SREG, r16 ; restore SREG
reti
Si noti inoltre che se si sta accedendo registri che non sono utilizzate esclusivamente in questa routine di interrupt, è necessario salvare coloro, pure. Inoltre si può spingere il valore del SREG nello stack, se siete a corto di registri:
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
Per ulteriori informazioni consultare here.
1
alternativa
PUSH Rn
LDS Rn, SREG
PUSH Rn
e
POP Rn
STS SREG, Rn
POP Rn
sembra valido.
Problemi correlati
- 1. Comparatore analogico AVR + Pullup interno?
- 2. Conservazione della visualizzazione numpy durante il decapaggio
- 3. Conservazione della sessione in Java con sendredirect
- 4. Ridenominazione delle funzioni con conservazione della retrocompatibilità
- 5. Conservazione della mappa sourc originale con Browserify
- 6. Porta la porta all'architettura AVR?
- 7. Buffer interrupt
- 8. Immissione della modalità HALT con interrupt principale abilitato ma senza interrupt Enable (0xFF0F = 0)?
- 9. Interrupt movimentazione (Linux/Generale)
- 10. È necessario questo interrupt()?
- 11. interrupt() non funziona
- 12. Utilizzo di librerie Arduino con AVR-G ++
- 13. Conservazione della cronologia durante l'unione dei rami di Subversion
- 14. Le leggi del funtore dimostrano la completa conservazione della struttura?
- 15. Conservazione di grandi numeri
- 16. S3 Upload con interrupt pycurl
- 17. OpenID Registrazione semplice (sreg) rispetto allo scambio di attributi (ax)
- 18. L'elisione della copia è valida negli argomenti della funzione predefinita?
- 19. Elaborazione degli interrupt in Windows
- 20. Disabilita interrupt hardware e software
- 21. Trigger Kernel Interrupt Handler: Come?
- 22. interrupt schermata di blocco NSURLConnection
- 23. Lo script di interrupt trigger_error?
- 24. Differenza tra interrupt ed evento
- 25. Interrupt child called from ruby
- 26. Rubino - Hide "^ C" sul Interrupt
- 27. Java Imposta l'ordine di conservazione?
- 28. Excel: formule di conservazione ClearContent
- 29. Conservazione dei dati in memoria
- 30. interrupt di tastiera con python gtk?
Il registro di stato non è un registro generale. Risiede nel file di registro I/O ed è accessibile tramite le istruzioni 'in' e' out'. –