Ynt: Garip bir STM32F103 sorunu.

Başlatan z, 02 Haziran 2015, 17:44:55

z

#15
Dediğim gibi Vdda Vdd ile aynı beslemeye doğrudan paralel bağlı. Besleme çok güzel bir regülatörle sağlanıyor. Dekuplaj sorunu da yok ve 3.3v scopta pırıl pırıl görünüyor. Gnd de bence mükemmel.

Aynı devreden çokca var. Diğerleri sorunsuz çalışıyor bu sorunlu ise

PCB sorunu vardır. Malzeme sorunu vardır. Lehim sorunu vardır.

PCB ve Lehim sorunu olmadığını gördüm. Malzeme sorunu varsa

Regülatör, xtal, dekuplaj kapasitörleri, MCU.

MCU dışındakileri tel tek değiştiririm.

Tek aradığım MCU sağlam ise neden kendini resetler sorusunun cevabı. (Mesela xtal bir süre sonra bozulursa, Reset kapasitörü bir süre sonra kısa devre olur fakat tekrardan kendine gelirse, Vcc1 bacağına bağlı kapasitör açık devre olursa gibi)




mesaj birleştirme:: 03 Haziran 2015, 15:45:05


Lehimlenmiş devrelerde ilave bir mekanik çalışma yapmam gerekti. Her bir devrede bu çalışmayı yapıyorum.

USB konnektörün karta sımsıkı tutunmasını sağlayan iki yanda Gnd pini var. Bu pinler lehimlenince karttın arka yüzünde yaklaşık 1..2 mm uzantı yapmış.

Bu uzantı usb kutusu kapatıldığında kutuda bombeye neden oluyor. Bende bu pin çıkıntılarını dikkatlice zımpara makinesiyle alıyorum. Bu esnada kart aşırı titreşime maruz kalıyor.

Xtal bu durumdan memnun kalmayacaktır. Öte yandan kartta soğuk lehim riski olan noktalar da kendini gösterebilir.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Klein

Hocam STM32'de değil ama STM8'de  garip bir hata ile karşılaşmıştım. O hatayı gördükten sora, hiç bir şey garip gelmiyor bana.

STM8S105 MPU ,  PB0'dan GND'ye bir buton ve butona paralel bir 100n kapasitör  var. PA3'te de bir tane led var.
kod sadece şu kadar

void main(void)
{
clock_init(); 
gpio init(); //  pb0 input, pullup olarak  pa3 output pushpull olarak init ediliyor.
while(1)
{
     Toggle(pa3); // fonksiyon sembolik. kütüphanedeki fonksiyonu hatırlayamadığım için böyle yazdım.
     for(unsigned int i=0;i<60000;i++);
}
}


Doğal olarak kodu çalıştırdığım zaman Led belirli aralıklarla yanıp sönecek. Netekim öyle de yapıyor.
Ama butona basılınca ( buton portunu init etmiş olmama rağmen hiç bir yerde kullanılmadığına dikkat et)
program rastgele bir yere dallanıyor , bazen komple uçuyor , bazen bir kaç saniye bekleyip tekrar main'e dallanıyor, bazen butona basınca uçuyor tekrar basınca main'den devam ediyor.

donanımı 3-4 kişi ile tek tek inceledik , grültülere , voltaj seviyelerine vs.. baktık hepsi normal.
butona bağlı kapasiteyi sökünce düzeliyor :)
MPU'nun bozuluş olma ihtimaline karşı bir kaç kartta denedik, sonuç aynı.

Mühendisliğin bittiğ yer , belki de başladığı yer. emin değilim.  :)

JKramer

@Klein
B0 için external interrupt açık olup handler'ı tanımlanmamış olduğundan yapmış olabilir mi?

Klein

Hayır. bütün ihtimalleri denedim.  Bütün kesme izinlerini kapattım.  Zaten oradan olsa kapasitör yokken de aynı şeyi yapması gerekir.

ErsinErce

USB ile bağlanan cihazın bilgisayarda tanımlanana kadar 100mA in altında çekmesi gerekli.
USB'nin beslemesi kesilip geri veriliyor bilgisayar tarafından eğer tanımlanmadan 100mA üstüne çıkıyorsa

USB rutinlerinde ayrıca resetleme var mı?

z

Böyle bir durum yok. Olsa zaten besleme hattındaki anormalliği gözlerdim.

Reset bacağındaki voltaj 3.3v iken içerideki transistör reset kapasitörünü hızlıca boşaltıyor. Ardından kapasitör klasik RC devresindeki davranış biçiminde voltajını artırıyor.

Belliki MCU bir şeye kızıyor ve kendini resetliyor.

Denemeyi usb rutinsiz de yaptım. Çok basit a=a+1 döngüsünde bile aynı durum sözkonusu.

Fakat yarın kartı harici besleme ile tekrar deneyeyim.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Karamel

hocam ayni devreden birtane daha montaj yapma sansiniz varmi? birde hocam. usb yi aktif etmeden sadece let blink yazilimi icindemi ayni seyler oluyor?  :-\

Logan

Üstad yazmamışsın ama programı yazarken acaba CubeMx kullandın mı?

Derleyici de Keil galiba.
İmza.

z

Derleyici Keil. Cubex kullanmadım.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

hgs

Kartlardan sadece 1 tanesi sorunlu çalışıyor değilmi ?

z

Şu zamana kadar 5 tanesine kod yükledim. 5 de 1.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

hgs

Diğerlerine yüklemenizi engelleyen bir şey varmı ?

5 te 1 bile donanımsal sorun olduğu gösterecek kadar yüksek bir orandır.

Regulator, kristal ve en son mcu  değiştirilebilir.

z

Sorunu buldum.

Dokumanda reset kaynaklarına vs bakarken  User Configuration Byte'a atıfta bulunulmuş.

Konunun detaylarına bakmadan birden STlinkUtil de koruma bitleriyle falan uğraştığımı hatırladım.

Derhal stlinkutilde User Configuration sayfasına baktığımda 3 kutucuk gördüm.

WDG_Sw
nRST_Stdby
nRST_Stop

Bu kutuları işaretledim. Çip artık kendini resetlemiyor.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Mucit23

Bunun altında yatan sebeb neydi? Yani o kutuları isaretleyince ne değişti? Merak ettim

z

#29
nRST_STDBY
0: Reset generated when entering Standby mode. 1: No reset generated.

nRST_STOP
0: Reset generated when entering STOP mode. 1: No reset generated.

WDG_SW
1: Software watchdog. 0: Hardware watchdog.

Kutuları işaretleyince herhalde adı geçen bitler 1 oldu.

İlk 2 durumda reset üretilmesi engellendi. Gerçi standby yada stop durumuna girmeye neden olan rutin parçam yok.

3. Kutunun Tickini kaldırınca Hardware Watch Dog'u açmışım. Tıklayınca kapatmış oldum.

Bilinçli yaptığım bir oynama değildi. Watch doğ'u yazılım içinden etkinleştirmediğim için watch doğ kullanmıyorum demiştim. STLinkUtil'de watch doğ'u vs aktifleştirdiğini bilmiyordum.

Dediğim gibi bilinçsizce kutuların tikini kaldırmamdan kaynaklanan bir olay olmuş.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com