TEKNİK YAZI

Tiva Not-5: Tiva LaunchPad, Osilatör Ayarları, IO Kullanımı -2

Son yazımızda en temel uygulama olan led yakıp söndürme uygulaması yaparak IO kullanımının bir kısmının nasıl yapıldığını sizlerle paylaşmıştık. Son olarak LP üzerinde bulunan SW1 butonu ile uygulama yapmaya çalışarak butona basıldığında ledin yanıp sönmesini istemiştik ancak olmamıştı.

Neden olmadı:

Aşağıdaki şemadan da görülebileceği üzere buton direk olarak GND ye bağlı. Bu durumda butona basılmadığında işlemcinin bağlı bulunduğu pine 1 verisi göndermesi için bir adet pull up direnci olması gerekli. Şemada bağlantının nereye ilişkilendirildiğine bakarsak böyle bir direncin olmadığını ve direk olarak butonun işlemcinin pinine bağlı olduğunu görürüz. Durum böyle olunca işlemciye 1 verisi gelmez sürekli olarak 0 verisi bulunduğundan dolayı da butona basılmış gibi kodumuz çalışacaktır.

2013-11-12 08_07_25-5- - Microsoft Word

Çözüm 1: Eğer bir pic mikroişlemci ile çalışıyor olsaydık bu kite bir pullup direnci eklememiz gerekirdi.

2013-11-12 08_07_30-5- - Microsoft Word

Çözüm2:Ancak tivanın güzel özelliklerinden birisi de  IO pinlerini yazılım ile pull up pull down veya open drain şeklinde ayarlayabiliyor olmamız.

 2013-11-12 08_07_33-5- - Microsoft Word

O halde bu ayarı nasıl ve hangi fonksiyon ile yapacağımıza bakalım.

 

 

 2013-11-12 08_07_43-5- - Microsoft Word

 

 

 

Kodumuza bu satırı eklersek son hali bu şekilde olacaktır:

#include <stdint.h>
 
#include <stdbool.h>
 
#include "inc/hw_memmap.h"
 
#include "inc/hw_types.h"
 
#include "driverlib/sysctl.h"
 
#include "driverlib/gpio.h"
 
int x;
 
int main(void)
 
{
 
SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);
 
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
 
  GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);
 
GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_4);
 
GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_4,GPIO_STRENGTH_8MA,GPIO_PIN_TYPE_STD_WPU);
 
  while(1)
 
                {
 
                               x=GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_4);
 
                 if(x==0)
 
                               {
 
                    GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, 2);
 
                                               SysCtlDelay(6725000);
 
                                               GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, 0x00);
 
                                               SysCtlDelay(6725000);
 
                               }
 
                }
 
}

Bu yazımız bu kadar kısa olmasın biraz da KEIL ın harika debug özelliklerinden bahsedelim. Keil de direk olarak ti ın LP sini kullanarak bir çok çevre birimini değişkeni rahatlıkla izleyebiliyoruz ve kod yazarken proje geliştirirken hata bulmada oldukça faydalı oluyor. Örneğin yazdığımız bu kodda x değişkenini aynı zamanda kullandığımız F portunu keil de inceleyelim.

Kodumuzu yükledikten sonra sağ üstte bulunan debug butonu ile debug modunu aktif ediyoruz ve run butonu ile debug modunu başlatıyoruz.

Yukarıda toolbarda bulunan menülerden izlemek istediğimiz tüm modları ekranın bir köşesine ekleyebiliriz.

 2013-11-12 08_07_53-5- - Microsoft Word

Resimden de görülebileceği gibi ben sağ alta bir adet watch penceresi ve sağ tarafada F portunun tüm registerlarının izleyebileceğim bir pencere ekledim. Watch penceresine x yazdığımda x değişkeninin anlık olarak değerini görebiliyorum. Sağ en üstte ise F portunun aldığı değerleri görebiliyorum. Butona basıldığında 4. bitin 0 olduğunu ve ilk 4 bite yazdığımız değerin değiştiğini görebilirsiniz.

2013-11-12 07_55_18-C__Users_mcetin.ISBAK_Desktop_Freelance Projeler_Tiva_8x8_Spektrum Analyzer_Trai

Menuleri daha da karıştırarak bir çok özellik olduğunu görebilir bunları projelerinizde çok rahat kullanabilirsiniz. Karıştırmak en güzel öğrenme yöntemlerindendir. Bize de kimse oturup Keil anlatmadı sonuçta.

Bu yazımızdan sonrakilerde ise artık çok daha basit şekilde direk olarak ne yapılması ve nasıl yapılması gerektiği çok daha basit şekilde yazacağız. Çünkü yazma işi gerçekten zor ve çok vakit alıyor. Daha ileri konulara daha çok yazılara ulaşmak için bunu yapmak zorundayız. Basitden kastım örneğin yukardaki gibi pull up ı anlatmadan direk olarak uygulamasını yapacağız. Bu tarz temel konulara hakim olmayanlar zaten ARM işlemcilerden uzak dursunlar. Pic gibi daha temel işlemcilerden başlamaları daha iyi olacaktır.

 

Tiva Not-4: Tiva LaunchPad, Osilatör Ayarları, IO Kullanımı

TIVA launchpad in özellikleri:

Tiva Launchpad daha önceki yazılarımızda da bahsettiğimiz gibi ti ın mikroişlemcileri ile çalışmaya başlamak için sunduğu düşük fiyatlı üzerinde In-Curcuit Debugger ıda bulunan harika bir kitidir. TI ın web sitesi üzerinden direk olarak 12.99 $ a temin edilebilir ve hiçbir kargo ücreti ödemeden direk olarak kapınıza teslim edilir. Tiva LP nin özelliklerine bakacak olursak.

2013-11-11 15_04_48-LP kullanım klavuzu.pdf - Foxit Reader

  • 64 pin 80 Mhz TM4C123GH6PMI Tiva işlemci
  • On Board USB ICDI
  • Micro AB USB PORT
  • Device/ICDI Power Switch
  • BOOSTERPACK XL sensör modülü ile birebir uyumlu pin çıkışları
  • 2 adet buton
  • reset butonu
  • 3 adet led
  • Akım ölçüm test noktası
  • 16 Mhz Kristal
  • 32 Khz RTC kristali
  • 3.3 V regülatör entegresi

 

İlk uygulamamız standart led yak söndür uygulaması olacaktır.

Bu ilk uygulama ile kullanılan kütüphane dosyalarını, osilatör ayarlarını, IO ayarlarını istediğimiz gibi yapmayı öğrenmiş olacağız.

İşlemcinin IO portlarının özelliklerini, tiva işlemcisinin IO portlarının ne gibi avantajları olduğunu burada konu fazla uzayacağı için anlatmıyorum. Çünkü ARM çekirdeğe sahip işlemciler ve çok fazla özellikleri bünyesinde barındırmakta. İncelemek için işlemcinin datasheet ine bakabilirsiniz.

Direk olarak kodumuza bakalım.

/////////////////////////////////////////////////////////////////////////
 
#include <stdint.h>
 
#include <stdbool.h>
 
#include "inc/hw_memmap.h"
 
#include "inc/hw_types.h"
 
#include "driverlib/sysctl.h"
 
#include "driverlib/gpio.h"
 
int main(void)
 
{
 
SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|
 
SYSCTL_OSC_MAIN);//Sistem osilatör ayaralar1 40 Mhz e ayarlandi.
 
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
 
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);
 
while(1)
 
{
 
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, 14);
 
SysCtlDelay(6725000);
 
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, 0x00);
 
SysCtlDelay(6725000);
 
}
 
}
 
///////////////////////////////////////////////////////////////////////

 

Bu kodu yazıp önceki yazılarımızda belirttiğimiz ayarları yapıp yüklerseniz launchpad imizdeki RGB ledlerin tümü yanıp söner. 3 renk birleşmiş olduğundan dolayı beyaz bir ışık olarak görülür.

 

Kodumuzda yazdığımız her bir satırın ne ifade ettiğine bakabiliriz.

Kullandığımız kütüphane dosyaları:

#include <stdint.h> : Variable C99 tanımlamalarını tutar

#include <stdbool.h> Boolean c99 tanımlamalarını içerir

#include “inc/hw_memmap.h” Çevre birimlerinin base adreslerini içerir örneğin GPIO_PORTF_BASE

#include “inc/hw_types.h” ortak tanımlamaları ve makroları barındırır

#include “driverlib/sysctl.h” İşlemcinin sistemini kontrol eden tanımlamaları barındırır örneğin SysCtlClockSet and SysCtlClockGet

#include “driverlib/gpio.h” GPIO API si için direver tanımlamalarını  içerir örneğin: GPIOPinTypePWM and GPIOPinWrite

 

İşlemci Clock Ayarları:

İşlemciye bağlı main osilatör olarak 16 MHz kullanıldığında bu hız PLL aktif edildiğinde 400 MHz e çıkar. Tabi ki PLL direk olarak sistem clock unu beslemez. İşlemcinin datasheetinden clock diyagramı incelendiğinde PLL den sonra clock sinyalinin hangi aşamalardan geçtiği incelenebilir.

2013-11-11 08_50_19-LP workshop.pdf - Foxit Reader

Görüldüğü gibi siyah kalın çizgi yolu sistem clock unu taşımaktadır. Diyagramı fazla karıştırmadan basit olarak işlemci hızının ayarlanmasına bakalım. Kod üzerinden devam edecek olursak, sistem saatini ayarlamak için aşağıdaki kod satırı yeterli olmaktadır.

SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);

Bu kod satırında 16 Mhz MAIN kristalin PLL ile birlikte kullanıldığı, SYSDIV tarafından 5 e bölünerek kullanılacağı belirtilmiştir.

Bu kod satırı ile 16 Mhz kristal PLL ile 400 MHz e çıkartılır, önce diyagramdaki gibi 2 ye sonra da SYSDIV tarafından 5 e bölünür ve 400/5/2= 40 MHz e sistem clock u set edilmiş olur. Şimdi bu sistem clockunun ayarlandığı api fonksiyonunun içerisine hangi değerleri set edebileceğimizi görelim.

 

2013-11-11 18_05_46-4- Tiva C serisi özellikleri Launchpad Özellikleri ve IO uygulamaa - Microsoft W

 

Uygulama uygulama ilerledikçe bu şekilde tüm fonksiyonların açıklamasını yapacağız inşaallah. Bu şekilde örneğin sık kullanılan fonksiyonların çıktısını alıp masanızın bir yerine asabilir ve kod yazarken datasheetlere git gel örnek uygulamara bak gel yapmazsınız. Ezberlenecek şeyler değil zira. Hatta tüm site yazarları olarak ezberlemeye tamamen karşı olduğumuzu da belirtmek isterim.

Osilatör ayarlarımızı yaptıktan sonra kullanacağımız IO portunu aktif ederek kullanacağımız pinleri çıkış olarak ayarlıyoruz.

2013-11-11 18_07_29-

 

2013-11-11 18_08_12-4- Tiva C serisi özellikleri Launchpad Özellikleri ve IO uygulamaa - Microsoft W

GPIO pinlerini set ettikten sonra sıra geldi while döngümüzü yazmaya.  Döngümüz basit olarak led i yak, bekle, ledi söndür, bekle ,ledi yak…. şeklinde olacağı için sadece iki çeşit komut kullanacağız. İlki pinlere yazma komutu. Kullanmakta olduğumuz api de belirtilen kodumuzu inceleyelim.

2013-11-11 18_08_53-4- Tiva C serisi özellikleri Launchpad Özellikleri ve IO uygulamaa - Microsoft W

Porta yazılacak değerin direk olarak maskelenerek porta yazılması güzel bir avantaj sağlamaktadır. Örneğin farklı işlemcilerde çalışırken portun ilk 2 pininde sonraki 3 pininde de mesela spi ile veri gönderdiğinizi düşünelim. Burada ledleri kontrol ederken spi iletişiminde bozulmalara neden olabilirsiniz.

SysCtlDelay(6725000); // satırı ile de yarım saniyeye yakın bir gecikme yapmış oluyoruz.

 

Led yak söndür uygulamamıza ek olarak bir de mevcut kodumuzun üstüne öğrendiklerimize binaen bir kaç satır ekleyip butona bastığımızda ledi yakıp söndürmesini isteyelim.

Launchpad in kullanım klavuzundan soldaki butonun yani SW1 in F4 pinine bağlı olduğunu görebiliriz.
2013-11-11 15_59_00-LP kullanım klavuzu.pdf - Foxit Reader2013-11-11 17_26_13-LP kullanım klavuzu.pdf - Foxit Reader

 

Şematik çizimi incelediğimizde ise butona bastığımız zaman işlemciye 0 bilgisinin gideceğini görüyoruz. O halde kodumuzu düzenlersek;

#include <stdint.h>
 
#include <stdbool.h>
 
#include "inc/hw_memmap.h"
 
#include "inc/hw_types.h"
 
#include "driverlib/sysctl.h"
 
#include "driverlib/gpio.h"
 
int x;
 
int main(void)
 
{
 
SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|
 
SYSCTL_OSC_MAIN);
 
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
 
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);
 
GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_4);
 
while(1)
 
{
 
x=GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_4);
 
if(x!=0)
 
{
 
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, 14);
 
SysCtlDelay(6725000);
 
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, 0x00);
 
SysCtlDelay(6725000);
 
}}}
 
///////////////////////////////////////////////////////////////////////

 

Şeklinde kodumuzu tamamlıyoruz. Yani F4 pininden 0 verisi geldiğinde ledlerimizi yanıp sönecek. Kodumuzu sorunsuz derleyip LP e yüklüyoruz. Kodun çalışması için reset butonuna bastığımızda görüyoruz ki kodumuz hatalı çalışıyor. Sadece bastığımızda yanıp sönmesi gereken led sürekli olarak yanıp sönmeye devam ediyor. Acaba neden??? Sorun nerde?? Kodda hata da yok…

Bir sonraki yazımızda….

(Biz de kendi çapımızda heyecan yapmaya çalışıyoruz napalım 🙂 )

Tiva Not-3: Tiva için PCB Tasarım Notları (Prototip Yazı)

2013-11-07 16_41_15-3-Tiva ile PCB Tasarım Notları - Microsoft Word

Bu yazıyı bir manada PCB tasarım konusunda prototip yazı olarak yayınlamak istiyorum. İnternet ortamında mikroişlemci programlama konusunda çok fazla anlatım varken pcb tasarım konusunda pek fazla kaynak göremezsiniz özellikle de Türkçe hiç yok. En azından ben rastlamadım. Bu yüzden bu yazı dediğim gibi pcb tasarımı konusunda elimde bir örnek olması ve daha sonra konunun üzerine nasıl gitmem gerektiği hakkında bana fikirler vermesi açısından prototip bir yazı olacaktır. Taslaklara atıp sonra yayınlanmayı beklemesini de istemedim.

Öncelikle şunu söylemeliyim ki pcb tasarımı konusunda yazıp yazmama arasında çok kararsız kaldım. Kendim bu konuda baya çalışma yapmış olmama rağmen daha işin çoook başında olduğumu biliyorum. Dikkat edilmesi gereken çok fazla şey olmakla birlikte her bir kural A devresinde X şeklinde B devresinde ise tam tersi olabiliyor. Burda yazdıklarımı birilerinin kendi devresine yanlış şekilde uygulayıp kötü sonuçlar alması malzemelerine ve kendisine zarar vermesi vebaline de girmeyi hiç istemem. O yüzden PCB Tasarımı konusuna ilk olarak Tiva işlemciler ile başladığımız serüvene Tiva için  datasheetlerden uygulama notlarından ve tasarım klavuzlarından derlediğim bilgiler ile başlayabiliriz.

İlerde de toparlayabilirsem eğer EMC (ElektroMagnetik Uyumluluk)konusunda da temel olarak bir kaç şey yazmak istiyorum çünkü bariz olarak yapılan ciddi hatalar var. Bu hataları direk piyasaya sürülen ürünlerde görmek de üzücü.

İlk olarak şunu söylemeliyim ki aşağıda anlatılan tüm bilgiler sadece Texas Instruments firmasının Tiva TM4C123X serisi işlemciler için geçerlidir. Pic, Atmel, diğer ti işlemcileri vb tüm harici işlemcilerde uygulanacak tasarımlar için kullanacağınız ürün için üretici firmanın uygulama notlarını mutlaka inceleyiniz. Belirteceğimiz dikkat edilmesi gereken konular tasarım örnekleri, tasarlamakta olduğunuz devre için en iyi fiyat/performans ve uygulanabilirlik de sunmayabilir. Tasarlamakta olduğunuz sistemi tüm olarak ele almalı, buna sistemin çalışacağı ortam şartlarını da ekleyerek tasarımınızı tüm bu parametreleri göz önünde bulundurarak yapmalısınız. Konu kapsamlı olduğundan üzerine konuşulabilecek şey çok o yüzden yazımıza başlayalım.

Bu tarz ARM çekirdeğe sahip mikroişlemcilerde tasarım konusunda göz önünde bulundurulması gereken en önemli nokta, mikroişlemcinin IO pinlerinin anahtarlama hızı ve çekilen akımlardır. Eğer anahtarlama hızlarımız yüksek değil çektiğimiz akımlar da normal seviyelerde ise standart kuralları uygulayarak bir tasarım yapabilir bazı noktaları göz ardı edebiliriz. Ancak tersi durumlarda önerilen tasarım kurallarına mutlaka uyulmalıdır. Her zaman en iyi tasarım örnekleri içinde en son güncel datasheetleri inceleyiniz.

2013-11-07 16_38_03-3-Tiva ile PCB Tasarım Notları - Microsoft Word

1- Power (Güç Kaynağı-Besleme vb.)

Tiva C serisi mikroişlemciler çalışmak için nominal olarak 3.3 V gerilime ihtiyaç duyarlar. En iyi çalışma performansı en doğru analog dijital çevrimi ölçümü için regüle çıkışımızın en az ripple a sahip olmasına azami şekilde gayret etmeliyiz. Ayrıca mikroişlemci beslememizin elektriksel gürültü kaynağı olabilecek röleler, motor sürücüler ve diğer güç anahtarlamalarının olduğu tüm devrelerden ayrı olması özellikle ADC performansı açısından çok önemlidir. Çoğu zaman ADC kullanımında ölçtüğümüz değerler yaptığımız yazılımsal ve donanımsa filtrelere rağmen sabitlenemiyorsa sorun büyük ihtimal kaynağımızdaki ripplelardan kaynaklanıyordur.

2013-11-07 16_39_08-3-Tiva ile PCB Tasarım Notları - Microsoft Word

İşlemcinin içerisinde bulunan diğer modüller için gerekli enerji standart bir çok işlemcide olduğu gibi  kendi içerisinde bulunan on-chip voltage regulator ile gerekli seviyelere ayarlanır ve power rail ile dağıtımı yapılır. Farklı olarak  yukarıdaki tablodan da görülebilecek olan çekirdeğe giden beslemenin Vdd pininin Vddc olarak dışarıya verilmesidir. Bunun nedeni çekirdeğin ekstra dekuplaj ve filtre kondansatörüne ihtiyaç duymasıdır. Tüm tiva serilerinin sahip olduğu on-chip voltage regülatörünün de aynı şekilde sağlıklı çalışabilmesi için filtre kapasitörlerine ihtiyacı vardır. Bu kapasitörler için üretici tarafından önerilen, toplamda 3.3 uF ile 3.4 uF arasında bir %10 toleranslı seramik chip kapasitör seti kullanılmasıdır.

Dekuplaj Kapasitörleri:

İdeal olarak mikroişlemcinin tüm besleme pinlerine bir adet dekuplaj kapasitörü bağlamak gereklidir. Dekuplaj kapasitörleri genelde 0.01 uF veya 0.1 uF değerinde olurlar ve toplu kapasitör setlerinde mikoişlemciye en yakın kapasitörler olmalıdırlar. Örnek olarak tiva launchpad in besleme şemasına bakılabilir. Vdd ve Vdda dekuplaj kapasite setleri tipik olarak kaynağın ripple seviyesi değerine göre 2 uF ile 22uF arasında olabilir.

Toplu besleme kapasitörleri mikroişlemcinin pinleri GPIO akımına ihtiyaç duyuyorsa özellikle de bir kaç tanesi 4 mA den fazlasına ihtiyaç duyuyor ise büyük öneme sahiptirler.

En iyi performans için bir adet dekuplaj kapasitörü her power ve ground pini arasında mutlaka bulunmalıdır. En azından mikroişlemcinin her iki tarafında da bir dekuplaj kondansatörü mutlaka olmalıdır. Dekuplaj Kapasitörleri 10 V dan 25 V a kadar X5R/X7R  seramik chip tipi kondansatörler olabilir. Z5U dielektrik kapasitörleri önerilmemektedir.

2013-11-07 16_39_15-3-Tiva ile PCB Tasarım Notları - Microsoft Word

Aşağıda PCB çizimlerinde işlemcinin power pinleri ve  dekuplaj kapasitörünün çizim örnekleri gösterilmiştir.

2013-11-07 16_39_21-3-Tiva ile PCB Tasarım Notları - Microsoft Word

Vdd ve Vdda yı ayırma ve GND ler

Vdd ve Vdda bazı uygulamalarda ayrı olarak kullanılabilir ve bu devrenin durumuna göre ADC için daha iyi filtreleme ve performans avantajı sunabilir. Ancak GND ve GNDA aynı GND ye bağlanmalıdır. ADC uygulamalarında be şekilde bir ayrım yapılacaksa eğer kullanılacak işlemcinin güç bağlantı şeması incelenmelidir.

 

Reset

Reset devresi bir adet 1 k direncin 3.3 volta pullup yapılması ve butonun da GND a bağlanması ile oluşturulabilir. Burada dikkat edilmesi gereken şey mutlaka işlemcinin reset pinine en yakın şekilde bir kapasitör bağlanmalıdır. Bu koruma özellikle gürültü oluşturabilecek kullanımlarda önemlidir.

Reset pini yolu 5 cm den kısa olmalıdır ve gürültülü sinyallerden olabildiğince uzakta olmalıdır. Pinlerde meydana gelebilecek sıçramaları önlemek için seri olarak bir 100 ohm direnç endüktans görevi görmesi için eklenebilir.

 

Osilatör Devresi Tasarımı

Tüm tiva serisi işlemcilerde bir saat kaynağı sağlamak için ana osilatör devresi gereklidir. Osilatör devresi bir ana kristal ve iki adet kondansatörden oluşur. Osilatör devresinin öneminden bahsetmeye gerek yoktur diye düşündüm. Zira tek başına bir yazı konusu olabilir.

2013-11-07 16_39_27-3-Tiva ile PCB Tasarım Notları - Microsoft Word

Burada kullanılan kapasitörler için aşağıda yazılan notu bir kaç defa Türkçe olarak anlatmaya çalıştım ama bu şekilde kalması daha iyi olacak gibi. Zaten terimlerin çoğunluğu yine aynı.

2013-11-07 16_43_55-3-Tiva ile PCB Tasarım Notları - Microsoft Word

Kristal Osilatör PCB çizimi:

Kötü bir osilatör devresi çizimi güvenilmez bir osilatör kaynağına neden olur. Aynı zamanda bu devre gürültü kaynağı da olup ışınım yapabilir.

Buradaki anahtar nokta osilatör sinyalinin döngü alanı ile sinyal yollarını minimum uzunlukta tutmaktır.

İdeal yol uzunluğu 6 mm den az olmalıdır. 12 mm den ise asla uzun olmaması gerekir.

Şekilde küçük smd tip kristal ile örnek bir çizim gösterilmiştir.

2013-11-07 16_39_33-3-Tiva ile PCB Tasarım Notları - Microsoft Word

TI ın uygulama notlarında daha fazla öneriler mevcut. Ancak yazının başında da belirttiğim gibi bu pcb tasarımı konusunda bir prototip yazı. Hatalarım olmuş yanlış anlattığım ya da belirtmediğim noktalar olmuş olabilir. İşlemci için temel kurallarda genel olarak yukarıdaki başlıkları içermekte. Devamında USB, ADC, yüksek hızlar içeren tasarımlar , farklı devrelerin bulunduğu tasarımlarda topraklama üzerine gibi çeşitli şekillerde devam etmekte.

PCB konusunda özellikle yazmak bildiklerimi öğrendiklerimi aktarmak istiyorum. Çünkü bu konuda kaynak sıkıntısı çok büyük. Biraz olsun katkımız olursa ne mutlu bize.

Son olarak da kendi pcb tasarımımızı yaptığımızda launchpad üzerinde bulunan Jtag programlayıcı ile kartımızdaki tiva yı programlayıp debug yapabilmek için gerekli bağlantı şemasını ekliyorum.

Bağlantıları şekildeki gibi yaptıktan sonra kendi tiva kartınıza program atabilmek için bir de VDD jumper ını boşa alarak launchpad üzerindeki işlemcinin enerjisini kesmeniz gerek. Gerisi aynı launchpad e program yükler gibi. Farklı bir şey yok. Bir de unutmadan tasarladığınız tüm tiva kartlara mutlaka reset butonu bırakın. Çünkü program yükledikten sonra işlemciye reset atmanız gerekiyor. Güç kaynağını kapatıp açmaktan daha kolay olacaktır özellikle geliştirme aşamasında.

tiva to card

Denemedim tam ama jtag pinlerinin yanındaki pinlerede seri port çıkışlarından kablo çekerseniz sanırım direk bilgisayarla comport üzerinden haberleşebilirsiniz.

 

 

12