Hallo,
kann mir irgendjemand helfen?? Habe das halbe Forum auf den Kopf
gestellt und nix zum LM75 mit PIC16F877A gefunden.
Mein Problem, ich möchte nur eine I²C verbindung herstellen. Der Pic
soll nur die Temp ohne "0,5" und ohne "-" auslesen. Ich bekomme aber
noch nichteinmal ne reaktion vom LM75. Ich weiß nicht mehr weiter. Habe
da wohl anscheind irgendetwas nicht verstanden
Mein Compiler CC5X
Danke schonmal im voraus.
Gruß
André
Code:
/********************************* Include ********************************************************/
#include <C:\cc5\16F877A.H>
#include <C:\cc5\delay20.c>
/********************************* Globale Variabeln **********************************************/
/********************************* Funktion *******************************************************/
void main(void)
{
/////////////////////******************** Var ***********************///////////////////////////////
char h_byte;
/////////////////////******************** I/O ***********************///////////////////////////////
TRISB = 0b.0000.0000;
TRISC = 0b.1111.1111;
/////////////////////***************** Einstellen der Werte ********************///////////////////////////////
PORTB = 0;
SSPADD = 12; // für I²C -> bei 20MHz = 385kHz
SSPCON = 0b.00001000; // für master-mode
SSPEN = 1;
anfang:
/////////////////////******************** Schleife ******************///////////////////////////////
/* Pointer ausrichten */
SSPIF = 0;
SEN = 1; // // // // // // //
while(!SSPIF); // Bus übernehmen //
SSPIF = 0; // // // // // // //
SSPBUF = 0x90; // // // // // // //
while(!SSPIF); // LM75 Adresse
SSPIF = 0; // // // // // // //
SSPBUF = 0; // // // // // // //
while(!SSPIF); // Temp addressieren
SSPIF = 0; // // // // // // //
PEN = 1; // // // // // // //
while(!SSPIF); // Bus freigeben
SSPIF = 0; // // // // // // //
/* Byte des Pointers auslesen */
SEN = 1; // // // // // // //
while(!SSPIF); // Bus übernehmen //
SSPIF = 0; // // // // // // //
SSPBUF = 0x91; // // // // // // // // // // // // //
while(!SSPIF); // LM75 Adresse mit Leseanweisung //
SSPIF = 0; // // // // // // // // // // // // //
RCEN = 1; // // // // // // // // // // // // //
while(!SSPIF); // LM75 "starte" lesen //
SSPIF = 0; // // // // // // // // // // // // //
h_byte = SSPBUF;
PEN = 0; // // // // // // // // // // // // //
while(!SSPIF); // Bus freigeben //
SSPIF = 0; // // // // // // // // // // // // //
PORTB = h_byte;
Delay1ms(100);
goto anfang;
}
/*************************************************************************************************/
Lesezeichen