chipKIT® Development Platform

Inspired by Arduino™

Microchip USB Starter Kit III (3) with PIC32MX450

Created Wed, 30 Oct 2013 08:12:40 +0000 by ChristopheDupriez


ChristopheDupriez

Wed, 30 Oct 2013 08:12:40 +0000

Hi! Microchip proposes its USB Starter Kit III at a reasonable price with a nice MCU: the PIC32MX450 (soon 470?). Does anyone intend to work on a bootloader and a Board_Def for this? I ask before ordering but I would then be willing to help. It would need to beef up the PPS support...


EmbeddedMan

Wed, 30 Oct 2013 15:32:36 +0000

I don't believe there's a bootloader set up for this baord or that processor, however it should be very simple to do so.

What changes do you think would need to be made to PPS support?

*Brian


ChristopheDupriez

Wed, 30 Oct 2013 16:00:23 +0000

Current PPS support is for PIC32MX1xx and PIC32MX2xx (I am learning using a ChipKit DP32 and just received some Fubarino Minis ).

But to support a board that we are developing for PIC32MX33-35-37-43-45-47 MCUs (100 lines version), we will have to add these MCUs within ChipKit PPS support in "cores/pic32" and Board_Def.

As USB Starter Kit III is using PIC32MX45x or 47x too, I was wondering what would be the interest of others in supporting this development kit. The USB Starter kit III is programmed through an onboard PIC24 OTG: may be it is "in the way" for ChipKit IDE programming?

It is the first time I do this, please excuse how naively I approach the topic.


guymc

Wed, 30 Oct 2013 22:47:59 +0000

This is a cool idea. I've long thought that it should be possible to program PIC32 Starter Kits directly from MPIDE.

You are correct in guessing that, out of the box, the on-board starter kit programmer can't communicate with MPIDE. You could work around that with a soldering iron, and just connect to the PIC32 through a serial port instead. But, heck, you can do anything with a soldering iron, right?

All PIC32 starter kits (except the first generation) include a programming circuit that is basically a PICkit 3. The PK3 firmware is proprietary, but it can be replaced by "scripting firmware" that is open source. You can download the scripting firmware here (scroll way down):

http://www.microchip.com/archives

Bascially, the scripting firmware turns a PK3 into a PICkit 2. There are multiple open source utilities that can communicate with PICkit 2. Here's one:

https://code.google.com/p/pic32prog/

If you want to dig into this (or anyone else on the forum) shoot me a PM and I'll provide whatever hardware you need. Except for the PC, Mac or Linux box, of course :-)

Cheers


majenko

Wed, 30 Oct 2013 23:08:38 +0000

I tried upgrading my pickit3 with the scripting firmware once. It crippled it.

Fortunately I have a pickit2 that I used to replace the firmware on the pickit3 with the proper firmware again.

So be careful suing the scripting firmware - it isn't always as straight forward as you may think...


guymc

Wed, 30 Oct 2013 23:38:50 +0000

I wouldn't expect the scripting firmware to work with MPLAB IDE, if that's what you mean. It's designed to work with the PICkit 3 Programmer Application, which is a stand-alone app that ships with the firmware.

As far as MPLAB goes, you're correct. The scripting firmware is not compatible.


majenko

Thu, 31 Oct 2013 09:53:04 +0000

As for the PPS side of things...

I would suggest moving away from

#if defined(__PIC32MX1__) || defined(__PIC32MX2__)

and start building up an index of chips and their capabilities in a header file in the core.

Something like

#if defined(__PIC32MX250__)
#define __PPS__ 1
#endif

Then you can, of course, use

#ifdef __PPS__

throughout the core. That way as new chips are released you can add them to the index and define their properties. We could also include other things in there, such as the style of CN interface, etc. Yes, the list could get quite big, but it would give us the most flexibility.

(by the way, I'm not sure off hand what the deciding macro should be - is PIC32MX250 right? I can never remember. It's something like that anyway...)


ChristopheDupriez

Thu, 31 Oct 2013 21:17:32 +0000

As I am not a comitter to ChipKit software so I would deeply appreciate a comitter make the changes suggested by Majenko before I start developing!

Advice to those beginning to investigate PPS: beware that only a limited number of digital functions is available to each pin!


majenko

Thu, 31 Oct 2013 23:17:37 +0000

Anyone can be a committer.

Just sign up to github, and fork your own copy of the repo. Make your changes to your local copy, check them in and push them, then if you're happy it's all working, create a pull request. Your changes can then be incorporated into the master repo by the maintainers.


ChristopheDupriez

Fri, 01 Nov 2013 06:40:15 +0000

I shall do my best then! Thanks Majenko! Christophe


ChristopheDupriez

Wed, 06 Nov 2013 09:00:53 +0000

Hi! PPS Support is not a simple thing (how to abstract constraints in digital devices assignment to pins?).

I start with a simple one though: adding PPS definition to cpudefs.h (see below). No objection/suggestion from anyone about putting the number of PPS pins as the definition of PPS symbol?

...... //************************************************************************ //* Microchip pic32 chip names #elif defined(PIC32MX)

#define	E2END		0x0fff	//*	4 k of simulated EEPROM

//************************************************************************
//*	100 series

#if defined(__32MX110F016B__)
	#define _CPU_NAME_	"32MX110F016B"
	#define	FLASHEND	(((16 - 4) * 1024L) - 1)
	#define	RAMEND		((4 * 1024L) - 1)
	#define	__PIC32MX1XX__
	#define __PPS__ 20

#elif defined(__32MX110F016C__)
	#define _CPU_NAME_	"32MX110F016C"
	#define	FLASHEND	(((16 - 4) * 1024L) - 1)
	#define	RAMEND		((4 * 1024L) - 1)
	#define	__PIC32MX1XX__
	#define __PPS__ 24

#elif defined(__32MX110F016D__)
	#define _CPU_NAME_	"32MX110F016D"
	#define	FLASHEND	(((16 - 4) * 1024L) - 1)
	#define	RAMEND		((4 * 1024L) - 1)
	#define	__PIC32MX1XX__
	#define __PPS__ 32

#elif defined(__32MX120F032B__)
	#define _CPU_NAME_	"32MX120F032B"
	#define	FLASHEND	(((32 - 4) * 1024L) - 1)
	#define	RAMEND		((8 * 1024L) - 1)
	#define	__PIC32MX1XX__
	#define __PPS__ 20

#elif defined(__32MX120F032C__)
	#define _CPU_NAME_	"32MX120F032C"
	#define	FLASHEND	(((32 - 4) * 1024L) - 1)
	#define	RAMEND		((8 * 1024L) - 1)
	#define	__PIC32MX1XX__
	#define __PPS__ 24

#elif defined(__32MX120F032D__)
	#define _CPU_NAME_	"32MX120F032D"
	#define	FLASHEND	(((32 - 4) * 1024L) - 1)
	#define	RAMEND		((8 * 1024L) - 1)
	#define	__PIC32MX1XX__
	#define __PPS__ 32

#elif defined(__32MX130F064B__)
	#define _CPU_NAME_	"32MX130F064B"
	#define	FLASHEND	(((64 - 4) * 1024L) - 1)
	#define	RAMEND		((16 * 1024L) - 1)
	#define	__PIC32MX1XX__
	#define __PPS__ 20

#elif defined(__32MX130F064C__)
	#define _CPU_NAME_	"32MX130F064C"
	#define	FLASHEND	(((64 - 4) * 1024L) - 1)
	#define	RAMEND		((16 * 1024L) - 1)
	#define	__PIC32MX1XX__
	#define __PPS__ 24

#elif defined(__32MX130F064D__)
	#define _CPU_NAME_	"32MX130F064D"
	#define	FLASHEND	(((64 - 4) * 1024L) - 1)
	#define	RAMEND		((16 * 1024L) - 1)
	#define	__PIC32MX1XX__
	#define __PPS__ 32

#elif defined(__32MX150F128B__)
	#define _CPU_NAME_	"32MX150F128B"
	#define	FLASHEND	(((128 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX1XX__
	#define __PPS__ 20

#elif defined(__32MX150F128C__)
	#define _CPU_NAME_	"32MX150F128C"
	#define	FLASHEND	(((128 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX1XX__
	#define __PPS__ 24

#elif defined(__32MX150F128D__)
	#define _CPU_NAME_	"32MX150F128D"
	#define	FLASHEND	(((128 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX1XX__
	#define __PPS__ 32

//************************************************************************
//*	200 series

#elif defined(__32MX210F016B__)
	#define _CPU_NAME_	"32MX210F016B"
	#define	FLASHEND	(((16 - 4) * 1024L) - 1)
	#define	RAMEND		((4 * 1024L) - 1)
	#define	__PIC32MX2XX__
	#define __PPS__ 19

#elif defined(__32MX210F016C__)
	#define _CPU_NAME_	"32MX210F016C"
	#define	FLASHEND	(((16 - 4) * 1024L) - 1)
	#define	RAMEND		((4 * 1024L) - 1)
	#define	__PIC32MX2XX__
	#define __PPS__ 23

#elif defined(__32MX210F016D__)
	#define _CPU_NAME_	"32MX210F016D"
	#define	FLASHEND	(((16 - 4) * 1024L) - 1)
	#define	RAMEND		((4 * 1024L) - 1)
	#define	__PIC32MX2XX__
	#define __PPS__ 31

#elif defined(__32MX220F032B__)
	#define _CPU_NAME_	"32MX220F032B"
	#define	FLASHEND	(((32 - 4) * 1024L) - 1)
	#define	RAMEND		((8 * 1024L) - 1)
	#define	__PIC32MX2XX__
	#define __PPS__ 19

#elif defined(__32MX220F032C__)
	#define _CPU_NAME_	"32MX220F032C"
	#define	FLASHEND	(((32 - 4) * 1024L) - 1)
	#define	RAMEND		((8 * 1024L) - 1)
	#define	__PIC32MX2XX__
	#define __PPS__ 23

#elif defined(__32MX220F032D__)
	#define _CPU_NAME_	"32MX220F032D"
	#define	FLASHEND	(((32 - 4) * 1024L) - 1)
	#define	RAMEND		((8 * 1024L) - 1)
	#define	__PIC32MX2XX__
	#define __PPS__ 31

#elif defined(__32MX230F064B__)
	#define _CPU_NAME_	"32MX230F064B"
	#define	FLASHEND	(((64 - 4) * 1024L) - 1)
	#define	RAMEND		((16 * 1024L) - 1)
	#define	__PIC32MX2XX__
	#define __PPS__ 19

#elif defined(__32MX230F064C__)
	#define _CPU_NAME_	"32MX230F064C"
	#define	FLASHEND	(((64 - 4) * 1024L) - 1)
	#define	RAMEND		((16 * 1024L) - 1)
	#define	__PIC32MX2XX__
	#define __PPS__ 23

#elif defined(__32MX230F064D__)
	#define _CPU_NAME_	"32MX230F064D"
	#define	FLASHEND	(((64 - 4) * 1024L) - 1)
	#define	RAMEND		((16 * 1024L) - 1)
	#define	__PIC32MX2XX__
	#define __PPS__ 31

#elif defined(__32MX250F128B__)
	#define _CPU_NAME_	"32MX250F128B"
	#define	FLASHEND	(((128 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX2XX__
	#define __PPS__ 19

#elif defined(__32MX250F128C__)
	#define _CPU_NAME_	"32MX250F128C"
	#define	FLASHEND	(((128 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX2XX__
	#define __PPS__ 23

#elif defined(__32MX250F128D__)
	#define _CPU_NAME_	"32MX250F128D"
	#define	FLASHEND	(((128 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX2XX__
	#define __PPS__ 31

//************************************************************************
//*	300 series

#elif defined(__32MX320F032H__)
	#define _CPU_NAME_	"32MX320F032H"
	#define	FLASHEND	(((32 - 4) * 1024L) - 1)
	#define	RAMEND		((8 * 1024L) - 1)
	#define	__PIC32MX3XX__

#elif defined(__32MX320F064H__)
	#define	_CPU_NAME_	"32MX320F064H"
	#define	FLASHEND	(((64 - 4) * 1024L) - 1)
	#define	RAMEND		((16 * 1024L) - 1)
	#define	__PIC32MX3XX__

#elif defined(__32MX320F128H__)
	#define	_CPU_NAME_	"32MX320F128H"
	#define	FLASHEND	(((128 - 4) * 1024L) - 1)
	#define	RAMEND		((16 * 1024L) - 1)
	#define	__PIC32MX3XX__

#elif defined(__32MX340F128H__)
	#define	_CPU_NAME_	"32MX340F128H"
	#define	FLASHEND	(((128 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX3XX__

#elif defined(__32MX340F256H__)
	#define	_CPU_NAME_	"32MX340F256H"
	#define	FLASHEND	(((256 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX3XX__

#elif defined(__32MX340F512H__)
	#define	_CPU_NAME_	"32MX340F512H"
	#define	FLASHEND	(((512 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX3XX__

#elif defined(__32MX320F128L__)
	#define	_CPU_NAME_	"32MX320F128L"
	#define	FLASHEND	(((128 - 4) * 1024L) - 1)
	#define	RAMEND		((16 * 1024L) - 1)
	#define	__PIC32MX3XX__

#elif defined(__32MX340F128L__)
	#define	_CPU_NAME_	"32MX340F128L"
	#define	FLASHEND	(((128 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX3XX__

#elif defined(__32MX360F256L__)
	#define	_CPU_NAME_	"32MX360F256L"
	#define	FLASHEND	(((256 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX3XX__

#elif defined(__32MX360F512L__)
	#define	_CPU_NAME_	"32MX360F512L"
	#define	FLASHEND	(((512 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX3XX__

//************************************************************************
//*	300 series with PPS

#elif defined(__32MX330F064H__)
	#define	_CPU_NAME_	"32MX330F064H"
	#define	FLASHEND	(((64 - 4) * 1024L) - 1)
	#define	RAMEND		((16 * 1024L) - 1)
	#define	__PIC32MX3XX__
	#define	__PPS__ 37

#elif defined(__32MX330F064L__)
	#define	_CPU_NAME_	"32MX330F064L"
	#define	FLASHEND	(((64 - 4) * 1024L) - 1)
	#define	RAMEND		((16 * 1024L) - 1)
	#define	__PIC32MX3XX__
	#define	__PPS__ 54

#elif defined(__32MX350F128H__)
	#define	_CPU_NAME_	"32MX350F128H"
	#define	FLASHEND	(((128 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX3XX__
	#define	__PPS__ 37

#elif defined(__32MX350F128L__)
	#define	_CPU_NAME_	"32MX350F128L"
	#define	FLASHEND	(((128 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX3XX__
	#define	__PPS__ 54

#elif defined(__32MX350F256H__)
	#define	_CPU_NAME_	"32MX350F256H"
	#define	FLASHEND	(((256 - 4) * 1024L) - 1)
	#define	RAMEND		((64 * 1024L) - 1)
	#define	__PIC32MX3XX__
	#define	__PPS__ 37

#elif defined(__32MX350F256L__)
	#define	_CPU_NAME_	"32MX350F256L"
	#define	FLASHEND	(((256 - 4) * 1024L) - 1)
	#define	RAMEND		((64 * 1024L) - 1)
	#define	__PIC32MX3XX__
	#define	__PPS__ 54

#elif defined(__32MX370F512H__)
	#define	_CPU_NAME_	"32MX370F512H"
	#define	FLASHEND	(((512 - 4) * 1024L) - 1)
	#define	RAMEND		((128 * 1024L) - 1)
	#define	__PIC32MX3XX__
	#define	__PPS__ 37

#elif defined(__32MX370F512L__)
	#define	_CPU_NAME_	"32MX370F512L"
	#define	FLASHEND	(((512 - 4) * 1024L) - 1)
	#define	RAMEND		((128 * 1024L) - 1)
	#define	__PIC32MX3XX__
	#define	__PPS__ 54

//************************************************************************
//*	400 series with PPS

#elif defined(__32MX430F064H__)
	#define	_CPU_NAME_	"32MX430F064H"
	#define	FLASHEND	(((64 - 4) * 1024L) - 1)
	#define	RAMEND		((16 * 1024L) - 1)
	#define	__PIC32MX4XX__
	#define	__PPS__ 34

#elif defined(__32MX430F064L__)
	#define	_CPU_NAME_	"32MX430F064L"
	#define	FLASHEND	(((64 - 4) * 1024L) - 1)
	#define	RAMEND		((16 * 1024L) - 1)
	#define	__PIC32MX4XX__
	#define	__PPS__ 51

#elif defined(__32MX450F128H__)
	#define	_CPU_NAME_	"32MX450F128H"
	#define	FLASHEND	(((128 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX4XX__
	#define	__PPS__ 34

#elif defined(__32MX450F128L__)
	#define	_CPU_NAME_	"32MX450F128L"
	#define	FLASHEND	(((128 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX4XX__
	#define	__PPS__ 51

#elif defined(__32MX450F256H__)
	#define	_CPU_NAME_	"32MX450F256H"
	#define	FLASHEND	(((256 - 4) * 1024L) - 1)
	#define	RAMEND		((64 * 1024L) - 1)
	#define	__PIC32MX4XX__
	#define	__PPS__ 34

#elif defined(__32MX450F256L__)
	#define	_CPU_NAME_	"32MX450F256L"
	#define	FLASHEND	(((256 - 4) * 1024L) - 1)
	#define	RAMEND		((64 * 1024L) - 1)
	#define	__PIC32MX4XX__
	#define	__PPS__ 51

#elif defined(__32MX470F512H__)
	#define	_CPU_NAME_	"32MX470F512H"
	#define	FLASHEND	(((512 - 4) * 1024L) - 1)
	#define	RAMEND		((128 * 1024L) - 1)
	#define	__PIC32MX4XX__
	#define	__PPS__ 34

#elif defined(__32MX470F512L__)
	#define	_CPU_NAME_	"32MX470F512L"
	#define	FLASHEND	(((512 - 4) * 1024L) - 1)
	#define	RAMEND		((128 * 1024L) - 1)
	#define	__PIC32MX4XX__
	#define	__PPS__ 51

//************************************************************************
//*	400 series

#elif defined(__32MX420F032H__)
	#define	_CPU_NAME_	"32MX420F032H"
	#define	FLASHEND	(((32 - 4) * 1024L) - 1)
	#define	RAMEND		((8 * 1024L) - 1)
	#define	__PIC32MX4XX__

#elif defined(__32MX440F128H__)
	#define	_CPU_NAME_	"32MX440F128H"
	#define	FLASHEND	(((128 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX4XX__

#elif defined(__32MX440F256H__)
	#define	_CPU_NAME_	"32MX440F256H"
	#define	FLASHEND	(((256 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX4XX__

#elif defined(__32MX440F512H__)
	#define	_CPU_NAME_	"32MX440F512H"
	#define	FLASHEND	(((512 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX4XX__

#elif defined(__32MX440F128L__)
	#define	_CPU_NAME_	"32MX440F128L"
	#define	FLASHEND	(((128 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX4XX__

#elif defined(__32MX460F256L__)
	#define	_CPU_NAME_	"32MX460F256L"
	#define	FLASHEND	(((256 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX4XX__

#elif defined(__32MX460F512L__)
	#define	_CPU_NAME_	"32MX460F512L"
	#define	FLASHEND	(((512 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX4XX__

//************************************************************************
//*	500 series

#elif defined(__32MX534F064H__)
	#define	_CPU_NAME_	"32MX534F064H"
	#define	FLASHEND	(((64 - 4) * 1024L) - 1)
	#define	RAMEND		((16 * 1024L) - 1)
	#define	__PIC32MX5XX__

#elif defined(__32MX564F064H__)
	#define	_CPU_NAME_	"32MX564F064H"
	#define	FLASHEND	(((64 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX5XX__

#elif defined(__32MX564F128H__)
	#define	_CPU_NAME_	"32MX564F128H"
	#define	FLASHEND	(((128 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX5XX__

#elif defined(__32MX575F256H__)
	#define	_CPU_NAME_	"32MX575F256H"
	#define	FLASHEND	(((256 - 4) * 1024L) - 1)
	#define	RAMEND		((64 * 1024L) - 1)
	#define	__PIC32MX5XX__

#elif defined(__32MX575F512H__)
	#define	_CPU_NAME_	"32MX575F512H"
	#define	FLASHEND	(((512 - 4) * 1024L) - 1)
	#define	RAMEND		((64 * 1024L) - 1)
	#define	__PIC32MX5XX__

#elif defined(__32MX534F064L__)
	#define	_CPU_NAME_	"32MX534F064L"
	#define	FLASHEND	(((64 - 4) * 1024L) - 1)
	#define	RAMEND		((16 * 1024L) - 1)
	#define	__PIC32MX5XX__

#elif defined(__32MX564F064L__)
	#define	_CPU_NAME_	"32MX564F064L"
	#define	FLASHEND	(((64 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX5XX__

#elif defined(__32MX564F128L__)
	#define	_CPU_NAME_	"32MX564F128L"
	#define	FLASHEND	(((128 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX5XX__

#elif defined(__32MX575F256L__)
	#define	_CPU_NAME_	"32MX575F256L"
	#define	FLASHEND	(((256 - 4) * 1024L) - 1)
	#define	RAMEND		((64 * 1024L) - 1)
	#define	__PIC32MX5XX__

#elif defined(__32MX575F512L__)
	#define	_CPU_NAME_	"32MX575F512L"
	#define	FLASHEND	(((512 - 4) * 1024L) - 1)
	#define	RAMEND		((64 * 1024L) - 1)
	#define	__PIC32MX5XX__

//************************************************************************
//*	600 series

#elif defined(__32MX664F064H__)
	#define	_CPU_NAME_	"32MX664F064H"
	#define	FLASHEND	(((64 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX6XX__

#elif defined(__32MX664F128H__)
	#define	_CPU_NAME_	"32MX664F128H"
	#define	FLASHEND	(((128 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX6XX__

#elif defined(__32MX675F256H__)
	#define	_CPU_NAME_	"32MX675F256H"
	#define	FLASHEND	(((256 - 4) * 1024L) - 1)
	#define	RAMEND		((64 * 1024L) - 1)
	#define	__PIC32MX6XX__

#elif defined(__32MX675F512H__)
	#define	_CPU_NAME_	"32MX675F512H"
	#define	FLASHEND	(((512 - 4) * 1024L) - 1)
	#define	RAMEND		((64 * 1024L) - 1)
	#define	__PIC32MX6XX__

#elif defined(__32MX695F512H__)
	#define	_CPU_NAME_	"32MX695F512H"
	#define	FLASHEND	(((512 - 4) * 1024L) - 1)
	#define	RAMEND		((128 * 1024L) - 1)
	#define	__PIC32MX6XX__

#elif defined(__32MX664F064L__)
	#define	_CPU_NAME_	"32MX664F064L"
	#define	FLASHEND	(((64 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX6XX__

#elif defined(__32MX664F128L__)
	#define	_CPU_NAME_	"32MX664F128L"
	#define	FLASHEND	(((128 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX6XX__

#elif defined(__32MX675F256L__)
	#define	_CPU_NAME_	"32MX675F256L"
	#define	FLASHEND	(((256 - 4) * 1024L) - 1)
	#define	RAMEND		((64 * 1024L) - 1)
	#define	__PIC32MX6XX__

#elif defined(__32MX675F512L__)
	#define	_CPU_NAME_	"32MX675F512L"
	#define	FLASHEND	(((512 - 4) * 1024L) - 1)
	#define	RAMEND		((64 * 1024L) - 1)
	#define	__PIC32MX6XX__

#elif defined(__32MX695F512L__)
	#define	_CPU_NAME_	"32MX695F512L"
	#define	FLASHEND	(((512 - 4) * 1024L) - 1)
	#define	RAMEND		((128 * 1024L) - 1)
	#define	__PIC32MX6XX__

//************************************************************************
//*	700 series

#elif defined(__32MX764F128H__)
	#define	_CPU_NAME_	"32MX764F128H"
	#define	FLASHEND	(((128 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX7XX__

#elif defined(__32MX775F256H__)
	#define	_CPU_NAME_	"32MX775F256H"
	#define	FLASHEND	(((256 - 4) * 1024L) - 1)
	#define	RAMEND		((64 * 1024L) - 1)
	#define	__PIC32MX7XX__

#elif defined(__32MX775F512H__)
	#define	_CPU_NAME_	"32MX775F512H"
	#define	FLASHEND	(((512 - 4) * 1024L) - 1)
	#define	RAMEND		((64 * 1024L) - 1)
	#define	__PIC32MX7XX__

#elif defined(__32MX795F512H__)
	#define	_CPU_NAME_	"32MX795F512H"
	#define	FLASHEND	(((512 - 4) * 1024L) - 1)
	#define	RAMEND		((128 * 1024L) - 1)
	#define	__PIC32MX7XX__

#elif defined(__32MX764F128L__)
	#define	_CPU_NAME_	"32MX764F128L"
	#define	FLASHEND	(((128 - 4) * 1024L) - 1)
	#define	RAMEND		((32 * 1024L) - 1)
	#define	__PIC32MX7XX__

#elif defined(__32MX775F256L__)
	#define	_CPU_NAME_	"32MX775F256L"
	#define	FLASHEND	(((256 - 4) * 1024L) - 1)
	#define	RAMEND		((64 * 1024L) - 1)
	#define	__PIC32MX7XX__

#elif defined(__32MX775F512L__)
	#define	_CPU_NAME_	"32MX775F512L"
	#define	FLASHEND	(((512 - 4) * 1024L) - 1)
	#define	RAMEND		((64 * 1024L) - 1)
	#define	__PIC32MX7XX__

#elif defined(__32MX795F512L__)
	#define	_CPU_NAME_	"32MX795F512L"
	#define	FLASHEND	(((512 - 4) * 1024L) - 1)
	#define	RAMEND		((128 * 1024L) - 1)
	#define	__PIC32MX7XX__

//************************************************************************
#else
	#error CPU type is unknown, cpudefs.h needs to have additions
#endif

#else #error unknown cpu architecture #endif

//************************************************************************ #ifndef CPU_NAME #define CPU_NAME "Unknown" #endif


ChristopheDupriez

Sat, 09 Nov 2013 09:36:20 +0000

To ensure PIC32MX450 is supported, I am looking at the necessary files for compiling, linking, etc. I notice the directory ...\hardware\pic32\compiler\pic32-tools\pic32mx\include\proc\ with one file per MCU e.g. p32mx250f128c.h

Those files could be extracted and adapted from the Microchip XC32 compiler files. Are we allowed to do that? Who can provide permission for this?

Thanks!

Christophe


majenko

Sat, 09 Nov 2013 10:37:52 +0000

I believe the ones there are extracted and adapted from the MCHP files in XC32 anyway. Jason Kajita's the guy that ports it all, so I assume he will be adding the files in due course anyway.


ChristopheDupriez

Sat, 09 Nov 2013 16:13:58 +0000

Thanks Matt for the explanation!

Where on ChipKit GitHub can I find the repository ...\hardware\pic32\compiler \pic32-tools and its content? I find many similarities with XC32 but some difference: I suppose the ChipKit community has a way to manage this?

I do not find it here: https://github.com/chipKIT32/chipKIT32-MAX/tree/master/hardware/pic32/compiler here neither: https://github.com/chipKIT32/chipkit-core/tree/master/compiler here neither: https://github.com/chipKIT32/chipKIT-cxx

Have a nice w.e.!

Christophe


majenko

Sat, 09 Nov 2013 16:45:18 +0000

There's a new release of the compiler scheduled for mid December. The new chips should be fully supported in it then. If you can wait until then it'll be easier than trying to port the chips yourself.

The compiler is on its own github repositories: [url]https://github.com/jasonkajita?tab=repositories[/url]


ChristopheDupriez

Sat, 09 Nov 2013 17:35:39 +0000

Dear Matt,

Problem is that we are designing our own board for a specific project and we will release in open source after (when debugged a bit): I must learn how to integrate it nicely with ChipKit as we like it a lot.

I was thinking to work on the USB Starter Kit III to have immediately a PIC32MX450 on hand and also to have common grounds with the community. But as you explain, the community will not be tooled with a compiler before mid-December... May be I am better to wait a bit!

I also follow your work on a better IDE which I found very promising.

Have a nice week-end,

Christophe