forum.mcontrollers.com - hlavní stránka forum.mcontrollers.com - fórum

 

.: fórum - hlavní stránka :.
Technology Stronghold by Rudolf Vesely
How to build Microsoft System Center hosted cloud series
FAQFAQ HledatHledat Seznam uživatelůSeznam uživatelů Uživatelské skupinyUživatelské skupiny RegistraceRegistrace
ProfilProfil StatistikaStatistika Soukromé zprávySoukromé zprávy PřihlášeníPřihlášení

 
Teploměr_DS18B20

 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> AVR
 
Vítek
Anonymní





PříspěvekZaslal: 05 prosinec 2017, 13:18    Předmět: Teploměr_DS18B20 Citovat

Čau lidi, potřebuju udělat teploměr na ATmega32. Používá teplotní čidlo DS18B20, společně se sběznicí 1-wire. Knihovny a kód bych měl mít správně, ale při zapojení to ukazuje teplotu 0°C, nebo že není teploměr.
Nevíte v čem by mohla být chyba?
Díky za pomoc.

main.c
kód:
#include <avr/io.h>
#include <util/delay.h>
#include <stdio.h>

#include "dallas_one_wire.h"
#include "HD44780.h"
#include "crc8.h"

int main(void)
{
   LCD_Initalize();
   LCD_GoTo(0,0);
   LCD_WriteText("  Temostat ");
   //LCD_WriteData(0b11011111);  //Značka stupnu
   
   uint8_t buffer[9];
   uint8_t ok;
   uint16_t measure;
   uint8_t subzero;
   uint8_t temp_int;
   uint16_t temp_fract;
   
    while(1)
    {
        ok=dallas_reset();//Reset zběrníce 1-Wire
      if(!ok){//Varování pro nepřístupný teploměr
         LCD_GoTo(0,1);
         LCD_WriteText("Neni teplomer");
         continue;
      }
      dallas_write_byte(SKIP_ROM_COMMAND);//Vynechání ověřovacího čísla
      dallas_write_byte(CONVERT_T_COMMAND);//Objednání konverze teploty
      _delay_ms(750);//Čekání na dokončení konverze
      //Všechny šasové závislosti spojené s měřením teploty by měly být založeny na časovačích a přerušeních
      
      dallas_reset();//Reset sběrnice 1-wire
      dallas_write_byte(SKIP_ROM_COMMAND);//Vynehcání ověření čísla
      dallas_write_byte(READ_SCRATCHPAD_COMMAND);//Objednání čtení dat
      dallas_read_buffer(buffer,9);//Čtení udají z teploměru
      if(buffer[8]!=crc8(buffer,8)){//Kontrola čtení součtu
         LCD_GoTo(0,1);
         LCD_WriteText("  Kontrolni EROR   ");
         continue;
      }
      measure=(uint16_t)buffer[0]+(((uint16_t)buffer[1])<<8);//Kombinace dvou bajtů teplotních dat
      
      if(measure&0x8000){//Pokud je výsledek záporný
         subzero=1;
         measure ^= 0xFFFF;
         measure += 1;
      }else{
         subzero=0;
      }
      //Rozdělení na celou a desetinou část
      temp_int=measure>>4;
      temp_fract=(measure&0x000F)*625;
      
      //zobrazujeme značku, teplotu
      LCD_GoTo(0,1);
      LCD_WriteText("T=");
      if(subzero){
         LCD_WriteData('-');
      }else{
         LCD_WriteData(' ');
      }
      sprintf((char*)buffer,"%03d.%04d",temp_int,temp_fract);
      LCD_WriteText((char*)buffer);
      LCD_WriteData(0b11011111);//zobrazujeme trasu
      LCD_WriteText("C   ");
      
    }
}


Kdyby byl ochotný někdo pomoct, rád poskytnu kompletní celý soubor.
Návrat nahoru
 

 
Vítek
Anonymní





PříspěvekZaslal: 05 prosinec 2017, 14:17    Předmět: Citovat

Dobrý Tak už to mám.
Návrat nahoru
 

 
stanleyv
Profesionál
Profesionál


Založen: 5.3.2008
Příspěvky: 168

PříspěvekZaslal: 05 prosinec 2017, 14:32    Předmět: Citovat

A v čom bol problém?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Vítek
Anonymní





PříspěvekZaslal: 05 prosinec 2017, 15:25    Předmět: Citovat

Asi ve způsobu zapojení Kitu
Návrat nahoru
 

Zobrazit příspěvky z předchozích:   
Zobrazit předchozí téma :: Zobrazit následující téma  
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> AVR Časy uváděny v GMT + 2 hodiny
 
Strana 1 z 1
Přejdi na:  
Můžete přidat nové téma do tohoto fóra.
Můžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Můžete k příspěvkům připojovat soubory
Můžete stahovat a prohlížet přiložené soubory
 



Num Lock Holder - app to hold Numlock
Copyright © 2018 Rudolf Veselý, mcontrollers.com.
Je zakázáno používat části tohoto webu bez souhlasu autora. || Powered by phpBB © 2001, 2002 phpBB Group - with RedSquare DoubleJ(Jan Jaap)