- Labornetzteil AliExpress         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 15 von 15

Thema: CMPS03 und PicBasic

  1. #11
    Gast
    Anzeige

    LiFePo4 Akku selber bauen - Video
    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 !!?????

  2. #12
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.11.2003
    Ort
    Dresden
    Alter
    61
    Beiträge
    409
    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

  3. #13
    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

  4. #14
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.11.2003
    Ort
    Dresden
    Alter
    61
    Beiträge
    409
    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

  5. #15
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.08.2004
    Beiträge
    378
    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

Seite 2 von 2 ErsteErste 12

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test