Updated inline asm for UART send/receive#1
Open
jackm wants to merge 1 commit into
Open
Conversation
…nd reduced register clobber list.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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