Problems with 2 UART 18F46J50

Status
Not open for further replies.

Mondalot

Junior Member level 3
Joined
Sep 28, 2013
Messages
29
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Visit site
Activity points
235
Hello,
A week ago to enable the UART 2 and there is no way, it doesn't work.
The Proton Compiler code was easy to understand, That I need to do!!
My code was tested with the original datasheet and did not work.

The code work ok using RX1&TX1.(without ASM code)

Someone may Help me. Thanks.


_____ORIGINAL DATASHEET___________________________________

Code ASM - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
;*************************************
; Unlock Registers
;*************************************
; PPS registers are in BANK 14
MOVLB 0x0E
BCF INTCON, GIE ; Disable interrupts
; for unlock sequence
MOVLW 0x55
MOVWF EECON2, 0
MOVLW 0xAA
MOVWF EECON2, 0
; Turn off PPS Write Protect
BCF PPSCON, IOLOCK, BANKED
 
;***************************
; Assign RX2 To Pin RP0
;***************************
MOVLW 0x00
MOVWF RPINR16, BANKED
 
;***************************
; Assign TX2 To Pin RP1
;***************************
MOVLW 0x05
MOVWF RPOR1, BANKED
;*************************************
; Lock Registers
;*************************************
MOVLW 0x55
MOVWF EECON2, 0
MOVLW 0xAA
MOVWF EECON2, 0
; Write Protect PPS (if desired)
BSF PPSCON, IOLOCK, BANKED



-----------------------------------------------------
______________MY CODE ________________________

Code Basic4GL - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
Device = 18F46J50      'PIC Selection
Declare Xtal 12        'FIX XTAL to 12Mhz
 
Config_Start          'Fuses
  WDTEN = OFF ;Disabled - Controlled by SWDTEN bit
  PLLDIV = 3 ;Divide by 3 (12 MHz oscillator input)
  STVREN = On ;Enabled
  XINST = OFF ;Enabled Extended intruction disable
  Debug = OFF ;Disabled
  CPUDIV = OSC1 ;No CPU system clock divide
  CP0 = OFF ;Program memory is not code-protected
  OSC = HS 'HSPLL ;HS+PLL, USB-HS+PLL
  T1DIG = On ;Secondary Oscillator clock source may be selected
 LPT1OSC = OFF ;High-power operation
  FCMEN = OFF ;Disabled  fail-safe clock monitor
  IESO = On ;Enabled   'two-speed start-up
  WDTPS = 32768 ;1:32768
  DSWDTOSC = INTOSCREF ;DSWDT uses INTRC
  RTCOSC = T1OSCREF ;RTCC uses T1OSC/T1CKI
  DSBOREN = On ;Enabled
  DSWDTEN = OFF ;Watch Dog
  DSWDTPS = G2 ;1:2,147,483,648 (25.7 days)
  IOL1WAY = OFF ;The IOLOCK bit (PPSCON<0>) can be set once
'  MSSP7B_EN = MSK7 ;7 Bit address masking mode
 'WPFP = PAGE_63 ;Write Protect Program Flash Page 63
'  WPEND = PAGE_WPFP ;Page WPFP<5:0> through Configuration Words erase/write protected
  WPCFG = OFF ;Configuration Words page not erase/write-protected
  WPDIS = OFF ;WPFP<5:0>/WPEND region ignored 
Config_End
 
''Declarations EUSART2
Declare Hserial2_Baud  = 9600       'Set baud rate to 9600
Declare Hserial2_RCSTA = %10010000  'Enable serial port and continuous receive
Declare Hserial2_TXSTA = %00100100  'Enable transmit and asynchronous mode
Declare Hserial2_SPBRG = 77         'Set SPBRG for 12Mhz Xtal
Declare Hserial2_Clear = On         'Optionally clear the buffer before receiving
 
Declare All_Digital = True    'PortA all Digital
Dim Var1 As Byte
 
'Configuring USART2
 Movlw 0x55
 Movwf EECON2, 0
 Movlw 0xAA
 Movwf EECON2, 0 
 PPSCON.0=0    'Turn off PPS Write Protect 0
 RPINR16=0      'PortA.0= RX2  Mapping Port
 RPOR1=5        'PortA.1= TX2  Mapping Port, view datasheet Table 10-14
 Movlw 0x55
 Movwf EECON2, 0
 Movlw 0xAA
 Movwf EECON2, 0 
 PPSCON.0=1 ' Turn on PPS Write Protect
 
TRISA = %00000001    '1=Input A.0 / 0 = Outs A.1
 
 
Loop:
HSerIn2 1000, Timeout, [Var1] ' Receive a byte serially into Var1
   Print Dec Var1, " " ' Display the byte received
GoTo Loop ' Loop forever
 
Timeout:
Cls
Print "Timed Out" ' Display an error if Hserin2 timed out
DelayMS 500
Stop
 
End



THX.
 
Last edited by a moderator:

Hello,
Attempting to operate the 2 Euart the PIC18F46J50. I removed the ASM code for a similar but does not work.
I need your helpThank you ..

This is the New Code.

Code:
Device = 18F46J50      'PIC Selection
Declare Xtal 12        'FIX XTAL to 12Mhz

Config_Start          'Fuses
 WDTEN = OFF ;Disabled - Controlled by SWDTEN bit
 PLLDIV = 3 ;Divide by 3 (12 MHz oscillator input)
 STVREN = On ;Enabled
 XINST = OFF ;Enabled Extended intruction disable
 Debug = OFF ;Disabled
 CPUDIV = OSC1 ;No CPU system clock divide
 CP0 = OFF ;Program memory is not code-protected
 OSC = HS 'HSPLL ;HS+PLL, USB-HS+PLL
 T1DIG = On ;Secondary Oscillator clock source may be selected
 LPT1OSC = OFF ;High-power operation
 FCMEN = OFF ;Disabled  fail-safe clock monitor
 IESO = On ;Enabled   'two-speed start-up
 WDTPS = 32768 ;1:32768
 DSWDTOSC = INTOSCREF ;DSWDT uses INTRC
 RTCOSC = T1OSCREF ;RTCC uses T1OSC/T1CKI
 DSBOREN = On ;Enabled
 DSWDTEN = OFF ;Watch Dog
 DSWDTPS = G2 ;1:2,147,483,648 (25.7 days)
 IOL1WAY = OFF ;The IOLOCK bit (PPSCON<0>) can be set once
' MSSP7B_EN = MSK7 ;7 Bit address masking mode
'WPFP = PAGE_63 ;Write Protect Program Flash Page 63
' WPEND = PAGE_WPFP ;Page WPFP<5:0> through Configuration Words erase/write protected
 WPCFG = OFF ;Configuration Words page not erase/write-protected
 WPDIS = OFF ;WPFP<5:0>/WPEND region ignored 
Config_End
 
'Declarations EUSART2
Declare Hserial2_Baud  = 9600       'Set baud rate to 9600
Declare Hserial2_RCSTA = %10010000  'Enable serial port and continuous receive
Declare Hserial2_TXSTA = %00100100  'Enable transmit and asynchronous mode
Declare Hserial2_SPBRG = 77         'Set SPBRG for 12Mhz Xtal
Declare Hserial2_Clear = On         'Optionally clear the buffer before receiving

Declare All_Digital = True    'PortA all Digital
Dim Var1 As Byte

'Configuring USART2
Dim IOLOCK As PPSCON.0
Dim INTCON_GIE As INTCON.7 'global interrupt disable bit (GIEH)
Dim t_gie As Bit           'saved GEIH state

t_gie = 0

t_gie = INTCON_GIE    'save current state of GIE intr bit and disable interrupts
INTCON_GIE = 0
'Unlock PPS configuration
EECON2 = $55         'send sequence to unlock the PPS configuration
EECON2 = $AA
IOLOCK = 0
'Mapping Ports
PPSCON.0=0    'Turn off PPS Write Protect 0
RPINR16=0     'PortA.0= RX2  Mapping Port
RPOR1=5       'PortA.1= TX2  Mapping Port
'Lock PPS configuration
EECON2 = $55
EECON2 = $AA
IOLOCK = 1
If t_gie = 1 Then INTCON_GIE = 1

Loop:
HSerIn2 1000, Timeout, [Var1] ' Receive a byte serially into Var1
   Print Dec Var1, " " ' Display the byte received
GoTo Loop ' Loop forever

Timeout:
Cls
Print "Timed Out" ' Display an error if Hserin2 timed out
DelayMS 500
Stop

End
 

Hello,

RAR Contents: pdf schematic and the full program to date in Proton Compiler.

The Full project is in RAR File : **broken link removed**
THX.
 

Hello,

I didn't know how it worked. Sorry.

Thx.
 

Attachments

  • 2EUSART Project.rar
    169.9 KB · Views: 84

Status
Not open for further replies.

Similar threads

Cookies are required to use this site. You must accept them to continue using the site. Learn more…