The chipKIT uC32 has been around a while, but Fábio Souza at Embarcados has just published a brand new Overview which is worth a look. The article is written in Portuguese; you should be able to use the “Translate” option in your browser to get the English version if needed.
Note: This problem was repaired in version 1.6.9 of Arduino IDE
The latest release of Arduino IDE (v1.6.8) has introduced a problem that prevents sketches from running on many chipKIT boards, in addition to some Arduino boards. It appears that any board using an FTDI chip for serial bootloader communications is adversely affected.
A temporary solution is to re-install the previous version, Arduino IDE v1.6.7, which has been well-tested and known to work fine with chipKIT-core selected in the Boards Manager. For more information about installing Arduino IDE and chipKIT-core, refer to the chipKIT-core Wiki page.
When the problem with v1.6.8 occurs, the sketch compiles and downloads from the IDE just fine, but does not appear to execute on the chipKIT board. This is because the serial DTR line between the FTDI chip and MCU is being toggled approximately once per second. DTR is typically tied to the MCU’s RESET line, causing the board to reset before the sketch has had a chance to execute.
The reason for toggling DTR is not currently known, but appears to be a consequence of enumeration of the USB bus. One of our team members writes:
On further investigation it is my belief that the Arduino IDE is not explicitly toggling DTR, but rather enumerating the USB bus repeatedly. As a byproduct of USB enumeration the FTDI chip toggles DTR. This may be the reason the Arduino boards are not affected as they have their own USB/Serial chip and it may not have the same effect on USB enumeration. This “side-affect” is specific AND annoying with to FTDI chip. In theory, DTR should only be toggled when commanded to do so on the COMM port; or maybe (but I don’t think it should) when the COMM port is opened. Just USB enumeration should not toggle DTR, but the FTDI chip/driver has always done this. I have noticed this for a long time as if you plug in any USB device to any port on the same hub as a chipKIT board, the board gets reset. So for example, if you plug in a memory stick, all chipKIT boards on the hub reset due to the USB enumeration.
At the time of this writing (4/20) a temporary solution is to avoid using Arduino IDE v1.6.8. The previous version (Arduino IDE v1.6.7) works fine with chipKIT-core selected in the Boards Manager. chipKIT team members are looking into this problem and will submit a detailed report to the Arduino IDE bug list at the earliest opportunity.
Did you know that a robust FAT file system is now available in chipKIT-core? Keith Vogel of Digilent recently ported the file system library by ChaN at elm-chan.org. You can use this library to create and access files on microSD cards, as shown in the photo above.
But wait… what is a FAT file system, anyway?
FAT stands for File Allocation Table. It’s a method of organizing data on disk drives. Designed way back in 1977, FAT was the standard file system used on disk drives for at least two decades. While modern computers now use more sophisticated systems, FAT is still the standard for USB sticks, Flash drives and solid-state memory cards.
Several chipKIT boards (such as the FubarinoSD, WF32, Wi-FIRE, and WiFi Shield) include a microSD card slot where a solid-state memory card can be inserted. The new library allows your sketch to create and access files stored on the memory card. Files can be used for serving up web pages, storing large amounts of data collected from sensors, or anything else you can think of.
chipKIT-core combines the FAT file system with improvements to the DSPI and SoftSPI libraries. (DSPI uses the hardware SPI ports, while SoftSPI uses any combination of unused I/O pins to create a virtual SPI port.) When a microSD card is inserted, your sketch can easily mount it as a disk volume to access files. An example sketch is included with chipKIT-core, and appears as DSDVOL under the File:Examples menu item. Here is a snippet of code from DSDVOL:
Up to 5 volumes can be mounted and used at the same time. While most chipKIT boards have only one microSD card slot, virtual disk volumes in RAM or MCU Flash will be supported soon.
The obstacle sensor uses an LCD to display the distance in inches, cm, or mm depending on the “units” variable selected in the code. It also displays a bargraph along the bottom of the LCD, indicating the effective range of about 6 to 255 inches.
Seth modified a cat5e Ethernet cable to run from the dash-mounted pcb and display to the rear bumper where the range sensor was attached. This project is an effective demonstration of range sensor technology and a great way to hack your favorite ride!
At the MASTERs conference recently, Digilent announced OpenScope™, a WiFi connected, 1 MHz, 2 channel, analog oscilloscope with a 1 MHz function generator and 10 channel logic analyzer. The user interface will be browser based, connecting directly to the OpenScope via the Digilent HTTP Wi-Fi server. The OpenScope utilizes the PIC32MZ2048EFG124 MCU and will be powered by USB power, or a battery when isolation is desired. The hardware is capable of being used as a UART, SPI, and I2C protocol analyzer.
OpenScope will be available from Digilent as a pre-programmed, standalone product. It will be fully open source, both hardware and software, and will be chipKIT compatible. Therefore OpenScope can also be used as a PIC32MZ development board. Digilent will provide the original OpenScope source code, along with schematics and hardware files. Documentation will be provided so that the code can be customized using the chipKIT ecosystem. An ICSP interface will also be included for use directly with MPLAB X IDE.
At the Microchip MASTERs conference in Phoenix from August 17th to 22nd, Keith Vogel taught 5 sessions of his “Intro to chipKIT Platform” class. The class covered a range of introductory topics, including a discussion of compatibility issues with the Arduino system.
The goals of the chipKIT platform were listed as follows:
Easy access to professional applications and libraries for new users
Rapid prototype development tools
Migration between easy to use IDEs and professional IDEs
The same ease-of-use as Arduino when using Arduino-style IDEs
Substantial source code compatibility with Arduino
Team members Rick Anderson, Brian Schmalz and Chuck Hellebuyck were on hand to answer questions and help out with the labs. It was a popular class, and over 125 chipKIT T-shirts were given away to attendees. The class presentation in PDF format is available here: Introduction to chipKIT Development Platform
Attendees displayed plenty of creativity as “weapons” and other intimidating features were added to the standard robot chassis provided. It was all in good fun, even if some parts were left in the arena after several contests. The highlight of the day was a concluding “Battle Royale”, in which the surviving contestants teamed up in an attempt to defeat the evil Centibot (a wireless, hybrid machine comprised of three chassis linked together.) As the struggle continued, the Centibot’s six drive wheels were disabled one by one, until a truce was finally called.
It was a fun day, and attendees took their creations home (leading no doubt to some interesting encounters with the family pet!)
Digilent has posted an excellent introduction to the chipKIT Basic I/O Shield on their blog. It starts with a video that describes the general features of the board, and shows how to download the software library and documentation. The post also includes 4 sample projects that demonstrates how to get started using the board.
The Basic I/O Shield is designed to work with the chipKIT Uno32, uC32, and Max32 base boards. For more information, check out the blog post here:
OK, so the title of this post is a bit misleading, since the chipKIT Max32 already includes a fairly sophisticated power supply. It has both 3.3V and 5V regulators on board, auto-switches away from USB power when an external supply is connected, and can be jumpered for an external regulated supply. Turns out there is one use case that is not handled automatically: When an external regulated 5V supply and a USB cable are connected at the same time, the auto-switch is inhibited.
EE Times editor Max Maxfield explores a scenario in which multiple boards (an Arduino Mega, chipKIT Max32, and a bunch of NeoPixel strips) are connected together and driven from a single, 5V regulated supply. For all the details, please see the article on EE Times where on the second page of the article you will find the instructions for how to modify the chipKIT Max32 board. Incidentally, the mod for chipKIT Max32 is much simpler than for Arduino Mega. Fun!