<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>STM8 Code arşivleri - N7A Teknik</title>
	<atom:link href="https://n7atechnic.com.tr/tag/stm8-code/feed/" rel="self" type="application/rss+xml" />
	<link>https://n7atechnic.com.tr/tag/stm8-code/</link>
	<description>Teknik İşler</description>
	<lastBuildDate>Tue, 03 May 2022 23:18:57 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://n7atechnic.com.tr/wp-content/uploads/2022/05/cropped-logo_mono-1-32x32.png</url>
	<title>STM8 Code arşivleri - N7A Teknik</title>
	<link>https://n7atechnic.com.tr/tag/stm8-code/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>STM8 Programlama -IAR- #6 (Clock Ayarları)</title>
		<link>https://n7atechnic.com.tr/stm8-programlama-iar-6-clock-ayarlari/</link>
					<comments>https://n7atechnic.com.tr/stm8-programlama-iar-6-clock-ayarlari/#respond</comments>
		
		<dc:creator><![CDATA[N7A Tech]]></dc:creator>
		<pubDate>Thu, 23 Apr 2020 11:33:10 +0000</pubDate>
				<category><![CDATA[STM8]]></category>
		<category><![CDATA[Tüm Yazılar]]></category>
		<category><![CDATA[CLK]]></category>
		<category><![CDATA[CLK_CCO]]></category>
		<category><![CDATA[ClockSource]]></category>
		<category><![CDATA[Gömülü Sistem]]></category>
		<category><![CDATA[High Speed Internal]]></category>
		<category><![CDATA[HSE]]></category>
		<category><![CDATA[HSI]]></category>
		<category><![CDATA[IAR]]></category>
		<category><![CDATA[Low Speed Internal]]></category>
		<category><![CDATA[STLINK]]></category>
		<category><![CDATA[STM Embedded]]></category>
		<category><![CDATA[stm8 clock]]></category>
		<category><![CDATA[STM8 Code]]></category>
		<category><![CDATA[STM8 IAR]]></category>
		<category><![CDATA[STM8 Programing]]></category>
		<category><![CDATA[STM8 Programlama]]></category>
		<category><![CDATA[STM8S]]></category>
		<category><![CDATA[stm8s_clk.h]]></category>
		<category><![CDATA[STM8S103F3]]></category>
		<guid isPermaLink="false">https://n7a.web.tr/?p=2571</guid>

					<description><![CDATA[<p>Merhabalar,Bu yazımızda MCU&#8217;nun clock ayarlarını ayrıntılı bir şekilde inceleyeceğiz. CLK_CCO çıkışını kullanarak lojik analizör ile inceleyeceğiz. ST firmasının STM8 ailesinde aşağıda da görüldüğü gibi esnek clock<span class="excerpt-hellip"> […]</span></p>
<p><a href="https://n7atechnic.com.tr/stm8-programlama-iar-6-clock-ayarlari/">STM8 Programlama -IAR- #6 (Clock Ayarları)</a> yazısı ilk önce <a href="https://n7atechnic.com.tr">N7A Teknik</a> üzerinde ortaya çıktı.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="has-normal-font-size">Merhabalar,<br>Bu yazımızda MCU&#8217;nun clock ayarlarını ayrıntılı bir şekilde inceleyeceğiz. CLK_CCO çıkışını kullanarak lojik analizör ile inceleyeceğiz. ST firmasının STM8 ailesinde aşağıda da görüldüğü gibi esnek clock ayarları yapabilmek mümkün. CPU çalışma frekansı ile çevre birimleri çalışma fekanslarını ayrı ayrı ayarlamak mümkün. Osilatör kaynaklarımızı daha önceki yazılarımızda incelemiştik kısaca hatırlaycak olursak <br>&#8211; HSE (High Speed External)<br>&#8211; HSI (High Speed Internal (RC))<br>&#8211; LSI (Low Speed Internal)</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://www.mcu-turkey.com/wp-content/uploads/2012/11/ppp1.jpg" alt="MCU Turkey – STM8S – İlk Uygulamalar (Clock ve GPIO Konfigürasyonu)"/></figure></div>



<p class="has-normal-font-size">Mikrodenetleyicinin clock kaynağını (HSI) High-Speed dahili osilatör olarak seçeceğiz. Bu durumda Master Clock Switch  f<sub>HSIDIV</sub> olarak seçilmelidir. Bu kaynağın 4 adet ön bölücü değeri vardır. Bu değerler 16 MHz olan HSI osilatör kaynağını (/8/4/2/1) seçnekleri arasından seçeceğimiz değere böler ve bölünmüş clock f<sub>MASTER</sub> hattına geçiş yapar. Şemadan da görüldüğü gibi TIMER,I2C,SPI,ADC,AWU,CAN,UART çevre birimleri bu hattan doğrudan beslenir. Dolayısıyla HSIDIV ön bölücü değerimizin sonucunda bu çevre birimlerinin clock kaynağının sağlandığını unutmayalım.<br>HSIDIV&#8217;i ayarladıktan sonra  CPUDIV ön bölücü değeri için 8 seçenek mevcut (/1/2/4/8/16/32/64/128). CPUDIV ön bölücü değerine göre ise f<sub>CPU</sub> frekansı belirlenmiş olur.</p>



<p class="has-normal-font-size">Örnek; Osilatör kaynağımız HSI (16MHz) olsun. HSIDIV=/2, CPUDIV=/4 olduğunu varsayalım.<br>O halde f<sub>MASTER</sub>= 16/2 = 8 MHz olacaktır. Buda demek oluyor ki çevre birimlerinin çalışma frekansı ve CPUDIV giriş frekansı 8MHz&#8217;dir.<br><br>f<sub>CPU</sub> = 8/4 = 2MHz olacaktır. Buda mikrodenetleyimizin çekirdeği 2MHz ile koşacağı anlamına gelir. Saniyede 2 milyon işlem yapabilir diyebiliriz.</p>



<p class="has-normal-font-size">Şimdi kod IAR derleyicisi için kodlarımıza geçelim.
Öncelikle main.c dosyamızda stm8s_clk.h kütüphanesini dahil etmeliyiz.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
#include &quot;stm8s_clk.h&quot;
</pre></div>


<p class="has-normal-font-size">Daha sonra kullanacağımız osilatör kaynağını aktif etmeliyiz (HSI).</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
CLK_HSECmd(DISABLE);
CLK_LSICmd(DISABLE);
CLK_HSICmd(ENABLE);
</pre></div>


<p class="has-normal-font-size">Osilatör hazır olana kadar, ilgili osilatörün bayrağı SET olana kadar CLK_GetFlagStatus(); fonksiyonundan aldığımız cevaba göre while dönüsü ile bekleme yapıyoruz. Fonksiyonun parametreleri şu şekildedir;</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
typedef enum {
CLK_FLAG_LSIRDY = (uint16_t)0x0110, /*!&lt; Low speed internal oscillator ready Flag */
CLK_FLAG_HSIRDY = (uint16_t)0x0102, /*!&lt; High speed internal oscillator ready Flag */
CLK_FLAG_HSERDY = (uint16_t)0x0202, /*!&lt; High speed external oscillator ready Flag */
CLK_FLAG_SWIF = (uint16_t)0x0308, /*!&lt; Clock switch interrupt Flag */
CLK_FLAG_SWBSY = (uint16_t)0x0301, /*!&lt; Switch busy Flag */
CLK_FLAG_CSSD = (uint16_t)0x0408, /*!&lt; Clock security system detection Flag */
CLK_FLAG_AUX = (uint16_t)0x0402, /*!&lt; Auxiliary oscillator connected to master clock */
CLK_FLAG_CCOBSY = (uint16_t)0x0504, /*!&lt; Configurable clock output busy */
CLK_FLAG_CCORDY = (uint16_t)0x0502 /*!&lt; Configurable clock output ready */
}CLK_Flag_TypeDef;
</pre></div>


<p class="has-normal-font-size">Osilatör kaynağımız HSI olduğu için CLK_FLAG_HSIRDY seçmeliyiz.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
while(CLK_GetFlagStatus(CLK_FLAG_HSIRDY) == 0);
</pre></div>


<p class="has-normal-font-size">Yukarıda bahsettiğimiz ön bölücü değerlerini ayarlıyoruz. Parametrelerin sonlarındaki rakamı yukarıdaki ilgili değerlerle değiştirerek istediğimiz çalışma frekansını elde edebiliriz.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); //fMASTER
CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1); //fCPU
</pre></div>


<p class="has-normal-font-size">Clock ayarlarmaları için bir diğer durum ise CLK_ClockSwitchConfig() fonkisyonudur. Bu özellik mikrodenetleyici çalışıyorken clock kaynağını manuel veya otomatik değiştirmeye olanak sağlar. İşlem otomatik olarak seçilir ise; ana osilatörde herhangi bir problem oluşursa seçeceğimiz alternatif osilatör kaynağı devreye alınacak ve istersek ana osilatörü pasif edebileceğiz. Örnek fonksiyon ve parametre açıklamaları;</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSI,
DISABLE, CLK_CURRENTCLOCKSTATE_ENABLE);
/**
  * CLK_SWITCHMODE_AUTO/_MANUEL : işlemin otomatik veya ellemi seçileceğini
  * CLK_SOURCE_HSI/_LSI/_HSE    : Alterantif olarak seçilecek kaynağı(yedek)
  * DISABLE/ENABLE : Otomatik veya manuel farketmeksizin böyle bir işlem 
  *gerçekleştiğinde kesme oluşmasını istiyorsak ENABLE olması gerekir.
  * CLK_CURRENTCLOCKSTATE_ENABLE/DISABLE : İşlem gerçekleşirse ana kaynağı 
  *pasif konuma getireceksek DISABLE seçmeliyiz.
  */
</pre></div>


<p class="has-normal-font-size">Değinmek istediğim bir diğer nokta ise bu kütüphanedeki CCO (Configurable Clock Output) özelliğidir.   Bu özelliklik ile birlikte mikrodenetleyicinin ilgili pininden (PC4/CLK_CCO) aşağıdaki seçeneklerden istediğimiz clock sinyalini elde edebiliriz. Geliştirdiğimiz sistemde herhangi bir osilatör kaynağına ihtiyaç duymamız halinde bu özelliği kullanabiliriz. Ayrıca ilgili osilatör kaynağı freknasını CCO ile gözlemlemek mümkündür.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
typedef enum {
  CLK_OUTPUT_HSI      = (uint8_t)0x00, /*!&lt; Clock Output HSI */
  CLK_OUTPUT_LSI      = (uint8_t)0x02, /*!&lt; Clock Output LSI */
  CLK_OUTPUT_HSE      = (uint8_t)0x04, /*!&lt; Clock Output HSE */
  CLK_OUTPUT_CPU      = (uint8_t)0x08, /*!&lt; Clock Output CPU */
  CLK_OUTPUT_CPUDIV2  = (uint8_t)0x0A, /*!&lt; Clock Output CPU/2 */
  CLK_OUTPUT_CPUDIV4  = (uint8_t)0x0C, /*!&lt; Clock Output CPU/4 */
  CLK_OUTPUT_CPUDIV8  = (uint8_t)0x0E, /*!&lt; Clock Output CPU/8 */
  CLK_OUTPUT_CPUDIV16 = (uint8_t)0x10, /*!&lt; Clock Output CPU/16 */
  CLK_OUTPUT_CPUDIV32 = (uint8_t)0x12, /*!&lt; Clock Output CPU/32 */
  CLK_OUTPUT_CPUDIV64 = (uint8_t)0x14, /*!&lt; Clock Output CPU/64 */
  CLK_OUTPUT_HSIRC    = (uint8_t)0x16, /*!&lt; Clock Output HSI RC */
  CLK_OUTPUT_MASTER   = (uint8_t)0x18, /*!&lt; Clock Output Master */
  CLK_OUTPUT_OTHERS   = (uint8_t)0x1A  /*!&lt; Clock Output OTHER */
} CLK_Output_TypeDef;
</pre></div>


<p class="has-normal-font-size">CCO&#8217;yu kullanabilmek için ilgili CLK_CCO pin konfigürasyonunu (STM8S103F3 için PC4 pini)  input pull-up veya output push-pull moduna getirmeliyiz (push-pull,pull-up için buraya).</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
CLK_CCOConfig(CLK_OUTPUT_CPU);
CLK_CCOCmd(ENABLE);
</pre></div>


<p class="has-normal-font-size">PC4 pini için gerekli ayarlamayı yaptıktan sonra PC4 pininden CPU çalışma frekansındaki sinyali almış olacağız.</p>



<p class="has-normal-font-size">Konuyu şöyle bir toparlarsak&#8230;.. Yapacağımız uygulamalarda kartımızın üzerinde harici bir kristal osilatör olmadığı için dahili HSI osilatörü kullanacağız. Bu osilatör kaynağı ile ilgili bir ön yargınız/şüpheniz olmasın bu birim gayet sağlıklı çalışmaktadır. Buna göre ilerideki uygulamalarda kullanabileceğimiz bir clock ayarı için kodumuz şöyle olur;</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
CLK_DeInit();	
CLK_HSECmd(DISABLE);
CLK_LSICmd(DISABLE);
CLK_HSICmd(ENABLE);
while(CLK_GetFlagStatus(CLK_FLAG_HSIRDY) == 0);

CLK_ClockSwitchCmd(ENABLE);
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV2);
CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);

</pre></div>


<p class="has-normal-font-size">Bu kodu void main(void) döngüsünün hemen altına yazarak kullanabiliriz.</p>



<p class="has-normal-font-size">Aşağıda CLK_CCO ya ait uygulamanın kodları bulunmaktadır. Ayrıca proje dosyasını <a href="https://bit.ly/3axTF7h">buradan </a> indirebilirsiniz.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
/**
  ******************************************************************************
  * @file    Project/main.c 
  * @author  N7A TECHNIC
  * @brief   Main program body
   ******************************************************************************
  *        www.n7a.web.tr
  ******************************************************************************
  */ 

/* Includes ------------------------------------------------------------------*/
#include &quot;stm8s.h&quot;
#include &quot;stm8s_clk.h&quot;
#include &quot;stm8s_gpio.h&quot;

/* Private defines -----------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/

void main(void)
{
  /* Infinite loop */
  CLK_DeInit();
  CLK_HSECmd(DISABLE);
  CLK_LSICmd(DISABLE);
  CLK_HSICmd(ENABLE);
  
  while(CLK_GetFlagStatus(CLK_FLAG_HSIRDY)==0);
  
  CLK_ClockSwitchCmd(ENABLE);
  CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV4);
  CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV2);
  
  GPIO_Init(GPIOC,GPIO_PIN_4,GPIO_MODE_OUT_PP_LOW_FAST);
  
  CLK_CCOConfig(CLK_OUTPUT_CPU);
  CLK_CCOCmd(ENABLE);
  
  while (1)
  {
  }
}

#ifdef USE_FULL_ASSERT

void assert_failed(u8* file, u32 line)
{ 
  /* User can add his own implementation to report the file name and line number,
     ex: printf(&quot;Wrong parameters value: file %s on line %d\r\n&quot;, file, line) */

  /* Infinite loop */
  while (1)
  {
  }
}
#endif


/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

</pre></div>


<h2 class="wp-block-heading">Teorik Eğitim:</h2>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="STM8 Programlama -IAR- #6 (Clock Ayarları - CLK_CCO)-1 STM8S103F3" width="1200" height="675" src="https://www.youtube.com/embed/PaTP6qRQRRQ?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading">Uygulama:</h2>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="STM8 Programlama -IAR- #6 (CLK_CCO Uygulama)-2 STM8S103F3" width="1200" height="675" src="https://www.youtube.com/embed/r5ZZUG2j3jg?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>
<p><a href="https://n7atechnic.com.tr/stm8-programlama-iar-6-clock-ayarlari/">STM8 Programlama -IAR- #6 (Clock Ayarları)</a> yazısı ilk önce <a href="https://n7atechnic.com.tr">N7A Teknik</a> üzerinde ortaya çıktı.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://n7atechnic.com.tr/stm8-programlama-iar-6-clock-ayarlari/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>STM8 Programlama -IAR- #4 (Mikrodenetleyici ile Tanışıyoruz)</title>
		<link>https://n7atechnic.com.tr/stm8-programlama-iar-4-mikrodenetleyici-ile-tanisiyoruz/</link>
					<comments>https://n7atechnic.com.tr/stm8-programlama-iar-4-mikrodenetleyici-ile-tanisiyoruz/#respond</comments>
		
		<dc:creator><![CDATA[N7A Tech]]></dc:creator>
		<pubDate>Wed, 15 Apr 2020 00:03:54 +0000</pubDate>
				<category><![CDATA[STM8]]></category>
		<category><![CDATA[Tüm Yazılar]]></category>
		<category><![CDATA[Gömülü Sistem]]></category>
		<category><![CDATA[IAR]]></category>
		<category><![CDATA[STLINK]]></category>
		<category><![CDATA[STM Embedded]]></category>
		<category><![CDATA[STM8 Code]]></category>
		<category><![CDATA[STM8 IAR]]></category>
		<category><![CDATA[STM8 Programing]]></category>
		<category><![CDATA[STM8 Programlama]]></category>
		<category><![CDATA[STM8S]]></category>
		<category><![CDATA[STM8S103F3]]></category>
		<guid isPermaLink="false">https://n7a.web.tr/?p=2548</guid>

					<description><![CDATA[<p>Yazılımsal ve donanımsal araçlarımızı tamamladıktan sonra mikrodenetleyici (bundan sonra MCU olarak ifade edeceğim) ile tanışma adımına geçebiliriz. Yazımızda MCU&#8217; yu genel hatlarıyla inceleyeceğiz. Kabaca inceleme yapacağız<span class="excerpt-hellip"> […]</span></p>
<p><a href="https://n7atechnic.com.tr/stm8-programlama-iar-4-mikrodenetleyici-ile-tanisiyoruz/">STM8 Programlama -IAR- #4 (Mikrodenetleyici ile Tanışıyoruz)</a> yazısı ilk önce <a href="https://n7atechnic.com.tr">N7A Teknik</a> üzerinde ortaya çıktı.</p>
]]></description>
										<content:encoded><![CDATA[
<p>    Yazılımsal ve donanımsal araçlarımızı tamamladıktan sonra mikrodenetleyici (bundan sonra MCU olarak ifade edeceğim) ile tanışma adımına geçebiliriz. Yazımızda MCU&#8217; yu genel hatlarıyla inceleyeceğiz.<br>   Kabaca inceleme yapacağız anlamadığınız yerler olabilir bunlara yeri gelince yeterince değineceğiz.<br>   İnceleme yapacağımız döküman STM8S103F3&#8242; ün datasheet kaynağı olacaktır. İlgili dökümana <a rel="noreferrer noopener" href="https://www.st.com/resource/en/datasheet/stm8s103f2.pdf" target="_blank">buradan</a> ulaşabilirsiniz.</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img fetchpriority="high" decoding="async" src="https://n7a.web.tr/wp-content/uploads/2020/04/image-8.png" alt="" class="wp-image-2549" width="580" height="112"/></figure></div>



<h4 class="wp-block-heading">Özelliklere kısaca madde madde değinelim.</h4>



<ul class="wp-block-list"><li>Çekirdek çalışma frekansı 16 MHz  olan olan MCU &#8216;nun 8KByte Flash belleği ile 640 Byte EEPROM(Electronically Erasable Programmable Read-Only Memory / Verileri kalıcı olarak saklayabildiğimiz depolama alanıdır) depolama alanı bulunuyor.</li><li>RAM(Random Access&nbsp;<strong>Memory</strong>-Rastgele Erişimli Bellek): 1 Kbyte</li><li>2,95 &#8212; 5,5 V çalışma gerilimi.</li><li>Harici kristal osilatör bağlantı seçeneğine ek olarak dahili RC(Resistor-Capacitor) osilatör bulunmaktadır.<br>&gt;1-16 MHz high-speed external crystal (HSE)<br>&gt;16 MHz high-speed internal RC oscillator (HSI)<br>&gt;128 kHz low-speed internal RC (LSI)<br>&gt;1-16 MHz high-speed external crystal (HSE)</li><li>Düşük güç modları (wait, active-halt, halt)</li><li>Çevre birimlerinin clocklarını ayrı ayrı kapatabilmek.</li><li>Toplamda 6 vektörde 27 harici kesme;<br>SPI,UART,ADC,GPIO portları, Timer&#8230;.. gibi çevre birimleri için.</li><li>10 Bit ADC</li><li>Donanımsal UART,SPI,I2C haberlerşme arayüzleri.</li><li>Kullanacağımız MCU&#8217;nun 20 pinden 16&#8217;sı I/O olarak ayarlanabilmekte ve bu pinlerin 12&#8217;si HS(High Sink IO)&#8217;dur (20mA&#8217;e kadar).</li></ul>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img decoding="async" src="https://n7a.web.tr/wp-content/uploads/2020/04/image-9.png" alt="" class="wp-image-2558" width="462" height="341"/></figure></div>



<ul class="wp-block-list"><li></li></ul>



<h3 class="wp-block-heading">TIMER-Zamanlayıcılar</h3>



<ul class="wp-block-list"><li>Zamanlayıcılar MCU&#8217;nun rutin bekleme işlem yüklerini azaltan yapılardır. 7Segment, PWM,Zaman gibi uygulamalarda kullanılır.</li><li>TIM1 &#8211; 16-bit Gelişmiş Kontrollü Zamanlayıcı</li><li>TIM2 &#8211; 16-bit Genel Amaçlı Zamanlayıcı</li><li>TIM4 &#8211; 8-bit Temel Zamanlayıcı</li></ul>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img decoding="async" src="https://n7a.web.tr/wp-content/uploads/2020/04/image-10.png" alt="" class="wp-image-2559" width="487" height="171"/></figure></div>



<ul class="wp-block-list"><li>Şuanlık isimlerini ve tablodaki bilgilere aşina olmak bize fazlasıyla yetecektir.</li></ul>



<h3 class="wp-block-heading">Beeper</h3>



<p>   Sesli ikazlar için içerisinde rezonatör devresi olmayan buzzerları kullanmaya olanak sağlar. Hani şu 5V verince doğrudan öten kulakları tırmalayan buzzerlar varya, heehhhh işte, onların 5V&#8217;a bağlayınca çalışmayanlarını çalıştırmak için kullanıyoruz bu özelliği 🙂 .</p>



<h3 class="wp-block-heading">ADC Analog-to-Digital Converter (ADC1)</h3>



<ul class="wp-block-list"><li>Analog sinyalleri MCU&#8217;nun anlayacağı bilgilere çeviren birimdir. Mesela NTC ile sıcaklık ölçmek istediğimizde kullancağız.</li><li>Giriş gerilim aralığı 0&#8211;&gt;VDD gerilimi kadardır.</li><li>Veriyi 14 clock cycles çevirme zamanı vardır.</li></ul>



<h3 class="wp-block-heading">PINOUT </h3>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" src="https://n7a.web.tr/wp-content/uploads/2020/04/image-11.png" alt="" class="wp-image-2560"/></figure></div>



<ul class="wp-block-list"><li>HS High Sink kabiliyetli pinleri</li><li>(T) True open drain (GPIO bölümünde açıklayacağım.)</li><li>[ ] Alternatif pin seçeneği için kullanılır (remapping option)<br>Bunu IAR&#8217;da MCU&#8217;nun ilgili AFR(Alternate Function Remap) bitlerini değiştirerek sağlayacağız. Olay kısaca şöyle; örnek olarak PD2 pinini alırsak normal pin tanımı AIN3(Analog in ch3)&#8217;tür. Biz bu pini TIM2_CH3 özelliği ile kullanacaksak ilgili AFR bitinin değerini değiştireceğiz.</li><li>MCU çalışabilmesi için Vcap pinine bağlı bir kondansatöre ihtiyaç duyar. Kondansaörün sığa aralığı ise aşağıdaki gibidir.</li></ul>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" src="https://n7a.web.tr/wp-content/uploads/2020/04/image-13.png" alt="" class="wp-image-2563"/></figure></div>



<h3 class="wp-block-heading">Memory Map</h3>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img decoding="async" src="https://n7a.web.tr/wp-content/uploads/2020/04/image-12.png" alt="" class="wp-image-2561" width="168" height="472"/></figure></div>



<p>   Burada Hafıza Adreslerinin başlangıç ve bitiş değerleri yazmakta. Mesela EEPROM&#8217;un ilk Byte&#8217;ına veri yazmak için 0x004000 adresini kullanmalıyız.</p>



<p></p>



<p>   Evet mikrodenetleyiciyi genel hatlarıyla tanıdık. Devamında IAR programını inceleyip proje yapısına göz attıktan sonra ilk kodumuzu yazacağız. Bir sonraki yazıda görümek üzere.</p>
<p><a href="https://n7atechnic.com.tr/stm8-programlama-iar-4-mikrodenetleyici-ile-tanisiyoruz/">STM8 Programlama -IAR- #4 (Mikrodenetleyici ile Tanışıyoruz)</a> yazısı ilk önce <a href="https://n7atechnic.com.tr">N7A Teknik</a> üzerinde ortaya çıktı.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://n7atechnic.com.tr/stm8-programlama-iar-4-mikrodenetleyici-ile-tanisiyoruz/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>STM8 Programlama -IAR- #3 (Yazılımsal Araçlar)</title>
		<link>https://n7atechnic.com.tr/stm8-programlama-iar-3-yazilimsal-araclar/</link>
					<comments>https://n7atechnic.com.tr/stm8-programlama-iar-3-yazilimsal-araclar/#respond</comments>
		
		<dc:creator><![CDATA[N7A Tech]]></dc:creator>
		<pubDate>Mon, 13 Apr 2020 23:34:03 +0000</pubDate>
				<category><![CDATA[STM8]]></category>
		<category><![CDATA[Tüm Yazılar]]></category>
		<category><![CDATA[Gömülü Sistem]]></category>
		<category><![CDATA[IAR]]></category>
		<category><![CDATA[STLINK]]></category>
		<category><![CDATA[STM Embedded]]></category>
		<category><![CDATA[STM8 Code]]></category>
		<category><![CDATA[STM8 IAR]]></category>
		<category><![CDATA[STM8 Programing]]></category>
		<category><![CDATA[STM8 Programlama]]></category>
		<category><![CDATA[STM8S]]></category>
		<category><![CDATA[STM8S103F3]]></category>
		<guid isPermaLink="false">https://n7a.web.tr/?p=2522</guid>

					<description><![CDATA[<p>STM8 Programlama serisi için kullanacağımız yazılım araçlarına değinerek gerekli açıklamalarla linkleri paylaşacağım. IAR Embedded Workbench Kodlarımızı IAR ile geliştireceğiz. Programın deneme sürümü olarak iki seçeneği mevcut.<span class="excerpt-hellip"> […]</span></p>
<p><a href="https://n7atechnic.com.tr/stm8-programlama-iar-3-yazilimsal-araclar/">STM8 Programlama -IAR- #3 (Yazılımsal Araçlar)</a> yazısı ilk önce <a href="https://n7atechnic.com.tr">N7A Teknik</a> üzerinde ortaya çıktı.</p>
]]></description>
										<content:encoded><![CDATA[
<p>STM8 Programlama serisi için kullanacağımız yazılım araçlarına değinerek gerekli açıklamalarla linkleri paylaşacağım.</p>



<h2 class="wp-block-heading">IAR Embedded Workbench</h2>



<p>Kodlarımızı IAR ile geliştireceğiz. Programın deneme sürümü olarak iki seçeneği mevcut. Birincisi 30 gün deneme süresi olan full versiyon diğeri ise 8 KByte kod limiti olan seçenektir. Bu tercihi kurulum esnasında seçiyoruz. Eğitim videomuzda kullanacağımız mikrodenetleyici 8KByte Flash belleğe sahip olduğu için bir sıkıntı olmayacaktır. Bu seçeneği seçerek kurulum yapmalıyız. 8 KByte&#8217;a takılmayınız başlangıç için çok iyi bir değer. 8 KByte ile neler yapılır neler&#8230;. 🙂<br>İlgili Programı indireceğiniz web sitesine <a rel="noreferrer noopener" href="https://www.iar.com/iar-embedded-workbench/#!?architecture=STM8" target="_blank">buradan </a>erişebilirsiniz. <br>Web sitesine giriş yaptığınızda STM8 e tıklayarak programı indirebilirsiniz.<br></p>



<h2 class="wp-block-heading">STM8S/A Standard Peripheral Library</h2>



<p>Kodlarımızı yazarken Standart Periphreal Library kullancağız. Dosyayı içerisinde örnek proje sayfası ve temel çevre birimleri için yazılmış kütüphane ve çevre birimlerinini çalıştırabileceğimiz taslak kodlar bulunmaktadır. Yeni örnek uygulamalar yazarken template proje dosyasını kopyala/yapıştır yöntemi ile çoğaltarak kullanacağız yani IAR ile proje dosyası oluşturma kısmına değinmeyeceğiz. Gerekirse programlama serisinin ilerleyen videolarında bu hususa değinebiliriz.<br>İlgili dosyaya <a rel="noreferrer noopener" href="https://my.st.com/content/my_st_com/en/products/embedded-software/mcu-mpu-embedded-software/stm8-embedded-software/stsw-stm8069.license=1586531079952.product=STSW-STM8069.version=2.3.1.html" target="_blank">buradan </a>erişebilirsiniz.<br>Kütüphaneyi indirmek için ST&#8217;nin sayfasına üye olmanız gerekmetedir.</p>



<h2 class="wp-block-heading">STM8 STUDIO</h2>



<p>Yazdığımız kodları çalıştırırken içerideki değişkenlere neler olup bittiğini bilmek elbette hakkımız 🙂 Bu durum için Real-Time olarak verilere erişmemizin bir yolu bu programı edinmemizdir. Diğer seçenek ise IAR ile debug yaparak Live Watch gibi pencerelerden verileri takip etmektir. Her iki seçenekte de SWIM pinini (PD1) başka bir durum için kullanmayı önermiyorum.<br>İlgili dosyaya <a rel="noreferrer noopener" href="https://www.st.com/en/development-tools/stm-studio-stm8.html#get-software" target="_blank">buradan </a>erişebilirsiniz.<br>Programı indirmek için ST&#8217;nin sayfasına üye olmanız gerekmetedir.</p>



<h2 class="wp-block-heading">Logic Analyzer</h2>



<p>PWM/SPI/UART gibi çevre birimlerinin çıkışlarını inceleyebilmemiz için kullanacağızımız bu program oldukça başarılıdır. Kaydını yaptığımız verinin ıncığını cıncığını çıkartana kadar inceleme fırsatı sağlar (Timing, High/Low Sayıları vs&#8230;..) 🙂<br>İlgili dosyaya <a rel="noreferrer noopener" href="https://www.saleae.com/downloads/" target="_blank">buradan </a>erişebilirsiniz.</p>



<h2 class="wp-block-heading">USB &#8211;&gt; TTL</h2>



<p>Daha evvel Arduino veya bu işler ile uğraştıysanız  muhtemelen driver konusunda problem yaşamayacaksınızdır. Her ihtimale karşı indirme linklerini koyayım. USB TTL çeviriciyi PC&#8217;ye bağladığınızda ve aygıt yöneticisinden  baktığınızda herhangi bir problem görünmesi durumunda IC&#8217;nize göre driver yüklemeniz gerekecektir.<br>Gerekirse ileride bu konuya da değinebiliriz.</p>



<p><br>CH340 USB to TTL driver için gerekli dosyayı <a href="https://n7a.web.tr/wp-content/uploads/2020/04/CH341SER.rar">buradan</a> indirebilirsiniz.</p>



<p>FT232 USB to TTL driver için gerekli dosyayı <a href="https://n7a.web.tr/wp-content/uploads/2020/04/FT232.zip">buradan</a> indirebilirsiniz.</p>



<p>PL2303 USB to TTL driver için gerekli dosyayı <a href="https://n7a.web.tr/wp-content/uploads/2020/04/PL2303_Prolific_DriverInstaller_v1200.zip">buradan </a>indirebilirsiniz.<br></p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="STM8 Programlama -IAR- #3 (Yazılım Araçları) STM8S103F3" width="1200" height="675" src="https://www.youtube.com/embed/pi-z2ryUItU?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>
<p><a href="https://n7atechnic.com.tr/stm8-programlama-iar-3-yazilimsal-araclar/">STM8 Programlama -IAR- #3 (Yazılımsal Araçlar)</a> yazısı ilk önce <a href="https://n7atechnic.com.tr">N7A Teknik</a> üzerinde ortaya çıktı.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://n7atechnic.com.tr/stm8-programlama-iar-3-yazilimsal-araclar/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>STM8 Programlama -IAR- #2 (Donanımsal Araçlar)</title>
		<link>https://n7atechnic.com.tr/stm8-programlama-iar-2-donanimsal-araclar/</link>
					<comments>https://n7atechnic.com.tr/stm8-programlama-iar-2-donanimsal-araclar/#respond</comments>
		
		<dc:creator><![CDATA[N7A Tech]]></dc:creator>
		<pubDate>Mon, 13 Apr 2020 22:46:26 +0000</pubDate>
				<category><![CDATA[STM8]]></category>
		<category><![CDATA[Tüm Yazılar]]></category>
		<category><![CDATA[Gömülü Sistem]]></category>
		<category><![CDATA[IAR]]></category>
		<category><![CDATA[STLINK]]></category>
		<category><![CDATA[STM Embedded]]></category>
		<category><![CDATA[STM8 Code]]></category>
		<category><![CDATA[STM8 IAR]]></category>
		<category><![CDATA[STM8 Programing]]></category>
		<category><![CDATA[STM8 Programlama]]></category>
		<category><![CDATA[STM8S]]></category>
		<category><![CDATA[STM8S103F3]]></category>
		<guid isPermaLink="false">https://n7a.web.tr/?p=2514</guid>

					<description><![CDATA[<p>Kullanacağımız donanım araçlarının tamamı ülkemizden temin edilebilir malzemelerdir. Eğitim serisinin daha verimli olması için en azından board ve st-linke sahip olmanızı tavsiye ederim. STM8S103 Board ST<span class="excerpt-hellip"> […]</span></p>
<p><a href="https://n7atechnic.com.tr/stm8-programlama-iar-2-donanimsal-araclar/">STM8 Programlama -IAR- #2 (Donanımsal Araçlar)</a> yazısı ilk önce <a href="https://n7atechnic.com.tr">N7A Teknik</a> üzerinde ortaya çıktı.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Kullanacağımız donanım araçlarının tamamı ülkemizden temin edilebilir malzemelerdir. Eğitim serisinin daha verimli olması için en azından board ve st-linke sahip olmanızı tavsiye ederim.</p>



<h2 class="wp-block-heading">STM8S103 Board</h2>



<div class="wp-block-image is-style-default"><figure class="aligncenter"><img decoding="async" src="https://images-na.ssl-images-amazon.com/images/I/710nhidYPSL._SY355_.jpg" alt="Arduino Accessory DIY Tools, ldtr - wg079 stm8s103 F3 STM8S ..."/><figcaption>STM8F103F3 Board</figcaption></figure></div>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img decoding="async" src="https://tenbaht.github.io/sduino/hardware/stm8blue-schematic.png" alt="Generic STM8S103F3 breakout board (stm8blue) - Sduino" width="526" height="358"/><figcaption>STM8S103F3 Board Schematic</figcaption></figure></div>



<p>   ST firmasının geliştirmiş olduğu 8 bitlik mikrodenetleyici ailesinin TSSOP 20 kılıfını barındıran boardın alt tarafında AMS117-3.3 LDO (Low Dropout LDO; besleme voltajı çıkış voltajına çok yakın olsa bile çıkış voltajını ayarlayabilen bir DC voltaj regülatörüdür) Regüle entegresi bulunmaktadır.</p>



<p><br>   STM8S103F3 mikrodenetleyicisinin çalışma gerilimi 2.95 to 5.5 V  aralığında olduğu için programlama pinlerindeki 3V3 yazan kısımdan 5V uygulanmasında bir sakınca yoktur. Fakat 5V pini Regüle Entegresinin giriş ucuna bağlı olduğu için bu pinden 5V uygulanması mikrodenetleyicinin 5V&#8217;da çalıştığı anlamına gelmez.</p>



<p><br>   Board üzerinde iki adet LED bulunmaktadır. Bunlardan PWR olan besleme geriliminin varlığını, TEST ise GPIOB Pin4 (PB4) pininin çıkış durumunu temsil eder.</p>



<p><br>   RST Butonu ise mikrodenetleyicinin NRST pinine bir Pull-Up direnci ile birlikte bağlıdır. Buda mikrodenetleyicinin resetlenmesi için Lojik 0 konuma gitmesi gerektiğini gösterir.<br>PB5 pininin sol tarafında D4 olarak görünen pin B4 pinidir. Sanırım çinli arkadaşlarda bir hata olmuş 🙂<br></p>



<h2 class="wp-block-heading">ST-Link/V2</h2>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img decoding="async" src="https://n11scdn.akamaized.net/a1/1024/elektronik/diger/stlink-v2-stm8-stm32-programlayici__0127311057049805.jpg" alt="Stlink V2 - Stm8 , Stm32 Programlayıcı - n11.com" width="299" height="299"/><figcaption>ST-Link/V2</figcaption></figure></div>



<p>ST-Link/V2 vasıtasıyla yazdığımız kodları mikrodenetleyiciye yükleriz. İlgili ürünle hem STM32 hemde STM8 mikrodenetleyicilere yazılım yüklenebiliyor. Eğitim serimizde gerilim pinlerine ek olarak SWIM ve NRST pinlerini kullanacağız. Bu arada IAR (IAR EMbedded Workbench kodlarımızı yazacağımız program) kullanırken herhangi bir ayrı programa gerek duymaksızın derlenmiş kodlarımızı IAR içerisinden tek tuşla  mikrodenetleyicimize yükleyebileceğiz.</p>



<h2 class="wp-block-heading">USB-TTL </h2>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img decoding="async" src="https://www.hobidevre.com/image/cache/catalog/arduino/PL2303-USB-to-TTL-800x800.jpg" alt="PL2303 USB-TTL seri dönüştürücü" width="260" height="260"/><figcaption>USB to TTL CH340</figcaption></figure></div>



<p>Mikrodenetleyicinin UART (Universal Asynchronous Receiver Transmitter-Evrensel asenkron alıcı-verici) pinlerinden PC&#8217;ye veri alış verişini sağlayan arkadaşımızdır. Hatta eğitimin ilerleyen aşamalarında kankamız bile olabilir 🙂 </p>



<h2 class="wp-block-heading">Logic Analyzer</h2>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img decoding="async" src="https://cdn.ozdisan.com/ETicaret_Dosya/591660_2295296.JPG" alt="USB LOGIC ANALYZER | OZD-ARDUINO - MAKER ÜRÜNLERİ" width="287" height="327"/><figcaption>Logic Analyzer</figcaption></figure></div>



<p>Mikrodenetleyici çıkışlarının, standart multimetreler ile ölçemeyecek kadar hızlı lojik seviye değişimi esnasında olan bitenden haber olmak için kullanıyoruz. Ancak 0-5V aralığındaki lojik seviyeleri ölçer ve PC yazılımı vasıtasıyla analiz olanağı sağlar.</p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="STM8 Programlama -IAR- #2 (Donanım Araçları) STM8S103F3" width="1200" height="675" src="https://www.youtube.com/embed/Yirg-TNs-lg?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<p><br>Evet kullanacağımız donanımlar hakkında kısaca bilgi edindiğimize göre bir sonraki yazımıza kullanacağımız yazılım araçları hakkında bilgi almak edinmek için geçebiliriz.</p>
<p><a href="https://n7atechnic.com.tr/stm8-programlama-iar-2-donanimsal-araclar/">STM8 Programlama -IAR- #2 (Donanımsal Araçlar)</a> yazısı ilk önce <a href="https://n7atechnic.com.tr">N7A Teknik</a> üzerinde ortaya çıktı.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://n7atechnic.com.tr/stm8-programlama-iar-2-donanimsal-araclar/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>STM8 Programlama -IAR- #1 (Giriş)</title>
		<link>https://n7atechnic.com.tr/stm8-programlama-iar-1-giris/</link>
					<comments>https://n7atechnic.com.tr/stm8-programlama-iar-1-giris/#respond</comments>
		
		<dc:creator><![CDATA[N7A Tech]]></dc:creator>
		<pubDate>Mon, 13 Apr 2020 21:33:45 +0000</pubDate>
				<category><![CDATA[STM8]]></category>
		<category><![CDATA[Tüm Yazılar]]></category>
		<category><![CDATA[Gömülü Sistem]]></category>
		<category><![CDATA[IAR]]></category>
		<category><![CDATA[STLINK]]></category>
		<category><![CDATA[STM Embedded]]></category>
		<category><![CDATA[STM8 Code]]></category>
		<category><![CDATA[STM8 IAR]]></category>
		<category><![CDATA[STM8 Programing]]></category>
		<category><![CDATA[STM8 Programlama]]></category>
		<category><![CDATA[STM8S]]></category>
		<category><![CDATA[STM8S103F3]]></category>
		<guid isPermaLink="false">https://n7a.web.tr/?p=2506</guid>

					<description><![CDATA[<p>STM8 Programlama serisinde nelere değineceğimizi kısaca anlattık.</p>
<p><a href="https://n7atechnic.com.tr/stm8-programlama-iar-1-giris/">STM8 Programlama -IAR- #1 (Giriş)</a> yazısı ilk önce <a href="https://n7atechnic.com.tr">N7A Teknik</a> üzerinde ortaya çıktı.</p>
]]></description>
										<content:encoded><![CDATA[
<p><br><br><br><br>STM8 Programlama serisinde nelere değineceğimizi kısaca anlattık.<br><br><br><br><br></p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="STM8 Programlama -IAR- #1 (Giriş) STM8S103F3" width="1200" height="675" src="https://www.youtube.com/embed/ZquHy_bq9Ys?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<p></p>
<p><a href="https://n7atechnic.com.tr/stm8-programlama-iar-1-giris/">STM8 Programlama -IAR- #1 (Giriş)</a> yazısı ilk önce <a href="https://n7atechnic.com.tr">N7A Teknik</a> üzerinde ortaya çıktı.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://n7atechnic.com.tr/stm8-programlama-iar-1-giris/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
