STM32F407 Cortex M4 şamataları

Başlatan bunalmis, 16 Ekim 2011, 17:14:50

muhittin_kaplan

işlemciye daha önceden herhangi bir program yüklemesi yapıyormuyuz. Başka bir programlayıcı ile

Veli B.

@Klein Hocam,
MCU xtali söküp  direkt JTAG veya SWD ile  normal bir kod atmayı deneyin. Erase Chip yapacaktır. Ardından Xtali takıp normal kullanıma dönebilirsiniz.

Klein

Olmadı.  Kristali söktüm. Halen bağlanmıyor. İçerideki kod halen çalışmaya devam ediyor. 
Osilatörü EXT ayarlamış olmama rağmen kodun çalışması da ilginç.
Ya osilatör ayarını düzgün yapamamıştım, bu yüzden hep internal çalışıyordu, ya da harici  osilatör hatası oluşunca dahili osilatöre geçiş yapıyor.

Veli B.

Dahili OSC ye geçme ihtimali mantıklı gelmiyor, ciddi sonuçlar doğurabilir saha şartlarında.
Şu an vaktim yok ama kodları gönderebilirseniz, ben de kilitleyip deneme yapabilirim sanırım. Bu vesile ile dokümanlara da bakmak zorunda kalırım, hala bakabilmiş değilim:). Bu sorun hepimizin başına gelebilecek ve önemli bir konu, çözmek lazım. 

Klein

#1144
Kilitlemeyi kodla yapmadım. ST-Link Utility ile kilitledim. Option bitlerinni ayarladım, Read Protect yaptım ( Write protect bile yapmadım) Programlarken ST-Link  kilitlendi, kapandı.  Sonra karta bir daha erişilemedi.

Program , örnekler kısmında yayınladığım Usart echo örneği. 

Kristal yokken alet çok garip şeyler yapıyor. 
Enerjiyi kesip verdiğimde ,  0.5 saniyede 1 flash yapan led, 4 saniye civarında  flash yapıyor.  Timer 7'nin hızı yaklaşık 1/8 düşüyor.  Ancak Seri port aynı hızda çalışmaya devam ediyor.  Osilatör haritasını daha incelemedim. CLK kaynaklarının farklı olması ile ilgilidir muhtemelen.
Enerjiyi kesmeden "Reset"  butonu ile resetlersem , Timer normal hızına dönüyor. Usart3 te bir değişiklik olmuyor.

Ayrıca Boot0 pinini VDD'ye Boot1 pinini de GND'ye çekip resetliyorum, alet halen kodu çalıştırmaya devam ediyor. Seri porttan da ulaşılmıyor yani. 

muhittin_kaplan

Öyle bir durum var ama kodları incelemek gerek.

RCC->CIR |= 0x00080000;                    //HSERDYC: HSE ready interrupt cleared
 RCC->CR |= 0x00080000;                     //Clock security system Enabled.
 RCC->CIR |= 0x00800000;                    //CSSC: Clock security system interrupt cleared.

ile HSE çalışmadığında işi HSI devralıyormuş
Denemedim Doğrulamaya Muhtaç

serhat1990

Alıntı yapılan: muhittin_kaplan - 07 Kasım 2012, 17:26:58
işlemciye daha önceden herhangi bir program yüklemesi yapıyormuyuz. Başka bir programlayıcı ile

Evet Hocam ön bir program yüklenmesi gerekiyor .

muhittin_kaplan

Alıntı yapılan: serhat1990 - 08 Kasım 2012, 08:27:52
Evet Hocam ön bir program yüklenmesi gerekiyor .
Ozaman Benim işime gelmez keza programı yükleyeceksem doğrudan yüklerim.

serhat1990

Alıntı yapılan: muhittin_kaplan - 08 Kasım 2012, 08:47:06
Ozaman Benim işime gelmez keza programı yükleyeceksem doğrudan yüklerim.

Anladım Hocam, bir kere SWD pinlerinden programlarsanız sonrasında USB DFU mode ile programı atarsınız diye düşünmüştüm ben .

İyi Çalışmalar.


XX_CİHAN_XX

Alıntı yapılan: muhittin_kaplan - 08 Kasım 2012, 00:07:25
Öyle bir durum var ama kodları incelemek gerek.

RCC->CIR |= 0x00080000;                    //HSERDYC: HSE ready interrupt cleared
 RCC->CR |= 0x00080000;                     //Clock security system Enabled.
 RCC->CIR |= 0x00800000;                    //CSSC: Clock security system interrupt cleared.

ile HSE çalışmadığında işi HSI devralıyormuş
Denemedim Doğrulamaya Muhtaç

Evet hocam HSI devralıyor. (Bende denemedim ama dökümanlarda açıkça böyle olduğu yazıyor.)
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

muhittin_kaplan

#1150
ADC ile kullanabileceğim PORTlar hangileri bir türlü bulamadım.
Çözüldü.


mesaj birleştirme:: 09 Kasım 2012, 08:31:41

Yeni Soru.
HSI yerine neden HSE kullanayım. Yada HSE yerine neden HSI kullanayım.
(elimde 32f100rb var. HSI da 8mhz HSE de 8mhz oradan PLL ile 24mhz yapıyorum.)

sseedat

 
ADC1->SQR3 |= 0x00000008; // Çevrime ilk girecek kanal 8. (PB0)SQR registerleri  hangi kanalın hangi sırayla çevirime gireceğini seçmemizi sağlar. Register 5'er bitlik alanlara ayrılmıştır. Her bir SQR registeri 6 tane kanalın sıralamasını seçmemize izin verir.   SQR3 registeri ilk 6 sıra, SQR2  7- 11 arası SQR1 de 12-15 arası olmak üzere toplam 16 kanalın sırasını seçmemize olanak verir. 
SQR1 reg isterini diğer SQR registerlerinden ayıran  özellik ise, Bu registerin 20-21-221 ve 23. bitlerinden scan modda  kaç kanalın taranacağını seçebiliyor olmamızdır.
Örneğimiz tek kanal olduğu için sadece  İlk sıraya kanal numarası girdik diğerlerine bir şey girmedik. PB0 8. kanal olduğu için bu registere 8 yazdık.

hocam burda SQR3 ile 8. kanalı nasıl seçtik .dökümana baktığımda;

Bits 9:5 SQ8[4:0]: 8th conversion in regular sequence 8 . kanal SQR2 de gözüküyor.
Görünmez bir mezarlıktır Zaman...

Klein

Yanlış!
SQR registerleri çevirime girecek kanalların sırasını belirliyor.  SQR2 registerindeki 8. sıra , 8. kanalı ifade etmiyor. çevirime 8. sırada hangi kanalın gireceğini seçiyoruz. Buraya 1 yazarsak,  8. sırada çevirime girecek kanal 1 dir. buraya 8 yazarsak 8. sırada çevirime girecek kanal 8 olur.
Çevirime  ilk girecek 6 kanalın seçimi SQR3 registerinden yapıldığı için  buraya 8 yazdık.

Alıntı YapBits 9:5 SQ8[4:0]: 8th conversion in regular sequence 8 . kanal SQR2 de gözüküyor.
SQR2'de görünen 8  , 8. kanal değil. 8. sırada çevirime girecek kanal.

sseedat

anladım şimdi teşekkürler hocam.buarada  ADC&DMA ile yapmış olduuğunuz bir uygulama varmı?
Görünmez bir mezarlıktır Zaman...