STM32F407 Discovery + SSD1289 TFT +DS18B20 uygulaması

Başlatan M_B, 15 Ocak 2013, 23:16:20

M_B

STM32F407 kitle DS18B20 ile Sicaklık okuma uygulaması.

Sensor Baglantısı: PC11 nolu pine baglanmıştır.

Not:
Kullanmış olduğum DS18B20 kutuphanesi  STM32F107 için yazmış olduğu X-Fi nicli arkadaşındır


/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "delay.h"
#include "ds18b20.h" 

#define MESSAGE1   "    STM32F407VG     "
#define MESSAGE2   " STM32F4 Discovery  "
#define MESSAGE3   "   Kitle  DS18b20   "
#define MESSAGE4   "   Uygulamasi       "

char buffer1[16];
char deger1[20];

uint16_t iii,jjj,i,aa,x,ii;
float j,k;
float sicaklik;



GPIO_InitTypeDef GPIO_InitStructure;
static __IO uint32_t TimingDelay;
   


int main (void)
{	   
	
  if (SysTick_Config(SystemCoreClock / 1000))
  { 
    /* Capture error */ 
    while (1);
  }
	
  
		 
	STM322xG_LCD_Init();  
  	LCD_Clear(LCD_COLOR_BLACK);
	LCD_SetTextColor(LCD_COLOR_GREEN); 
	LCD_SetBackColor(LCD_COLOR_BLUE);  

  	LCD_DisplayStringLine(LINE(0), (uint8_t *)MESSAGE1);		 // 1
  	LCD_DisplayStringLine(LINE(1), (uint8_t *)MESSAGE2);		 // 4
  	LCD_DisplayStringLine(LINE(2), (uint8_t *)MESSAGE3);		 // 8
	LCD_DisplayStringLine(LINE(3), (uint8_t *)MESSAGE4);		 // yok
				   
  	Delay(100);  

	LCD_SetTextColor(LCD_COLOR_RED);
    LCD_SetBackColor(LCD_COLOR_BLACK);	
    
  	sprintf(deger1,"Tft Tip: 0x%04x",LCD_ReadReg(0x00));
	LCD_DisplayStringLine(LINE(9), (u8*)deger1);
    
  
   while(1)
   {
  
			sicaklik=ds18b20_read();
					if(sicaklik>4095)
								{
								sprintf(buffer1,"Sensor Yok");
								LCD_DisplayStringLine(LINE(0), (uint8_t *)buffer1);
								}
					else
						{	
													  
					
						sprintf(buffer1,"ISI:%3.1f",sicaklik);
						LCD_DisplayStringLine(LINE(6), (uint8_t *)buffer1);
						}   								 
  	 
   } // while sonu
}	// main sonu.

 
/**
  * @brief  Inserts a delay time.
  * @param  nTime: specifies the delay time length, in milliseconds.
  * @retval None
  */
void Delay(__IO uint32_t nTime)
{ 
  TimingDelay = nTime;

  while(TimingDelay != 0);
}

/**
  * @brief  Decrements the TimingDelay variable.
  * @param  None
  * @retval None
  */
void TimingDelay_Decrement(void)
{
  if (TimingDelay != 0x00)
  { 
    TimingDelay--;
  }
}


#ifdef  USE_FULL_ASSERT

/**
  * @brief  Reports the name of the source file and the source line number
  *   where the assert_param error has occurred.
  * @param  file: pointer to the source file name
  * @param  line: assert_param error line source number
  * @retval None
  */
void assert_failed(uint8_t* file, uint32_t line)
{ 
  /* User can add his own implementation to report the file name and line number,
     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */

  /* Infinite loop */
  while (1)
  {
  }
}
#endif

/**
  * @}
  */


/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/





STM32F407 Discovery + SSD1289 TFT +DS18B20

İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

messiah

Selamlar,

bu projede kullandıgınız DS18B20 kütüphanesine nasıl ulaşabilirim? Projenin sensör kısmını kendi projeme eklemem gerekiyor.

eraygil

tebrikler güzel bir proje. acaba bu tür lcd leri nereden teğmin edebiliriz yardımcı olabilirmisiniz

M_B

Alıntı yapılan: eraygil - 17 Ocak 2013, 18:19:03
tebrikler güzel bir proje. acaba bu tür lcd leri nereden teğmin edebiliriz yardımcı olabilirmisiniz
Bu tur Lcd leri ebay veya aliexpressten temin edebilirsiniz.
En azından ben ebay dan almıstım gelme suresi 20-25 gunu buluyor.
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

muhittin_kaplan

hocam ne yaptıysam okuyamadım. aslında ds18b20 den okuyorum ama hep 4095 görüyorum. atladığım bir nokta mı var acaba.

M_B

muhittin_kaplan hocam
1-Sensorun baglantısını cıkarıp calıstırın ekranda ne goreceksınız.
2-Sensor baglı iken debug yaparak
            sicaklik=ds18b20_read();   

sicaklik değişkenin değerini kontrol edin.
İkisin de de 4095 donuyorsa sensorle haberlesemiyor olabilir.
Zamanlama problemi olabilir.
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

muhittin_kaplan

4095 dönüyor muhtemelen haberleşme yok

test ettiğim board da stm32f100 var. 24mhz.

void DelayUs(u32 t)	
{
	t*=8;			 // 24 Mhz DelayUs
	while(t--);
}


burası daha önceden 32mhz göre ve t değerini 6 ile çarpmıştı. buradan kaynaklı olabilimi acaba.

M_B

Stm32f407 kitimde kullandığım delay kutuphanesi

delay.c
#include "delay.h"

__IO u16 ntime;								    

void delay_ms(u16 nms)
{	 		  	  
    ntime=nms;
    SysTick_Config(168000);			//1ms
    while(ntime);
    SysTick->CTRL=0x00;			  	    
}   
            								   
void delay_us(u32 nus)
{		
    ntime=nus;
    SysTick_Config(168);			//1us
    while(ntime);
    SysTick->CTRL=0x00;
}

void Delays(u32 count)
{
    while(count--);
}

delay.h
#ifndef __DELAY_H
#define __DELAY_H

#include "stm32f4xx_conf.h"

void delay_ms(u16 nms);
void delay_us(u32 nus);
void Delay(u32 count);

#endif



Not:
stm32f4xx_it.c  ye ekleme yapılacak.
//SysTick handler
extern u32 ntime;
void SysTick_Handler(void)
{
    ntime--;
}
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

sadogan

Güzel bir örnek olmuş M_B hocam.
LCD hangi pinlere bağlı.
Örenegin tamamını paşlaşmanız mümkünmü?

M_B

Alıntı yapılan: sadogan - 20 Ocak 2013, 01:50:14
Güzel bir örnek olmuş M_B hocam.
LCD hangi pinlere bağlı.
Örenegin tamamını paşlaşmanız mümkünmü?

https://www.picproje.org/index.php/topic,41552.0.html
linki inceleyin. genede tft driveri bulamazsanız bir ara dosyayı upload ederim.
şu an dosya bu pc de değil.
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

muhittin_kaplan

ds18b20 atmadığım takla kalmadı. yarın 32f103 ile deneyeceğim.  en azından zamanlamadan emin olurum :(

M_B

evet hocam zamanlama konusu onemli,
bende bu uygulamayı yapmadan once
https://www.picproje.org/index.php/topic,44586.0.html
linkli konuyu acmıştım. Sonra da delay kutuphanelerini bulunca uygulamayı calıstırabildim.
nette stm32f10x lerle yapılmış ornekleri incelemek lazım delay fonksiyonu vardır diye dusunuyorum.
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

muhittin_kaplan

Hocam 10x ile ilgili pek yok bir iki adet var onlarda 100rb değil. neyse iş oraya kalsın.

muhittin_kaplan

DQ ile VCC arasında direnç var mı  sizin kullandığınız devrede

M_B

Alıntı yapılan: muhittin_kaplan - 20 Ocak 2013, 19:17:27
DQ ile VCC arasında direnç var mı  sizin kullandığınız devrede
4k7 direnc var.
ve DS18B20 yi de 3V ile besliyorum.
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet