{"id":2570,"date":"2014-10-28T15:35:38","date_gmt":"2014-10-28T22:35:38","guid":{"rendered":"https:\/\/blog.digilentinc.com\/?p=2570"},"modified":"2021-06-17T08:41:15","modified_gmt":"2021-06-17T15:41:15","slug":"mpide-vs-mplab","status":"publish","type":"post","link":"https:\/\/digilent.com\/blog\/mpide-vs-mplab\/","title":{"rendered":"MPIDE vs. MPLAB"},"content":{"rendered":"<p>Previously, I posted about what a debugger is. Other than all the great features I described in my <a href=\"https:\/\/digilent.com\/blog\/index.php\/what-is-a-debugger\">debugger post<\/a>, you may be wondering&#8211;why does Digilent care?<\/p>\n<p>&nbsp;<\/p>\n<p>As you probably know, we use many of <a href=\"http:\/\/www.microchip.com\/\">Microchip&#8217;<\/a>s wonderful products in our <a href=\"https:\/\/digilent.com\/blog\/Products\/Catalog.cfm?NavPath=2,892&amp;Cat=18\">chipKIT and chipKIT Pro<\/a>\u00a0boards. James briefly covered the differences between two specific boards\u00a0in the chipKIT series and the chipKIT Pro series in his post <a href=\"https:\/\/digilent.com\/blog\/index.php\/chipkit-uno32-vs-chipkit-pro-mx4\/\">chipKIT Uno32 vs. chipKIT Pro MX4<\/a>. However, we still want to address the overarching differences between the user experience using chipKIT and\u00a0chipKIT Pro boards. Many people didn&#8217;t even know that there were two different chipKIT series. I&#8217;ve created a table to show the differences between the two.<\/p>\n<p><a href=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/09\/dgser.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-2736\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/09\/dgser-600x149.png\" alt=\"dgser\" width=\"500\" height=\"124\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/09\/dgser-600x149.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/09\/dgser-225x55.png 225w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/09\/dgser.png 616w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/p>\n<p>The main difference has everything to do with debuggers. <a href=\"http:\/\/www.microchip.com\/pagehandler\/en-us\/family\/mplabx\/\">MPLAB<\/a> is more intended for use with the chipKIT Pro series of boards, while <a href=\"http:\/\/chipkit.net\/started\/learn-basics\/mpide-quick-start-guide\/\">MPIDE<\/a> lends itself more to being used with\u00a0on the chipKIT boards. In order to use MPLAB with chipKIT boards and really know what&#8217;s going on with your code, you have to use the <a href=\"https:\/\/digilent.com\/blog\/Products\/Detail.cfm?NavPath=2,892,1078&amp;Prod=chipKIT%20PGM\">chipKIT PGM\u00a0programmer\/debugger<\/a>, which has more limited uses. Of course, MPLAB doesn&#8217;t offer as streamlined and simple of a user interface as MPIDE, so which platform is preferable\u00a0is really up to the user.<\/p>\n<p>&nbsp;<\/p>\n<p>I personally much prefer being able to use a debugger when building code from scratch. Here is an example of using a debugger in the MPLAB environment:<\/p>\n<figure id=\"attachment_3085\" aria-describedby=\"caption-attachment-3085\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3085 size-medium\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/mplaboen-600x321.png\" alt=\"mplaboen\" width=\"600\" height=\"321\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/mplaboen-600x321.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/mplaboen-1024x549.png 1024w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/mplaboen-225x120.png 225w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/mplaboen.png 1227w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><figcaption id=\"caption-attachment-3085\" class=\"wp-caption-text\">Upon opening MPLAB, you can see that it\u00a0has a much more complex integrated development environment (IDE).<\/figcaption><\/figure>\n<figure id=\"attachment_3086\" aria-describedby=\"caption-attachment-3086\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/step1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3086 size-medium\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/step1-600x391.png\" alt=\"step1\" width=\"600\" height=\"391\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/step1-600x391.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/step1-225x146.png 225w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/step1.png 1003w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><figcaption id=\"caption-attachment-3086\" class=\"wp-caption-text\">You can put a break point wherever you want to stop the code from running. On the bottom of the window, you can see the variable tab where you are able to create watch variables. If you create a watch variable, you can see the values change between each step. Through the next through images, watch the value of t1.<\/figcaption><\/figure>\n<figure id=\"attachment_3087\" aria-describedby=\"caption-attachment-3087\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/step2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3087 size-medium\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/step2-600x389.png\" alt=\"step2\" width=\"600\" height=\"389\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/step2-600x389.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/step2-225x145.png 225w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/step2.png 1001w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><figcaption id=\"caption-attachment-3087\" class=\"wp-caption-text\">When I step to the next line, I am using a logical AND\u00a0to change the value of t1. You can watch it change in the watch variables.<\/figcaption><\/figure>\n<figure id=\"attachment_3088\" aria-describedby=\"caption-attachment-3088\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3088 size-medium\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/step3-600x390.png\" alt=\"step3\" width=\"600\" height=\"390\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/step3-600x390.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/step3-225x146.png 225w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/step3.png 999w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><figcaption id=\"caption-attachment-3088\" class=\"wp-caption-text\">This next step is a shift left logical. You can see the value of t1 in hexadecimal shift to the left.<\/figcaption><\/figure>\n<figure id=\"attachment_3089\" aria-describedby=\"caption-attachment-3089\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/step4.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3089 size-medium\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/step4-600x390.png\" alt=\"step4\" width=\"600\" height=\"390\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/step4-600x390.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/step4-225x146.png 225w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/step4.png 1000w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><figcaption id=\"caption-attachment-3089\" class=\"wp-caption-text\">This next step stores the value of t1 into LATB. You can see both of those variables now share the same value.<\/figcaption><\/figure>\n<figure id=\"attachment_3090\" aria-describedby=\"caption-attachment-3090\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/step5.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3090 size-medium\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/step5-600x392.png\" alt=\"step5\" width=\"600\" height=\"392\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/step5-600x392.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/step5-225x147.png 225w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/step5.png 998w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><figcaption id=\"caption-attachment-3090\" class=\"wp-caption-text\">The final step doesn&#8217;t change any of my watch variables, it just jumps back to the loop label.<\/figcaption><\/figure>\n<p>Being able to watch variables like this is immensely helpful when writing complex code. You can find exactly which\u00a0lines and which\u00a0variables aren&#8217;t\u00a0working correctly and easily fix the problem.<\/p>\n<p>&nbsp;<\/p>\n<p>However, using a debugger isn&#8217;t really necessary with all the help MPIDE offers, especially if you are writing simple code and using any of the many, diverse libraries. Within the MPIDE interface, there are an abundant number of examples in C. On top of that our <a href=\"http:\/\/learn.blog.digilentinc.com\/list\">Learn site<\/a> and <a href=\"http:\/\/www.instructables.com\/id\/chipKIT-Projects-Digilent-MakerSpace\/\">Instructables<\/a> offer more in-depth examples and explanations.<\/p>\n<figure id=\"attachment_3092\" aria-describedby=\"caption-attachment-3092\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/mpide-opening-Copy-e1414166370219.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3092\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/mpide-opening-Copy-e1414166370219.png\" alt=\"mpide opening - Copy\" width=\"600\" height=\"712\" \/><\/a><figcaption id=\"caption-attachment-3092\" class=\"wp-caption-text\">MPIDE when first opened.<\/figcaption><\/figure>\n<figure id=\"attachment_3083\" aria-describedby=\"caption-attachment-3083\" style=\"width: 600px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/mpide-complile.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3083 size-medium\" src=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/mpide-complile-600x568.png\" alt=\"mpide complile\" width=\"600\" height=\"568\" srcset=\"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/mpide-complile-600x569.png 600w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/mpide-complile-225x213.png 225w, https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/mpide-complile.png 636w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><figcaption id=\"caption-attachment-3083\" class=\"wp-caption-text\">MPIDE example code.<\/figcaption><\/figure>\n<p>Now that I&#8217;ve highlighted some of the differences and features of MPIDE and MPLAB, go to the Microchip website and try them out for yourself! Depending on your intended project,\u00a0you might find one to be more useful than the other. With all of the features available in both programs you might find you like using both.<\/p>\n<div class='watch-action'><div class='watch-position align-left'><div class='action-like'><a class='lbg-style6 like-2570 jlk' data-task='like' data-post_id='2570' data-nonce='39daa8319e' rel='nofollow'><img src='https:\/\/digilent.com\/blog\/wp-content\/plugins\/wti-like-post-pro\/images\/pixel.gif' title='Like' \/><span class='lc-2570 lc'>0<\/span><\/a><\/div><div class='action-unlike'><a class='unlbg-style6 unlike-2570 jlk' data-task='unlike' data-post_id='2570' data-nonce='39daa8319e' rel='nofollow'><img src='https:\/\/digilent.com\/blog\/wp-content\/plugins\/wti-like-post-pro\/images\/pixel.gif' title='Unlike' \/><span class='unlc-2570 unlc'>0<\/span><\/a><\/div><\/div> <div class='status-2570 status align-left'>Be the 1st to vote.<\/div><\/div><div class='wti-clear'><\/div>","protected":false},"excerpt":{"rendered":"<p>Previously, I posted about what a debugger is. Other than all the great features I described in my debugger post, you may be wondering&#8211;why does Digilent care? As you probably know, we use many of Microchip&#8217;s wonderful products in our chipKIT and chipKIT Pro boards. We still want to address the overarching differences between the user experiences using chipKIT and chipKIT Pro boards, so we&#8217;re going to talk about the differences between MPLAB and MPIDE!<\/p>\n","protected":false},"author":18,"featured_media":3083,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[1563],"tags":[],"ppma_author":[4466],"class_list":["post-2570","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guide"],"jetpack_featured_media_url":"https:\/\/digilent.com\/blog\/wp-content\/uploads\/2014\/10\/mpide-complile.png","authors":[{"term_id":4466,"user_id":18,"is_guest":0,"slug":"kaitlyn","display_name":"Kaitlyn Franz","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/9276021eaa44781ce19f364cfca46ada25e1500769cf4803a095a5bae83c912a?s=96&d=mm&r=g","1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":"","9":"","10":""}],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/2570","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/users\/18"}],"replies":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/comments?post=2570"}],"version-history":[{"count":0,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/posts\/2570\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/media\/3083"}],"wp:attachment":[{"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/media?parent=2570"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/categories?post=2570"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/tags?post=2570"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/digilent.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=2570"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}