PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : CMPS-Nx



turi79
30.10.2007, 20:02
Guten Tag Allerseits,
ich beschäftige mich momentan mit der Programmierung der CMPS-Nx und BASCOM.

Der Link für den Kompass von Mindsensors ist:
http://www.mindsensors.com/index.php?module=documents&JAS_DocumentManager_op=viewDocument&JAS_Document_id=5

Ich bekomme immer die Zahl 255 vom Kompass egal in welcher Richtung ich den Kompass bewege. Kann jemand mir Helfe leisten. Ich wäre ihm dankbar. Die Ausgabe von "Print #4 , Err" gibt immer 1.
Wie kann ich die Err auf Null ändern? Was mache ich falsch bei der Kommunikation über I2C?

Vielen Dank

Ich habe folgender Source Code dafür geschrieben:
'################################################# ##
'Autor: HELP FIRST
'################################################# #############

'Diese Anweisung setzt die Fusebits automatisch korrekt (Syntax $PROG LB, FB , FBH , FBX )
$prog , 255 , &B11011001 , 'Quarz an / Teiler aus / Jtag aus

$regfile = "m2560def.dat"
$hwstack = 82 '80
$framesize = 68 ' 64
$swstack = 68 '44

$crystal = 16000000 'Quarzfrequenz

Declare Sub Read_eeprom(byval Adres As Byte , Value As Byte)
Declare Sub Command(byval A As Byte)

Const Cmpsid = &H02
Const Cmpscommandreg = &H41
Const Cmpsreadresult = &H42
Const Cmpsreadheading = &H49
Const Cmpscal = &H43
Const Cmpsendcal = &H44
Const Cmpssampleus = &H55
Const Cmpssampleeu = &H45
Const Cmpsauto = &H41

'Const Cmpsport S1 ' Connect Cmps Sensorto This Port!!

Config Scl = Portd.0 'Ports fuer IIC-Bus
Config Sda = Portd.1
Config Com4 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Open "com4:" For Binary As #4

Dim Value As Byte 'dim byte
Dim N As Integer

Wait 3
N = 0 'Warte 3 Sekunde
I2cinit
Print #4 , "Testprogramm "




Do
Print #4 , "START"
Wait 1
Call Read_eeprom(cmpsid , Value) : Print #4 , Value
'Call Command(cmpscal)
'Print #4 , "SEKUNDEN: " ; N
'N = N + 1
'If N = 20 Then
' Exit Do
'End If
Loop

End


Sub Command(byval A As Byte)
I2cinit
I2cstart
I2csend Cmpsid , 3
Print #4 , Err
I2cwbyte Cmpsid
Print #4 , Err
I2csend Cmpsid , Cmpscommandreg
Print #4 , Err
I2csend Cmpsid , A
Print #4 , Err
I2cstop

End Sub

'sample of reading a byte from EEPROM AT2404
Sub Read_eeprom(byval Adres As Byte , Value As Byte)
I2cstart 'generate start

I2cwbyte 3 'slave adsress
I2cwbyte Adres 'address of EEPROM 'repeated start
I2cwbyte Cmpscommandreg 'address of EEPROM 'repeated start
I2cwbyte Cmpsreadheading 'address of EEPROM 'repeated start
Waitms 10

I2cwbyte 2
I2cwbyte Adres
I2cwbyte Cmpsreadresult 'slave address (read)
I2crbyte Value , Nack 'read byte
I2cstop 'generate stop

End Sub