Acil .. Stm32f407 discovery

Başlatan universitelim54, 18 Mart 2020, 14:53:57

mert3162

bu boş bir iletidir konuyu takip etmek için yazılmıştır.Sonuçları merakla bekliyorum.
|^^^^^^^^^^^^\ ||\
|__PICPROJE.ORG __
||'""|""\___
| _____________ l | |__|__|___| )
(@!)!(@)"""""**|(@) (@)****|(@)---------

 Üstadlarım nonstradam & Logan

z

Anlayamadigim harmoniklerden neden korkuyorsunuz?

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

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

MT

Flash'a yazma/silme anında voltajdaki dalgalanma sebep olmuş olabilir.

z

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.

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

universitelim54

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 

kralsam

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.

devrecii

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

ahuramazda

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

z

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.

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

universitelim54

#24
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ı

       }

universitelim54

#25
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++;
             }
         
         }

sımışka

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. 

z

Arraylerin tanimlandigi satirlari da gorsek iyi olurdu.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com