my tipThanks for any tips,
it works just fine if you do it properly
my tipThanks for any tips,
it works just fine if you do it properly
Warning I'm not a teacher
You might want to post what you've tried so we can give you some 'tips'
Code:OSCFRQ = %1000 '64Mhz Define OSC 64 ' Set receive register to receiver enabled ' Set transmit register to transmitter enabled DEFINE HSER_RXREG PORTC DEFINE HSER_RXBIT 4 DEFINE HSER_TXREG PORTC DEFINE HSER_TXBIT 5 DEFINE HSER_BAUD 9600 ' Set receive register to receiver enabled ' Set transmit register to transmitter enabled 'DEFINE HSER2_RXREG PORTB 'DEFINE HSER2_RXBIT 3 'DEFINE HSER2_TXREG PORTB 'DEFINE HSER2_TXBIT 0 'DEFINE HSER2_BAUD 9600 'This works hSerout ["Test",13,10] 'This doesn't hSerout2 ["Test",13,10]
Apologies, here is the actual code:
Code:OSCFRQ = %1000 '64Mhz Define OSC 64 PRECISION CON 8 SYSTEM '8 byte = 64 bit precision INCLUDE "N-Bit_Math.pbp" DEFINE HSER2_RXREG PORTB DEFINE HSER2_RXBIT 3 DEFINE HSER2_TXREG PORTB DEFINE HSER2_TXBIT 0 DEFINE HSER2_BAUD 9600 DEFINE HSER_RXREG PORTC DEFINE HSER_RXBIT 4 DEFINE HSER_TXREG PORTC DEFINE HSER_TXBIT 5 DEFINE HSER_BAUD 9600 ANSELA = %00000000 'Everything Digital ANSELB = %00000000 'Everything Else Digital ANSELC = %00000000 'Everything Else Digital TRISB.0 = 0 TRISB.3 = 1 TRISC.4 = 1 TRISC.5 = 0 'works hSerout ["Test",13,10] 'doesn't work hSerout2 ["Test",13,10]
I'm far from an expert in this space. And haven't used the second USART port on a PIC
But maybe PMD5 register for UART2 isn't being set correctly by picbasic??
bit 5 U2MD: Disable UART2 bit
1 = UART2 module disabled
0 = UART2 module enabled
bit 4 U1MD: Disable UART1 bit
1 = UART1 module disabled
0 = UART1 module enabled
extremely unlikelyI'm far from an expert in this space. And haven't used the second USART port on a PIC
But maybe PMD5 register for UART2 isn't being set correctly by picbasic??
note power on defaults for PDM5
did you try setting uart regs like mcc suggests ?
note uart registers
![]()
Warning I'm not a teacher
Regarding setting the regs directly: this is what I've tried (note this is set to 115200 baud as that was the original objective)
That doesn't provide any joy either.Code:OSCFRQ = %1000 '64Mhz Define OSC 64 PRECISION CON 8 SYSTEM '8 byte = 64 bit precision INCLUDE "N-Bit_Math.pbp" 'Use for hardware serial comms to SD card module '****************************************************************************** 'Configure UART Control Register 0 U2CON0.7 = 1 'BRGS = 1 (high speed baud generator) U2CON0.6 = 0 'ABDEN = 0 Auto-baud Detect Disabled U2CON0.5 = 1 'TXEN: Transmit Enabled U2CON0.4 = 1 'RXEN: Receive Disabled U2CON0.3 = 0 '0000 = Asynchronous 8-bit UART mode U2CON0.2 = 0 '0000 = Asynchronous 8-bit UART mode U2CON0.1 = 0 '0000 = Asynchronous 8-bit UART mode U2CON0.0 = 0 '0000 = Asynchronous 8-bit UART mode U2CON1.7 = 0 'Turn Serial port 2 off for baud setting U2BRGL = 138 'Baud Divisor low byte U2BRGH = 0 'Baud Divisor high byte U2RXPPS = %1011 'Assign UART RX pin to RB3 RB0PPS = %010110 'Assign UART2 TX pin to RB0 U2CON1.7 = 1 'Turn Serial port 2 on '****************************************************************************** 'Configure AN2 as Analog Inputs (PortA2) ANSELB = %00000000 'Everything Digital TRISB.0 = 0 'SD_Card_TX Hardware UART TRISB.3 = 1 'SD_Card_RX Hardware UART hSerout2 ["Test",13,10]
Last edited by rocket_troy; - 13th August 2024 at 17:45.
you don't appear to have set the portb pins used to digital [anselb =$f6]
or not
mcc sets the involved registers like this to match your settings
TRISB = 0xFE;
ANSELB = 0xF6;
U2RXPPS = 0x0B; //RB3->UART2:RX2;
RB0PPS = 0x16; //RB0->UART2:TX2;
U2P1L = 0x00;
U2P1H = 0x00;
U2P2L = 0x00;
U2P2H = 0x00;
U2P3L = 0x00;
U2P3H = 0x00;
U2CON0 = 0xB0;
U2CON1 = 0x80;
U2CON2 = 0x00;
U2BRGL = 0x82;
U2BRGH = 0x06;
U2FIFO = 0x00;
U2UIR = 0x00;
U2ERRIR = 0x00;
U2ERRIE = 0x00;
Last edited by richard; - 13th August 2024 at 02:05. Reason: oh you posted again when i reading the data sheet
Warning I'm not a teacher
I'm guessing this is a reply to my 1st code post which I inadvertently cut the TRIS settings in my (hastily) attempt for reader friendly pruning, but I can assure you every port was set to digital all the time. What's more, the 2nd UART was originally configured to the same pins as the 1st. When my head was too sore from banging against that wall, I switched the 1st UART to those pins and voila, they worked.
Troy
Bookmarks