Gast
#4287283
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
Habe das in den AppNotes von Atmel gefunden. IOReg ist beim Compilieren nicht bekannt. Was bewirkt es, und wie kann ich es fixen.
|
Anzeige
|
avr-gcc IOReg
Gast
#4287283
Habe das in den AppNotes von Atmel gefunden. IOReg ist beim Compilieren nicht bekannt. Was bewirkt es, und wie kann ich es fixen.
Gast
#4287287
Irgendwer hat eine Zeile nicht mitkopiert, eigentlich sieht das so aus (aus AVR151.zip):
IOReg ist volatile, damit der Lesezugriff auf SPSR und SPDR nicht wegoptimiert wird, obwohl einen der Inhalt von IOReg nicht interessiert. Man braucht hier die Nebenwirkungen des Lesens (nämlich das Löschen gewisser Bits, Details siehe Datenblatt).
Gast
#4287293
Oh, ja stimmt. Danke, hatte das irgendwie übersehen. Tom schrieb: > IOReg ist volatile, damit der Lesezugriff auf SPSR und SPDR nicht > wegoptimiert wird, obwohl einen der Inhalt von IOReg nicht interessiert. Wenn der Zugriff auf SPSR und SPDR nicht wegotimiert werden darf, müssen SPSR und SPDR volatile sein, was sie vermutlich auch sind. Wie IOReg definiert ist, ist dann eigentlch egal. Genau genommen braucht man es gar nicht. Es reicht zu schreiben:
IORreg volatile zu machen, sorgt eigentlich nur dafür, daß der aus SPSR gelesene Wert nicht nur eingelesen, sondern auch nochmal extra in den RAM kopiert wird, bevor er verworfen wird. Rolf M. schrieb: > Es reicht zu schreiben: >
Ich schreibe dann immer:
um die Absicht, das Resultat zu verwerfen, optisch etwas deutlicher hervortreten zu lassen. Antwort schreiben |
Anzeige
|