RoadTest: EasyPIC Fusion v7
Evaluation Type: Independent Products
Did you receive all parts the manufacturer stated would be included in the package?: True
What other parts do you consider comparable to this product?: None
What were the biggest problems encountered?: The biggest problem I ran into was a discrepancy between the version number of the mikroProg Suite in the install instructions and what was shipped. The mikroProg Suite version that was shipped was v226 the install instruction talked about v220. It would be nice to have a small card in the package that talked about this. They do have a card that talks about the differences between the display that is shipped and what the instructions talk about. That is a nice touch. I also ran into a problem with the MP3 demo. It was difficult to get to work but, I finally did. See the detailed review for more information. The debugger wouldn't stop for me consistantly. Sometimes it would crash the board and other times it would crash the board and software. This made the board difficult to use. I had to upgrade the compiler from the DVD's to get the TFT display to work with the example code. I had some difficulty with the option switches and how devices were attached to the MCU. This can be bother some when things don't work and you aren't sure if it is the software or switches on the hardware.
I received my on a Monday afternoon. My wife received the box for me as I was at a customer site. When I arrived home I examined the box and it had a smashed corner. This always concerns me when I see a box that has been abused by the shipper. I opened the box and looked inside to find the EasyPIC Fusion v7 untouched by the smashed corner. It looked as if the inner box was in good shape. That was a good sign. Element 14 had put in a generous amount of brown paper to cushion the inner box. This was a very good idea in my case.
I opened the inner box and looked at all the items that I received. I have a lot of development kits as I'm a contract engineer and do a lot of different work for different customers. I appreciated the box the development board came in. It will make it easier to keep track of and store when not in use.
I was impressed by the documentation that came with the board. There was a nice schematic on card stock. The schematic was very easy to read and correlate with the board. There was also a user's guide with explanations of all the sub systems and how to enable that sub system via the switches. One thing I would like to know is if there are conflicts between devices. Is there more than one device attached to an I/O line. Most of the I/O lines are attached to LED's so there is that conflict that might not bother you but, you should be aware of it. For example RF13 is attached to TX-FTDI2 and it is attached to T41 (button) and LD41 (LED). The LED probably wouldn't hurt the communciation but if you pressed the button while trying to communicate it would have an impact on the communcation. There was also a User's Guide.
My package had two DVD's in it. This was a little confusing at first until I realized that they were both the same DVD. One was included in a small plastic case with a USB key for the compiler. The other DVD was loose in the inner box.
There was also a small card that talked about the display that was included with this version of the board. It says that there were two different versions of display used. It mentions that as of March 20th 2013 a new display was used M10283QT-9A instead of the M10283QT-2. Looks like there are different controllers in the different displays. The card also mentions how to tell them apart.
There was also a sheet of stickers. If you are so inclined to decorate a PC case or a tool box you have the stickers to do it. There was also a warning not to dispose of the board in the landfill.
In the small plastic container that had a USB device and another DVD were three small small pamphlets that talked about the compiler, the mikroProg suite, and the ICD (in-circuit debugger). These pamphlets came in handy while installing the software.
There was also a very nice USB cable. The cable looks like it is shielded and should do the job.
Now I looked at the board. The board is a large board much larger than any of the other development boards that I have. It is even larger than an explorer 16 dev board which I have several. The board is divided up into subsystems with silk screening that shows the sub system which makes it very easy to see what does what and where it is. The board is very impressive. The user's guide talks about each of the subsystems and gives more details about how it works and a small schematic of each of the subsystems with switch settings as to how to get them to work. I liked the documentation very much.
The board had some missing sockets. There was one for an LM35 temperature sensor that was missing. Also it was missing a DS1820. If you want to play with that hardware you will have to provide your own. There were also two mikro BUS connectors that were unpopulated. Other than that the board seemed complete.
The board came stuffed with a PIC32MX795F512L MCU module. I understand that this board will support PIC24 and dsPIC33 devices. Sounds like it is versatile.
The board also had rubber feet on it and came in a resealable anti static bag. I really liked that as I like to keep my dev boards in their original packaging as much as possible. I am always going back to a dev board to see if something still works there and it is nice to be able to pull it off the shelf and test things. The box also allows easy storage of the board even though it is very large as dev boards go.
That about does it for the contents of the package. I moved on to the installation of the software. As I mentioned before there were two DVD's. One came loose in the inner box and the other one was in the plastic container for the compiler. I wasn't sure if I should install both of them and if so which one do I start with. I looked at the two DVD's closely and realized that they were exactly the same so, that solved that confusion.
As I installed the mikroProg Suite once I got past the version number confusion, I realized that these were new tools. I have been developing devices with Microchip devices for several years. I'm a Microchip Design Partner and am very familier with their tools. I dislike learning new tools and thought great, another tool to learn. I have been trying to learn Eagle and I use it so seldomly that I have to relearn it each time I use it. I have just finally become comfortable with MPLAB-X which is a new tool that Microchip introduced. It replaces the MPLAB that Microchip had before. Now there is another new tool. I wonder if you can run this board with Microchip tools. The ICD looks to be custom and I doubt that Microchip supports it.
Installed Demo Code
Once the software was installed I setup the board to be powered by the USB cable and plugged the USB cable into the board. It powered up and I was presented with some calibration software for the touch screen. I don't like to take the plastic film off of displays so it was a little hard to calibrate but I was able to do it. With the calibration done a menu comes up with the demo software. The demo's went well except the Ethernet demo and the MP3 demo. The Ethernet demo hung till I plugged in a cable. I wasn't able to get out of it. So, that demo wasn't as user friendly as it could've been. After I plugged in the cable it obtained an IP address and displayed this IP address on the display to connect to. I connected to the web server and pushed the toggle link on the first LED but nothing happened. None of the LED's toggled. I tried it again looking at the LED's but nothing changed. I noticed that the small circles on the screen changed. So, they are referring to the virtual LED's on the screen and not physical LED's on the board. This was a little confusing.
The MP3 demo starts with a screen explaining that it requires a uSD card formatted as a FAT16 device. FAT16 can only access 2 gig max. I happened to have a 2Gig uSD card laying around and tried to format it on a Win 7 machine. The format option didn't allow me to format the uSD card as a FAT16 device. I remembered the old HP uSD card formatter. I googled the net and found it. It is called SP27608.exe. I know that is a strange name but that is the way HP names their drivers and files and such. I installed that program and using it I was able to format the uSD card as a FAT16 device. Then you must put a file called sound.mp3 on the uSD card in the root directory. Plug the uSD card into the board and the screen also tells you how to set the jumpers to get this to work. I believe I did all of that but still couldn't get it to work. I pulled the uSD card put it back into my laptop to make sure everything was good. My laptop was able to play the sound.mp3 file. It worked great. I put it back into the board but still nothing. After playing around a bit I reformatted the uSD card and put the sound.mp3 back on it. This time it worked! I was surprised. Maybe I didn't get it formatted correctly the first time. I'm not sure. But I got it to work. I was listening to a Horse With no Name by America through my stereo being played by the board and noticed that the left channel wasn't working. It couldn't be my stereo so it was the board. I hooked up a pair of ear buds and listened to the board that way. Both channels were working great. I dug into my stereo and found that the left speaker was disconnected. I wondered how long it has been disconnected? I connected it up and it started working. How about that! The sound quality was amazingly good. I'm not an audiophile by any stretch of the imagination. I played organ in too many rock groups when I was younger. My hearing isn't what it use to be. But, it sounded good for an MP3 encoded at 128kbps which isn't the best encoding.
The buzzer demo went smoothly although the sticker to protect the buzzer from the washing step in production was still on it. I removed that and it worked great.
The analog test was interesting with the meter that you could adjust using the pot in the upper right portion of the board. I was impressed by how steady the needle in the meter was. Typically an ADC in a microcontroller usually has a little jitter in it. They must be doing some pretty good smoothing to the samples. It would be interesting to see how they are doing it.
There was a cute little demo that allows you to move a ball through a very simple maze. You do this with a small joystick to the bottom left of the screen.
There was also the obligatory LED blinking program. But, it blinks the majority of the LED's on the board and there are a few of them.
Contents of Documentation
Ok so much for the unpacking and demo code let's crack open the tools oh, darn new tools, oh well. Let's see how easy they are to learn and use.
In the small plastic case that contained the software DVD and the USB license dongle was a small pamphlet that talks about the mikroProg Suite. This is some programming software that allows you to take hex files compiled from source code and program it into processors. I thought it was interesting to have a special tool to do this. In MPLab and MPLab-X this tool is built into the IDE. This pamphlet for the microProg Suite is divided up into several sections. There is the Installation, Quick start, Menus, Config, MCU info, Advanced options, and Keyboard shortcuts. An interesting thing to note is the Keyboard shortcuts section. I'm a touch typist and use editors like VI that allow me to keep my fingers on the keyboard. With the keyboard shortcuts I don't have to move my hand from the keyboard to the mouse to do something. I'm much faster when my hands don't leave the keyboard. I really appreciated that secion.
The Installation section of the mikroProg suite pamphlet is straight forward and shows the screen shots of the installation process. It guides you through the install. It is accurate except for the version number issue I mentioned above. The Quick start section explains how to use the program. Here again there are screen shots that guide you step by step how to use this program. After going through the Quick start section you will have a good idea how to use the program. The Menus section explains the menus and what each one is for. It is a very informative section. The Config window section allows you to set configuration specific to the microcontroller that you have chosen. There are the configuration bits, ID location, and memory protection settings. You will have to know about the particular microcontroller you are using to use this section. The MCU Info section shows specific characteristics of the microcontroller you have selected. There are items like the flash memory size, EEPROM memory size, RAM size, and other interesting characteristics. The Advanced options allows you to set options for which sections of the flash you are going to program and verify. And, finally the Keyboard shortcuts which is my favorite section. It enumerates the keyboard shortcuts that you can use to drive the program. There is also a section that talks about using the mikroProg suite from the command line. This is very useful if you want to create a script driven build system or automated test and programming script.
The next pamphlet that was in the plastic case is one that talks about the mikroICD in-circuit debugger. This is a module that is built on to the board that gives you access to the on chip debugging features. You can single step or run to a breakpoint. You can also look at various pieces of memory be it flash, RAM, or special function registers. This pamphlet has the following sections, Starting compiler, Preparing microICD, Start mikroICD debugging, Watch Window, Debugger toolbar, Real-Time debugging, Using breakpoints, Advanced Breakpoints options, Disassembly view, EEPROM Watch window, RAM window, and CODE Watch window.
The first section Starting compiler is short it basically says double click on the mikroC PRO icon to start the compiler. The next section Preparing mikroICD talks about how to enable the mikroICD in the compiler. You have to go to the build type and select the ICD Debug option and the mikroICD option. That will build a hex file that you can use to debug the software using the mikroICD. Next you build your project to debug it. The following section, Start mikroICD debugging explains how to start debugging your project. Under the run menu section of the mikroC IDE is a Start Debugger option. It then explains how the debugger highlights each line it is about to execute. The Watch Window is a very powerful feature. With this you can watch variables and special function registers change each time the debugger stops. If you are single stepping through the code you can see how the variables are affected. The next section, Debugger toolbar, shows the tool bar and explains what each item does. The Advanced Breakpoints Option section shows all the options for the breakpoints. You can set a number of breakpoints and the number of breakpoints you have depends on the microcontroller you are using. It varies a lot. But, in this section you can set breakpoints on program memory, ram, or special function registers. You can break on write or read and there is a pass count that allows you to break after x number of break conditions have occurred. I personally haven't used that feature. I'll put in special code to break on to detect special conditions. You can also set a specific value to break on. That is very useful. The Disassembly view can be useful at times. If you suspect a compiler bug (which I have found many in my time) this is the place you can track it down. You typically have a line of source code in C for example, then below it you have the assembly language that was generated by the compiler for that line of source code. You can step through the assembly language and track the execution of the code to determine your bug or a problem in the compiler. The EEPROM Watch window is useful to see what is in the EEPROM. Not all microcontrollers have EEPROM. The last two sections are the RAM window and the CODE Watch window. These two windows allow you to look at the RAM and CODE in the processor. This can be useful to see how arrays are setup or to track down constant data in the CODE area.
There was another pamphlet I later found about the mikroC PRO for PIC32 compiler. This pamphlet is comprised of the Introduction, Hardware Connection, Creating a New Project, Code Example, Building the Source, Changing Project Settings, and What's next sections. The Introduction talks about the main components of the IDE of the compiler. The Hardware connection section talks about hardware connection to the microcontroller. It shows a schematic of the microcontroller and how it has LED's hooked to PORTB. The next section, Creating a New Project has screen shots that guide you through the process of creating a new project. I went through that section and did all that it said. I ended up with a project that would blink an LED. The first application that every firmware engineer has written. To see the microcontroller work in a visible manner. Before I committed the firmware to the chip I saved the demo code that was in the board when I received it using the mikroProg suite. I want to be able to put the demo back in case I want to check out some hardware or any other reason. I don't like to lose anything. I did the build and that actually worked. I programmed the chip but there was no blinking. I put the original demo back into the chip and that all worked. That's good I saved the demo properly. Although the touch screen was sluggish. I pulled of the plastic protectant to see if that was the problem. It wasn't. I found the reset button and ran through all the demos. They all seemed to be working. I remembered that I built a debug version of the blink LED code. I started the mikroICD and started stepping through the code. It still didn't work. I started looking at the board and found a switch setting that said "LEDs ON". This switch is labeled SW15. There are two switches in this switch block labeled PORTB/H and PORTB/L. I moved those two switches over and the LEDs started to blink. My program was working. This is one of the problems with this board. There are so many options. To get things to work you have to study the schematic. I looked at the User's Guide and sure enough on page 19 in the lower right hand corner they talk about SW15. Now some of the bits in PORTB were blinking but not all of the LEDs RB13, RB12, RB11, RB7, and RB6 do not blink. I spent some time with the User's Guide and schematic seeing if I could figure out how to get the PORTB pins that weren't working to work. This can take a lot of time to search through the schematic and User's Guide to figure this out. I decided I needed to move on. While I was working on this I noticed an issue with the debugger. I had it running on my wooden bench and found that I couldn't stop the debugger without it crashing. I cleared off a portion of my bench that is covered with an antistatic mat. I put the board on the mat and the debugger started to behave better. At least it seems I was able to stop the debugger without it crashing. I wonder what the issue is. It must be with the debugger as I ran the board for a week with the MP3 demo enabled and each time I entered my office I would press the play button and listen to the sound.mp3 file. It worked flawlessly for that week. As I continue with the Road Test I'll let you know how the debugger does. The Code Example section gives some example code on how to blink an LED. The next section Building the Source explains how to build the source and that it results in a .hex file. The following section, Changing Project Settings shows you what you can change in the project. The last section, What's next explains about the examples that you can look at.
IDE and Compiler
Now let’s take a look at the compiler. I down loaded all the examples provided by MikorElektronika. I thought I would start with the ADC Demo. I like working with analog values. I have worked in audio a lot. I went into the ADC Demo area and double clicked on the ADC Demo.mcp32 project file. The compiler put up the splash screen but didn't come up? It shows I'm running version 2.5.1 but, it doesn't come up. This isn't good. I went to the desktop and tried to bring up the compiler from the ICON on the desktop. The compiler still wouldn't come up. I decided to reboot my computer (win 7 64 bits) as it has been up for weeks. After the reboot the compiler started to respond. I guess my machine was in a strange state. Doesn't surprise me with windows.
Now back to the ADC Demo. When I double clicked on the ADC Demo.mcp32 file this time it was opened in my already opened compiler. Much better and is what I expected it to do. As I look at the compiler IDE there are tabs along each side of the main window which contains the ADC Demo.c file opened ready to edit. Along the left side of the main window are the Project Settings tab and Code Explorer tab. When you put your mouse over the tab they slide out to reveal the options they contain. The Project Settings contians the name of the processor you have configured along with the speed it is running. Below that there is the Build Type (Release/ICD Debug) and the Debugger type (Software/mikroICD). The Code Explorer shows details about the code itself.
On the right side of the main window there is a Routine List tab, Project Manager tab, Project Explorer tab, and Library Manager. The Routine List shows the routines used in the project. The Project Manager shows the files used in the project. The Project Explorer tab shows you the projects that the compiler IDE knows about and allows you to select them. The Library Manager reveals libraries that the compiler IDE supports. I went through the list and was very impressed by what you could select. The ADC Demo is using the ADC, Conversions, and C_String libraries. There are a lot of different libraries. The libraries I believe would help with development. They were very complete and abstracted most of the peripherals of the chip.
I liked the software and IDE as it was easy to use and work with. I still had the problem in the debugger. I couldn't consistently stop the debugger. The problem persisted even after putting the board on an antistatic mat. Sometimes it would crash the hardware. Sometimes it would crash the hardware and software. This would require you to reload the software. This makes it difficult to really work with the board. I have used many different Mircochip debuggers, MPLAB ICD 3 and 2, Real ICE, and the PICKit 3 and 2. I have found issues with all of the debuggers but, I have found that all of those debuggers are more reliable than the mikroProg ICD. Maybe I have a bad board. That is possible. I tried to rectify the situation by going to MikroElektronika and downloading the latest version of the compiler. This was version 3.3.0 and mikroProg 2.28. I installed both of these. The same thing happened. I then changed computers to see if that would help. I loaded the software on a different computer and tried running my blinking LED on it. I ran into the following error:
Access violation at address 06ABF017 in module 'mikroEDLL.dll'. Read of address 003003C8.
After the above issue, I restarted the software without touching the hardware and was able to compile and load the blinking led program. After a minute or so the mikroC PRO stopped responding to mouse clicks. It had to be killed with task manager. I then went out on the MikroElektornika web site for a solution but didn't see anything to update the software in the mikroICD or any indication how to rectify the situation. It seems other people are getting the board to work I would like to know their secret. I contacted MikroElektronika about the problem and we will see what they do.
MikroElektronika responded with the following email:
This error is triggered when ICDebugging communication is aborted by the MCU, since MCU is master and programmer is slave.
Our developers are working on solution for this problem and as son as they fix this problem solution will be propagated in new update.
We have notices that this problem is related with delay in debugging.
Currently, I suggest that you try using advantage of breakpoints and Run to cursor debug option in order to overcome this problem.
Thank you for understanding.
So, they are aware of the problem and are working on it. They suggest a work around in the email. That seems to work but, doesn't entirely fix the problem. During a debug session I would have to restart things every once in a while to get things working again.
With the above work around in mind I continued working on the demos. I tried the TFT demo. This should access the screen. With the warning about the new screen I wanted to see if I could compile code for the new screen. I tried the demo and it didn't work. I know the switches to access the screen are set right as I have had the screen working in the past. I went out on the forums at Mikroelekctronika to see if there was a solution. I found the following thread that says to replace the TFT_Init call with TFT_Init_ILI9341_8bit.
I tried that fix but my compiler didn't recognize the TFT_Init_ILI9341_8bit label. I was running compiler version 3.3.0. After some reading and searching around I found an update for the compiler to 3.3.1. You have to go to help/check for updates. That allowed me to upgrade to version 3.3.1 which did recognize the TFT_Init_ILI9341_8bit label. The demo now works. I have since seen an update to version 3.3.3. Not sure what that fixes. I keep hoping they will have the ICD issues fixed. I tried to upgrade to version 3.3.3 but, after 3 unsuccessful attempts I decided it wasn't working.
I tried several of the other demo projects. I tried the mp3 project and it actually worked. I could hear audio coming from the board.
In conclusion I feel that the problem with the ICD not being able to stop the board while running in debug mode is a serious issue. But, other than that it seems like a very nice development environment. If you are doing 32 bit pic development I would consider this board if, it supported what you were required to do in your project.