Panowie, pomóżcie bo coś się zamotałem i zablokowałem na konfiguracji 2x UART
Bawię się płytką Arduino MEGA i chcę skonfigurować uC tak, że pierwszy UART ma służyć do komunikacji z PC (chcę mieć możliwość komunikacji przez USB) a drugi do komunikacji z ESP8266
Co robię źle?
Kombinuję na różne sposoby, ale coś mi to nie idzie
.
- $regfile = "m2560def.dat"
- $crystal = 16000000
- $hwstack = 256
- $swstack = 128
- $framesize = 256
- '--- UART 1 PC ---
- $baud = 115200
- Open "COM1:" For Binary As #1 : Const Pc = 1
- Config Serialin0 = Buffered , Size = 100 , Bytematch = 13
- Clear Serialin0
- Config Input1 = Crlf , Echo = Cr : Echo Off
- Dim Com1_str As String * 100
- '--- UART 2 ESP ---
- $baud1 = 115200
- Open "COM2:" For Binary As #2 : Const Esp = 2
- Config Serialin1 = Buffered , Size = 250 , Bytematch = 10
- Clear Serialin1
- Config Input2 = Crlf , Echo = Cr : Echo Off
- Dim Com2_str As String * 250
- (...)
- '--- włącz globalne przerwania ---
- Enable Interrupts
- do
- (...)
- If Esp_nadaje = 1 Then
- Esp_nadaje = 0
- Call Esp8266
- End If
- If Pc_nadaje = 1 Then
- Pc_nadaje = 0
- Call Pc_uart
- End If
- loop
- end
- '--- przerwanie UART PC ---
- Serial0charmatch:
- $asm
- !PUSH R6
- !PUSH R16
- !PUSH R17
- !PUSH R18
- !PUSH R19
- !PUSH R22
- !PUSH R24
- !PUSH R25
- !PUSH R26
- !PUSH R27
- !PUSH R30
- !IN R24, SREG
- !PUSH R24
- $end asm
- '# PUT YOUR ISR ROUTINES HERE #
- ' Tuned with NoSave Tool 1.10
- $timeout = 3000
- Input #pc , Com1_str
- Clear Serialin0
- Pc_nadaje = 1
- $asm
- !POP R24
- !OUT SREG, R24
- !POP R30
- !POP R27
- !POP R26
- !POP R25
- !POP R24
- !POP R22
- !POP R19
- !POP R18
- !POP R17
- !POP R16
- !POP R6
- $end Asm
- Return
- '--- przerwanie UART ESP ---
- Serial1charmatch:
- $asm
- !PUSH R6
- !PUSH R16
- !PUSH R17
- !PUSH R18
- !PUSH R19
- !PUSH R22
- !PUSH R24
- !PUSH R25
- !PUSH R26
- !PUSH R27
- !PUSH R30
- !IN R24, SREG
- !PUSH R24
- $end Asm
- '# PUT YOUR ISR ROUTINES HERE #
- ' Tuned with NoSave Tool 1.10
- $timeout = 3000
- Input #esp , Com2_str
- Clear Serialin1
- Esp_nadaje = 1
- $asm
- !POP R24
- !OUT SREG, R24
- !POP R30
- !POP R27
- !POP R26
- !POP R25
- !POP R24
- !POP R22
- !POP R19
- !POP R18
- !POP R17
- !POP R16
- !POP R6
- $end asm
- Return
*oczywiście to tylko wycinek z większego kodu
Z góry dziękuję za pomoc.
Piotrek