Hallo,
hab grad festgestellt, dass gcc-avr Sequenzen wie
je nach Laune als
oder als (sinngemäß)
1 | in r16,PORTB
|
2 | ori r16,PORTB3
|
3 | out PORTB,r16
|
übersetzt.
Wie kann ich ihn "zwingen", die erste Form zu verwenden?
Im C-Tutorial steht:
"In Quellcodes, die für ältere Version den des avr-gcc/der avr-libc
entwickelt wurden, werden einzelne Bits mittels der Funktionen sbi und
cbi gesetzt bzw. gelöscht. Beide Funktionen sind in aktuellen Versionen
der avr-libc nicht mehr enthalten und auch nicht mehr erforderlich."
Dieses "nicht mehr erforderlich" wundert mich grad, weil ich genau diese
Funktionen brauche und keine Alternative kenne. Der betreffende Port
wird nämlich auch aus einer Interrupt-Routine heraus genutzt, ich kann
mit hier keine Zugriffsüberschneidungen erlauben.
Habt ihr eine Idee?