Forum: Mikrocontroller und Digitale Elektronik TAOS Light-to-Digital


von Martesy (Gast)


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

von Martesy (Gast)


Angehängte Dateien:

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

von xmega (Gast)


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

von xmega (Gast)


Lesenswert?

xmega schrieb:

Code bisschen verrutscht

> I2cwbyte &H72
> I2cwbyte &H80
> I2cwbyte &H03

so soll es ausschauen!

Gruß Xmega

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.