{"id":11577,"date":"2016-07-29T13:38:06","date_gmt":"2016-07-29T17:38:06","guid":{"rendered":"http:\/\/embedded-lab.com\/blog\/?p=11577"},"modified":"2016-12-17T22:28:43","modified_gmt":"2016-12-18T03:28:43","slug":"tiva-c-clock-system","status":"publish","type":"post","link":"https:\/\/embedded-lab.com\/blog\/tiva-c-clock-system\/","title":{"rendered":"Tiva C Clock System"},"content":{"rendered":"<p style=\"text-align: justify;\">The clock system of a microcontroller is a fundamental element. Clock system provides the heart-beat needed to keep applications running in a synchronous manner. In the case of Tiva C micros the clock system is as much as sophisticated and elaborate as with any other ARM micros. In this post we will explore this basic block of Tiva C micros. We will see that the clock system is a network of different clock sources and internal units that are intertwined in a complex but easy manner.<\/p>\n<p style=\"text-align: justify;\"><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/TM4C123x-Features.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-11581 aligncenter\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/TM4C123x-Features-580x486.png\" alt=\"TM4C123x Features\" width=\"580\" height=\"486\" srcset=\"https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/TM4C123x-Features-580x486.png 580w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/TM4C123x-Features.png 723w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<h6 style=\"text-align: justify;\"><\/h6>\n<p><!--more--><\/p>\n<p>&nbsp;<\/p>\n<h4 style=\"text-align: justify;\">\u00a0Clock System Basics<\/h4>\n<p>Just as with any modern era micros Tiva C micros have several clock sources. Some of these sources are external while most clock sources are internal.<\/p>\n<p><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/TM4C123-Clock-System.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-11580 aligncenter\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/TM4C123-Clock-System-580x472.png\" alt=\"TM4C123 Clock System\" width=\"580\" height=\"472\" srcset=\"https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/TM4C123-Clock-System-580x472.png 580w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/TM4C123-Clock-System-1024x833.png 1024w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/TM4C123-Clock-System.png 1059w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\">I have taken the liberty to improve the clock tree of Tiva C micros by highlighting special areas of interest. For STM32s micros there is a great tool called <strong><em>STM32CubeMX<\/em><\/strong> that can be used to deduce system and peripheral clocks but for Tiva C we have no such tool. We need to do everything on our own and there we are very much likely to make mistakes if we cannot visualize the clock system well. If you notice the clock tree diagram above, it may look a bit complex but in practice it is simple. The green blocks are selectors or multiplexers that are governed by some bit settings. The red boxes are the clock sources. There are four clock sources and two Phase-Lock-Loop (PLL) designated by the purple boxes. The 480 MHz USB PLL is not a concern for now as we will not be discussing about USB communication here. We will be discussing about the 400 MHz PLL only. The interconnections of these sources and blocks make the clock tree appear like a spider web. To resolve this issue I highlighted these connections with different colours. It should be a relaxing view for the eyes now.<\/p>\n<h6>Main Oscillator (MOSC)<\/h6>\n<ul>\n<li>Primary external source.<\/li>\n<li>Can be driven by an external single-ended clock generator or a crystal resonator.<\/li>\n<li>Only specific frequencies between 4 \u2013 25 MHz are allowed.<\/li>\n<li>Can be used to drive the internal 400 MHz PLL.<\/li>\n<li>TM4C123GXL Tiva C Launchpad comes with a 16MHz on board crystal connected to MOSC.<\/li>\n<li>Needed to clock the 480 MHz USB PLL unit.<\/li>\n<\/ul>\n<p><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/Tiva-C-Launchpad-External-Clocks.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-11579 aligncenter\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/Tiva-C-Launchpad-External-Clocks-580x458.jpg\" alt=\"Tiva C Launchpad External Clocks\" width=\"580\" height=\"458\" srcset=\"https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/Tiva-C-Launchpad-External-Clocks-580x458.jpg 580w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/Tiva-C-Launchpad-External-Clocks.jpg 600w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/Schematic.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-11591 aligncenter\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/Schematic-580x303.png\" alt=\"Schematic\" width=\"580\" height=\"303\" srcset=\"https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/Schematic-580x303.png 580w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/Schematic-1024x535.png 1024w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/Schematic.png 1169w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h6>Precision Internal Oscillator (PIOSC)<\/h6>\n<ul>\n<li>16 MHz with 1% accuracy and 3% accuracy over temperature.<\/li>\n<li>Can be trimmed and calibrated.<\/li>\n<li>Can be used to drive the internal 400 MHz PLL.<\/li>\n<li>Can clock internal peripherals like ADC blocks, etc.<\/li>\n<\/ul>\n<h6>Precision Internal Oscillator Divided by 4 (PI4OSC)<\/h6>\n<ul>\n<li>Dependent on <strong><em>PIOSC<\/em>.<\/strong><\/li>\n<li>4 MHz clock frequency with 1% accuracy.<\/li>\n<li>Cannot drive the internal 400 MHz PLL.<\/li>\n<\/ul>\n<h6>Low Frequency Internal Oscillator (LFIOSC)<\/h6>\n<ul>\n<li>Typical clock frequency 30 kHz with 50% accuracy.<\/li>\n<li>Intended for Deep-Sleep power saving modes.<\/li>\n<li>Can be used when either or both <strong><em>MOSC <\/em><\/strong>and <strong><em>PIOSC<\/em><\/strong> are powered down.<\/li>\n<li>Not suitable for accurate time-based operations.<\/li>\n<\/ul>\n<h6>Hibernation Module Clock Source<\/h6>\n<ul>\n<li>Clocked by an external 32.768 kHz RTC crystal or clock generator of same frequency.<\/li>\n<li>Can provide accurate clock source during Deep-Sleep power saving modes.<\/li>\n<li>TM4C123GXL Tiva C Launchpad comes with a 32.768 kHz on board RTC crystal.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">All of the aforementioned sources can be system clock source. However peripheral clocks can be different. Most peripherals like <strong><em>SSI<\/em><\/strong>, <strong><em>UART<\/em><\/strong>, <strong><em>ADC<\/em><\/strong>, etc. can clocked by the <strong><em>PIOSC <\/em><\/strong>unless specified otherwise. <strong><em>PIOSC<\/em><\/strong> should never be disabled unless needed and that is because if <strong><em>MOSC<\/em><\/strong> is used and it fails for some reason, <strong><em>PIOSC<\/em><\/strong> will take over the role of providing clock signal.<\/p>\n<h4 style=\"text-align: justify;\"><\/h4>\n<h5 style=\"text-align: justify;\"><\/h5>\n<h5 style=\"text-align: justify;\">400 MHz Phase-Lock-Loop<\/h5>\n<p style=\"text-align: justify;\">ARM micros are about speed and power and so most of the times we would want an ARM micro to be as fast as possible. \u00a0To facilitate this speed thrust most ARM microcontrollers are equipped with Phase-Lock-Loops (PLL). Not only it cuts down cost by removing the need for rare, expensive high frequency external crystals but gives users lot of clock frequency options which would have been impossible otherwise. TM4C123x comes with an internal 400 MHz PLL, the internal working mechanism of which is not important here. However unlike the PLLs of other micros like STM32s, instead of multiplying input clock source, it is divided by <strong><em>System Divisor<\/em><\/strong>, <strong><em>Sysdiv<\/em><\/strong> to obtain desired clock speeds. No wonder Americans think differently from the rest of the world. With the internal PLL we can generate clock frequencies from 3.125 MHz to 80 MHz, 80 MHz being the top operating clock speed for the TM4C123x. The PLL can be driven by two sources only:<\/p>\n<ul>\n<li>Precision Internal Oscillator (PIOSC)<\/li>\n<li>Main Oscillator (MOSC)<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h5><\/h5>\n<h5>Run-Mode Clock Control<\/h5>\n<p style=\"text-align: justify;\">The system clock control is provided by a pair of registers called <strong><em>Run-Mode Clock Control<\/em><\/strong>, <strong><em>RCC<\/em><\/strong>. <strong><em>RCC<\/em><\/strong> and <strong><em>RCC2<\/em><\/strong> registers does the following things:<\/p>\n<ul style=\"text-align: justify;\">\n<li>Selects clock source for sleep and deep-sleep modes.<\/li>\n<li>Selects whether or not to use the internal 400 MHz PLL.<\/li>\n<li>Controls the oscillators\u2019 and the PLL\u2019s operating state.<\/li>\n<li>Set clock divisions and crystal input selection.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">The <strong><em>RCC<\/em><\/strong> register needs to be configured before <strong><em>RCC2<\/em><\/strong> if <strong><em>RCC2<\/em><\/strong> is needed. <strong><em>RCC2 <\/em><\/strong>is basically an extension of the <strong><em>RCC<\/em><\/strong> register and it overrides<strong><em> RCC<\/em><\/strong> settings. In most cases <strong><em>RCC2<\/em><\/strong> will be needed.<\/p>\n<p style=\"text-align: justify;\">Before going further I would like to reintroduce a very useful tool because what will be discussed next is related to this tool and its use. In several of my earlier posts I mentioned the advantage of using MikroC\u2019s project editor. Using this tool we can easily set the required clock settings.<\/p>\n<p style=\"text-align: justify;\"><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/MikroC-Project-Editor.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-11586 aligncenter\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/MikroC-Project-Editor-580x365.png\" alt=\"MikroC Project Editor\" width=\"580\" height=\"365\" srcset=\"https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/MikroC-Project-Editor-580x365.png 580w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/MikroC-Project-Editor.png 788w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">As seen we can see many drop-down menus. However these may look as much ambiguous as the clock tree itself. Thus we need to look at the three tables shown next. Note the <strong><em>2<\/em><\/strong>s in some menus. These refer to <strong><em>RCC2<\/em><\/strong> while the reset are related to <strong><em>RCC<\/em><\/strong> registers.<\/p>\n<p><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/SYSDIV-Field.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-11592 aligncenter\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/SYSDIV-Field.png\" alt=\"SYSDIV Field\" width=\"535\" height=\"452\" \/><\/a><\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/SYSDIV2-Field.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-11593\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/SYSDIV2-Field.png\" alt=\"SYSDIV2 Field\" width=\"535\" height=\"265\" \/><\/a><\/p>\n<p><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/DIV400-Field.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-11585 aligncenter\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/DIV400-Field.png\" alt=\"DIV400 Field\" width=\"535\" height=\"392\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\">When the <strong><em>BYPASS<\/em><\/strong> bit is <strong><em>0<\/em><\/strong>, the internal <strong><em>400 MHz PLL <\/em><\/strong>is used and scaled. It is not bypassed. Likewise when it is <strong><em>1<\/em><\/strong>, preselected clock source is used and scaled accordingly. These tables demonstrate possible clock frequencies.<\/p>\n<p style=\"text-align: justify;\">When using the MikroC\u2019s <strong><em>Project Editor<\/em><\/strong>, we need to set system clock in a systematic order. Let us consider the 80 MHz max system clock speed setup. First we need to set the <strong><em>RCC<\/em><\/strong> settings as shown.<\/p>\n<p style=\"text-align: justify;\"><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/RCC-Settings.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-11589 aligncenter\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/RCC-Settings.png\" alt=\"RCC Settings\" width=\"350\" height=\"256\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">The first two parameters dictate that we will be using the 16 MHz<strong><em> MOSC<\/em><\/strong> clock. We selected so because the TM4C123GXL Tiva C Launchpad board comes with an external 16 MHz crystal attached to the <strong><em>MOSC<\/em><\/strong>. This clock source is better than the others. We could have used <strong><em>PIOSC<\/em><\/strong> as the main clock source but we are keeping it as a backup oscillator. It is also pointless to keep the 16 MHz external crystal unused when it is already embedded in the board. Next we power up the internal PLL and use it. Note we did not use the <strong><em>System Clock Divisor<\/em><\/strong>, <strong><em>SYSDIV<\/em><\/strong> and that is because we will be using <strong><em>RCC2<\/em><\/strong> also. Though <strong><em>RCC<\/em><\/strong> setting will be overridden by <strong><em>RCC2<\/em><\/strong>, I advise not to use different settings both registers.<\/p>\n<p style=\"text-align: justify;\"><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/RCC2-Settings.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-11590 aligncenter\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/RCC2-Settings.png\" alt=\"RCC2 Settings\" width=\"343\" height=\"455\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">As said earlier, <strong><em>RCC2<\/em><\/strong> is more extensive than <strong><em>RCC<\/em><\/strong>. This is reflected by the settings available for <strong><em>RCC2 <\/em><\/strong>in the <strong><em>Project Editor<\/em><\/strong>.\u00a0 In this section we have to enable\/disable the two primary oscillators \u2013 <strong><em>PIOSC<\/em><\/strong> and <strong><em>MOSC<\/em><\/strong>. I am keeping both enabled. <strong><em>PIOSC<\/em><\/strong> is the backup should <strong><em>MOSC<\/em><\/strong> fail. The next two settings dictate what kind of control we are using to set the system clock and if it is required to use the <strong><em>RCC2<\/em><\/strong> fields. If we do not need to use <strong><em>RCC2<\/em><\/strong>, we can simply disable it with the setting available for <strong><em>System Clock Switch<\/em><\/strong>. Here we will need it. Since we did not set the PLL completely in the <strong><em>RCC <\/em><\/strong>field and we will be using <strong><em>RCC2<\/em><\/strong>, we need to set PLL parameters, particularly <strong><em>System Clock Divisor 2<\/em><\/strong>, <strong><em>SYSDIV2<\/em><\/strong>. I recommend readers to set the last to options as per tables shown previously before setting the PLL. Now our TM4C123 micro is ready to run at 80 MHz system clock.<\/p>\n<p style=\"text-align: justify;\">Please note that right after <strong><em>Power-On Reset (POR),<\/em><\/strong> <strong><em>PIOSC<\/em><\/strong> starts up before everything else sets up. It should not be a big deal for us. The final outcome from the Project Editor should look like this:<\/p>\n<p style=\"text-align: justify;\"><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/Project-Editor-Final.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-11587 aligncenter\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/Project-Editor-Final-580x366.png\" alt=\"Project Editor Final\" width=\"580\" height=\"366\" srcset=\"https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/Project-Editor-Final-580x366.png 580w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/Project-Editor-Final.png 785w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">Note the<strong><em> RCC<\/em><\/strong> and <strong><em>RCC2<\/em><\/strong> register values. If everything is okay they should look like that. Please take care to set the MCU clock frequency to 80 MHz or otherwise time-related functions like delays and other stuffs may work differently than anticipated. Note that the MCU clock frequency is the system clock frequency and that is why it is so critical. Finally the <strong><em>Project Editor<\/em><\/strong> allows us to load and save our favourite system clock schemes \u2013 a very handy feature that saves time by quickly loading such schemes.<\/p>\n<h4>Software Simulation and Debugging<\/h4>\n<p>We have setup the system clock to 80 MHz but we have no quick way to know for sure if it is really working that fast. Here a debugger becomes a must-have tool. All MikroE compilers come with a built-in software simulator or debugger which can assist in debugging codes. Here we will see how helpful it is.<\/p>\n<ul>\n<li>First create a blank project with TM4C123GH6PM.<\/li>\n<li>Do not include any library.<\/li>\n<li>Setup the system clock as per discussion to 80 MHz.<\/li>\n<li>Write and compile the following piece of code:<\/li>\n<\/ul>\n<pre><span style=\"color: #0000ff;\"><em>void main() <\/em><\/span><\/pre>\n<pre><span style=\"color: #0000ff;\"><em>{<\/em><\/span><\/pre>\n<pre><span style=\"color: #0000ff;\"><em>\u00a0\u00a0\u00a0 Get_Fosc_kHz();<\/em><\/span><\/pre>\n<pre><span style=\"color: #0000ff;\"><em>}<\/em><\/span><\/pre>\n<p style=\"text-align: justify;\">The <strong><em>Get_Fosc_kHz<\/em><\/strong> built-in function returns the system clock frequency in kHz. If our clock setup is okay, it should be returning 80000, indicating 80 MHz system clock speed.<\/p>\n<ul>\n<li style=\"text-align: justify;\">The <strong><em>Project Settings<\/em><\/strong> should be like this:<\/li>\n<\/ul>\n<p><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/Project-Settings.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-11588 aligncenter\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/Project-Settings.png\" alt=\"Project Settings\" width=\"211\" height=\"355\" \/><\/a><\/p>\n<ul>\n<li>Get yourself familiar with options available for the debugger:<\/li>\n<\/ul>\n<p><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/Debugger-Options.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-11583 aligncenter\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/Debugger-Options-580x248.png\" alt=\"Debugger Options\" width=\"580\" height=\"248\" srcset=\"https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/Debugger-Options-580x248.png 580w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/Debugger-Options.png 754w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<ul>\n<li>Go to <strong><em>Run &gt;&gt; Start Debugger<\/em><\/strong><\/li>\n<li>Go to <strong><em>View &gt;&gt; Debug Windows &gt;&gt; Watch Window<\/em><\/strong><\/li>\n<li>Select and add as shown:<\/li>\n<\/ul>\n<p><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/Watch-Values.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-11582 aligncenter\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/Watch-Values.png\" alt=\"Watch Values\" width=\"488\" height=\"498\" \/> <\/a><\/p>\n<ul>\n<li>Click <strong><em>Step Over<\/em><\/strong>. You will notice the following change. Note the value (highlighted in RED) of system clock in KHz.<\/li>\n<\/ul>\n<p><a href=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/Debugging-Finished.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-11584 aligncenter\" src=\"http:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/Debugging-Finished-580x581.png\" alt=\"Debugging Finished\" width=\"580\" height=\"581\" srcset=\"https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/Debugging-Finished-580x581.png 580w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/Debugging-Finished-150x150.png 150w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/Debugging-Finished-90x90.png 90w, https:\/\/embedded-lab.com\/blog\/wp-content\/uploads\/2016\/07\/Debugging-Finished.png 612w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<ul>\n<li>It is now proved absolutely that our system clock is really working at 80 MHz. You can stop the debugger now.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>Check the video for step-by-step details: <a href=\"https:\/\/www.youtube.com\/watch?v=f7UokGJ7_kI\" target=\"_blank\">https:\/\/www.youtube.com\/watch?v=f7UokGJ7_kI<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<p>Experiment with different clock combinations to build up more confidence on Tiva C clock system. We have yet to do real world experiments and the upcoming post on Tiva C GPIOs will reveal more. We will recheck if this setting of system clock is okay in that post.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Happy coding.<\/p>\n<p><em>\u00a0<\/em><\/p>\n<p><em>Author: Shawon M. Shahryiar<\/em><\/p>\n<p><a href=\"https:\/\/www.facebook.com\/groups\/microarena\/\"><em>https:\/\/www.facebook.com\/groups\/microarena<\/em><\/a><\/p>\n<p><a href=\"https:\/\/www.facebook.com\/MicroArena?ref=hl\"><em>https:\/\/www.facebook.com\/MicroArena<\/em><\/a><em>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <\/em><\/p>\n<p><em>29.07.2016<\/em><\/p>\n<p><em>\u00a0<\/em><\/p>\n<p><em>*Some images are taken from TI\u2019s websites and datasheet. <\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The clock system of a microcontroller is a fundamental element. Clock system provides the heart-beat needed to keep applications running in a synchronous manner. In the case of Tiva C micros the clock system is as much as sophisticated and elaborate as with any other ARM micros. In this post we will explore this basic block of Tiva C micros. We will see that the clock system is a network of different clock sources and internal units that are intertwined in a complex but easy manner.<\/p>\n","protected":false},"author":5,"featured_media":11579,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1433,1466],"tags":[803,1390,1415,1416,1432,1417],"class_list":["post-11577","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tiva-c","category-tutorials","tag-arm-microcontrollers","tag-mikroc-for-arm","tag-texas-instruments","tag-tiva-c-launchpad","tag-tm4c123gh6pm","tag-tm4c123gxl"],"_links":{"self":[{"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/posts\/11577","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/comments?post=11577"}],"version-history":[{"count":15,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/posts\/11577\/revisions"}],"predecessor-version":[{"id":12882,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/posts\/11577\/revisions\/12882"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/media\/11579"}],"wp:attachment":[{"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/media?parent=11577"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/categories?post=11577"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/embedded-lab.com\/blog\/wp-json\/wp\/v2\/tags?post=11577"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}