Forum: Mikrocontroller und Digitale Elektronik Temp. Sensor SE95/LM75 Problem


von HaPe (Gast)


Lesenswert?

Hallo zusammen, ich probiere seit 2 Tagen das Temperaturregister meines 
NXP SE95 (I2C) auszulesen. Leider ohne Erfolg, darum bin ich mir nicht 
mehr sicher ob es nicht doch evtl. an der Hardware liegt. Ich nutze die 
TWI bib von Peter Fleury. Unten folgt einer meiner Versuche das Temp. 
reg auszulesen. Evtl. findet ja jemand Fehler. Im übrigen sollte der 
LM75 und SE95 gleich ausgelesen werden können. Ich bekomme immer nur 2x 
"0" angezeigt und die LED an PORTB 1 blinkt auch nicht. Wenn ich die 
Adresse des Slave ändere zeigt er gar nichts an also gehe ich davon aus 
das diese stimmt. Angeschlossen habe ich das ganze genau wie im 
Datenblatt des SE95 beschrieben mit zwei 10kOhm pull ups. Danke für eure 
Hilfe. Der MC ist ein ATmega8.

#include <stdio.h>
#include <avr/interrupt.h>

#include "General.h"
#include "RS232.h"
#include "Delay.h"
#include "TWI_Master.h"
#include <util/delay.h>
#include "lcd-routines.h"

#define SE95  0x49

int main (void)
  {

  DDRB = 0b00000010;
  PORTB = 0b00000000;

  uint8_t PUFFER[10];
  uint8_t TEXT;
  uint8_t TEXT2;
  uint8_t ret;

  lcd_init();
  lcd_setcursor(0,1);
  lcd_clear();

  while(1)
  {

  TWIM_Init (100000);
  TWIM_Stop();
  Delay_ms (1000);
  TEXT = 0;
  TEXT2 = 0;
  ret = 0;
  ret = TWIM_Start(SE95,TWIM_WRITE);       // set device address and 
write mode

  if ( ret )
    {
         /* failed to issue start condition, possibly no device found */
         TWIM_Stop();
     lcd_setcursor(1,2);
      lcd_string("Fehler");
    }
  else {
        /* issuing start condition ok, device accessible */
        TWIM_Write(0x00);                      // write Pointer address 
= 0
        TWIM_Start(SE95, TWIM_READ);           // set device address and 
read mode
        TEXT = TWIM_ReadAck();               // read Hi byte
        TEXT2 = TWIM_ReadNack();               // read Low byte
        TWIM_Stop();
    PORTB = 0b00000000;
        }

  lcd_clear();
  itoa( TEXT,PUFFER,10);
  lcd_setcursor(5,1);
   lcd_string(PUFFER);

  itoa( TEXT2,PUFFER,10);
  lcd_setcursor(5,2);
   lcd_string(PUFFER);

 Delay_ms (1000);
 PORTB = 0b00000010;

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.