{"id":3699,"date":"2025-04-21T07:06:17","date_gmt":"2025-04-21T07:06:17","guid":{"rendered":"https:\/\/webprojects.cloud\/wordpress\/splatco\/?post_type=spl_knowledgebase&#038;p=3699"},"modified":"2025-06-16T09:24:26","modified_gmt":"2025-06-16T09:24:26","slug":"tutorial-multitasking-superseded","status":"publish","type":"spl_knowledgebase","link":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/programming-examples\/tutorial-multitasking-superseded\/","title":{"rendered":"Example: HMI Image Rotation"},"content":{"rendered":"\n<h6 class=\"wp-block-heading\">Tutorial: Multitasking (Superseded)<\/h6>\n\n\n\n<p><strong>Special note: This tutorial and the multitasking mechanism it covers have largely been superseded by the newer&nbsp;<a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/tutorial-multitrack\/\">MultiTrack<\/a>&nbsp;mechanism. MultiTrack achieves everything and more, with considerably less programming effort. The only time you would use this older multitasking mechanism would be if the controller you are using is unable to handle as many tasks as you need using MultiTrack.<\/strong><\/p>\n\n\n\n<p>One of the aspects of control programming that causes the most grief and confusion is how to create a multitasking system. Multitasking is the ability of a program to&nbsp;<em>seemingly<\/em>&nbsp;do two or more things at once. For example, an industrial parts washer may need to fill up with water at the same time as it is controlling a heater, dispensing detergent and monitoring operator push buttons.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">What you will gain from this tutorial (learning outcomes)<\/h6>\n\n\n\n<p>This tutorial will introduce you to simple techniques for creating multitasking programs using SPLat. It will introduce the concepts one at a time, working through and building up an example application. The example is a bit contrived, simply because it attempts to illustrate the ideas with as few lines of code as possible. Think of it, if you like, as a skeleton on which you can build you own application.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">What you need to know first (Prerequisites)<\/h6>\n\n\n\n<p>You will gain the most benefit from this tutorial if you first do the&nbsp;<a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2025\/04\/start-1.swf\">online FastTrack training course<\/a>. That course introduces you to the fundamental concepts of Finite State Machines, masquerading as &#8220;SPLatMaps&#8221;. It also introduces you to&nbsp;<a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/glossary-of-terms\/#o3807\">SPLatty<\/a>, our (somewhat) anthropomorphized alter-ego for the SPLat processor.<\/p>\n\n\n\n<p>Please note: The interactive\/online training course is very old. Everything in there is valid and worth learning, especially the underlying principles. However the course pre-dates significant developments, most notably our&nbsp;<a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/tutorial-multitrack\/\">MultiTrack<\/a>&nbsp;multitasking technology which makes SPLat programming even easier. So, if you are relatively new to controller programming, the course will give you a good foundation, but&nbsp;<em>please<\/em>&nbsp;don&#8217;t think it represents the full SPLat story.<\/p>\n\n\n\n<p>You will also need to have a basic understanding of:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>SPLat registers and timers. That is covered in the &#8220;classic&#8221; tutorial that is part of the SPLat\/PC help file.<\/li>\n\n\n\n<li><a href=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/tutorials-application-notes-and-white-papers\/tutorial-subroutines\/\">Subroutines<\/a>.<\/li>\n<\/ul>\n\n\n\n<p>In summary, this tutorial is an advanced topic that assumes you have mastered the nuts and bolts of SPLat programming.<\/p>\n\n\n\n<p>Note: Don&#8217;t let the informal language in this tutorial fool you. The &#8220;information density&#8221; is very high. The concepts are introduced rapidly. Make sure you have completely taken on board and understood each idea, each example and each page before you move on. I do not repeat myself! If you do maintain focus you will be rewarded by learning a heap of advanced material very quickly.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tutorial: Multitasking (Superseded) Special note: This tutorial and the multitasking mechanism it covers have largely been superseded by the newer&nbsp;MultiTrack&nbsp;mechanism. MultiTrack achieves everything and more,&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":887,"menu_order":3,"template":"","class_list":["post-3699","spl_knowledgebase","type-spl_knowledgebase","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Example: HMI Image Rotation - SPLat Controls<\/title>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Example: HMI Image Rotation - SPLat Controls\" \/>\n<meta property=\"og:description\" content=\"Tutorial: Multitasking (Superseded) Special note: This tutorial and the multitasking mechanism it covers have largely been superseded by the newer&nbsp;MultiTrack&nbsp;mechanism. MultiTrack achieves everything and more,...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/programming-examples\/tutorial-multitasking-superseded\/\" \/>\n<meta property=\"og:site_name\" content=\"SPLat Controls\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-16T09:24:26+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/programming-examples\/tutorial-multitasking-superseded\/\",\"url\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/programming-examples\/tutorial-multitasking-superseded\/\",\"name\":\"Example: HMI Image Rotation - SPLat Controls\",\"isPartOf\":{\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#website\"},\"datePublished\":\"2025-04-21T07:06:17+00:00\",\"dateModified\":\"2025-06-16T09:24:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/programming-examples\/tutorial-multitasking-superseded\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/programming-examples\/tutorial-multitasking-superseded\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/programming-examples\/tutorial-multitasking-superseded\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Programming examples\",\"item\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/programming-examples\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Example: HMI Image Rotation\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#website\",\"url\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/\",\"name\":\"SPLat Controls\",\"description\":\"OEM Embedded Machine Controllers\",\"publisher\":{\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#organization\",\"name\":\"SPLat Controls\",\"url\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2024\/10\/logo.svg\",\"contentUrl\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2024\/10\/logo.svg\",\"caption\":\"SPLat Controls\"},\"image\":{\"@id\":\"https:\/\/webprojects.cloud\/wordpress\/splatco\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Example: HMI Image Rotation - SPLat Controls","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"Example: HMI Image Rotation - SPLat Controls","og_description":"Tutorial: Multitasking (Superseded) Special note: This tutorial and the multitasking mechanism it covers have largely been superseded by the newer&nbsp;MultiTrack&nbsp;mechanism. MultiTrack achieves everything and more,...","og_url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/programming-examples\/tutorial-multitasking-superseded\/","og_site_name":"SPLat Controls","article_modified_time":"2025-06-16T09:24:26+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/programming-examples\/tutorial-multitasking-superseded\/","url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/programming-examples\/tutorial-multitasking-superseded\/","name":"Example: HMI Image Rotation - SPLat Controls","isPartOf":{"@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#website"},"datePublished":"2025-04-21T07:06:17+00:00","dateModified":"2025-06-16T09:24:26+00:00","breadcrumb":{"@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/programming-examples\/tutorial-multitasking-superseded\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/programming-examples\/tutorial-multitasking-superseded\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/programming-examples\/tutorial-multitasking-superseded\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/webprojects.cloud\/wordpress\/splatco\/"},{"@type":"ListItem","position":2,"name":"Programming examples","item":"https:\/\/webprojects.cloud\/wordpress\/splatco\/knowledgebase\/programming-examples\/"},{"@type":"ListItem","position":3,"name":"Example: HMI Image Rotation"}]},{"@type":"WebSite","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#website","url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/","name":"SPLat Controls","description":"OEM Embedded Machine Controllers","publisher":{"@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/webprojects.cloud\/wordpress\/splatco\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#organization","name":"SPLat Controls","url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#\/schema\/logo\/image\/","url":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2024\/10\/logo.svg","contentUrl":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-content\/uploads\/2024\/10\/logo.svg","caption":"SPLat Controls"},"image":{"@id":"https:\/\/webprojects.cloud\/wordpress\/splatco\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/spl_knowledgebase\/3699","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/spl_knowledgebase"}],"about":[{"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/types\/spl_knowledgebase"}],"author":[{"embeddable":true,"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/users\/1"}],"up":[{"embeddable":true,"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/spl_knowledgebase\/887"}],"wp:attachment":[{"href":"https:\/\/webprojects.cloud\/wordpress\/splatco\/wp-json\/wp\/v2\/media?parent=3699"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}