Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Konuyu başlatan: universitelim54 - 18 Mart 2020, 14:53:57

Başlık: Acil .. Stm32f407 discovery
Gönderen: universitelim54 - 18 Mart 2020, 14:53:57
Mrb. arkadaşlar

Bir makine için stm32f407 discovery kart kullanarak bir uygulama yaptım. discovery şebekeden gelebilecek harmoniklerden korumak için 12 volt akü ile besledim.program bir kac saat düzgün bir şekilde çalışıyor. ancak bazen yazılım silinmiş gibi kart tamamen duruyor. kartın enerjisini kesip tekrar acıyorum. kart yine çalışmıyor. Ancak hex dosyasını tekrar yükledikten sonra düzenli bir şekilde çalışıyor. Bunun sebebini acil bulman gerekiyor.makine durmus vaziyette acil yardım

 
Başlık: Ynt: Acil .. Stm32f407 discovery
Gönderen: sımışka - 18 Mart 2020, 16:06:05
Kodu paylaşabilirsen daha iyi olabilir. Segmentation faulta düşüp text segment bellek alanını bozuyor olabilir.
Başlık: Ynt: Acil .. Stm32f407 discovery
Gönderen: apsis - 18 Mart 2020, 16:23:06
Kartın çıkışları izoleli mi? Değilse bataryadan beslemenin bir faydası yok.

Kartının besleme bağlantılarının şeması ve makine bağlantılarının nasıl olduğunu açıklarsan yardımcı olmaya çalışırım.
Başlık: Ynt: Acil .. Stm32f407 discovery
Gönderen: universitelim54 - 18 Mart 2020, 16:58:00
Alıntı yapılan: sımışka - 18 Mart 2020, 16:06:05Kodu paylaşabilirsen daha iyi olabilir. Segmentation faulta düşüp text segment bellek alanını bozuyor olabilir.

Yazılım mikroc ile yapıldı tüm fonksiyonlar 10 sayfa kadar pin konfigurasyonunu atmamı istermisiniz. Çıkışlarda hc595 suruyor ondan sonra optokuplor var ve son olarak röle var tüm röleler ters polarma diyot lu
Başlık: Ynt: Acil .. Stm32f407 discovery
Gönderen: universitelim54 - 18 Mart 2020, 17:34:50
Program bir kaç saat çalıştıktan sonra ne kart duruyor. Sanki kartta hiç yazılım yok gibi d. Enerjiyi kesip tekrar vermemde işi çözmüyor ancak hex dosyasını yukleme yapınca tekrar calısmaya devam ediyor. Reset butonuda denedeim bu arada hiç bir şekilde kart devam etmedi
Başlık: Ynt: Acil .. Stm32f407 discovery
Gönderen: e-zeki - 18 Mart 2020, 17:46:41
donduktan sonra STlink Utility üzerinden işlemciye bağlan ve hex code'unu çek. sonra elindeki hex code ile text compare programlarından biriyle karşılaştır. 2. ihtimalse memory fault durumunda kalırsa enerji verdiğinde de oradan kurtulamama gibi bir durum sözkonusu olabilir.
Başlık: Ynt: Acil .. Stm32f407 discovery
Gönderen: M.Salim GÜLLÜCE - 18 Mart 2020, 18:13:38
Alıntı yapılan: universitelim54 - 18 Mart 2020, 16:58:00Yazılım mikroc ile yapıldı tüm fonksiyonlar 10 sayfa kadar pin konfigurasyonunu atmamı istermisiniz. Çıkışlarda hc595 suruyor ondan sonra optokuplor var ve son olarak röle var tüm röleler ters polarma diyot lu
Röle varsa başka suçlu aramamalısın.
Programı takip edersen röleye işlem yaptırdığında sistemin sutuğunu görebilirsin.
Dizayn şematiğini eklersen düzeltmeler yapılır.
Başlık: Ynt: Acil .. Stm32f407 discovery
Gönderen: universitelim54 - 18 Mart 2020, 18:14:38
Alıntı yapılan: e-zeki - 18 Mart 2020, 17:46:41donduktan sonra STlink Utility üzerinden işlemciye bağlan ve hex code'unu çek. sonra elindeki hex code ile text compare programlarından biriyle karşılaştır. 2. ihtimalse memory fault durumunda kalırsa enerji verdiğinde de oradan kurtulamama gibi bir durum sözkonusu olabilir.


Memory fault durumuna dustugunde ledlerden bıtını akyif edebilirmiyim.vrya bu duruma nasıl düştüğünü anlayabilitmiyim
Başlık: Ynt: Acil .. Stm32f407 discovery
Gönderen: M.Salim GÜLLÜCE - 18 Mart 2020, 18:37:03
Alıntı yapılan: universitelim54 - 18 Mart 2020, 18:14:38Memory fault durumuna dustugunde ledlerden bıtını akyif edebilirmiyim.vrya bu duruma nasıl düştüğünü anlayabilitmiyim
Ledlerinden birini program ana döngüsünde belli aralıklarla yak söndür.mesela 0.25sn yak 0.75sn söndür.
Program ana döngüden çıkarda aykırı yerlere saparsa led sabit kalır.
Ama kabahatli rölemi değilmi anlamak için röle yerine başka bişey mesela bir led bağlayarak ancak anlayabilirsin.
Led yakıp söndürerek arızayı tam analiz etmiş olmazsın.
Başlık: Ynt: Acil .. Stm32f407 discovery
Gönderen: universitelim54 - 18 Mart 2020, 18:49:35
Röleleri tlp521_4ile surdum hrm yera polarma diyot
Alıntı yapılan: Mehmet Salim GÜLLÜCE - 18 Mart 2020, 18:37:03Ledlerinden birini program ana döngüsünde belli aralıklarla yak söndür.mesela 0.25sn yak 0.75sn söndür.
Program ana döngüden çıkarda aykırı yerlere saparsa led sabit kalır.
Ama kabahatli rölemi değilmi anlamak için röle yerine başka bişey mesela bir led bağlayarak ancak anlayabilirsin.
Led yakıp söndürerek arızayı tam analiz etmiş olmazsın.

Roleleri tlp521-4ile surdum rolelerde hem diyot hemde paralel olarak baglı 100nf baglı. Ayrıca roleleri baska bir besleme üzerinden suruyoeum. Led timer nesnesi içinde 100ms yanık100ms sonuk aeklınde kodlanmıs vazıyette baslangıcta hersey yolunda ancak 2,3 saat sonra işlrmci yazılımı siliniyor. Birde şöyle bir şüphem var Sistemde bol miktarda invertor var. Tüm sistemin gnd si aynı gnd üzerinden harmonik etkiliyor olabilir mi?

Başlık: Ynt: Acil .. Stm32f407 discovery
Gönderen: tekosis - 18 Mart 2020, 22:00:45
Cihazınızın bir pinini uart çıkış olarak ayarlayıp mümkünse çalışan tüm fonksiyonların girişinde ve çıkışında bir veri yollayın. Örneğin x fonksiyonunun girişinde "a1" bilgisi çıkışında "a2", y fonksiyonu için "b1", "b2"" bilgisi gibi. Bunu bir data logger ile tutabilirseniz yada başka bir şekilde kaydedebilirseniz hatta bir laptop ile takip bile edebilirsiniz, çalışma sırasında programın nerede kilitlendiğini, ne zaman hangi fonksiyondan çıkıp nerede kaldığını izleyebilirsiniz. Benim fikrim adına en pratiği devrenize bir ttl-usb dönüştürücü bağlayıp bilgisayarın seri portundan anlık olarak takip etmek olur.
Başlık: Ynt: Acil .. Stm32f407 discovery
Gönderen: e-zeki - 18 Mart 2020, 22:06:50
Alıntı yapılan: universitelim54 - 18 Mart 2020, 18:14:38Memory fault durumuna dustugunde ledlerden bıtını akyif edebilirmiyim.vrya bu duruma nasıl düştüğünü anlayabilitmiyim

Micro C kullanmadığım için şuan o platformda seni yönlendiremem. Hal kütüphanesi kullanıyor  olsaydın MemManage_Handler handler'ını direkt olarak kullanabilirdin.

Ayrıca söylediğim gibi kilitlenme durumundan sonra işlemciye utilty üzerinden bağlanıp flash memory dolu mu değil mi doluysa elindeki kodla işlemcinin içindeki aynı mı kontrol etmen gerek. Eğer aynı değilse zaten çok absürt şeyler dönüyor demektir.
Başlık: Ynt: Acil .. Stm32f407 discovery
Gönderen: universitelim54 - 18 Mart 2020, 22:07:16
Alıntı yapılan: tekosis - 18 Mart 2020, 22:00:45Cihazınızın bir pinini uart çıkış olarak ayarlayıp mümkünse çalışan tüm fonksiyonların girişinde ve çıkışında bir veri yollayın. Örneğin x fonksiyonunun girişinde "a1" bilgisi çıkışında "a2", y fonksiyonu için "b1", "b2"" bilgisi gibi. Bunu bir data logger ile tutabilirseniz yada başka bir şekilde kaydedebilirseniz hatta bir laptop ile takip bile edebilirsiniz, çalışma sırasında programın nerede kilitlendiğini, ne zaman hangi fonksiyondan çıkıp nerede kaldığını izleyebilirsiniz. Benim fikrim adına en pratiği devrenize bir ttl-usb dönüştürücü bağlayıp bilgisayarın seri portundan anlık olarak takip etmek olur.


Cevap için tşk edirim. Ben programın bir yerlerde takıldıgını düşünmüyorum. Zira enerji kesilip verildiğinde programı bastan baslaması gerekirdi baska bir sorun oluyor olmalı.
Başlık: Ynt: Acil .. Stm32f407 discovery
Gönderen: muhittin_kaplan - 18 Mart 2020, 22:10:25
Üstad Kolay gelsin.
Şema Yok,Kod Yok, Havanda Su Dövüyorsunuz.
Başlık: Ynt: Acil .. Stm32f407 discovery
Gönderen: apsis - 18 Mart 2020, 22:44:42
Alıntı YapCevap için tşk edirim. Ben programın bir yerlerde takıldıgını düşünmüyorum. Zira enerji kesilip verildiğinde programı bastan baslaması gerekirdi baska bir sorun oluyor olmalı.

Şemanı neden paylaşmıyorsun? Kaynağının THD'sini ölçebiliyor musun da harmonikleri anlamsız bir yöntemle elimine etmeye çalışıyorsun?

Alıntı YapÜstad Kolay gelsin.
Şema Yok,Kod Yok, Havanda Su Dövüyorsunuz.
+1
Başlık: Ynt: Acil .. Stm32f407 discovery
Gönderen: mert3162 - 19 Mart 2020, 01:24:45
bu boş bir iletidir konuyu takip etmek için yazılmıştır.Sonuçları merakla bekliyorum.
Başlık: Ynt: Acil .. Stm32f407 discovery
Gönderen: z - 19 Mart 2020, 04:35:55
Anlayamadigim harmoniklerden neden korkuyorsunuz?

Harmoniklerden hangi uygulamalarda korkulacagi bellidir. STM32F407 uygulamasinda beslemenin elde edildigi sebekede harmonik olsa ne olur olmasa ne olur.

Başlık: Ynt: Acil .. Stm32f407 discovery
Gönderen: MT - 19 Mart 2020, 15:16:58
Flash'a yazma/silme anında voltajdaki dalgalanma sebep olmuş olabilir.
Başlık: Ynt: Acil .. Stm32f407 discovery
Gönderen: z - 19 Mart 2020, 15:32:17
Arada koc gibi regulatorun var.

50Hz sebekede mesela 100Hz harmonik olsa bundan neden korkalim?

Yaptiginiz cihaz bir PC den cok mu daha karmasik/onemli ki PC'nin sorunsuzca calistigi sebekede sizin cihaziniz sorun yasatsin.

Başlık: Ynt: Acil .. Stm32f407 discovery
Gönderen: universitelim54 - 19 Mart 2020, 21:28:06
Alıntı yapılan: MT - 19 Mart 2020, 15:16:58Flash'a yazma/silme anında voltajdaki dalgalanma sebep olmuş olabilir.

kardes cevap ıcın tşk ederım. bazı bılgılerı flash hafızaya yazıyordum. hafızaya yazmadıgımda kartta her hangı bır sorun olmuyor. ancak kartın flash hafızasına yazdıgımda kart bır sure sonra muhtemelen bır fonksıyonun okuması gereken deger degıstıgı ıcın program kılıtlenıp kalıyor.. hepımız ıcın ıyı bır tecrube olsun. FLASH HAFIZAYA YAZMAYALIM YAZDIRMAYALIM. hepinize saygılar 
Başlık: Ynt: Acil .. Stm32f407 discovery
Gönderen: kralsam - 20 Mart 2020, 09:55:42
Alıntı yapılan: universitelim54 - 19 Mart 2020, 21:28:06kardes cevap ıcın tşk ederım. bazı bılgılerı flash hafızaya yazıyordum. hafızaya yazmadıgımda kartta her hangı bır sorun olmuyor. ancak kartın flash hafızasına yazdıgımda kart bır sure sonra muhtemelen bır fonksıyonun okuması gereken deger degıstıgı ıcın program kılıtlenıp kalıyor.. hepımız ıcın ıyı bır tecrube olsun. FLASH HAFIZAYA YAZMAYALIM YAZDIRMAYALIM. hepinize saygılar 
MISRA C ye göz atmanı öneririm.
Başlık: Ynt: Acil .. Stm32f407 discovery
Gönderen: devrecii - 20 Mart 2020, 11:01:56
Alıntı yapılan: universitelim54 - 19 Mart 2020, 21:28:06kardes cevap ıcın tşk ederım. bazı bılgılerı flash hafızaya yazıyordum. hafızaya yazmadıgımda kartta her hangı bır sorun olmuyor. ancak kartın flash hafızasına yazdıgımda kart bır sure sonra muhtemelen bır fonksıyonun okuması gereken deger degıstıgı ıcın program kılıtlenıp kalıyor.. hepımız ıcın ıyı bır tecrube olsun. FLASH HAFIZAYA YAZMAYALIM YAZDIRMAYALIM. hepinize saygılar 

Başta flasha veri yazdırğını söyleseydin ya  ;D
Başlık: Ynt: Acil .. Stm32f407 discovery
Gönderen: ahuramazda - 20 Mart 2020, 15:00:05
Alıntı yapılan: universitelim54 - 19 Mart 2020, 21:28:06kardes cevap ıcın tşk ederım. bazı bılgılerı flash hafızaya yazıyordum. hafızaya yazmadıgımda kartta her hangı bır sorun olmuyor. ancak kartın flash hafızasına yazdıgımda kart bır sure sonra muhtemelen bır fonksıyonun okuması gereken deger degıstıgı ıcın program kılıtlenıp kalıyor.. hepımız ıcın ıyı bır tecrube olsun. FLASH HAFIZAYA YAZMAYALIM YAZDIRMAYALIM. hepinize saygılar 

peki korunması gereken değişkenler için başka ne yapılabilir? dahili bir eeproma sahip değil kullanılan mikroişlemci
Başlık: Ynt: Acil .. Stm32f407 discovery
Gönderen: z - 20 Mart 2020, 16:32:27
Flash bu isler icin uygundur. Soruyu soran arkadas program yaziminda hata yapmistir.

Tek dikkat edilecek konu flasha yeni veriyi yazmak icin once sektoru silip yenisini yazmak yerine kuracaginiz bir algoritma ile sektorun bos bolumlerini kullanmak, daha onceki kayitlari gormemezlikten gelmektir. Ilgili flash tamamen dolunca flash silinir ve en bastan yeniden yazmaya baslanilir. Boylece flash sektoru gereksiz silme yazmalarla eskitilmez.

Başlık: Ynt: Acil .. Stm32f407 discovery
Gönderen: universitelim54 - 20 Mart 2020, 22:10:46
Alıntı yapılan: z - 20 Mart 2020, 16:32:27Flash bu isler icin uygundur. Soruyu soran arkadas program yaziminda hata yapmistir.

Tek dikkat edilecek konu flasha yeni veriyi yazmak icin once sektoru silip yenisini yazmak yerine kuracaginiz bir algoritma ile sektorun bos bolumlerini kullanmak, daha onceki kayitlari gormemezlikten gelmektir. Ilgili flash tamamen dolunca flash silinir ve en bastan yeniden yazmaya baslanilir. Boylece flash sektoru gereksiz silme yazmalarla eskitilmez.




hata yaptıgımı sanmıyorum ustat yınede kodları yayınlayayım. belkı gozumuzden bısey kacmıs olabilir.


// kefe_Carpan degerleri float tipi degiskenlerdir.

void  Hafizaya_Yaz()
{
    int w=0,y=0;

Long_Turunde_Kefe_Carpanlari[4]  =   (unsigned long)Kefe_Carpani[4] * 100000  ;
Long_Turunde_Kefe_Carpanlari[5]  =   (unsigned long)Kefe_Carpani[5] * 100000  ;
Long_Turunde_Kefe_Carpanlari[6]  =   (unsigned long)Kefe_Carpani[6] * 100000  ;
Long_Turunde_Kefe_Carpanlari[7]  =   (unsigned long)Kefe_Carpani[7] * 100000  ;
Long_Turunde_Kefe_Carpanlari[8]  =   (unsigned long)Kefe_Carpani[8] * 100000  ;
Long_Turunde_Kefe_Carpanlari[9]  =   (unsigned long)Kefe_Carpani[9] * 100000  ;
Long_Turunde_Kefe_Carpanlari[10] =   (unsigned long)Kefe_Carpani[10]* 100000  ;
Long_Turunde_Kefe_Carpanlari[11] =   (unsigned long)Kefe_Carpani[11]* 100000  ;
Long_Turunde_Kefe_Carpanlari[12] =   (unsigned long)Kefe_Carpani[12]* 100000  ;
Long_Turunde_Kefe_Carpanlari[13] =   (unsigned long)Kefe_Carpani[13]* 100000  ;


FLASH_UnLock();                                        // Hafızayı ac
FLASH_EraseSector(_FLASH_SECTOR_6);                    // Komple sil
Flash_Hafiza_Adresi  = (unsigned long)_FLASH_SECTOR_6_ADDR;

                   FLASH_Write_Word(Flash_Hafiza_Adresi,    Long_Turunde_Kefe_Carpanlari[4]);
                   FLASH_Write_Word(Flash_Hafiza_Adresi+4,  Long_Turunde_Kefe_Carpanlari[5]);
                   FLASH_Write_Word(Flash_Hafiza_Adresi+8,  Long_Turunde_Kefe_Carpanlari[6]);
                   FLASH_Write_Word(Flash_Hafiza_Adresi+12, Long_Turunde_Kefe_Carpanlari[7]);
                   FLASH_Write_Word(Flash_Hafiza_Adresi+16, Long_Turunde_Kefe_Carpanlari[8]);
                   FLASH_Write_Word(Flash_Hafiza_Adresi+20, Long_Turunde_Kefe_Carpanlari[9]);
                   FLASH_Write_Word(Flash_Hafiza_Adresi+24, Long_Turunde_Kefe_Carpanlari[10]);
                   FLASH_Write_Word(Flash_Hafiza_Adresi+28, Long_Turunde_Kefe_Carpanlari[11]);
                   FLASH_Write_Word(Flash_Hafiza_Adresi+32, Long_Turunde_Kefe_Carpanlari[12]);
                   FLASH_Write_Word(Flash_Hafiza_Adresi+36, Long_Turunde_Kefe_Carpanlari[13]);


                    FLASH_Write_Word(Flash_Hafiza_Adresi+40, Dara_Degeri[4]);
                    FLASH_Write_Word(Flash_Hafiza_Adresi+44, Dara_Degeri[5]);
                    FLASH_Write_Word(Flash_Hafiza_Adresi+48, Dara_Degeri[6]);
                    FLASH_Write_Word(Flash_Hafiza_Adresi+52, Dara_Degeri[7]);
                    FLASH_Write_Word(Flash_Hafiza_Adresi+56, Dara_Degeri[8]);
                    FLASH_Write_Word(Flash_Hafiza_Adresi+60, Dara_Degeri[9]);
                    FLASH_Write_Word(Flash_Hafiza_Adresi+64, Dara_Degeri[10]);
                    FLASH_Write_Word(Flash_Hafiza_Adresi+68, Dara_Degeri[11]);
                    FLASH_Write_Word(Flash_Hafiza_Adresi+72, Dara_Degeri[12]);
                    FLASH_Write_Word(Flash_Hafiza_Adresi+76, Dara_Degeri[13]);

                 

      FLASH_Lock(); // hafıza yazma ıslemı kapatıldı

       }
Başlık: Ynt: Acil .. Stm32f407 discovery
Gönderen: universitelim54 - 20 Mart 2020, 22:16:06
hafızadan okuma fonksıyonu

void Hafizadan_Oku()    // mcu ilk acıldıgında bu fonksıyon calısarak set degerler , kalibrasyon degerleri yüklenir.
       {
     int i=0,w=0;

       Flash_Okuma_Adresi = (unsigned long* )_FLASH_SECTOR_6_ADDR; // okuma baslangıc adresı alındı

           for(i=0; i<10; i++) // flahs hafızadan carpan degerler alınıyor...
              {
             buff_oku[i]= *Flash_Okuma_Adresi ;
             Kefe_Carpani[i+4]   =   (float)buff_oku[i]/100000;
             Flash_Okuma_Adresi++;
             }

               for(w=0; w<10; w++)  // 40 44 48 52 56 60 64 68 72 78  // dara degerini Al
             {
                 Dara_Degeri[w+4]   =  *Flash_Okuma_Adresi;
                 Flash_Okuma_Adresi++;
             }
         
         }
Başlık: Ynt: Acil .. Stm32f407 discovery
Gönderen: sımışka - 21 Mart 2020, 13:49:30
Konuyla alakasız ;
1. Her yerde global değişkenler kullanmak yerine, fonksiyon parametrelerini kullanmak daha faydalı olabilir.
  1.1 pass by reference
  1.2 pass by value konularına bakılabilir.
2. Write, read, flush , erase ( sector, page vb.), unlock, lock fonksiyonları ayrı ayrı yazılabilir. 
Başlık: Ynt: Acil .. Stm32f407 discovery
Gönderen: z - 21 Mart 2020, 14:00:31
Arraylerin tanimlandigi satirlari da gorsek iyi olurdu.