Atmega64 -> TWI -> TC74

Gast #3019701
Lesenswert?

Hallo,

ich habe ein kleines Problem mit meinem Atmega64 + einem 
Temperatursensor (TC74), welcher über I2C angeschlossen ist.
1
int START = 0x08;
2
int MT_SLA_ACK = 0x40;
3
int MT_DATA_ACK = 0x50;
4
char temperaturgemessen;
5

6
void Error(){
7
  
8
    cursorPostionLCD_XY(0,4);
9
    schreibeLCD("Fehler");
10

11
}
12

13
int main(void)
14
{
15
  
16
  portDefine();
17
  
18
  cursorPostionLCD_XY(0,1);
19
  schreibeLCD("START");
20
  
21
  //TWI Start
22
  TWBR = 0xAA;
23
  
24
  schreibeLCD("0"); _delay_ms(500);
25
  
26
  TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);
27
  
28
  schreibeLCD("1");_delay_ms(500); //Sendet Start
29
  
30
  while(!(TWCR & (1<<TWINT)))    //Wartet bis Startbit übertragen
31
  
32
  if ((TWSR & 0xF8) != START)   //Statusregister wird überprüft
33
  
34
  schreibeLCD("2"); _delay_ms(500);
35
  
36
  TWDR = 0b10011010;      //SLA_W bzw. SLA_R wird geladen
37
  TWCR =(1<<TWINT) | (1<<TWEN);    //Übertragung vorbereiten
38
  while(!(TWCR & (1<<TWINT)))  //Wartet bis Übertragung abgeschlossen
39
  
40
  schreibeLCD("3"); _delay_ms(500);
41
  
42
  if((TWSR & 0xF8) != MT_SLA_ACK)   //Übertragung wird überprüft
43

44
  TWDR = 0x00; 
45
  
46
  schreibeLCD("4"); _delay_ms(500);
47
  
48
  TWCR = (1<<TWINT) | (1<<TWEN);    //Datenübertragung starten
49
  while (!(TWCR & (1<<TWINT))) //Wartet bis Datenübertragung zu ende
50
  
51
    schreibeLCD("5"); _delay_ms(500);
52
  
53
  if((TWSR & 0xF8) != MT_DATA_ACK) //Datenübertragung erfolgt?
54
  Error(); 
55
  
56
  schreibeLCD("6"); _delay_ms(500);
57
  
58
  temperaturgemessen = TWDR;   //Data wird geladen
59
  TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO); 
60
  
61
  schreibeLCD("7"); _delay_ms(500); //Übertragung abgeschlossen
62

63
  //TWI Ende
64
  
65
  cursorPostionLCD_XY(0,4);
66
  schreibeLCD("ergebnis:"); _delay_ms(500);
67
  schreibeLCD(temperaturgemessen); _delay_ms(500); _delay_ms(500);
68

69
  return 0;
70
}


So sieht mein C-Code aus. Leider durchläuft er ihn nicht vollständig 
durch. Das Display gibt noch die Zahl 2 aus, danach blinkt Start nur 
noch. Also irgendwie bricht er an der Stelle ab und startet stets von 
vorne?

Was könnte das sein bzw. was mache ich falsch?

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