Skip to content

Updated inline asm for UART send/receive#1

Open
jackm wants to merge 1 commit into
thegaragelab:masterfrom
jackm:master
Open

Updated inline asm for UART send/receive#1
jackm wants to merge 1 commit into
thegaragelab:masterfrom
jackm:master

Conversation

@jackm

@jackm jackm commented Oct 18, 2015

Copy link
Copy Markdown

I have fixed some minor mistakes with regards to the inline assembly for the UART transmit and receive functions.

The constraints for the input delay counts (txdelay, rxdelay, rxdelay2) were over-restrictive. The ldi instruction can accept an 8 bit value, but the previous constraints limited it to a 6 bit value.

The UART transmit inline assembly was using some registers it probably shouldn't (pointer register y r29:r28). I also suffixed the labels with a unique number for each asm instance; this is to avoid problems with duplicate assembly labels if the compiler inlines functions that call the UART transmit function (I had this happen to me when using the -Os compiler flag).

The register clobber list for the UART receive included unnecessary registers.

AVR-GCC inline asm reference: http://www.nongnu.org/avr-libc/user-manual/inline_asm.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant