stm32f103 reset sorunu

Başlatan Hattusa, 29 Nisan 2019, 16:44:55

Hattusa

slm arkadaşlar;

stm32f103 ü cubemx kullanarak keil5 de kullanmak istedim. devreme on-off işlemi yaptırmaya çalışıyorum. off konumuna aldığımda sistem kendini kapatırken stm32f restart  yaptığından kapatma işlemini gerçekleştiremiyorum. yani devrede ki büyük cond. yüzünden sistemin enerjisi yavaş yavaş düştüğünden bu düşme esnasında mcu restart yapıyor devre tekrar çalışıyor. mcu nun configinden restartı nasıl devre dışı bırakabilirim?
vardım ilim meclisine eyledim talep, meğer ilim en gerideymiş illa EDEP, illa EDEP <muhyiddin Arabi K.S.>

M.Salim GÜLLÜCE

Alıntı yapılan: pro-TR - 29 Nisan 2019, 16:44:55slm arkadaşlar;

stm32f103 ü cubemx kullanarak keil5 de kullanmak istedim. devreme on-off işlemi yaptırmaya çalışıyorum. off konumuna aldığımda sistem kendini kapatırken stm32f restart  yaptığından kapatma işlemini gerçekleştiremiyorum. yani devrede ki büyük cond. yüzünden sistemin enerjisi yavaş yavaş düştüğünden bu düşme esnasında mcu restart yapıyor devre tekrar çalışıyor. mcu nun configinden restartı nasıl devre dışı bırakabilirim?
Besleme kaynağın MCU kontrollü olmayınca bu sonuç normal.
Ona göre besleme kaynağı geliştirin.

z

Yazilimda programin basinda ne oldu da resetlendik sorusuna yanit bulabilirsin.

En basitinden bahse konu kapasitor gerilimini ADC ile olcebilirsin.

MCU resetlendi ise bir sure bu voltaja bakar hizla yukseliyorsa power on oldum der.
Yok yukselmeyip dusuyorsa demekki power off olmus ve ben reset yemisim der.

STLINK Utility de Target altinda Option Byte basliginda bazi secenekler mevcut.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Hattusa

#3
hocam çözümleri pek anlamadım, uyguladığım şema aşağıdaki şekildeki gibidir. kurduğum mantık ise (eksik ve hatalı ise lütfen düzeltin) butona bastığımda LDO enerjilenecek ve işlemci çalışmaya başlayacak, işlemci çalıştığında ilgili output bacağı çıkış verecek sistemi açacak diye düşündüm, düşündüğüm gibi de çalıştı ancak; butona tekrar bastığımda ise optoya enerji verdiğim pini low a çekiyorum, butonu bıraktığım anda bir anlık enerji kesiliyor ama sistem tekrar çalışıyor.

eğer sistem mantıklı değilse o zaman  basit ve etkili olarak bu şekilde bir on-off sistemini nasıl kurmalıyım?


vardım ilim meclisine eyledim talep, meğer ilim en gerideymiş illa EDEP, illa EDEP <muhyiddin Arabi K.S.>

devrecii

#4
Büyük ihtimalle bu şekilde olur gibi    ???





Bu da olabilir


tekosis

hocam yazılımla mcu'yu resetledikten(optokuplörü sürdükten) sonra 2000~4000msn bekleme koyar mısınız?
İlim ilim bilmektir, ilim kendin bilmektir, sen kendin bilmezsin, bu nice okumaktır.

Hattusa

Alıntı yapılan: tekosis - 29 Nisan 2019, 22:40:51hocam yazılımla mcu'yu resetledikten(optokuplörü sürdükten) sonra 2000~4000msn bekleme koyar mısınız?

HOCAM o gecikmeyi yaptım hatta;

if(HAL_GPIO_ReadPin(GPIOB,butonAc_Pin)==1){ 
  while(HAL_GPIO_ReadPin(GPIOB,butonAc_Pin)==1){
for(int x=0;x<100;x++){
HAL_GPIO_WritePin(GPIOC,test1_Pin,GPIO_PIN_SET);     
  HAL_Delay(200);
   HAL_GPIO_WritePin(GPIOC,test1_Pin,GPIO_PIN_RESET);
   HAL_Delay(200);  
}
}

butondan elimi çektiğimde 3. toggleden sonra enerji kesiliyor ancak hemen devre tekrar çalışıp, optocouplerde ki pin enerjileniyor.
vardım ilim meclisine eyledim talep, meğer ilim en gerideymiş illa EDEP, illa EDEP <muhyiddin Arabi K.S.>

yesilu

#7
optonun ledine paralel 10uf bağla bakalım ne olacak
ek: yazılım tarafında "stm32 BOR disable" gogılladım, " TM_BOR_Level_None = OB_BOR_OFF, /*!< Disable brown-out detection */ " böyle de bişey buldum, işe yarayabilir.

M.Salim GÜLLÜCE

Devreyi Lojik ile kontrol etmelisin.
Optocoupler çok mantıklı bir eleman değil.
Sızıntı akımları bile mos için yeterli gate gerilimi sağlayabilir zannımca.
Lineer bölgede mutlaka mos iletime geçecektir böylece.
Kontrollü güç kaynağı derken lojik girişi olan elemandan bahsetmiştim.
Drekt olarak kontrol ucunu MCU ya yada dolaylı schmitt buffer a bağlayabilirsin.

örnek
LDLN015 (180mA ULNoise LDO)
MCP1725 (0,5A LDO MicroChip)

gibi

Hattusa

Alıntı yapılan: yesilu - 30 Nisan 2019, 09:10:01optonun ledine paralel 10uf bağla bakalım ne olacak
ek: yazılım tarafında "stm32 BOR disable" gogılladım, " TM_BOR_Level_None = OB_BOR_OFF, /*!< Disable brown-out detection */ " böyle de bişey buldum, işe yarayabilir.

ustam aradığım sanırım bu;

https://stm32f4-discovery.net/2015/08/hal-library-22-bor-for-stm32fxxx/

* @brief  Brown-out levels available
 */
typedef enum {
    TM_BOR_Level_None = OB_BOR_OFF, /*!< Disable brown-out detection */
    TM_BOR_Level_1 = OB_BOR_LEVEL1, /*!< Set brown out detection level 1 */
    TM_BOR_Level_2 = OB_BOR_LEVEL2, /*!< Set brown out detection level 2 */
    TM_BOR_Level_3 = OB_BOR_LEVEL3  /*!< Set brown out detection level 3 */
} TM_BOR_Level_t;
 
/**
 * @brief  Result enumeration for settings
 */
typedef enum {
    TM_BOR_Result_Ok = 0x00, /*!< Everything OK */
    TM_BOR_Result_Error      /*!< An error has occurred */
} TM_BOR_Result_t;
 


Alıntı yapılan: Mehmet Salim GÜLLÜCE - 30 Nisan 2019, 09:23:02Devreyi Lojik ile kontrol etmelisin.
Optocoupler çok mantıklı bir eleman değil.
Sızıntı akımları bile mos için yeterli gate gerilimi sağlayabilir zannımca.
Lineer bölgede mutlaka mos iletime geçecektir böylece.
Kontrollü güç kaynağı derken lojik girişi olan elemandan bahsetmiştim.
Drekt olarak kontrol ucunu MCU ya yada dolaylı schmitt buffer a bağlayabilirsin.

örnek
LDLN015 (180mA ULNoise LDO)
MCP1725 (0,5A LDO MicroChip)

gibi


mehmet usta verdiğim resimde eksik çizimim var şöyle ki mosfet çıkışı sadece LDO yu değil aynı zamanda analog devreyi de besliyor.

söylediklerinizi yarın deneyeceğim. sonucu paylaşırım.
vardım ilim meclisine eyledim talep, meğer ilim en gerideymiş illa EDEP, illa EDEP <muhyiddin Arabi K.S.>

Hattusa

if(HAL_GPIO_ReadPin(GPIOB,butonAc_Pin)==1){ 
  while(HAL_GPIO_ReadPin(GPIOB,butonAc_Pin)==1){
    butonBak++;
    HAL_Delay(200);    
    }
  if(butonBak<=10){
  HAL_GPIO_WritePin(OnOff_GPIO_Port, OnOff_Pin, GPIO_PIN_SET);  
    HAL_Delay(200);
  }
  if(butonBak>10){
  HAL_GPIO_WritePin(OnOff_GPIO_Port, OnOff_Pin, GPIO_PIN_RESET);  
  HAL_Delay(200);    
  }
}

arkadaşlar yukarıdaki kod ile çözdüm sorunumu, yani butona basıp çekersem devre çalışıyor, butona basılı tutup 1 sn üzerinde bekleyip bırakınca enerji kesiliyor. kaba bişey oldu ama şimdilik işimi gördü
vardım ilim meclisine eyledim talep, meğer ilim en gerideymiş illa EDEP, illa EDEP <muhyiddin Arabi K.S.>

tekosis

@pro-TR ustam işinizi bu şekilde görüyorsa mantıklı basit bir çözüm olmuş. Ne derler ustam; çalışıyorsa elleme  :)
İlim ilim bilmektir, ilim kendin bilmektir, sen kendin bilmezsin, bu nice okumaktır.