diff --git a/avr/devices/c01/defs.asm b/avr/devices/c01/defs.asm index 21fed9d..ca34f21 100644 --- a/avr/devices/c01/defs.asm +++ b/avr/devices/c01/defs.asm @@ -67,6 +67,11 @@ .equ COM_BIT_LENGTH = 52000 ; 104000ns=9600, 52000ns=19200, 26000ns=38400 .equ COM_HALFBIT_LENGTH = 26000 ; see https://de.wikipedia.org/wiki/Universal_Asynchronous_Receiver_Transmitter +.equ COM_DATA_DDR = DDRD +.equ COM_DATA_INPUT = PIND +.equ COM_DATA_OUTPUT = PORTD +.equ COM_DATA_PIN = PORTD0 + .equ COM_ATTN_DDR = DDRD .equ COM_ATTN_INPUT = PIND .equ COM_ATTN_OUTPUT = PORTD diff --git a/avr/devices/c01/main/main.asm b/avr/devices/c01/main/main.asm index db18bae..58b5e2f 100644 --- a/avr/devices/c01/main/main.asm +++ b/avr/devices/c01/main/main.asm @@ -56,7 +56,8 @@ #define MODULES_LED_SIMPLE #define MODULES_NETWORK ;#define MODULES_COMONUART0 -#define MODULES_UART_HW +;#define MODULES_UART_HW +#define MODULES_UART_BITBANG #define MODULES_SPI_HW #define MODULES_ILI9341 ;#define MODULES_FONT_8X8 @@ -117,7 +118,8 @@ ; --------------------------------------------------------------------------- ; Reset and interrupt vectors rjmp BOOTLOADER_ADDR ; 1: Reset vector RESET - rjmp NetUart_AttnChangeIsr ; 2: INT0 External Interrupt Request 0 +; rjmp NetUart_AttnChangeIsr ; 2: INT0 External Interrupt Request 0 + rjmp UART_BitBang_PcintIsr reti ; 3: INT1 External Interrupt Request 1 reti ; 4: TIMER1_CAPT Timer/Counter1 Capture Event reti ; 5: TIMER1_COMPA Timer/Counter1 Compare Match A @@ -216,7 +218,8 @@ onEveryLoop: ; --------------------------------------------------------------------------- ; defines for network interface -.equ netInterfaceData = netUartIface +;.equ netInterfaceData = netUartIface +.equ netInterfaceData = uart_bitbang_iface diff --git a/avr/modules/uart_bitbang2/iface.asm b/avr/modules/uart_bitbang2/iface.asm index 64ea27a..99167ee 100644 --- a/avr/modules/uart_bitbang2/iface.asm +++ b/avr/modules/uart_bitbang2/iface.asm @@ -55,12 +55,41 @@ UART_BitBang_Init: cbi COM_ATTN_OUTPUT, COM_ATTN_PIN ; disable internal pullup for ATTN ; enable IRQ +.ifdef INT0 + .if COM_IRQ_BIT_ATTN == INT0 + inr r16, MCUCR + cbr r16, (1<