Kodum sadece debug modundayken çalışıyor.

Başlatan Kevinlomax, 28 Kasım 2019, 15:47:01

Kevinlomax

Merhaba,
STM32F030 ve KEIL kullanıyorum. aşağıda paylaştığım kod, debug modudnayken düzgün çalışıyor. Ancak ST-LINK cihazını çıkartıp tekrar taktığımda çalışmıyor. Sebebi ne olabilir sizce? (main.c de sadece pin konfigürasyonları vb. var o yüzden buraya eklemedim.)

/*

#include "main.h" //buraya don
#include "stm32f0xx_hal.h"
#include "dht22.h"

uint8_t nem_byte1, nem_byte2, sicaklik_byte1, sicaklik_byte2,checksum, verilerin_toplami;
uint16_t  nem, sicaklik,sicaklik1,nem1,timer_sayac_degeri;


void delay_ticks(uint32_t ticks)
 { //SYSTICK TIMER 24 BIT
     SysTick->LOAD = ticks; //girilen süre için gerekli tick sayısı
     SysTick->VAL = 0;
     SysTick->CTRL = SysTick_CTRL_ENABLE_Msk;
     SysTick->CTRL &= ~SYSTICK_CLKSOURCE_HCLK_DIV8;
     SysTick->CTRL |= SYSTICK_CLKSOURCE_HCLK;
     //COUNTFLAG,counter 0 oldugunda 1 oluyo.
     //okundugunda otomatik oalrak temizleniyo
     while ((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) == 0);
     SysTick->CTRL = 0;
 }

void delay_us(uint32_t us)
{
    delay_ticks(us * 8);
}

static inline void delay_ms(uint32_t ms)
 {
     delay_ticks(ms * 8000);
 }

GPIO_InitTypeDef GPIO_InitStruct = {0};
 void pini_giris_yap (void)
  {
  GPIO_InitStruct.Pin = GPIO_PIN_5;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  }

  /*Configure GPIO pin : PA2 */
  void pini_cikis_yap (void)
  {
  GPIO_InitStruct.Pin = GPIO_PIN_5;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  }


void DHT22_baslat (void)
{
    pini_cikis_yap();
    HAL_GPIO_WritePin (GPIOA, GPIO_PIN_5, 0);   // baslangica sinyali
    delay_us(1100);
    HAL_GPIO_WritePin (GPIOA, GPIO_PIN_5, 1);   // sensorden gelecek cevabi bekle
    delay_us(30);
    pini_giris_yap();
}

void sensorden_yanit_al (void)
{
     delay_us(120); //datasheete gore 80-160 arasi bir deger
    while ((HAL_GPIO_ReadPin (GPIOA, GPIO_PIN_5)));
}

uint8_t veri_oku(void)
{
    uint8_t i,j;
    for (j=0;j<8;j++)
    {
        while (!(HAL_GPIO_ReadPin (GPIOA, GPIO_PIN_5)));   // pin 1 olana keder bekle
        delay_us(40);   // 50 yapinca calismiyo
        if ((HAL_GPIO_ReadPin (GPIOA, GPIO_PIN_5)) == 0)
        {
            i&= ~(1<<(7-j));   // alinan bit 0
        }
        else i|= (1<<(7-j));  // alinan bit 1

        while (HAL_GPIO_ReadPin (GPIOA, GPIO_PIN_5 && ((TIM3->CNT-timer_sayac_degeri)==1600) )); //problem olursa 200 us sonra devam et
    }
    return i;
}


void oku(void){
DHT22_baslat ();
    sensorden_yanit_al ();
    nem_byte1 = veri_oku();
    nem_byte2 = veri_oku();
    sicaklik_byte1 = veri_oku();
    sicaklik_byte2 = veri_oku();
    checksum = veri_oku();// check-sum should be the last 8 bit of "8 bit integral RH data+8 bit decimal RH
    //data+8 bit integral T data+8 bit decimal T data".


    verilerin_toplami=(nem_byte1+nem_byte2+sicaklik_byte1+sicaklik_byte2);
    //       HAL_UART_Transmit(&huart1,(uint8_t*)"resul\r\n",sizeof("resul\r\n")-1,100);

    if ((checksum) == verilerin_toplami)
    {
    sicaklik = ((sicaklik_byte1<<8)|sicaklik_byte2);
    nem = ((nem_byte1<<8)|nem_byte2);

    }

}


apsis

Bu durumdayken işlemcine reset atmayı dene. Olmadı ayarların aşağıdaki gibi mi bir kontrol et:






"Makineye Beyin" MEKATRONİK

mfurkanuyar


Kevinlomax

#3
Alıntı yapılan: apsis - 28 Kasım 2019, 16:07:54Bu durumdayken işlemcine reset atmayı dene. Olmadı ayarların aşağıdaki gibi mi bir kontrol et:








Yanıtınız için teşekkür ederim.
Debug moduna girip kodu 'Run' ettikten sonra 'Terminate' ikonuna basıp debug modundan çıkış yaptım. Daha sorna ST-LINK cihazını çıkartıp taktım. Ayrıca ayarlarım ekran görüntüsündeki ayarlarla aynı.

apsis

Ben reset and run yapmıyor diye düşünüyorum.
"Makineye Beyin" MEKATRONİK

RaMu

Debug modda iken Stlink i çıkarırsan niye çalışsın mcu.
Veya debug modda iken Stlink i çıkarıp takınca niye çalışsın mcu.
Birde Stlink i nereden çıkarıyorsun pc den mi yoksa sadece mcu dan mı?
Soruyu sorunu anlatabildiğini düşünmüyorum.

Birçok adım var tam olarak ne yaptığını yazman faydalı olur.
Veya video ekle.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

apsis

Alıntı YapDebug modunda iken ST-LINK'i çıkartıp tekrar taktım olmadı.
Ben bu cümlene dikkat etmemişim. Debug'da iken neden çıkarıp takma ihtiyacı duyuyorsun anlamadım!
Debug'a girmeden doğrudan programı yüklediğinde ne oluyor?
"Makineye Beyin" MEKATRONİK

Kevinlomax

Alıntı yapılan: RaMu - 28 Kasım 2019, 18:31:34Debug modda iken Stlink i çıkarırsan niye çalışsın mcu.
Veya debug modda iken Stlink i çıkarıp takınca niye çalışsın mcu.
Birde Stlink i nereden çıkarıyorsun pc den mi yoksa sadece mcu dan mı?
Soruyu sorunu anlatabildiğini düşünmüyorum.

Birçok adım var tam olarak ne yaptığını yazman faydalı olur.
Veya video ekle.

Alıntı yapılan: apsis - 28 Kasım 2019, 18:41:35Ben bu cümlene dikkat etmemişim. Debug'da iken neden çıkarıp takma ihtiyacı duyuyorsun anlamadım!
Debug'a girmeden doğrudan programı yüklediğinde ne oluyor?

Özür dilerim, düzeltiyorum. Debug moduna girip kodu 'Run' ettikten sonra 'Terminate' ikonuna basıp debug modundan çıkış yaptım. Daha sorna ST-LINK cihazını çıkartıp taktım. Kod çalışmıyor.

bymrz

Reset bacağını nasıl bağladın? Devre şemasını paylaşırsan daha iyi olur.

Kevinlomax


Alıntı yapılan: alone_lover - 28 Kasım 2019, 21:35:44Reset bacağını nasıl bağladın? Devre şemasını paylaşırsan daha iyi olur.



RaMu

Sorun donanımda mı yazılımda mı anlamak için,
sadece bir led yakıp söndüren program yazıp denemek iyi olur.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

Kevinlomax

Alıntı yapılan: RaMu - 28 Kasım 2019, 23:32:22Sorun donanımda mı yazılımda mı anlamak için,
sadece bir led yakıp söndüren program yazıp denemek iyi olur.

Hocam led yakıp söndürürken farkettim. Jumper kabloları çıkartıp taktığımda bazen yanıyor bazen yanmıyor. Aslında bir temassızlık yok gibi, sebebini anlamadım ama böyle idare edeceğim artık.

apsis

Devreyi board üzerine mi kurdun?

Bizimle açık bir şey paylaşmıyorsun ki. Yukarıdaki cubemx görüntüsü açıklayıcı değil. Şema lazım.

İşlemci boardu hazır kart mı? Öyleyse nasıl bir şey onu da paylaşırsan iyi olur.
"Makineye Beyin" MEKATRONİK