Aşağıda anlatılan kurulumlar, Linux tabanlı işletim sistemleri için geçerlidir. Ancak Windows üzerinde de aynı uygulamaları çalıştırabilir ve analizörü kullanabilirsiniz.
Dijital elektronik sinyallerinin, dijital protokollerin (SPI, I2C, Serial vb.) iletişimini görüntülemek, ölçmek, analiz etmek için mantık analizörü olarak adlandırılan donanımlar kullanılır. Aynı anda birden fazla kanaldan sinyal yakalayabildikleri için, çoklu bağlantı kullanan protokoller bu donanımla eşzamanlı bir şekilde ölçülebilir. Farklı sinyaller arasındaki zamanlama ilişkileri incelenebilir, bunlar kayıt altına alınarak üzerinde inceleme yapılabilir. Hata ayıklamada kullanılabileceği gibi, tersine mühendislik işlemlerinde de sıkça kullanılır.
Örneğin aşağıda, gerçek zaman saati entegresi olan DS1307 dökümanında yer alan, entegrenin mikrodenetleyici ile arasında gerçekleşmesi gereken I2C protokol iletişimi teorik olarak gösterilmiş.
Aşağıda ise aynı entegrenin bir mikrodenetleyici ile iletişim halindeyken, mantık analizörü ile yakalanmış sinyallerini görebilirsiniz.
Kendi ekran ve arayüzüne sahip mantık analizör cihazları olduğu gibi, yakaladığı sinyalleri bilgisayara aktaran ve yazılım yardımıyla bu sinyalleri işleyen kartlar da bulunmaktadır. İşte Arduino ile oluşturacağımız mantık analizörü de, yakaladığı sinyalleri bilgisayara aktararak işleyen analizör kartları şeklinde çalışır. Küçük bir araştırma ile satın alabileceğiniz uygun fiyatlı bir çok mantık analizör kartı bulabilirsiniz. Bazı markaların klon ürünlerini de uygun fiyata bulmak mümkün. Ancak daha basit bir cihaz işinizi görecekse, Arduino geliştirme kartınızı da basit bir mantık analizörü olarak kullanabilirsiniz.
Arduino ile yapılan mantık analizörünün özellikleri, kart üzerinde bulunan mikrodenetleyiciye göre değişiklik gösteriyor.
-
ATmega168 ve ATmega328 mikrodenetleyicisine sahip (Arduino Uno, Nano, Mini) kartlar 6 kanalı destekliyor (Arduino Uno için pin 8 - 13) ve 4 MHz.'e kadar örnekleme hızına ulaşılabiliyor. ATmega168 entegreler 532k örnekleme kaydı yapabilirken, ATmega328 ise 1024k boyutuna kadar çıkabiliyor.
-
ATmega1280 ve ATmega2560 mikrodenetleyicisine sahip Arduino Mega kartı ise 8 kanallı bir mantık analizörüne dönüştürebiliyorsunuz (pin 22 - 29). Yine 4 MHz.'e kadar örnekleme hızına ulaşılabiliyor. Bu denetleyiciler ile 7168k örnekleme kaydı yapılabiliyor.
Donanım tarafında yapılması gereken sadece Arduino'yu bilgisayara bağlamaktan ibaret (farklı voltaj seviyelerinde seviye dönüştürücü kullanmak gerekebilir). Geriye kalan işlemler kütüphane ve yazılımların kurulumlarıyla hallediliyor. Bilgisayara bir analizör istemci uygulaması kuruluyor. Bu uygulama Arduino ile SUMP protokolü üzerinden haberleşiyor. Bu protokolün Arduino tarafındaki desteği ise logic_analyzer yazılımı ile sağlanıyor.
Bilgisayarınızda analizör istemcisi olarak Arduino ile kullanabileceğiniz iki yazılım var. Bunlardan biri PulseView yazılımı. PulseView, mantık analizörleri için geliştirilen Sigrok projesinin bir parçası. Birçok kartı destekliyor ve daha canlı bir proje. SPI, I2C gibi birçok protokolü analiz edebiliyor ve bazı entegrelerin bu protokollerdeki iletişim şablonlarını içinde barındırıyor. Bu sayede aktarılan veriyi doğrudan görebiliyorsunuz.
Diğer bir analizör istemcisi olan OLS LogicSniffer ise, SUMP protokolü üzerinden iletişim kuran mantık analizörleri için tasarlanmış. Açık kaynaklı mantık analizörü projesi olan OLS (Openbench Logic Sniffer) ve SUMP Logic Analyzer projelerini destekliyor. Aynı zamanda Arduino desteği de dahil edilmiş. Aynı PulseView gibi protokol desteği de var. Ancak uygulamanın kullanımı sırasında bazı sorunlar yaşadım. Geliştiricisi Java 9 desteği olduğunu söylemiş. Ancak Java 8 ve 9 üzerinde uygulamayı çalıştırabildiğim halde Arduino bağlantısını kuramadım. Sadece Java 7 üzerinde hiç bir sorun çıkmadan bağlantı kurabildim. Java 7 kurulumunu ise bir çok güncel Linux sisteminde yapmak epey zor oldu. Araştırmalarım sonucunda bunun basit bir yolunu buldum ve aşağıda anlattım, oradan takip edebilirsiniz. OLS LogicSniffer yerine PulseView uygulaması kullanacaksanız, Java kurulumuna ihtiyacınız olmayacak.
Gereklilikler
Kullanmak istediğiniz uygulamaya göre gereklilikler değişiklik gösteriyor.
- Desteklenen bir Arduino geliştirme kartı (ATmega168, ATmega328P, ATmega1280, ATmega2560 veya ATmega32U4 mikrodenetleyici bulunanlar).
- Java JRE (PulseView için gerekli değil fakat OLS LogicSniffer yazılımını kullanacaksanız Java 7 JRE sürümü gerekli, Arduino IDE ise Java 6 ve üzerinde çalışabiliyor).
-
Arduino IDE (analizör kullanımı sırasında gerekli değil, sadece Arduino'ya logic_analyzer kodunu yüklemek için gerekli).
-
logic_analyzer (Arduino için SUMP protokolü yazılımı).
-
PulseView veya OLS LogicSniffer yazılımlarından biri (sinyalleri gözlemleyeceğimiz istemci yazılımları).
Java 7 Kurulumu
Hatırlatma: Java kurulumu sadece Arduino IDE ve OLS LogicSniffer yazılımları için gerekli. PulseView için gerekli değil. Eğer sisteminizde zaten Arduino IDE kurulu ise ve istemci olarak PulseView kullanacaksanız, bu ve sonraki bölümü atlayarak doğrudan logic_analyzer kurulumuna geçebilirsiniz.
Arduino IDE için Java 6 veya üzeri kurulum işinizi görüyor. Ancak OLS LogicSniffer yazılımı için Java 7 gerekiyor (diğer Java sürümlerinde bağlantı sorunları yaşadım, sizde de aynı sorunlar yaşanırsa Java 7 kurun). Yani Java 7 JRE sürümünü kurduğunuzda, Arduino IDE ve OLS LogicSniffer'ı çalıştırabilirsiniz.
SDKMAN!
Java 7 kurulumu Linux üzerinde biraz uğraştırıcı. Bazı lisans ve destek sorunlarından ötürü kurulum paketleri bulunmuyor. Güncel Linux sürümlerinde Java 7 JRE kurmanın en pratik yolunun, sdk yönetim aracı SDKMAN! kurmak olduğunu gördüm. Bu araç sayesinde fazla zahmete girmeden, bilgisayarınıza Java 7 desteği kazandırabiliyorsunuz. Bu araç aslında bir sdk ve JDK yöneticisi. Yani aslında Java 7 JRE değil, JDK yüklemiş oluyoruz. JRE de zaten JDK ile beraber geldiğinden yüklenmiş oluyor.
SDKMAN! aracının kurulumu, bir kabuk betiği çalıştırılarak yapılabiliyor. Bu kabuk betiğini bilgisayarınıza dosya olarak indirmeden, doğrudan kabuk üzerinde çalıştırabilirsiniz. Bu işlem için Curl aracını kullanalım. Sisteminizde kurulu değilse önce Curl aracını kurun.
$ sudo apt install curl
Şimdi aşağıdaki komutu girin ve SDKMAN! aracının kurulmasını bekleyin.
$ curl -s "https://get.sdkman.io" | bash
Herhangi bir problem oluştuğunda, ekranda çözüm öneren talimatlar belirecektir. Sorunsuz bir kurulumun sonunda terminalde aşağıdaki çıktıyı alırsınız.
$ curl -s "https://get.sdkman.io" | bash
All done!
Please open a new terminal, or run the following in the existing one:
source "/home/firat/.sdkman/bin/sdkman-init.sh"
Then issue the following command:
sdk help
Enjoy!!!
Talimatta da gösterildiği gibi, aşağıdaki komutu girelim ve SDKMAN!'in kullanıcı dizinimizde oluşturduğu kabuk betiği dosyasını yorumlayalım (Ya da bu komut yerine terminal penceresini kapatın ve yeni bir terminal penceresi açın, terminal açılırken alttaki kabuk betiği dosyası otomatik yorumlanacaktır).
$ source "/home/$USER/.sdkman/bin/sdkman-init.sh"
Kurulumun tamamlandığını onaylamak için, SDKMAN! versiyon bilgisini isteyelim. Eğer versiyon bilgisi dönerse işlem başarılı olmuş demektir.
$ sdk version
$ sdk version
SDKMAN 5.7.4+362
Artık Java'nın belirli bir sürümünü, tanıtıcı ismini girerek yükleyebiliriz. SDKMAN! kapsamında yükleyebileceğiniz Java sürümlerini görebilmek için alttaki komutu çalıştırabilirsiniz.
$ sdk list java
$ sdk list java
================================================================================
Available Java Versions
================================================================================
Vendor | Use | Version | Dist | Status | Identifier
--------------------------------------------------------------------------------
AdoptOpenJDK | | 13.0.2.j9 | adpt | | 13.0.2.j9-adpt
| | 13.0.2.hs | adpt | | 13.0.2.hs-adpt
| | 12.0.2.j9 | adpt | | 12.0.2.j9-adpt
| | 12.0.2.hs | adpt | | 12.0.2.hs-adpt
| | 11.0.6.j9 | adpt | | 11.0.6.j9-adpt
| | 11.0.6.hs | adpt | | 11.0.6.hs-adpt
| | 8.0.242.j9 | adpt | | 8.0.242.j9-adpt
| | 8.0.242.hs | adpt | | 8.0.242.hs-adpt
Amazon | | 11.0.6 | amzn | | 11.0.6-amzn
| | 8.0.242 | amzn | | 8.0.242-amzn
Azul Zulu | | 13.0.2 | zulu | | 13.0.2-zulu
| | 12.0.2 | zulu | | 12.0.2-zulu
| | 11.0.6 | zulu | | 11.0.6-zulu
| | 11.0.5.fx | zulu | | 11.0.5.fx-zulu
| | 10.0.2 | zulu | | 10.0.2-zulu
| | 9.0.7 | zulu | | 9.0.7-zulu
| | 8.0.242 | zulu | | 8.0.242-zulu
| | 8.0.232.fx | zulu | | 8.0.232.fx-zulu
| | 7.0.242 | zulu | | 7.0.242-zulu
| | 6.0.119 | zulu | | 6.0.119-zulu
...
SAP | | 13.0.2 | sapmchn | | 13.0.2-sapmchn
| | 12.0.2 | sapmchn | | 12.0.2-sapmchn
| | 11.0.6 | sapmchn | | 11.0.6-sapmchn
================================================================================
Use the Identifier for installation:
$ sdk install java 11.0.3.hs-adpt
================================================================================
Listelenen Java 7 sürümünün, Identifier sütunu altında yazılı adını kullanarak
kuralım.
$ sdk install java 7.0.242-zulu
$ sdk install java 7.0.242-zulu
Installing: java 7.0.242-zulu
Done installing!
Setting java 7.0.242-zulu as default.
Böylece Java 7 sistemimize kuruldu ve sistemin varsayılan Java sürümü haline
getirildi.
Not: Eğer yerel sisteminizde zaten kurulu farklı JDK sürümleri varsa veupdate-alternatives
komutu ile sürümler arasında geçiş yapıyorsanız, SDKMAN! ile kurulum yaptığınızda bu komut işlevsiz kalacaktır. Bu durumu aşmak için yereldeki JDK sürümlerini de SDKMAN!'e tanıtabilirsiniz. Bunun için ilk olarak yereldeki JDK dosyalarının bulunduğu dizini bilmelisiniz. Normal şartlarda/usr/lib/jvm/
dizini altında her sürüm kendi dizin yapısında tutulur.whereis java
komutunu kullanarak kurulu Java kütüphane dosyalarının dizinini öğrenebilirsiniz. Örnek olarak yerelde JDK 8 kurulu olduğunu düşünelim. Kütüphane dosyaları da/usr/lib/jvm/java-8-oracle/
dizini altında. Şimdi alttaki komut ile yerel Java'yı tanıtalım.
$ sdk install java 8-oracle-local /usr/lib/jvm/java-8-oracle/
Yerelde kurulu JDK 8'i,
$ sdk install java 8-oracle-local /usr/lib/jvm/java-8-oracle/ Linking java 8-oracle-local to /usr/lib/jvm/java-8-oracle/ Done installing!
8-oracle-local
ismini vererek tanıtmış oldum. Artık istediğim zaman Java 7'den yereldeki Java 8' e şu komutla geçiş yapabilirim.
$ sdk default java 8-oracle-local
Aynı komutu sürüm adı belirterek tekrar eski sürüme geçmek için de kullanabilirsiniz. Kurulu Java sürümlerini görmek için alttaki komutu kullanın.
$ sdk default java 8-oracle-local Default java version set to 8-oracle-local
Status sütunu altında, SDKMAN! ile kurduğunuz JDK sürümleri
$ sdk list java
installed
olarak görünür. Yerelde bulunan tanıtılmış sürümler iselocal only
olarak gösterilir.
Arduino IDE Kurulumu
Hatırlatma: Arduino IDE kurulumu yalnızca SUMP protokolü desteği için logic_analyzer kodunu bir seferlik Arduino'ya kurmak için gerekli. Bu kod bloğunu başka yöntemlerle de Arduino'ya yükleyebiliyorsanız IDE kurulumunu yapmanıza gerek yok.Bu işlemin zaten yeterince ayrıntılı dökümanları internette bulunuyor. O yüzden bir kaç tane yazıya bağlantı vererek bir sonraki adıma atlıyorum.
Arduino'ya logic_analyzer Kodunu Yükleme
- Arduino için hazırlanan taslak kodlarını GitHub sayfasından indirin.
-
İndirilen
.zip
dosyasınından çıkarttığınız, içinde 3.ino
dosyası bulunanlogic_analyzer-master
klasörünün adını,logic_analyzer
olarak değiştirin ve Arduino IDE yazılımının ana klasöründe bulunanexamples
klasörüne taşıyın. - Arduino IDE yazılımını açın ve menüden, Dosya > Örnekler > logic_analyzer seçin.
-
Üç
.ino
dosyası 3 farklı sekme ile Arduino IDE üzerinde açılmış olmalıdır. Kontrol Et butonu ile dosyaları denetleyin, herhangi bir sorun çıkmazsa Yükle butonu ile Arduino'ya yükleyin.
Yükleme işlemi hatasız bir şekilde gerçekleştiyse, Arduino IDE yazılımını kapatabilirsiniz. Sonraki adımlarda ihtiyacınız olmayacak (Arduino Mega'da derleme işlemi biraz uzun sürüyor).
Uyarı: Usb üzerinden bağlı Arduino'da pek sorun olmamasına rağmen, seri arayüzlerden yapılan bağlantılarda istemci yazılımları veya Arduino IDE yazılımının Arduino ile iletişim kurabilmesi için, bağlantı noktasına okuma ve yazma izni vermelisiniz. Bunun için menüden Dosya > Araçlar > Port seçeneğinden Arduino'nun bağlı olduğu girişi öğrenin ve alttaki komuta girerek uygulayın.
Yukarıdaki örnekte,
$ sudo chmod a+rw /dev/ttyS0
/dev/ttyS0
girişine okuma ve yazma izni vermiş olduk.
OLS LogicSniffer İstemci Uygulamasını Yükleme
- OLS LogicSniffer yazılımının son sürümünü bu bağlantıdan bilgisayarınıza indirin.
-
İndirilen sıkıştırılmış dosyayı diskinize çıkarttıktan sonra
ols-0.9.7.2
klasörü içindekirun.sh
dosyasını yürütülebilir yapmalısınız. Bunu, dosyaya sağ tıklayarak Özellikler > İzinler Sekmesi altındaki Program seçeneğini işaretleyerek yapabilirsiniz. Veya komut satırındanols-0.9.7.2
klasörüne girin ve aşağıdaki komutu kullanın.$ chmod +x run.sh
-
Uygulamayı çalıştırmak için, aynı klasör içindeyken alttaki komutu girin.
$ sudo ./run.sh
- Uygulama açıldığında ana menüden, Capture > Device > OpenBench LogicSniffer seçili olduğundan emin olun.
-
Start Capture butonuna tıklayın ve açılan
OLS Capture settings penceresinde Connection sekmesi
altındaki değerleri aşağıdaki gibi düzenleyin.
Connection type: Serial port,
Analyzer port: Arduino'nun bağlı olduğu port,
Port Speed: 115200bps,
Device type: Arduino Generic Logic Analyzer.
- Yukarıdaki değerleri girdikten sonra Show device metadata butonuna tıkladığınızda, uygulama Arduino ile kısa bir bağlantı kuruyor. Eğer herhangi bir sorun yoksa butonun hemen altında yüklü firmware ve protokol ile ilgili bazı bilgiler görünmeli.
- Arduino'nuzun pinlerine gerekli girişleri yaptıysanız, Capture butonuna tıkladığınızda, uygulama kısa bir beklemeden sonra ana ekrana dönerek yakalanan sinyali göstermeli. Bu esnada veri aktarımı yoksa, düz çizgiler görürsünüz. Veriyi yakalayana kadar Repeat Capture butonuna tıklayın. Aşağıda, Arduino Mega'nın 22 - 25 pinlerine bağlı bir lcd ekranın seri iletişimini görebilirsiniz.
Uzun süre denemenize rağmen sonuç alamazsanız, örnekleme oranını düşürmeyi deneyebilirsiniz. Böylece bir seferde daha fazla veri yakalayabilirsiniz. Bunun için Start Capturing butonuna tıklayın, açılan pencereden Acquisition sekmesine geçin. Sample rate alanındaki değeri düşürün. Örneğin yukarıdaki lcd seri iletişimini, 200 kHz oranla elde ettim. Ancak örnekleme hızının seçimiyle ilgili bilmeniz gereken bir kural var, bundan öneriler kısmında bahsettim.
PulseView Uygulamasını Yükleme
Bu yazılımı, kullandığınız dağıtımın paket yöneticisi ile kurabilirsiniz. Ancak paket depolarında en güncel sürüm olmayabiliyor. Uygulamanın hem en güncel halini barındıran hem de kurulum ve ek bağımlılıklarla uğraştırmayan AppImage yapısını çalıştırmanızı tavsiye ederim.Uyarı: AppImage dosyalarını kök olarak çalıştırmadığınız sürece uygulama seri bağlantı noktalarına erişemiyor. Linux'ta uygulamalar mümkün olduğunca kök olarak çalıştırılmaması gerektiği için, bunun yerine Arduino'nun bağlı olduğu seri bağlantı noktasına yazma okuma izni verebilirsiniz. Seri bağlantı noktasının/dev/ttyS0
olduğunu düşünelim.
Komutun sonundaki bağlantı noktasını kendi bağlantı noktanızla değiştirerek uygulayabilirsiniz. Farklı yöntemlerle bu durumu aşmak isterseniz, uygulamanın kurulum dökümanlarında Linux başlığı altını okuyun.
$ sudo chmod a+rw /dev/ttyS0
- PulseView indirme sayfasından, sisteminize uygun AppImage dosyasını indirin.
-
İndirdiğiniz
PulseView-0.4.1-x86_64.AppImage
dosyasını çalıştırılabilir yapmalısınız. Bunu dosyaya sağ tıklayarak Seçenekler > İzinler Sekmesi > Bu dosyanın bir program olarak çalışmasına izin ver seçeneğini işaretleyerek yapabilirsiniz. Veya komut satırından dosyanın bulunduğu dizine girin ve alttaki komutu yürütün.$ chmod u+x PulseView-0.4.1-x86_64.AppImage
-
AppImage dosyasını, doğrudan çift tıklama ile veya komut satırından
çalıştırabilirsiniz.
$ ./PulseView-0.4.1-x86_64.AppImage
-
Uygulama açıldığında ana ekranda <No Device> alanından,
Connect to Device seçin. Açılan penceredeki alanlara aşağıdaki
adımları uygulayın.
Step 1 Chose the driver: Openbench Logic Sniffer (ols) seçin.
Step 2 Choose the interface: Serial Port'u işaretleyin ve Arduino'nun bağlı olduğu portu seçin.
Not: Eğer PulseView'in gecelik (nightly) sürümünü indirdiyseniz, Step 2 altında port hızını da girmenizi isteyecektir. Bu durumda baud alanına 115200 değerini girin.
Step 3 Scan for devices: Scan butonuna tıklayın. Bir iki saniye içinde alt kutuda, bağlı donanımın ismi görünmelidir. Donanım görünmezse tekrar tıklayın.
Step 4 Select the device: AGLAMv0 with 8 channels seçin ve OK butonu ile kaydedin.
- Arduino'nuzun pinlerine gerekli girişi yaptıysanız, ana ekranda Run butonuna tıkladığınızda, uygulama kısa bir beklemeden sonra yakalanan sinyali göstermeli. Bu esnada veri aktarımı yoksa, düz çizgiler görürsünüz. Veriyi yakalayana kadar tekrar Run butonuna tıklayın. Aşağıda Arduino Mega'nın 22 - 24 pinlerine bağlı bir lcd ekranın, seri iletişimini görebilirsiniz.
Uyarı: PulseView'da yakalanan sinyal ekrana ters olarak yansıtılıyor. Yani zaman skalası soldan sağa gösteriliyor ancak sinyal ekrana yerleştirilirken sağdan sola doğru yerleştiriliyor. Bu problemin PulseView tarafında bir çözümünü bulamadım. Ancak Arduino logic_analyzer kodunun GitHub sorunlar kısmında bunun hakkında konuşulmuş ve geçici bir de çözüm sunulmuş. Bu çözüme göre logic_analyzer kodunun değiştirilmiş bir sürümünü Arduino'ya yüklemeniz durumunda, Arduino'dan istemciye gönderilen sinyaller Arduino tarafında ters çevriliyor. Ancak bu kodu yüklediğinizde de, bu defa yukarıda kurulumunu anlattığım OLS LogicSniffer uygulamasının sinyalleri ters göstereceğini unutmayın.
Öneriler
Mantık analizör kartlarının girişlerinde kendi koruma devreleri bulunur. Ancak Arduino kartlarında böyle bir devre olmadığı için, biz bu durumda ATmega mikrodenetleyicilerinin dahili korumalarını kullanmış oluyoruz. Bu nedenle bilmemiz gereken bazı voltaj değerleri var. Arduino kartlarıyla yapılan mantık analizörlerinin voltaj eşik değerleri aşağıdaki gibidir.- 5v. Arduino'lar için düşük aralık 0v. ~ 1.5v., yüksek aralık 3.0v. ~ 5v.
- 3.3v. Arduino'lar için düşük aralık 0v. ~ 1.0v., yüksek aralık 2.0v. ~ 3.3v.
Dikkat! Kullandığınız Arduino kartının yüksek voltaj aralığını aşmayın, kartınıza zarar verirsiniz.
Düşük voltaj aralığı içinde kalan voltajlarda çıktı düşük seviyede görünecektir.
Yani 0v. ~ 1.5v. arasında değişim gösteren sinyalleri, seviye dönüştürücü
olmadan Arduino ile sadece düşük seviye olarak yakalayabilirsiniz, aradaki
değişimleri gözlemleyemezsiniz. Düşük ve yüksek voltaj aralıklarının ortasında
kalan bölgedeki (örn. 5v. Arduino'lar için 1.5v. ~ 3v. arası) okumalar da
gecikmeli ve kararsız olacaktır. Dolayısıyla 5v. Arduino için 0V. ~ 2.3v.
arasında değişim gösteren bir sinyali de seviye dönüştürücü ile okumak gerekir.
Uygulama esnasında sürekli düşükte görünen sinyal, bu durumun bir sonucu
olabilir.
Arduino hafızasını daha verimli kullanarak, tek seferde daha fazla veri
yakalamak isterseniz, örnekleme hızını düşürmeyi deneyebilirsiniz. Böylece bir
seferde hafızaya daha fazla zaman aralığını sığdırmış olursunuz. Ancak örnekleme
hızı ile ilgili bilinmesi gereken bazı noktalar var. Nyquist–Shannon
örnekleme teoremine göre, dijital bir sinyali yeniden oluşturabilmek için bu sinyalin
frekansının iki katından fazlasını örneklemeniz gerekir. En ideal yöntem ise
dijital sinyali 4 kat daha hızlı örneklemektir. Örnek olarak 1 MHz hızında bir
sinyal okumayı planlıyorsanız, örnekleme hızının 4 MHz olması daha iyi
sonucu verecektir.
Mantık analizörlerinde, sinyal alındığı anda yakalama işleminin otomatik
başlamasını sağlamak için tetikleyici (trigger) özelliği kullanılır. Bu sayede, yüksek seviye bir sinyal alınana kadar
geçen süredeki düşük seviye sinyaller, hafızada yer kaplamamış olur. Arduino'ya
yüklediğimiz logic_analyzer kodunun dökümanlarında, 1 MHz örnekleme hızının
altında tetikleyicinin kararlı çalıştığı belirtilmiş. Tetikleyici kullanımıyla,
küçük örnekleme hafızalarına sahip Arduino gibi analizörlerde, sinyali tam
olarak yakalamak çok daha kolaylaşıyor.
0 yorum:
Yorum Gönder