Bu, oldukça tartışmalı olabilecek konulardan biridir. Çok farklı bakış açıları var ve farklı şeyler farklı insanlar için önemlidir. Kapsamlı bir cevap vermeye çalışacağım, ancak her zaman aynı fikirde olmayan biri olacağını anlayacağım. Sadece benimle aynı fikirde olmayanların yanlış olduğunu anlayın. (Şaka yapıyorum.)
Hızlı özet:
Bu cevap uzun bir cevap olacak, bu yüzden bunu özet olarak açıklayayım. İnsanların büyük çoğunluğu için en son ARM Cortex-M0 / M3 / M4 yongaları, en iyi çözümü, maliyet için en iyi özellikleri sunar. Bu 32 bit MCU'ları PIC ve MSP430'lar gibi 8 ve 16 bit atalarıyla karşılaştırırken bile bu doğrudur. M0'lar her biri 1 ABD dolarından daha az ve M4'ler her biri 2 ABD dolarından daha az bir fiyata satın alınabilir. M0'lar çok düşük güçtür ve çoğu insan için yeterince iyi olmalıdır. Çok güce duyarlı olanlar için MSP430'lar daha iyi bir seçim olabilir, ancak M0'ler bu uygulamalar için bile dikkate değer.
Daha ayrıntılı bir analizle ilgileniyorsanız, o zaman okumaya devam edin, aksi takdirde şimdi okumayı durdurabilirsiniz.
Şimdi her bölgeye bakacağım ve farklı MCU'ları karşılaştıracağım:
Uygulama Hızı
Tabii ki 32 bit MCU'lar daha hızlı olacak. Daha hızlı bir saat hızına sahip olma eğilimindedirler, ancak bu saatlerin her biri için daha fazla iş yaparlar. ARM Cortex-M4 gibi MCU'lar DSP işleme talimatları içerir ve hatta donanımda kayan nokta desteğine sahip olabilir. 8 ve 16 bit CPU'lar 32 bit sayılarla çalışabilir, ancak bunu yapmak etkili değildir. Bunu yapmak, program depolamak için CPU kayıtlarını, CPU saat döngülerini ve flash belleği hızla tüketecektir.
Kalkınma Kolaylığı
Kanımca, modern 32 bit MCU'ları kullanmanın en değerli nedeni - ama aynı zamanda en az takdir edilen. Öncelikle bunu 8 bitlik PIC'lerle karşılaştıralım. Bu en kötü durum karşılaştırması, ama aynı zamanda puanlarımı göstermek için en iyisi.
Daha küçük PIC'ler temel olarak programlamanın montaj dilinde yapılmasını gerektirir. Doğru, 8 bit PIC'ler için bile C derleyicileri var, ancak bu derleyiciler ya ücretsiz ya da iyi. Hem iyi hem de ücretsiz bir derleyici alamazsınız. Derleyicinin ücretsiz sürümü, optimizasyonunun "Pro" sürümü kadar iyi olmaması nedeniyle sakat. Pro sürümü yaklaşık 1.000 ABD Dolarıdır ve yalnızca bir PIC yonga ailesini (8, 16 veya 32 bit yongalar) destekler. Birden fazla aile kullanmak istiyorsanız, 1000 ABD doları karşılığında başka bir kopya satın almanız gerekir. Derleyicinin "Standart" sürümü orta düzeyde bir optimizasyon yapar ve her yonga ailesi için yaklaşık 500 ABD dolarıdır. 8 bitlik PIC'ler modern standartlara göre yavaştır ve iyi bir optimizasyon gerektirir.
Buna karşılık, ARM MCU'lar için ücretsiz olan birçok iyi C derleyicisi vardır. Sınırlamalar olduğunda, bu sınırlar genellikle desteklenen maksimum Flash Bellek boyutundadır. Freescale Codewarrior araçlarında bu sınır 128Kbayt'tır. Bu forumdaki çoğu insan için bol miktarda var.
C derleyicisi kullanmanın avantajı, CPU'nun bellek haritasının düşük düzeyli ayrıntılarıyla uğraşmak zorunda kalmamanızdır. PIC üzerinde sayfalama özellikle ağrılıdır ve mümkünse en iyi şekilde önlenir. Başka bir avantaj, 8 bit MCU'da (veya 16 bit MCU'da 32 bit sayılar) 16 ve 32 bit sayıları dağıtmanın zorluğuyla uğraşmak zorunda kalmamanızdır. Montaj dilinde bunu yapmak çok zor olmasa da, arkada bir acıdır ve hataya yatkındır.
İyi çalışan başka ARM C olmayan derleyiciler de var. MSP430 derleyicisi makul bir iş çıkarmış gibi görünüyor. Cypress PSoC araçları (özellikle PSoC1) hatalıdır.
Düz Bellek Modeli
RAM / register / Flash disk belleği olan bir MCU sadece aptalca. Evet, 8 bitlik PIC'lerden bahsediyorum. Aptal, aptal, aptal. Bu beni PIC'lerden o kadar çok rahatsız etti ki, daha yeni şeylerine bakmak için bile uğraşmadım. (Feragatname: Bu, yeni PIC'lerin iyileştirilebileceği ve bunu bilmediğim anlamına gelir.)
8 bit MCU ile 256 bayttan büyük veri yapılarına erişmek zordur (ancak imkansız değildir). 64 kbyte veya kwords'a yükseltilen 16 bit MCU ile. 4 gigabayta kadar çıkabilen 32 bit MCU'larla.
İyi bir C derleyicisi, programcıdan (You olarak da bilinir) birçok şeyi gizleyebilir, ancak o zaman bile program boyutunu ve yürütme hızını etkiler.
Bunun bir problem olmayacağı birçok MCU uygulaması var, ancak elbette bununla ilgili problemleri olacak birçok başka uygulama var. Çoğunlukla RAM veya Flash'ta ne kadar veriye (diziler ve yapılar) ihtiyacınız olduğuna dair bir konudur. Tabii ki, CPU hızı arttıkça daha büyük veri yapıları kullanma olasılığı da artar!
Paket Boyutu
Bazı küçük PIC'ler ve diğer 8 bitlik MCU'lar gerçekten küçük paketlerde bulunur. 6 ve 8 iğneli! Şu anda tanıdığım en küçük ARM Cortex-M0 bir QFN-28'de. Bir QFN-28 çoğu için yeterince küçük olsa da, herkes için yeterince küçük değildir.
Maliyet
En ucuz PIC, en ucuz ARM Cortex-M0'ın yaklaşık üçte biri. Ancak bu 0,35 ABD doları ve 0,85 ABD dolarıdır. Evet, bu fiyat farkı bazıları için önemli. Ancak, bu web sitesindeki çoğu insanın bu küçük maliyet farkını umursamadığını düşünüyorum.
Benzer şekilde, daha yetenekli MCU'ları ARM Cortex-M0 / M3 / M4 ile karşılaştırırken genellikle ARM Cortex "kabaca eşit" veya üstte çıkar. Diğer şeyleri çarpanlara ayırırken (geliştirme kolaylığı, derleyici maliyetleri vb.) ARM'ler çok caziptir.
İkinci Özet
Asıl soru şu: Neden ARM Cortex-M0 / M3 / M4 KULLANMAYIN ? Mutlak maliyet çok önemli olduğunda. Süper düşük güç tüketimi kritik olduğunda. En küçük paket boyutu gerektiğinde. Hız önemli olmadığında. Ancak uygulamaların büyük çoğunluğu için bunların hiçbiri geçerli değildir ve ARM şu anda en iyi çözümdür.
Düşük maliyet göz önüne alındığında, bir ARM Cortex kullanmamak için iyi bir neden yoksa, bir tane kullanmak mantıklıdır. Diğer MCU'lardan daha az baş ağrısı ve daha büyük tasarım marjları ile daha hızlı ve daha kolay geliştirme süresi sağlayacaktır.
Başka ARM Cortex 32 bit MCU'lar da mevcut, ancak ben de onlara bir avantaj görmüyorum. Daha iyi geliştirme araçları ve teknolojinin daha hızlı yeniliği de dahil olmak üzere standart bir CPU mimarisiyle devam etmenin birçok avantajı vardır.
Tabii ki, işler değişebilir ve değişebilir. Söylediklerim bugün geçerli, ancak bir yıl hatta bir ay sonra geçerli olmayabilir. Kendi ödevinizi yapın.