Programmering SHT11 bruger PIC24FJ16GA002.

D

dnsc

Guest
Hej gutter,

Jeg har arbejdet med SHT11 (Sensirion Temperatur / fugtighedsføler) i lang tid nu og bruger PIC24FJ16GA002.Jeg er stadig sidder fast på det første skridt, da sensoren er ikke at reagere.Jeg troede, at jeg brændte sensoren og prøvede en ny, men jeg har det samme problem.

I øjeblikket er jeg bare forsøger at få en bekræftelse fra sensoren, når jeg har sendt det til en kommando, men ikke reagerer.Følgende er min kode i oder at modtage denne anerkendelse.Please help.

#
include "p24fj16ga002.h"
#
include "math.h"
#
include "stdio.h"
#
include "string.h"

_CONFIG1 (JTAGEN_OFF & GCP_OFF & GWRP_OFF & FWDTEN_OFF)

_CONFIG2 (IESO_OFF & FNOSC_FRC & FCKSM_CSDCMD & OSCIOFNC_OFF)

/ / DATA OG SCK sat til 1 eller 0
# define DATA_SET_1 LATBbits.LATB3 = 1
# define DATA_SET_0 LATBbits.LATB3 = 0

# define drain ODCBbits.ODB3 = 1

# define SCK_SET_1 LATBbits.LATB2 = 1
# define SCK_SET_0 LATBbits.LATB2 = 0

# define DATA_OUT TRISBbits.TRISB3 = 0
# define DATA_IN TRISBbits.TRISB3 = 1
# define SCK_OUT TRISBbits.TRISB2 = 0

# define READ_DATA PORTBbits.RB3

# define MEASURE_TEMP 0x03 / / 000 00011
# define MEASURE_HUMI 0x05 / / 000 00101

# define TEMP 0
# define HUMI 1

# define NOACK 0
# define ACK 1

/ / Funktion bruges til at oprette TILSTRAEBTE FORSINKELSE I programmet

void forsinkelse (usignerede int delay_count)
(
int i, j;
for (i = 0; i <delay_count; i )
(
for (j = 0; j <delay_count j )
(
ASM flygtige ( "NOP");
)
)
)

void connection_reset ()
(
DATA_SET_1;
forsinkelse (5);
int i;
for (i = 0; i <10; i )
(
SCK_SET_1;
forsinkelse (50);
SCK_SET_0;
forsinkelse (50);
)

)

void vigtigste ()

(
AD1PCFG = 0xff;
Drain;
int test = 1;
usignerede int i = 0;
/ / usignerede CHAR værdi = 0;

/ / usignerede int fejl;
/ / usignerede CHAR værdi = 0;
/ / trans_start ();

forsinkelse (400); / / 11 ms efter opstart

SCK_OUT;
DATA_OUT;

connection_reset ();
forsinkelse (50);/ / DATA_SET_1;
forsinkelse (50);
SCK_SET_0;
forsinkelse (50);
DATA_SET_1;
forsinkelse (50);
SCK_SET_1;
forsinkelse (50);
DATA_SET_0;
forsinkelse (50);
SCK_SET_0;
forsinkelse (50);
SCK_SET_1;
forsinkelse (50);
DATA_SET_1;
forsinkelse (50);
SCK_SET_0;
forsinkelse (50);for (i = 0x80; i> 0; I / = 2) / / Fremsendende kommandoen
(
if (i & MEASURE_HUMI)
DATA_SET_1;
anden
DATA_SET_0;

forsinkelse (50);
SCK_SET_1;
forsinkelse (50);
SCK_SET_0;

)

DATA_IN;

while (READ_DATA == 1)
(

)

test = 0;)

Ifølge databladet den maksimale frekvens er 1 MHz hvis strømforsyningen er mindre end 4.5V.Jeg bruger en strømforsyning på 3,3 V og min frquency er meget lav omkring 8 Hz.

Enhver hjælp er meget værdsat.

 
Procesor oraz karta graficzna z górnej półki, są w stanie zapewnić płynną rozgrywkę przy maksymalnych detalach. Nie wyleczą jednak frustracji, wywołan ...

Read more...
 

Welcome to EDABoard.com

Sponsor

Back
Top