PIC sıfırlamaya devam ediyor: Breadboard kullanımından yan etkiler görüyor muyum?


11

PIC18F4680 kullanıyorum ve HSPLL modunda 40 MHz harici saat kaynağı veya 10 MHz kristal oluştururken sorun yaşıyorum. HS modunda 10 MHz kristal kullanmak iyi görünüyor ve HSPLL modunda 5 MHz kristal de iyi çalışıyor.

Olan şey PIC'nin başlaması, birkaç saniye çalışması ve daha sonra bir süre kapanması ve tekrar başlamasıdır. Döngünün toplam süresi, PIC'nin ikinci saniyenin erken saatlerinde çalışmayı bıraktığı yaklaşık 5 saniyedir.

Ayrıca, breadboard'un güç veriyoluna yeterince büyük bir deşarj kondansatörü eklediğimde, PIC'nin iyi çalışacağını da fark ettim. İlginç olan nokta, bunun yalnızca PIC zaten çalışırken kapasitörü eklediğimde gerçekleşmesidir. Breadboard'u orada kapasitörle çalıştırırsam veya tamamen boşaltılmamış bir kapasitör yerleştirirsem sorun devam eder.

Bazı sitelerde, yüksek frekans ve daha düşük çalışma voltajında ​​PIC'nin artan güç tüketimi nedeniyle benimkine benzer sorunların olabileceğini okudum. Bu durumlarda, güç kaynağında bazı kısa voltaj düşüşleri varsa, bu frekansta PIC'nin en düşük çalışma voltajına ulaşması daha olasıdır, bu nedenle bu sorunu çözmek için breadboard'da ek kapasitörlere sahip olmak iyi bir fikirdir. 40 MHz'de tam yük altında, tüm devre yaklaşık 64 mA kullandığından, ilk fikrim, sorunu çözmek için yeterince büyük ve yeterince düşük ESR'ye sahip olmalarını umarak bazı tantal kapasitörler koymaktı. . Biri yardım etmedi ve ikincisi de yardım etmedi. alüminyum kapasitör ekledim ve bu da işe yaramadı.10 μF100 μF470 μF alüminyum kapasitörün hiçbir etkisi yoktur. Sonunda, 1 mF alüminyum elektrolitik kapasitör ekledim ve sonra ilk kez devre kapatılıp açılıncaya kadar devre iyi çalıştı. Ayrıca, test amacıyla bu mikrodenetleyici için en yüksek nominal voltaj olan 5.5 V'luk Vcc kullandığımı da not etmeliyim. Bu, 40 MHz'deki en düşük çalışma voltajı olan 4.2 V'ye kadar biraz yer bırakmalı

Sonra, bazen kayan çıktıların aksaklıklara neden olabileceğini okudum, bu yüzden kullanılmayan tüm pinlere aşağı çekme dirençleri koydum ve bu da yardımcı olmadı. Bundan sonra bazen osilatör girişleri yüzüyorsa sorunlar olabileceğini okudum, bu yüzden onları dirençleri kullanarak GND'ye bağlamayı denedim ve bu yardımcı olmadı.10 M Ω10 kΩ10 MΩ

Osilatör çıkışından PIC'deki osilatör girişine giden tel uzunluğu nedeniyle, bununla ilgili sorunlar bekledim, ancak PIC'deki osilatör pimlerine çok yakın olan 10 MHz kristaliyle ilgili sorunlar beklemiyordum. Ayrıca kristal ile, HS modunda da sorun bekleyebilirim, eğer breadboard nedeniyle osilatör sinyal bozulması sorun olsa, ancak HS modunda, PIC iyi çalışır.

Normalde kristaller için 33 pF kapasitörler kullanıyorum, ancak 15 pF ile de denedim ve herhangi bir değişiklik tespit edemedim.

Ayrıca, bu PIC'nin arıza korumalı saat monitörü ve dahili / harici osilatör geçişine sahip olduğunu da not etmeliyim. Her ikisini de etkinleştirmeyi denedim, en azından sorunun osilatörde olduğunu doğrulayacaklarını umdum, ancak sorunla ilgili yardımcı olmuyorlar. Farkı yok, açık veya kapalı olmaları.

Ayrıca test amaçlı bekçi zamanlayıcısı, kahverengi çıkış sıfırlama ve yığın aşırı / düşük akış sıfırlama için devre dışı bıraktım. Bu çip için tüm sıfırlama kaynaklarını kapattığımı düşünüyorum. Ayrıca program sonsuz bir döngü içinde, bu yüzden bitmiyor.

PCF8583'ün herhangi bir problemi yoktur ve PIC kendini sıfırlasa bile düzgün çalışmaya devam eder, ancak diğer yandan çok daha düşük minimum gerilime sahiptir.

Ne yazık ki, bir osiloskopum yok, ancak ses (96 kHz örnekleme hızı) kartı ile bazı testler yaptım ve RTC açıkken fark ettim, güç hattında 25 Hz gürültü var. Kullandığım program, 300 mV'lık bir zirveyi zirveye taşıyor, ancak ona ne kadar güveneceğimi bilmiyorum ve bunun PIC için herhangi bir soruna neden olacak kadar yeterli olup olmadığını bilmiyorum. Her şey kapalıyken, gürültü zirveye yaklaşık 100 mV'dir, bu yüzden iyi olmalıdır.

Yardımcı olması durumunda, breadboard'un kendisinin resmi: (sağ tıklayın-> resmi tam boyut için görüntüle) resim açıklamasını buraya girin

Peki burada neler olduğuna dair bir fikri olan var mı?

Sonunda, PIC'yi 20 MHz'de çalıştırabilirdim, ancak daha fazla işlem gücüne ihtiyacım olursa, 40 MHz'de çalıştırabilmek istiyorum.

GÜNCELLEME

Breadboard'un kendisine başka bir regülatör yerleştirdim ve ses kartı tarafından alınan gürültü şimdi çok daha düşük (zirveden zirveye yaklaşık 50 mV), ancak ana sorunu etkilemedi.


1
Hmm, WDT'yi ve kahverengileşmeyi önerecektim, ama bunları devre dışı bıraktın. O PIC için tarama ile bazı hatalar olduğunu biliyor musunuz? Bir ekmek tahtasında hızlı bir PIC çalıştırmayı hiç denemedim. 18F4580'i her zaman 10MHz osilatör ve HSPLL ile kullanıyoruz. İyi çalışıyorlar.
Rocketmagnet

2
Breadboard'u unutun (asla kullanmam) ve uygun bir PCB kullanın, çok zaman kazandıracak.
Leon Heller

3
@Leon Heller Çok zaman kazandırabilir, ancak şu anda PCB benim zamanımdan daha pahalıdır, özellikle kullanacağım tüm önemli bileşenlerin bir listesine bile sahip olmadığımdan.
AndrejaKo

1
@AndrejKo Bu, bana bir topun içine kıvrılıp ağlamak istememize neden olan sorunlardan biri gibi geliyor. Zamanının çok az değdiğinden emin misin? Sadece PCB yapardım - genellikle de çok eğlenceli!
AngryEE

1
@AndrejaKo: Bir hafta kadar beklemenin sakıncası yoksa, bu grup PCB siparişinde büyük başarı elde ettim: dorkbotpdx.org/wiki/pcb_order . Kendiniz yapmak istemiyorsanız, bu
Chris Laplante

Yanıtlar:


12

Bu oldukça eski bir tavsiye ve mikro için uygun olup olmayacağını bilmiyorum, ama yaklaşık 4 yıl önce garip sahte sıfırlamalarla karşılaşan bir PIC18F ile bir proje yaptım. Raporu okuduktan ve burada hafızamı tekrar çalıştırdıktan sonra çözmüş gibi görünüyor:

Eğer var mı Low Voltage Programming Enableyapılandırma bit etkin? Sizin mi PGMpim üzerinde PORTB? Eğer öyleyse, her iki devre dışı bırakmayı düşünebilir Low Voltage Programming Enableve Port B A/D Enablereset dijital girişlere. Eski raporuma göre PORTB, analog girdilerken PGMpimi tetiklerken yüzdüğümüzden ayrıldık . Geriye dönüp baktığımda, bu teşhisin doğru olup olmadığını bilmiyorum, ancak bu projeyi başarıyla bitirdik, böylece denemeye değer olabilir.


İlginç! Sadece birkaç dakika önce, programcıyı bağlamanın sorunu ve şimdi bu yanıtı etkilediğini fark ettim. BA / D limanını ve LVP'yi devre dışı bıraktım ve şimdiye kadar iyi çalışıyor. PGM pininde bir çeşit garip etkileşim olabilir.
AndrejaKo

@AndrejaKo, yaşadığımdan çok tanıdık geliyor. Umarım istikrarlı kalır ... bir şey yapmaya çalıştığınızda titiz donanım son derece sinir bozucu olabilir: S
Jon L

1
Peki, 21 dakika 30 saniye boyunca iyi çalışıyor. Umarım bu şekilde kalır. Sadece gece boyunca çalışır halde bırakacağım ve sıfırlanıp sıfırlanmadığına bakacağım.
AndrejaKo

Harika! Sorunu çözdüğüne sevindim.
abdullah kahraman

1
Günümü kardeşim yaptım, bir günümüzü neden toprakta PIC 16F887'nin birkaç msn'de bir sıfırladığını anlamaya çalışarak geçirdim. Devre programındaki düşük voltaj ayarlandı ve kayan PGM pimi sıfırlamayı tetikleyen gürültüyü alıyordu. Sizin için +1 temsilci
Gianluca Ghettini

7

Böyle bir kurulumla, neyin yanlış gittiğini tam olarak söylememiz neredeyse imkansız olacaktır. Ancak söyleyebileceğimiz yanlış olan şey. Birçok şey yanlış ya da en azından soğuk olduğu kadar doğru değil. Bunlardan herhangi biri probleminizin gerçek kaynağı olabilir, ancak toplandığında gördüğünüz soruna eşit olan sorunların birleşimini de gerektirebilir.

Bu hata ayıklamanın tek gerçek yolu, sigara silahı olup olmadığına bakılmaksızın, bildiğiniz herhangi bir şeyi düzeltmektir. Sonunda sorun şu veya bu şekilde giderilecektir.

Böyle bir MCU düzgün çalışmadığında hemen hemen her zaman temel özelliklere odaklanmanız gerekir: Güç, Saat ve Sıfırlama. Breadboard ile bunların üçü de şüpheli!

Benim için 1 numaralı şüpheli 40 MHz saat. 40 MHz, havada yüzen bir telin üzerinden geçmek için oldukça hızlıdır. "Sinyal dağıtım sistemi" nin gerçekten yüksek hızlar için tasarlanmadığı bir devre tahtasına doldurmak da hızlıdır. Bu bir PCB olsaydı, iz empedansınızın tutarlı olduğundan emin olmanızı ve sinyallerinizi düzgün bir şekilde sonlandırmanızı söylerdim. Ne yazık ki bunu bir breadboard üzerinde gerçekten yapamazsınız. Size söyleyebileceğim en iyi şey, kablolarınızı mümkün olduğunca kısa tutmak ve sonra onları daha da kısaltmaktır! Saat sinyalinde, doğrudan PIC piminde problanan bir o-kapsamı kullanın; probun GND ucu doğrudan PIC üzerindeki en yakın GND piminde. Bu size saatiniz hakkında çok şey söyleyecektir.

(Mümkünse bir o-kapsamı ödünç almayı deneyin. Biri olmadan hata ayıklamak zor olacaktır.)

# 2 şüpheli güç. Güç aynı zamanda breadboard'larda büyük bir sorundur, çünkü telin endüktansı ve direnci nispeten yüksektir. Burada yine kabloları kısa tutun. Ayrıca 40 MHz osilatörde ayırma başlığınızın olmadığını da not ediyorum. OSC için 0.1 uF ve paralel olarak daha büyük bir şey (4.7 uF ila 100 uF) ile giderdim. PIC'iniz ayrıca 0.1 uF kapaklara paralel olarak daha büyük bir şey kullanabilir. Normalde daha büyük kapaklar gerekli olmaz, ancak bir breadboard ile hiçbir şey normal değildir.

Şüpheli # 3 sıfırlandı. Sıfırlama sinyali hakkında bize herhangi bir bilgi vermediniz ve bunun şüphelendiğim şeyin en düşük olduğunu söyleyebilirim, ancak yine de kontrol etmelisiniz. Üzerine bir o-kapsam koyun ve neler olduğunu görün. Sadece bir volt-metre kullanabilirsiniz. Sıfırlama pimi üzerindeki voltaj eşik seviyesine yakınsa, düzeltmeniz gerekir.

Şimdi, denediğiniz şeyleri gözden geçirelim:

Güç hatlarına kapaklar yerleştirerek, çok az veya kafa karıştırıcı sonuçlarla birçok deney yaptınız. Bu, sadece bazı kapaklar koymak zorunda olduğunuz ve olumlu bir şey yapıp yapmadıklarını düşünmediğiniz zamanlardan biridir. Gücünüz gürültülü olabilir, ancak soruna neden olan birkaç şeyden sadece biri olabilir. PIC'deki 0.1 uF kapaklara paralel olarak daha büyük kapaklar ekleyin. 40 MHz osilatöre kapak ekleyin. Elektrotların mümkün olduğunca kısa olduğundan emin olun. Sonra bir sonraki şeye geçin.

İktidardaki ekstra sınırlar, sorun yaratması muhtemel olmayan şeylerden biridir. Bu yüzden sadece biraz giyebilir ve onlar hakkında çok fazla endişelenemezsiniz. Özellikle 10-100 uF kapaklarla.

Daha sonra, her şey işe yaradığında, bu kapakları birer birer çıkarabilir ve sorunun geri dönüp dönmediğini görebilirsiniz. Geri dönmezse, kapaklar sorun değildi. Ancak şimdilik bunu potansiyel bir sorun olarak kaldırmanız gerekiyor, ancak kapak ekliyoruz.

Yüzen pimler bir sorun olabilirken, nadiren bir MCU'nun çökmesine neden olacak kadar büyük bir problemdir. Diğer sorunlara neden olduğu için düzeltmeye değer, ancak burada sorun olması pek olası değildir. Not: kullanılmayan pimin yüzmesini engellemenin basit bir yolu onları çıkış olarak ayarlamaktır! Yüksek veya düşük, önemli değil. Ancak PIC bu pimleri kullanıyorsa, yüzemezler.


2
İyi bir cevap. Tüm bu uzun düzensiz teller sadece bu kötü bir breadboard üzerinde çalışmaya çalışıyorum zaman ve sefalet değmez olduğunu düşündürdü.
Rocketmagnet

Güzel liste! Sonuçlara baktığımda sonuçları rapor edeceğim.
AndrejaKo

4

PGM (bazen LVP olarak adlandırılır) pininden bahsetmediniz. Conifig baytlarında bu düşük bağlanmalı veya LVP devre dışı bırakılmalıdır.

Bu PIC'nin doğrudan 40 MHz alabileceğinden emin misiniz? Bazıları dahili PLL ile sadece 40 MHz'e erişebilir. Veri sayfasını kontrol etmedim ama yapmalısın. Öyle olsa bile, bir breadboard üzerinde 40 MHz'in iyi davranmasını beklemem. Eğer breadboard'a dikkat ederseniz ve bypass kapaklarını doğru yerlere koyarsanız, PIC'yi 10 MHz kristal ve dahili 4x PLL ile çalıştırabilmeniz gerektiğini düşünüyorum.

Bu tür bir soru düzenli olarak ortaya çıkıyor. Tüm tipik sorunları tekrarlamak yerine, bkz. Https://electronics.stackexchange.com/a/29620/4512 .


Burada iki doğru cevabımız var gibi görünüyor :)
abdullah kahraman

2

David ile hemfikir olmalıyım. Çok uzun kablolar var ve bir breadboard üzerinde 40MHz oldukça iyimser. Zamanınızın gerçekten çok küçük olduğuna inanamıyorum, biraz prototip PCB yapmayı göze alamazsınız . Bu şeyler PCB Train'den sadece yaklaşık 30 £ maliyet . Eminim ki yakınınızda buna benzer bir şey olabilir.

Bunu neden yapmıyorsun? SMD bileşenleri olarak PIC, osilatör ve regülatöre sahip bir PCB tasarlayın, daha sonra tam bir yük kartı şeritleri tasarlayın. Bu şekilde prototiplemenizi yine de yapabilirsiniz, ancak PIC'nin mutlu olduğundan emin olun.

PC prototip perf kurulu


2
Ah, Altium'un 3D'sini seviyorum! Bu arada, bir öğrenci için £ 30 yüksek olabilir :) Mükemmel bir tahta veya daha iyisi, ev yapımı bir PCB kullanmak daha iyidir.
abdullah kahraman

1
Ev yapımı bir PCB yapmayı başarmalıyım, kesinlikle bu fikri deneyeceğim.
AndrejaKo

2
@AndrejaKo - Güzel. O zaman bize bir kene verin :) - Ya da sadece iki sıra pin şeridi koyun, böylece bir breadboard'a takabilirsiniz.
Rocketmagnet

1

Harici bir değişken F jeneratörünüz varsa, sorunları / yerleşimi / çipi test etmek için bunu kullanın. ve arızaya neden olan harici F'yi bulun. ve genişletilmiş toprak kablolarının gürültü çapraz konuşması için anten görevi gördüğünü unutmayın.


0

Prob bir mantık probu, dvm veya kapsama ihtiyacınız var gibi görünüyor ... http://search.digikey.com/us/en/products/DP%2052/BKDP52-ND/227492

Kapağı saat çipi V + / gnd üzerine koyun ve uzaktaysa 40MHZ için bükülü çifti düşünün. Pic xtal giriş ve çıkışa sahiptir .. ters çıkış kontrol DC seviyesi = v / 2? .. Pic ısınıyor mu? Ha..

Düzen sorunlarını önlemek için 40MHz'de 10MHz Xtal PLL modunu öneririm.

"HSPLL modu, 10 MHz'e kadar frekanslar için HS modu osilatörünü kullanır. Daha sonra bir PLL, 40 MHz'e kadar bir dahili saat frekansı üretmek için osilatör çıkış frekansını 4 ile çarpar. PLL yalnızca kristal osilatör tarafından kullanılabilir FOSC3: FOSC0 Yapılandırma bitleri HSPLL modu için programlanmış (= 0110). "


Aslında HSPLL ve 10 MHz kristal kullanmayı denedim, ancak HSPLL modunda osilatör ile aynı sonuçları gösteriyor. HS modunda iyi çalışır.
AndrejaKo

Ayrıca PIC, gördüğüm kadarıyla kullanım sırasında ısınmıyor.
AndrejaKo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.