diff --git a/avr/modules/uart_hw2/comonuart1.asm b/avr/modules/uart_hw2/comonuart1.asm index a9e3f27..9c15a1d 100644 --- a/avr/modules/uart_hw2/comonuart1.asm +++ b/avr/modules/uart_hw2/comonuart1.asm @@ -97,6 +97,7 @@ ComOnUart1_Periodically_end: ; ; @param R16 mode ; @clobbers R17 + comOnUart1SetMode: push r15 in r15, SREG @@ -127,7 +128,7 @@ comOnUart1StartReading: adiw xh:xl, UART_HW2_IFACE_OFFS_BUFFER std Y+UART_HW2_IFACE_OFFS_BUFPOS_LOW, xl std Y+UART_HW2_IFACE_OFFS_BUFPOS_HIGH, xh - ldi r16, UART_HW2_BUFFER_SIZE + ldi r16, UART_HW2_BUFFER_SIZE-1 std Y+UART_HW2_IFACE_OFFS_BUFLEFT, r16 clr r16 std Y+UART_HW2_IFACE_OFFS_BUFUSED, r16 @@ -195,23 +196,13 @@ comOnUart1StartWriting_end: ComOnUart1_Run: ldi yl, LOW(comOnUart1_iface) ldi yh, HIGH(comOnUart1_iface) - push r15 - in r15, SREG - cli - ldd r16, Y+UART_HW2_IFACE_OFFS_MODE - out SREG, r15 - pop r15 + ldd r16, Y+UART_HW2_IFACE_OFFS_MODE ComOnUart1_Run_loop: push r16 ; current state rcall comOnUart1RunMode ; (all but Y) pop r17 ; previous state (pop from r16 into r17) ; read new state - push r15 - in r15, SREG - cli - ldd r16, Y+UART_HW2_IFACE_OFFS_MODE - out SREG, r15 - pop r15 + ldd r16, Y+UART_HW2_IFACE_OFFS_MODE cp r16, r17 brne ComOnUart1_Run_loop ; state changed, run again ret @@ -460,7 +451,8 @@ comOnUart1StartTx: cbr r16, (1<