Picproje Elektronik Sitesi

DERLEYİCİLER => Diğer Derleyiciler => Konuyu başlatan: Kevinlomax - 28 Kasım 2019, 15:47:01

Başlık: Kodum sadece debug modundayken çalışıyor.
Gönderen: Kevinlomax - 28 Kasım 2019, 15:47:01
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);

    }

}

Başlık: Ynt: Kodum sadece debug modundayken çalışıyor.
Gönderen: apsis - 28 Kasım 2019, 16:07:54
Bu durumdayken işlemcine reset atmayı dene. Olmadı ayarların aşağıdaki gibi mi bir kontrol et:


(https://i.ibb.co/dpKtWcg/Ekran-Al-nt-s-13.png) (https://ibb.co/dpKtWcg)


(https://i.ibb.co/7ntBb9Q/Ekran-Al-nt-s-13.png) (https://ibb.co/7ntBb9Q)
Başlık: Ynt: Kodum sadece debug modundayken çalışıyor.
Gönderen: mfurkanuyar - 28 Kasım 2019, 16:37:52
Merhaba, BOOT direncinin değeri nedir ?
Başlık: Ynt: Kodum sadece debug modundayken çalışıyor.
Gönderen: Kevinlomax - 28 Kasım 2019, 17:03:56
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:


(https://i.ibb.co/dpKtWcg/Ekran-Al-nt-s-13.png) (https://ibb.co/dpKtWcg)


(https://i.ibb.co/7ntBb9Q/Ekran-Al-nt-s-13.png) (https://ibb.co/7ntBb9Q)


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ı.
Başlık: Ynt: Kodum sadece debug modundayken çalışıyor.
Gönderen: apsis - 28 Kasım 2019, 17:14:46
Ben reset and run yapmıyor diye düşünüyorum.
Başlık: Ynt: Kodum sadece debug modundayken çalışıyor.
Gönderen: RaMu - 28 Kasım 2019, 18:31:34
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.
Başlık: Ynt: Kodum sadece debug modundayken çalışıyor.
Gönderen: apsis - 28 Kasım 2019, 18:41:35
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?
Başlık: Ynt: Kodum sadece debug modundayken çalışıyor.
Gönderen: Kevinlomax - 28 Kasım 2019, 19:13:32
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.
Başlık: Ynt: Kodum sadece debug modundayken çalışıyor.
Gönderen: bymrz - 28 Kasım 2019, 21:35:44
Reset bacağını nasıl bağladın? Devre şemasını paylaşırsan daha iyi olur.
Başlık: Ynt: Kodum sadece debug modundayken çalışıyor.
Gönderen: Kevinlomax - 28 Kasım 2019, 23:14:29

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.

(https://i.ibb.co/nBNQtNh/Ads-z.png) (https://ibb.co/nBNQtNh)
Başlık: Ynt: Kodum sadece debug modundayken çalışıyor.
Gönderen: RaMu - 28 Kasım 2019, 23:32:22
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.
Başlık: Ynt: Kodum sadece debug modundayken çalışıyor.
Gönderen: Kevinlomax - 28 Kasım 2019, 23:54:03
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.
Başlık: Ynt: Kodum sadece debug modundayken çalışıyor.
Gönderen: apsis - 29 Kasım 2019, 00:10:42
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.