Arkadaşlar merhaba,
Sırası ile sorularınıza yanıt vermeye çalışacağım.
İlk olarak işlemci içerisinde 100k PullUp direnci mevcut. Biz bu konuda hiç bir kararsızlık yaşamadık.
Belki kullanıma bağlı hatalar olabilir. Bunlara örnek vermek gerekirse,
GPIO pinini internal pullup aktif etmek için öncelikle Quasi modda set etmek gerek.
Datasheete baktığınızda bu pinin iç direnci oldukça yüksek. Buraya güçlü bir kaynak girecek olursa (Button gibi doğrudan voltajı pine verecek) burada herhangi bir kararsızlık söz konusu değil. Fakat bu pine bir RF modül inputu bağladığınızda RF sinyalin zayıflığından dolayı 100k fazla geleceğinden dolayı Lowa çekememe durumu olabilir. Bunun için pine input olarak vereceğiniz giriş kaynağının güçlü olmaması durumunda external ve 100kdan daha düşük bir direnç önermekteyiz.
Sahada yaşadığımız RF tecrübelerine göre 100k direnç RF uygulamaları için fazla gelmekte.
Eğer input güçlü ve hala kararsız olduğunu düşünüyorsanız bu konuya birlikte detaylı bakabiliriz.
ADC konusu bizim en hassas olduğumuz konulardan birisi.
12 bit çözünürlüklü tüm işlemciler SAR ADC yapısını kullanmakta ki SAR ADC mantığına bakıldığında yaklaşmalı bir değer okumakta (Bu nuvotona özgü değil tüm işlemcilere özgü) Hal böyleyken son iki biti maalesef ki hiç bir işlemci garanti etmemekte. Bu dez avantaj Nuvotondan değil SAR adc yapısından kaynaklanmakta. Diğer bir konu ise ADC frekansı, yukarıda bir arkadaşımızın da belirttiği gibi ADC çalışma frekansı HIRC frekansından farklı. Bu nedenle ADC Clock değerini mutlaka datasheette yazan değere göre set etmek gerek.
Bir diğer konu ise yine ADC nin çalışma mantığından gelmekte. X kanallı bir ADC demek aslında 1 ADC çevreselini Multiplexer kullanarak okumak demek. Yani siz 1-3-5-7 kanalları ADC olarak okumak istediğinizde ADC çevreseli önce 1i, daha sonra 3ü, daha sonra 5i ve son olarak 7ci kanalı okumakta. Bu Multiplexer yapısına daha detaylı baktığımızda bir Sample And Hold kapasitörünün okumayı sağladığını görmekteyiz. Eğer siz okuduğunuz iki kanal arasındaki süreyi, bu Sample And Hold kapasitörünün dolma ve boşalma sürelerine dikkat etmeden okuduğunuzda maalesef ki yanlış değerler almanız gayet doğal.
Burada Nuvoton'un yeni jenerasyon işlemcilerinde bu problemin önüne geçmek için ExtendedSampleRate diye bir fonksiyonu bulunmakta.
Bu fonksiyon sayesinde bir ADC kanalı okunup diğerine geçmeden önce işlemcinin beklemesi gereken süreyi ayarlayabiliyorsunuz. Bu da size Sample And Hold kapasitörünün doğru bir şekilde dolma ve boşalmasına olanak tanımakta.
Özetle önce ADC Clock tam olarak datasheet değerine göre seçilmeli, daha sonra eğer 1den fazla kanal okunacaksa ExtendeSampleRate kullanılmalı ve son iki bitin SAR ADC mantığından dolayı oynayabileceğini kabul ettiğimizde çok doğru sonuçlar görmek mümkündür.
Yine soruları olanlar
iekmekci@ozdisan.com adresinden bana doğrudan ulaşabilir.