panic: > Hi, > > Michael Hennebry: >> The PINx toggle of PORTx bits is not a new feature. >> simulavr must support this. >> A RMW implementation of SBI also does not work on registers with interrupt >> flags. > > At least according to avrlibc doc, this is not recommended for interrupt > flags: > > http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_intbits > http://www.atmel.com/webdoc/avrlibcreferencemanual/FAQ_1faq_intbits.html
The actual motivation might be that some interrupt flag registers are also located above 0x20 and cannot be used together with SBI. Thusly, "|=" would be evaluated to in/eor/out possibly clearing too many flags. A programmer would have to look up whether the register with the flag to clear is above or below 0x20 and then use = or |=. Hence, the recommendation to never use |= to clear interrupt flags. For registers below 0x20, |= via SBI instruction should work though. On the other hand, the PINx registers are always located below 0x20. Cheers, panic _______________________________________________ Simulavr-devel mailing list Simulavr-devel@nongnu.org https://lists.nongnu.org/mailman/listinfo/simulavr-devel