-
Danke fuer ihre Hilfe, hier ist das code was ich ausprobiert habe :
DEFINE OSC 20
DEFINE HSER_BAUD 38400 'Baud = 38400
DEFINE I2C_SLOW 1
DPIN var PORTD.2 ' I2C data pin
CPIN var PORTD.1 ' I2C clock pin
B0 var byte
B1 var byte
B2 var byte
addr var byte
addr=1
loop:
I2CWRITE DPIN,CPIN,$C0, addr
pause 10
I2CREAD DPIN,CPIN,$C0,[B1]
pause 10
Hserout [dec B1," "]
pause 500
Hserout [13,10] ' Print CR LF
Goto loop
Ich habe auch mal mit $C1 im I2CREAD commando probiert aber nix , immer das selbe output : 08 !!?????
-
Hallo,
das sieht so aus, dass immer das Register 0 (Version) gelesen wird. Das I2CWRITE würde ich weglassen, dafür
I2CREAD DPIN,CPIN,$C0,addr,[B1]
schreiben. Hoffe mal das es geht.
BTW, es gibt dutzende PICBASIC Versionen, alle mit verschieden I2C-Zugriffen. :?
HTH und Viele Grüße
Jörg
-
Hallo,
Danke für ihre Hilfe....leider geht es nicht
I2CREAD DPIN,CPIN,$C0,addr,[B1] liefert mir immer nur $20 !!??
Ich habe jetzt fast alle Kombinationen ausprobiert und werde einfach nicht schlau dabei... ( bin vielleicht beklopft !!) Ich werde mal weiter mit dem PWM Ausgang arbeiten...
Michel
-
Hallo Michel,
zu dem Thema, habe ich das gleiche Ausgangsprogramm in einem Thread eines italienischen Forums gefunden:
http://www.xar.it/mars/topic.asp?TOP...rkIII+e+CMPS03
In einem Posting kam dann übrigens genau die von mir vorgeschlagene Zeile, allerdings bin ich des italienischen nicht mächtig, deshalb verstehe ich die Begründung nicht, warum es nicht ging, evtl. hängt das mit dem I2C Bus Timing zusammen (Einstellung des 100kHz Bustakts bei 20MHz CPU?).
Jedenfalls gibt es auch ein angeblich funktionstüchtiges Programm (für 4MHz Clock), was ich hier mal kopiere:
http://on1djj.rug.ac.be/Grasmaaier/Compass.bas
////////////////////////
Clear
Define OSC 4 ' Set Xtal Frequency
Red_LED Var PortB.1 ' Assign the green LED to this pin
Green_LED Var PortB.2 ' Assign the red LED to this pin
' IR_Sensor Var PortB.4 ' Assign the IR Sensor to this pin
SCL VAR PortB.0 ' I²C Clock
SDA VAR PORTB.7 ' I²C Data
Compass CON $C0 ' I²C adres van compas
Reg1 CON 1 ' Adres register 1 : Byte
Reg2 CON 2 ' Begin adres register 2 : Word
RegCalibrate CON 15 ' Calibrate adres (write 255 to caibrate)
BearingReg VAR Word
Teller VAR Byte
Pause 500
High Red_LED
Pause 100
Low Red_LED
High Green_LED
Pause 100
Low Green_LED
'PIN mode with 4-bit
'Set LCD Data port
DEFINE LCD_DREG PORTA
'Set starting Data bit (0 or 4) if 4-bit bus
DEFINE LCD_DBIT 0
'Set REGISTER Select port
DEFINE LCD_RSREG PORTB
' Set LCD Register Select bit
DEFINE LCD_RSBIT 5
' Set LCD Enable port
DEFINE LCD_EREG PORTB
' Set LCD Enable bit
DEFINE LCD_EBIT 6
' Set LCD bus size (4 or 8 bits)
DEFINE LCD_BITS 4
' Set number of lines on LCD
DEFINE LCD_LINES 2
@ bcf LCDinitFlag
Symbol Cmd = $FE
Symbol ClearLCD = 1
Symbol Home = 2
Symbol Line2 = $C0
Symbol CursorOff = $0C
Symbol LineOn = $0E
Symbol BlinkOn = $0F
Symbol Left = $10
Symbol Right = $14
Symbol Procent = $25
Symbol ShiftLeft = $08
I2CREAD SDA,SCL,Compass,0,[teller] ' Reg0 software version CMPS03
LCDOUT Cmd, ClearLCD, "Compass TEST v", dec teller
Loop:
I2CREAD SDA,SCL,Compass,Reg2,[BearingReg] ' 16 bit
'LCDOUT Cmd, Line2, dec BearingReg dig 3, dec BearingReg dig 2, dec BearingReg dig 1, ".", dec BearingReg dig 0
LCDOUT Cmd, Line2, dec3 BearingReg/10, ".", dec1 BearingReg//10, $DF ' 000.0° - 359.9°
' I2CREAD SDA,SCL,Compass,Reg1,[Teller] ' 8 bit
' LCDOUT Cmd, Line2, dec teller dig 2, dec teller dig 1, dec teller dig 0
Pause 100
Goto Loop
Calibrate:
For Teller = 1 to 4
LCDOUT Cmd, ClearLCD, "kwadrant", dec Teller
' Wacht op gebruiker (IR-remote)
I2CWRITE SDA,SCL,Compass,RegCalibrate,[255]
Next
/////////////////////
Hoffe das hilft jetzt wirklich, ein schönes Weihnachtsfest und
Viele Grüße
Jörg
-
Hi,
na ist da nun schonn was rausgekommen mit den I2C?
Bei mir kommen zwar Variable werte zwischen 2400 und 3200 aber
damit kann i nix genaues anfangen da es net das ist was es sein sollte.
Also wenn ich nun HBUS Adresse Register mach geht nix auch wenn ich danach nochmal die zweite Adresse Sende also Nummer ein 192 Register 2 as Word und dann nochmal die 193 nachsende immer das gleiche!
Hat es jemand mit Proton+ geschafft?
by Ulli