TAOS Light-to-Digital

Gast #2263399
Lesenswert?

Hallo,

ich möchte einen TAOS TSL2651 
(http://www.taosinc.com/Productfamily.aspx?id=4&SD=ltd) über I2C mit 
einen ATmega8 auslesen.

Laut Datenblatt gibt der Sensor die Messwerte in vier Bytes zurück. Ich 
möchte zunächst testweise nur ein Byte lesen.

Bisher sendet der Sensor ein Acknowledge bei Address H39.

Ist der Sensor angeschlossen, dann kommt als L1 immer nur der Wert 
zurück, der nach der Address vom Master geschrieben wurde.

Hat jemand vielleicht schon Erfahrungen mit diesem Sensor oder eine Tipp 
für mich?

Nachstehend der Code in BASCOM.

Gruß Martesy




$regfile = "M8def.dat"
$crystal = 3686400
$baud = 9600
$lib "i2c_twi.lbx"
Config Scl = Portc.5
Config Sda = Portc.4

Dim L1 As Byte

I2cinit
Config Twi = 50000

Do
  I2cstart             ' Send start sequence
  I2cwbyte &H72        ' Slave Address from Datasheet
  I2cwbyte &H0C        ' Data Byte mit 8-bit, Command Code ???
  I2cstart             ' Restart
  I2cwbyte &H73        ' Slave Address mit R/W = 1 (read)
  I2crbyte L1 , Nack
  I2cstop
  Waitus 350
  Print L1 ;
  Print
  Wait 1
Loop
End
Gast #2269862
Lesenswert?

Anbei ist ein Bild vom Oszi.

Könnte mir bitte jemand einen Tipp geben?

Gruß Martesy

Bascom:
1
 
2
$regfile = "M8def.dat"
3
$crystal = 3686400
4
$baud = 9600
5
$lib "i2c_twi.lbx"
6
Config Scl = Portc.5
7
Config Sda = Portc.4
8

9
Dim L1 As Word
10
Dim L2 As Word
11

12
I2cinit
13
Config Twi = 50000
14
Do
15
  I2cstart                                                  ' Send start sequence: Fallende SDA-Flanke wenn SCL high
16
  I2cwbyte &H72                                             ' Slave Address from Datasheet Float 0111001 mit R/W low = H72 (=01110010). Read/Write bit0 encoding Read = 1, Write = 0.
17
  I2cwbyte &H03                                             ' h03 = power Up ; h00 = Power Down. The Device Is Powered Down.
18
  I2cstop
19
  Wait 1
20
  I2cstart
21
  I2cwbyte &H72
22
  I2cwbyte &HB11101110                                      ' Command Code
23
  I2cstart                                                  ' Restart
24
  I2cwbyte &H73                                             ' Slave Address Read mit R/W = 1
25
  I2crbyte L1 , Ack
26
  I2crbyte L2 , Nack                                        ' letzte Variable beendet Konversation mit Nack
27
 I2cstop
28
  Waitus 350
29
  Print L1 ; " " ; L2 ;
30
  L1 = 0
31
  L2 = 0
32
  Print
33
  Wait 1
34
  Loop
35
End
Angehängte Dateien:
Gast #2271381
Lesenswert?

Martesy schrieb:


I2cwbyte &H72
I2cwbyte &H80//COMMAND Register CMD = 1 Plus Adresse des Registers 
0x0-0xF
I2cwbyte &H03


Jedes Register muss zuerst angesprochen werden, dann die Daten senden.
In diesem Register müssen auch die Adressierungen eingestellt werden.
 zB. 80 Byte, Control Register -> Daten
     83 Byte  Interrupt -> Daten
     AE Word  Datenregister

siehe Projekt: Luxmeter  mit TSL2561 und Atxmega32a4

http://www.basteln-mit-avr.de

Gruß Xmega

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