Soru:
8 bitlik bir MCU'nun yeterli olup olmadığı veya 16 bitlik bir MCU'nun gerekli olup olmadığı nasıl anlaşılır?
quantum231
2015-04-20 04:46:14 UTC
view on stackexchange narkive permalink

16 bit mikro denetleyiciler, 8 bit olanlardan daha güçlüdür ve 32 bit olanlar tamamen farklı bir düzeydedir. Bununla birlikte, bir uygulama için hangi çevre birimlerine ihtiyacımız olduğuna karar verebilir ve en ucuz (ve kullanımı kolay, yani alet zinciri) alternatifi bulmaya çalışırken, bir uygulama için 8 bitlik bir mikro denetleyicinin kullanılması gerekip gerekmediğini nasıl anlarsınız? veya 16 bit bir mi yoksa 32 bit bir mi?

Aralarındaki farkları anladığım için soruyu farklı bir şekilde soracağım.

Diyelim ki bir uygulamam var Bitmap görüntüsünü göstermek için kullanılan bir LCD ekrana, 16 tuş takımına, zil, sıcaklık ve nem sensörüne ve bir fare girişine sahip olacağım. Üst düzey bir 8 bit mikro denetleyici, tüm bunları gerçek zamanlı olarak kolayca yapabilir. Şimdi renkli bir LCD ekrana geçersem, renkli ekranı yeterince hızlı güncelleyebilen ve daha fazla belleğe sahip 32 bitlik bir mikro denetleyiciye ihtiyacım olabilir. Ancak, projede denedikten sonra üst düzey 8 bitlik mikrodenetleyicimin zayıf olduğunu ancak öğrenebilirim.

O halde, proje üzerinde çalışmaya başlamadan önce, hangi büyüklükte olduğunu nasıl bileceğiz? ve proje için ne kadar güçlü mikro denetleyiciye ihtiyaç var?

Gerçekten de zaten yaptığınız gibi bir tahminde bulunmalısınız.Gerçek zamanlı / hızlı görevler genellikle bir MCU'ya ihtiyaç duyar, görüntü işleme / gelişmiş giriş / çıkış (çok gerçek zamanlı olmayan) bir ARM ile daha iyi çalışır. Temel olarak, Arduino'nun Raspberry Pi'ye karşı hangi projelere sahip olduğuna bakabilirsiniz. Oldukça şaşırtıcı şeyler yapabilen 32-bit MCU'lar bile var.Projeniz için neyin önemli olduğunu kontrol edin, makul bir şey alın, gerekirse ölçeği her zaman küçültebilirsiniz.
Yedi yanıtlar:
Nick Alexeev
2015-04-20 11:06:11 UTC
view on stackexchange narkive permalink

Genellikle, mikro denetleyici hakkındaki karar aşağıdakiler arasında bir dengedir:

  1. Özel özellikler (örneğin düşük güç tüketimi)
  2. Geliştirme süresi.
  3. Üretimdeki malların maliyeti.

Kısa geliştirme süresinin, malların maliyetinden daha fazla önceliği varsa, o zaman daha güçlü denetleyicilere gidin. Maliyet optimizasyonunu daha sonra ayrı bir aşama olarak yapabilirsiniz. Erken kostoptimizasyon [sic] çoğu zaman projeleri bozar.

Zaten maliyet optimizasyonu aşamasındaysanız, işe yarayan bir üründen başlarsınız. Optimize edilmemiş ilk sürüm, optimize edilmiş sürüm için bir prototip görevi görür. Erken sürüm gereksinimleri ortadan kaldırıyor.

İlgili: MCU platformu nasıl seçilir?

** Tasarla-uygula-gözden geçir ** zincirinin (veya isterseniz döngü) ne kadar evrensel olduğuna kimse inanmaz.
MarkU
2015-04-20 07:15:56 UTC
view on stackexchange narkive permalink

Proje üzerinde çalışmaya başlamadan önce, proje için ne büyüklükte ve ne kadar güçlü mikrodenetleyiciye ihtiyaç duyulduğunu nasıl bileceğiz?

Bilemezsiniz. Ve bu büyük bir problem. Çok küçük bir mikro denetleyici seçerseniz, kaynaklarınız tükenebilir (bellek / iğneler / kayıtlar / diğer özellikler) ve bu kaynakların çok geç olana kadar doğru bir şekilde tahmin edilmesi zor olabilir. Ancak çok büyük bir mikro denetleyici seçerseniz, kullanmadığınız kaynaklar için ödeme yaparsınız ve bu da sistem maliyetini artırır.

Bazen çeşitli kaynakların ne kadarının sizin uygulamanın ihtiyacı olacaktır ... örneğin FFT hesaplamaları yapıyorsanız, numunelerin ihtiyaç duyacağı bellek miktarını tam olarak hesaplayabilirsiniz. Ancak, yazılana kadar yazılımın ne kadar nesne kodu alanı gerektireceğini güvenilir bir şekilde belirlemek daha zordur.

Kod belleğinin tükenmesine karşı iyi bir önlem, birkaç farklı fiyat / performans noktasında ölçeklenebilir . Bu, ARM , Microchip PIC , Atmel AVR ve diğer ölçeklenebilir mikroların büyük bir satış noktasıdır. Yazılımınızı geliştirirken, daha büyük bir geliştirme sisteminden daha küçük bir hedef sisteme geçerek nihai son ürün maliyetini düşürebilirsiniz.

Ölçeklenebilir, söz konusu ailedeki tüm mikro denetleyicilerin (çoğunlukla) aynı komut seti ve (çoğunlukla) aynı yazmaçlar. Yani biri için yazılan yazılım aynı ailede başka biri üzerinde çalışacaktır. (Mikroçip PIC kodu bir ARM üzerinde çalışmaz, ancak PIC14'ü öğrenirseniz, PIC12'ye veya PIC16'ya geçmek kolaydır.)

Yalnızca tek seferlik bir prototip oluşturuyorsanız Tam bir üretim ürün grubu yerine en iyi seçeneğiniz, ihtiyacınız olduğunu düşündüğünüzden biraz daha büyük ancak büyümek için yer olan bir geliştirme sistemine bağlı kalmaktır.

tcrosley
2015-04-20 07:22:46 UTC
view on stackexchange narkive permalink

Büyük faktör, en sık kullandığınız değişkenlerin boyutudur. Çoğunlukla 8 bit değişkenler kullanıyorsanız ve yalnızca 8 bit bağlantı noktalarına erişmeniz gerekiyorsa, muhtemelen 8 bitlik bir MCU ile idare edebilirsiniz.

Bununla birlikte, çok sayıda 16 bitiniz varsa bit değişkenleri ve hatta sadece birkaç 32 bit uzunluğunda olsa bile, 16 bitlik (hatta 32 bitlik) bir MCU'ya bakmanız gerekecek çünkü 8 bitlik bir MCU ile 16 bit değişkenlere erişmek çok uzun sürer

Herhangi bir kayan nokta değişkeni kullanacaksanız, kesinlikle bir 16 bit veya 32 bit MCU öneririm.

Elinizde olmasa bile Kullanmanız gereken kodun çoğunu yazmak için zamanınız varsa, bunların bir kısmını önceden yazmanızı ve kullanıyor olabileceğiniz mikro denetleyiciler için derlemenizi öneririm. Çoğu mikrodenetleyici üreticisinin, belki de çıktı dosyasının boyutuyla veya optimizasyon miktarını sınırlandırarak, derleyicilerinin ücretsiz sürümleri vardır.

Jeanne Pindar
2015-04-20 06:56:23 UTC
view on stackexchange narkive permalink

İdeal olarak, yeni bir pano tasarlamadan önce, bir geliştirme panosu (veya ticari olarak satılan herhangi bir pano) veya önceki projelerinizden birinden kalan bir pano kullanarak bir kavram kanıtı projesi yaparsınız.

sweber
2015-04-20 13:03:10 UTC
view on stackexchange narkive permalink

Genellikle, 32 bit MPU'lar genellikle daha yüksek frekans nedeniyle daha hızlıdır, ancak aynı zamanda yetenekleri veya yapabildikleri bazı 'hileler' nedeniyle.

@tcrosley'nin söylediği gibi, 32 bitlik bir MCU iki Bir seferde 32bit tamsayılar, 8 bitlik bir MCU ise bu bayt bayt'a ihtiyaç duyacaktır. Kayan nokta sayıları en az 16 bit gerektirir ve matematiği daha karmaşıktır, bu da 8bit MCU için çok fazla çalışma anlamına gelir. 32 bitlik bir MCU, matematik işlemlerini donanımda yapabilir, yani bir seferde bir kez daha. Püf noktalarından biri, aynı anda 8 bit değişkenlere dört ekleme yapmak olabilir. Kayda dört adet 8 bit değer yükleyin ve her birine 8 bitlik değerler ekleyin.

Ancak hepsi bu kadar değil.
Ayrıca donanım çevresine de dikkatlice bakın, ki bu daha fazlası değildir 32bit MCU'larda güçlü!
Bir deneyim:

Üniversitemde, çeşitli voltaj aralıklarını gerçekleştirmek için bir opamp olan PIC18F2550'den (8bit, 10bit ADC, USB) oluşan bir osiloskop yaptık ve bazı & dirençleri kapaklar. Bu, örnekleme oranına sahip okullar için çok basit, çok ucuz osiloskop anlamına geliyordu ... Sanırım yaklaşık 50khz idi. Transfer, yüksek uyumluluk için CDC aracılığıyla yapıldı.

Mikroçip, PIC32 MCU'larını ortaya çıkardığında umut verici görünüyordu. Fiyat neredeyse aynıydı, 12 yerine 120M Talimat / s, tam hız yerine yüksek hızlı USB. Son nokta ilginçti, çünkü verim PIC18'in sınırlayıcı faktörü idi ve mikroçipler kıyaslamaları dikkate değer bir yüksek USB çıkışı gösterdi.

Son olarak, PIC18'in tüm USB işlerini donanımda yaptığı, PI32'nin ise yazılımda daha çok iş yaptığı ortaya çıktı - PIC32 yapacak daha çok iş alır almaz, verim düştü. Bu nedenle, PIC32 ile daha hızlı bir osiloskobu gerçekleştiremedik.

(Ben buna dahil değildim - bu yüzden ayrıntıları bilmiyorum)

AndaluZ
2015-04-20 13:13:54 UTC
view on stackexchange narkive permalink

Gerçekten kodlamaya başlamadan önce, bir projeyi gerçekleştirmek için neye ihtiyacınız olduğunu biraz araştırmanız gerekir. Bu işin bir parçası.

Mikrodenetleyicilere aşina iseniz, 8 bitlik bir uC'nin yeterli olup olmadığını biraz araştırın. Uzatılıp uzatılmayacağına (tek renkli bir LCD'den renkli LCD'ye kadar) karmaşıklığa bağlıdır, uzun süreli mi, düşük güç tüketimi mi, düşük bellek kullanımı mı vb. / p>

Hangi ARM uC'yi seçmem gerektiğine ve hangi derleyiciye (fiyat ve popülerliğe göre) biraz araştırma yapmam gerekti. Benim durumumda çevre birimlerinin kullanılabilirliğini kontrol etmek önemliydi.

Yani basit bir evet veya hayır mümkün değil. Öyleyse, Mühendislik dünyasına hoş geldiniz :)

Michael Karas
2015-04-20 05:17:46 UTC
view on stackexchange narkive permalink

Tek kelime cevabı sağlar - DENEYİM.

O zamana kadar bir şeyler deneyecek ve deneyim kazanmayı öğreneceksiniz.

Algoritmalar için yanlış tasarım yaklaşımı kullanıldığında, herhangi bir MCU için ayarlayabileceğiniz görevler olduğunu da unutmayın. Uzun zaman önce, akıllı algoritmalar kullanan ve açma / kapama işlemlerini izleyebilen ve aynı anda 28 telefon hattının tamamında ~ 20Hz zil voltajı sinyalini filtreleyerek zil durumunu algılayabilen 4.9MHz 8-bit MCU için ürün yazılımını kodladım. ve sonra bu durumu merkezi bir kontrol istasyonuna rapor ederken, bir LCD ekran çalıştırılırken ve algılanan DTMF tonları dışında oldukça karmaşık bir kullanıcı arayüzü çalıştırılır. Eğlenceli şeyler.

Keşke işimde böyle şeyler yapabilseydim


Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...