Yazılım Mühendisliği ve Programlama
Pic Micronetler Projelerde Ortak Konuları Nasıl Sorun Giderilir
Table of Contents
PIC mikrokontrollülerle çalışmak, sağlam, işlevli bir projeye dönüştürmek için çok değerli bir deneyim olabilir, bu genişleyen kılavuz, PIC mikro kontrol projelerinden gelen her şey için gömülü çözümler oluşturmanıza olanak sağlar. Ancak, sezonlanan geliştiriciler bile yolblocks. Systematic problem çözme, bir tezgahlama projesini sağlam, işlevli bir tasarıma dönüştürmek için anahtardır.Bu genişleyen kılavuz, pratik, adım adım adımlı yöntemler sunar ve PIC mikro kontrol projelerinden en yaygın sorunları çözmek için, güç aksaklıkları toplanlamaları ile ilgili belleklerden gelen.
PIC Projects'deki En Frequent Issues'ı Anlayın
PIC projelerindeki sorunlar genellikle birkaç örtüşme kategorisine girer. Bu erken hızları teşhisle tanır. En yaygın konular şunlardır:
Güç Supply Irregularities
- Belirli PIC modeli için spektral dışı (örneğin, 5V cihazı sadece 3.3V veya gürültü artışları mutlak maksimum puanı aşıyor).
- Mevcut kapasitede - bir motor veya LED şerit kahverengi-outlara neden olabilir.
- Zavallı decoupling – Vdd / Vss pins yakınında eksik veya yanlış yerleştirilen kapasitörler neden erratic resets veya hangs.
Wiring ve Bağlantı Hataları
- Incorrect pin atamaları, yüze girişler veya veri hatları takas etti (örneğin SCL ile takas etti).
- Soğuk sater, protoboards veya kafa kafa pimleri üzerinde ortaklar – sadece vibrasyon altında başarısız olan temas.
- Uzun, desteklenmeyen bir kuş telleri kullanarak, gürültü için antenler olarak hareket eden bir ekmek telleri kullanın.
Programlama ve Yapılandırma Bit Hataları
- Yanlış osilatör konfigürasyonu (örneğin, dış kristalin ihtiyaç duyduğunda veya düşük frekanslı bir optik için HS modu) seçilir.
- Incorrect kahverengi-out reset (BOR) veya saatdog zamanır (WDT) ayarları beklenmedik sıfırlamalara neden oluyor.
- “DEBUG” gibi bazılar, geleneksel olarak, normal bir operasyona engel oldu.
Firmware Logic Errors
- Sonsuz döngüler, yığınlar veya kesmelerin kötüye kullanılması (örneğin, eksik)
- Timing döngüleri belirli bir saat frekansı varsayıyor - bir yanlış bir maç 1 saniye gecikme 2 saniye olabilir.
- ISR ve ana döngü arasında paylaşılan değişkenlere eriştiğinde yarış koşulları.
Donanım Hasarı ve Çevre Faktörleri
- Estatik deşarj (ESD) I/O pins'e, latch-up veya kalıcı pin başarısızlığına neden oluyor.
- İndüktif yüklerden (kesinler, spermler) doğru uç diyotlar olmadan.
- Mikferden korozyon, özellikle de basit PCB pedleri.
Step-by-Step Problemshooting Methodology
yapılandırılmış bir yaklaşım benimseme: Önce temeli doğrulayın, sonra yapılandırmaya hareket edin ve sonunda Yazılım mantığına gidin. sorunu sadece sık sık sık boşa harcanarak düşünmeye çalışın.
1. Bilinen iyi bir güç tedariki kurmak
Başka bir bileşene dokunmadan önce, PIC'nizin temiz, istikrarlı bir güç aldığını onaylayın. aİLMİŞT:0)multimeter[[Döneticileri ve Vss arasındaki gerilimi ölçmek için mikrokontroller pimlerine bakın, sadece güç kaynağına bakın.
- Anahtarlanan tedarikin ±5%'i içinde (örneğin, 4.75V'yi 5V PIC için 5.25V'ye kadar).
- 100mV'den daha az dalga - mevcut olursa bir oscilloskop kullanın.
- Proper kutupite – ters bir bağlantı, çipi anında yok edebilir.
Bir yük sürerken cihazında 0.1μF seramik kapasitor ekleyin veya gerilim düzenleyicisini yükseltin.
2. Wiring ve Sürekliliği Doğrulayın
Tüm bağlantıları şematik diyagramınıza karşı kontrol edin. Common pitfalls:
- Pushbuttons: çekme veya çekme dirençleri mevcut olduğundan emin olun; yüzen pinler rastgele mantık seviyelerine neden olur.
- I2C veya SPI otobüs: SDA, SCL, MOSI, MISO, vb. doğru PIC pins ile bağlantılı ve bu çekme dirençleri I2C (tipik olarak 4.7kULL 10kULL) için mevcut.
- Oscillator devre: dış kristaller için, yük kapasitörler (tipik olarak 18-33pF) mevcut olmalı ve kristalin yük özelliklerini eşleştirmemelidir. Bu eksikliği önlemek için bu olabilir.
Her teldeki süreklilik testi kullanın.Inspect magnification altında ortaklar kullanır; “cold” bir ortak (dull, tahıl görünüş) intermittent hatalarına neden olacak yüksek hacimli bir bağlantıdır.
3. Test Programlaması ve Bits Yapılandırması
İlk olarak, programcınızı (örneğin, PICkit 3, ICD 4 veya Snap) bu hatları doğru bir şekilde ilişkilendirir ve bilinen bir çıktıda bir LED'i kovalamaz.Eğer bu başarısız olursa: PGD, MCLR/Vpp, Vdd, Vs) bu hatları doğru bir şekilde bağlantılıdır ve başka bir devre dışı bırakma.
- [FONT:0) Kontrol konfigürasyonu kelime ayarları[[Dönetici:0) MPLAB X IDE veya derleyiciniz. oscillator seçimini onaylayın (örneğin, FOSC bitleri), WDT etkinleştirilebilir / kullanılabilir, BOR etkinleştirilebilir ve kod koruma parçaları kullanabilir.
- [FONT:0]Power-up serisi[[[Dönetici: 1] – bazı programcılar Vpp'den önce uygulanmak için Vdd'ı gerektirir veya hedef için dış bir güç kaynağına ihtiyaç duyabilirler.
- [FONT=0) Programcının teşhis aracını kullanın (e.g., “Check Communication” in MPLAB X) cihazı ID. A başarısız okuma donanım veya bağlantı problemini gösterir.
Daha derin bir şekilde yapılandırmak için, bakınız:0)Mikroçinin Konfüçyüsünü[Dönlendirmek için]
4. Oscillator ve Saat Sistemini Doğrulayın
Incorrect saat frekansı, “iyi derleyiciler iyi bir şekilde derleyici ama işe yaramıyor.” oscillator'daki% 1 hata bile, UART gibi seri iletişimleri kırabilir. adımlar:
- [FONT:0) FOSC yapılandırmasını okuyun[[Dönetici: Doğru kaynağı seçin: iç RC, iç oscillator with PLL, external kristal, dış saat vs.
- [FONT:0)Zeminler:2) kodunuzda (XC8 derleyicisi için)[0) Bu, gerçek frekansı eşleştirmeye neden olur.
- [FONT:0) Bir oscilloskopu [Döntgen: 1] Herhangi bir CLKOUT pin'de saat çıktısını ölçmek için veya osilatör pinleri doğrudan doğrulayın.Eğer dış kristal kullanıyorsanız, bir sinüsoid dalgaformu görmeniz gerekir = ölü kristal, kırık bağlantı, yanlış yük kapaklar veya yapılandırıcı imarda devre dışı bırak.
- İç osilatörler için, kalibre gerekiyorsa - bazı PIC'lerin bir kayıtta depolanmış bir fabrika kalibrasyon değeri vardır, ancak sıcaklıkla sürüklenebilir.
5. Geçerli Donanımları ve I /O
Güçten sonra, programlama ve saat doğrulanır, her I/O pin bireysel olarak test edilir.Her çıktıyı yüksek /düşü yönlendiren ve her girişini okuyan küçük bir test programı yazın.
- [FONT:0]Damaged pins[[DÜT:1) - düşük (iç çekme başarısız veya ESD hasar) ayarlandığında bile yüksek kalır.
- [FONT:0)Soldering köprüleri[[Dönler: 1 ) – iki pin birlikte garip davranışlara yol açtı.
- [FONT:0)Incorrect pin seçimi[Dönemli:0][Dönemli pin seçimi[Döntgen: 1) – programlama için de kullanılan bir pin kullanarak (PGD gibi) ilk serbest bırakmadan.
Ayrıca mekanik stres için de inceleyin: kırık seramik paketler, bent DIP paketlerine yol açar veya yüzeydeki cihazlara kaldırılır.
Gelişmiş Problemi Teknikleri
Temel kontroller sorunu açığa çıkarmadığında, daha sofistike araçlar ve stratejilere ihtiyacınız olacak.
Bir Oscilloskop veya Mantık Analizi
Bir oscilloskop, zamanlama ve sinyal bütünlüğü için vazgeçilmezdir.
- [FONT:0]Zing veya overshoot[[Dönetici: 0,3+0) Vdd+0.3V'yi aşan dijital hatlarda [FOD+0) .
- [FONT:0]Runt puls[[Döntgen: 1)) - PIC'nin giriş mantığı tarafından tanınmak için çok kısa.
- [FONT:0)Missing saat kenarları[[Dönemli bir osilatör, CPU'nun orta ölçekli imha edilmesine neden olabilir.
Bir mantık analizörü ( ucuz USB bir tane bile) UART, I2C, SPI veya LIN gibi seri protokolleri kodlayabilir ve beklenen değerleri kullanarak karşılaştırmayı kullanın.Bu hızlı bir şekilde, MSSP modülü gibi periferiklarda baud oranı yanlış eşleşmeleri veya yanlış kayıt ayarlarını ortaya çıkarabilir.
MPLAB X ile etiketlendiren sistem (ICD)
PICkit 4 veya ICD 5 gibi bir debugger varsa, gerçek zamanlı uç noktaları kullanın ve değişkenleri izleyin:
- Sadece şüpheli bir kod parçasından önce bir mola noktası ayarlayın.
- Kayıt değerleri – e.g., theFLT:4) say, [[Üye/Üye/Üye/Üye/Üye/Üye/Üye/Üye/Üye/Üye/Üye/Üye/Üye)
- Bayrakların doğru şekilde temizlenmesini sağlamak için tek adım.
- Taht noktası kontrol edin – bir yığın aşırı akış (çok fazla ihmal çağrısı veya sonsuz geri dönüş) yozlaşmış geri adreslere yol açacaktır.
Debuggingin zamanlamayı etkileyebileceğini unutmayın (özellikle birkaç mikrosaniyeye duyarlı olan devreler).Son zamanlarda kritik döngüler için, yerine oscilloskop ile yürütme zamanı ölçmek için bir GPIO pin kullanın.
Problemi izole etmek: Bölünme ve Kıkırıklık
Tüm sistem başarısız olursa, onu basit minimuma doğrulayın: sadece PIC, bir çift güç tedariki, 10kULL, bir çıkışta LED diski ve bir LED'i bir çıkışta bir parça alın.O zaman (switch, sensör, ekran) ve her bir ekinden sonra test edin.
Common PIC-Specific Pitfalls ve Onların Fixes
Watchdog Timer (WDT) Causing resets
Birçok yeni başlayanlar WDT'yi yapılandırmak için etkinleştirdi, ancak ana döngüsünde asla net değil. Çözüm: ya yapılandırılmış WDT'yi yapılandırın veya birkaç milisaniyeye ihtiyacınız varsa, kodun yolunuz düzenli olarak açıklayın.
Brown-Out reset (BOR) Trip Point Too High
Güç tedarikiniz biraz geçici olarak (örneğin, bir motor başladığında), yüksek BOR eşi (örneğin 4.0V gibi 5V sistemi üzerinde) bir sıfırlamaya neden olabilir.Mevcutse daha düşük bir eşiği kullanın veya tedarik kesintisini artırabilir. Alternatif olarak, BOR uygulama kısa bir süre sonra da yükleme işlemine tahammül edebilir.
Interrupt Flag Cleared
ISR içinde, her zaman, dışarı çıkmadan önce kesmeye sebep olan özel bayrağı açıklayın. Örneğin, Timer0 overflow, netüFLT:8. Eğer periferik kütüphaneyi (PLIB) veya HAL kullanıyorsanız, bayrakın aslında öyle olduğunu net bir şekilde kontrol edin.
EEPROM / Flash Endurance
Eğer iç EEPROM'a sık sık yazıyorsanız, tipik PIC EEPROM dayanıklılık 100k ila 1M döngüsü olduğunu unutmayın.Her saniyeyi yazmak, harici FRAM veya daha yüksek dayanıklılık ile bir seri EEPROM kullanmak.
Birden Çok Interrupt Kaynağı
Birden fazla kesme etkinleştirseniz (örneğin, Timer1 ve UART alır) ve ISR hangi bayrak(lar) ayarlandığında kontrol etmez, yanlış kesme veya bir tane kaçırmak için zaman harcayacaksınız.
void __interrupt() ISR(void) {
if (TMR1IF) {
// handle timer
TMR1IF = 0;
}
if (RCIF) {
// handle UART
}
}
Her zaman en yüksek öncelikli bayrağı ilk olarak kontrol edin (en hızlı yanıta ihtiyaç duyan kişi).
Başarılı PIC Problemshooting için Araçlar ve Kaynaklar
Parmaklarınızın hızlarındaki doğru kaynakları elde etmek, kararınızı hızlandırın.
- [FONT=0)Resmi Mikroçip Dokümantasyon[[Dönetici: 1) Cihazın veri tablosu ile her zaman başlar (örneğin, [[Dahili:2).PIC16F877A datasheet) ve aile referans kılavuzu.Bu zaman çizelgesi içerir, kayıt haritaları ve elektrik özellikleri içerir.
- [FONT:0)MPLAB X IDE ve XC8 Compiler) – en son sürümü kullanabilir. Eski sürümler yeni başlayanlar için kod nesline sahip olabilir.
- [FONT:0)Online topluluklar – [[ŞUYGÜNCÜDÜ:2)Mikroçi Forum[DÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜye Olmayanlar – Başka biri aynı sorunu çözmüş.
- [[Düzücüler:0)Example kodu[[Dönetici: 1) Microchip kod örnekleri kod yapılandırmacı (MCC) ile sağlar ve genellikle doğru kayıt ilkleme dizilerini ortaya koyar.
- [FONTD:0]Third-partik öğreticiler – www.FLT:2 gibi web siteleriEn İyi Mikrokontroller Projeler) Sorunlu bölümlerle pratik proje yürüyüşleri sunar.
Bütün Birlikte Oluşturun: Sistematik Akışkart
Yeni bir sorunla karşılaştığınızda, bu mantıksal akışı takip edin:
- [FONT:0)Visual inceleme[[Dönetici: 1 ) - kısalara bakın, eksik bileşenler, yanlış kutuplulık.
- [FONT:0)Power check[DÜT:1] – PIC pins'de çok metre ile gerilim ölçül.
- [FONT:0]Programmer iletişimi[Dönetici:0)[Dönetici:0)
- [[D FONT:0)Blinky testi[DÜDÜT:1) - LED'i kaplayan en basit olası donanıma yük.
- [FONT:0) Karmaşıklık artışı ([Dönetici: 1))[Dönetici).
- [FONT:0)Oscilloskop doğrulama[Dönem: 1 ) – saat kontrol, çıkış dalgaformları ve sinyal zamanlaması.
- [FONT:0)Review yapılandırması biraz [Dönetici: 1 ) - her bir miktar ihtiyaçlarınızı karşılayın.
- [FONT:0)Review code logic) - kesmelere, gecikmelere ve paylaşılan değişkenlere odaklanır.
- [FONT:0) Arama forumları ve veri tabloları) - bilinen errata veya benzer konular için bakınız.
Güvenilir Tasarımlar için Önlemler
Bir sorunu çözdükten sonra, gelecekteki projelerde tekrarlanması için adımlar atın.
- pin-mapping hataları önlemek için tutarlı bir şematik sembolü ve PCB ayak izi kütüphanesi kullanın.
- Her gerilim girişine bir dekoupling cleor ekleyin ve bunu IC'ye fiziksel olarak mümkün olduğunca yakın bir yerde yerleştirin.
- Bir seri direnişçiyi (330ULL 1kULL) her I/O'da dış bir üst düzeye çıkar; bu sınırların yere veya Vdd'a kadar kısa sürede kısaltır.
- Kritik sinyallerin test noktaları ile tasarım (MCLR, Vdd, oscillator, PGD/PGC).
- Kayıt sonrası analiz için modüler bir bellek (UART veya EEPROM) ile kayıt altına almak için sağlam bir hata-handling framework ile yaz.
- Her zaman bir saatdog zamanı içerir ( uygun açıkla) üretim sistemleri için geçici hataları otomatik olarak geri almak gerekir.
Encouragement'in son sözleri
Her PIC geliştirici, hobiciden profesyonele kadar, eksik bir çekme direnç peşinde saatlerce harcadı ve yanlış bir osilatör biraz. hayal kırıklığı ve başarı arasındaki fark, bir koreal yaklaşım ve doğru teşhis araçlarına dikkat etmek. Yukarıda belirtilen adımları takip ederek - saati doğrulayarak, ve alt sistemlerde sorun gidermeyi - uygulama ile dramatik bir şekilde azaltacaksınız.
Daha fazla okuma için, araştırır:0)Mikroçinin Debug Tools Genel Bakış[Döneticileri) için doğru debugger'i ihtiyaçlarınız için seçmek ve [[Dönetici:2|PIC16F887 veri sayfası