Forum: Mikrocontroller und Digitale Elektronik I2C-Bus und DS1631


von CJ (Gast)


Lesenswert?

Hallo,
ich habe eine ATmega8 und will damit über I2C einen Temperatursensor 
DS1631 ansteuern.
Hat damit irgendwer schon etwas gemacht, evtl. fertiger Assembler Code?
Ich habe ein Problem beim Auslesen der Temperatur über I2C. Ich weiß 
nicht genau, ob ich beim I2C das ACK-Bit beim Lesen selbst setzen muss, 
oder ob mir dass der ATmega8 selbstständig macht (ich verwende die 
integrierte TWI-Schnittstelle des ATmega)!

Initialisiert dürfte ich ich alles korrekt haben. Der Ablauf hängt aber 
in Schleife "read4"
1
;Temperatur einlesen
2
read_temp_ds1631:
3
    ldi  tmp1, (1<<TWINT) | (1<<TWSTA) | (1<<TWEN)
4
    out  TWCR, tmp1
5
read1:    in  tmp1, TWCR
6
    sbrs  tmp1, TWINT
7
    rjmp  read1
8
      
9
    ldi  tmp1, 0x91      ;HW-adresse
10
    out  TWDR, tmp1      
11
    ldi  tmp1, (1<<TWINT) | (1<<TWEN)    
12
    out  TWCR, tmp1
13
read2:    in  tmp1, TWCR
14
    sbrs  tmp1, TWINT
15
    rjmp  read2
16
      
17
    ldi  tmp1, 0xAA      ;Befehl zum Lesen der Temp
18
    out  TWDR, tmp1      
19
    ldi  tmp1, (1<<TWINT) | (1<<TWEN)    
20
    out  TWCR, tmp1
21
read3:    in  tmp1, TWCR
22
    sbrs  tmp1, TWINT
23
    rjmp  read3
24
25
    ldi  tmp1, (1<<TWINT) | (1<<TWEN)
26
    out  TWCR, tmp1
27
read4:    in  tmp1, TWCR
28
    sbrs  tmp1, TWINT
29
    rjmp  read4
30
31
    in  TH, TWDR      ;TH Daten auslesen
32
33
    ldi  tmp1, (1<<TWINT) | (1<<TWEN)    
34
    out  TWCR, tmp1
35
read5:    in  tmp1, TWCR
36
    sbrs  tmp1, TWINT
37
    rjmp  read5
38
39
    in  TL, TWDR      ;TL Daten auslesen
40
41
    ldi  tmp1, (1<<TWINT) | (1<<TWEA) | (1<<TWEN)
42
    out  TWCR, tmp1
43
read6:    in  tmp1, TWCR
44
    sbrs  tmp1, TWINT
45
    rjmp  read6
46
      
47
    ldi  tmp1, (1<<TWINT) | (1<<TWSTO) | (1<<TWEN)
48
    out  TWCR, tmp1
49
50
    ret


Vielen Dank für eure Hilfe!

von horst (Gast)


Lesenswert?

hallo CJ,

vielleicht hilft dir diese fuer den DS1631 angepasste
Routine (von Joerg Wunsch) aus der avrgcc-doc,
deinen Fehler zu finden.

horst.

von horst (Gast)


Angehängte Dateien:

Lesenswert?

anhang hat wieder mal nicht geklappt.

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.