Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Make change in Loader for dsPIC33FJ128GP802 MCU
#1
Hi,
I'm come from PIC18Fxxxx and i am a rookie in dsPIC.

Please one question:

I read the manual for change for dsPIC33FJ128GP802 (DIP 28 Pin).

- I changed in the assembler file setting.inc, points for my dsPIC
- I deleted the old .gld linker file, and replace with correct dsPIC33FJ128GP802.gld

I build all, but this error appears: "error "PPS is not configured. More information in the firmware manual"

I (to try...) modified this line:

.ifdef HAS_PPS
.error "PPS is not configured. More information in the firmware manual."

with this one: .ifndef (if NOT def) and the compilation is ok, is done.

How can I do to solve correctly? Where I have to change the PPS??

Thanks

Guido from Italy

(remember: i'm not very experienced...)
Reply
#2
Hi,
Sorry for the late reply. I've been on vacation.

PPS (peripheral pin select) is a feature on some PIC/dsPIC which allows peripherals to be mapped to different i/o pins. This must be configured properly for the boot loader to work. There is a template prepared for you in user_code.inc.

Which pins do you use for rx and tx?
Reply
#3
(2013-09-05, 19:34:33)Mikael Gustavsson Wrote: Hi,
Sorry for the late reply. I've been on vacation.

PPS (peripheral pin select) is a feature on some PIC/dsPIC which allows peripherals to be mapped to different i/o pins. This must be configured properly for the boot loader to work. There is a template prepared for you in user_code.inc.

Which pins do you use for rx and tx?

Ok, thanks for reply! Smile

I have learn on Datasheet the PPS.

Some detail: i have this board, but the Seller does not provide the bootloader of the System:

[Image: %24T2eC16F,!zQE9s3sqJV-BRlNgR!PkQ~~60_12.JPG]
[Image: 2im5nd.jpg]

I have 4 of these cards and I wanted to use them with a normal bootloader.

- The pin for UART are 21 and 22
- Not Crystal, but Internal FRC

My chip is dsPIC33FJ128 GP

[Image: 361000_2_5.jpg]

I have modified:

Setting.inc with correct MCU line (dsPIC33FJ128GP)
Replaced .gld linker, with correct linker for my dsPIC.

Now I have to enter values ​​for the pins of the UART, in the user_code.inc?
Reply
#4
It seems that board is made for PIC32. Is dsPIC33FJ128GP802 really supported?
Reply
#5
If you look carefully, you see that the pin-out of these two chip is identical.

[Image: 2jam7bo.jpg]

Same package DIP28

MCLR is pin 1

Vdd = 13
Vss = 19
AVdd = 28
AVss = 27
Vcap = 20
etc. etc.
Reply
#6
Ok. Please zip and post the boot loader project and I will help you.
Reply
#7
First: Thanks for courtesy and help!

My "project" are a very little changes!

I simply modified, in the src folder, the setting.inc file with:

;------------------------------------------------------------------------------
; Device
;------------------------------------------------------------------------------
;.equ __24F16KA102, 1 ;xxx uncomment and change if using PIC24F device
;.equ __24FJ128GA010, 1 ;xxx uncomment and change if using PIC24FJ device
;.equ __24HJ128GP504, 1 ;xxx uncomment and change if using PIC24HJ device
;.equ __30F4013, 1 ;xxx uncomment and change if using dsPIC30F device
.equ __33FJ128GP802, 1 ;xxx uncomment and change if using dsPIC33FJ device

The last line is my change, with my device: dsPIC33FJ128GP802
All other lines in the file are unchanged

I opened ds30Loader.mcp with MPLAB IDE v8.92, i chose the chip in > Select Devices (my dsPIC33FJ128GP802).

I deleted the default gld linker and placed (Add files...) the gld linker for my dsPIC (p33FJ128GP802.gld)... and >Build all (Release)

In this way, the linker tell me this error: "error "PPS is not configured. More information in the firmware manual"

ok... then i go to user_code.inc at this macro:

;----------------------------------------------------------------------
; UART/CAN pps config
;----------------------------------------------------------------------
.ifdef HAS_PPS
.error "PPS is not configured. More information in the firmware manual." ;xxx remove this line when PPS is configured


and change the first .ifdef with .ifndef (ifNOTdef). In this way i re-compile >Build all, with success and program (with picKit3) correctly the MCU!
Obviously, not declaring the pins of the serial port nowhere, will not work. I think...
Reply
#8
(2013-09-07, 22:44:30)Mikael Gustavsson Wrote: Ok. Please zip and post the boot loader project and I will help you.
Reply
#9
(2013-09-11, 08:37:39)Mikael Gustavsson Wrote:
(2013-09-07, 22:44:30)Mikael Gustavsson Wrote: Ok. Please zip and post the boot loader project and I will help you.

Sorry!

I do not have a real project. I just changed the lines in the code, and compile the MCP Project in the \ds30 Loader\firmware_16-bit folder!


In attachment you can get the folder, with my changes.


1) add .equ __33FJ128GP802, 1 line in setting.inc, for my PIC
2) add p33FJ128GP802.gld in the mcp project (Linker Script > Add Files...)
3) Chose my dsPIC from Configure > Select Devices... (dsPIC33FJ128GP802)
4) replaced (for experiment) the .ifdef HAS_PPS in user_code.inc, with ifndef directive.

Stop, end of my changes.

4) Compile and program the chip with PicKit3.

I need help to configure correct serial pin (21-22) for the UART1 or UART2.


Attached Files
.zip   bootloader.zip (Size: 73.68 KB / Downloads: 22)
Reply
#10
Thanks. Try this code, replace the existing code in user_code.inc
Code:
                ; Receive, map pin RB11/RP11 to UART2 Rx
                bclr    RPINR19, #U2RXR0        ;xxx
                bset    RPINR19, #U2RXR1        ;xxx
                bclr    RPINR19, #U2RXR2        ;xxx
                bset    RPINR19, #U2RXR3        ;xxx
                bclr    RPINR19, #U2RXR4        ;xxx
                        
                ; Transmit, map UART2 Tx to pin RB10/RP10
                bset    RPOR5, #RP10R0            ;xxx
                bclr    RPOR5, #RP10R1            ;xxx
                bset    RPOR5, #RP10R2            ;xxx
                bclr    RPOR5, #RP10R3            ;xxx
                bclr    RPOR5, #RP10R4            ;xxx
Reply
#11
Good. Thanks!
1) Can you give me some explanation of the code?
2) Can I use the Configuration Bits of MPLAB IDE, and ignore the code in settings.inc? (uncheck "Configuration Bits set in code" radio button)
Reply
#12
So it works now?
1) bset and bclr, sets and clears the bit(second argument) in the register(first argument). More info about PPS in the datasheet.
2) Yes you can.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)