Problem mit TWI

Gast #4921268
Lesenswert?

Hallo,

mache grade erste Gehversuche mit TWI. Es soll eine Speicheradresse 
eines ICs ausgelesen werden.

Leider hängt das Programm in dieser Subfunktion (siehe Pfeil):
1
#define BASEADR    0x19  // Basisadresse lt. Datenblatt: 0011001  
2
#define TW_READ    1    // LSB bei Busadresse zur Kennzeichnung eines Lesezugriffes
3
#define TW_WRITE   0    // LSB bei Busadresse zur Kennzeichnung eines Schreibzugriffes
4

5
...
6

7

8
/**
9
  @brief  Byte aus EEPROM von Adresse lesen
10
  @param  Adresse
11
  @return  Datenbyte
12
*/
13

14
uint8_t EEPROM_ByteRead(uint16_t addr) 
15
{
16
  uint8_t wert;
17
  
18
  i2c_start(); 
19
  i2c_send(BASEADR | TW_WRITE); <--- *** an dieser Stelle haengt das Programm ***
20

21
  //  i2c_send(addr >> 8, 0);    // bei 16-Bit Adressierung HSB zuerst
22
  i2c_send(addr);
23

24
  i2c_start();
25
  i2c_send(BASEADR | TW_READ);
26
  wert = i2c_receive(0);
27
  i2c_stop();
28
  return wert;
29
}

Der Controller ist ein M168 und und verwendet wird AVR-Studio 4.19/GCC.
Der IC ist ein Beschleunigungssensor und kein Eeprom.

Im Anhang ist der vollständige Beispiel-Code für das Eeprom, an dem ich 
mich orientiere.

Kann man an dem geposteten Code schon absehen, wo der Fehler liegt? 
Ansonsten kann ich später auch den von mit veränderten Code-Teil 
(Änderungen nur in der Main-Funktion vorgenommen) posten (ist auf einem 
anderen Rechner).
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren