Array mit 6144 Werten in I2C-Devis schreiben

andrax
2022-08-11
2022-08-24
  • andrax

    andrax - 2022-08-11

    Hallo Leute,

    ich muss ein Array mit 6144 Config-daten in mein I2c Device schreiben.
    Dazu benutze ich die Funktion _pMaster^.write

    Ich habe mir hierzu eine Funktion geschrieben:

    METHOD checkwriteregister : INT
    VAR_INPUT
        usiRegister:USINT;
        pbyBuffer:POINTER TO BYTE;
        nBufferLen:UDINT;
    END_VAR
    VAR
        byteswrite:DINT;
    END_VAR
    
    IF _pMaster^.write(usiRegister, pbyBuffer, nBufferLen) <> UDINT_TO_DINT(nBufferLen) AND NOT debugSlave  THEN //write not suchsseccfull
        goError(ReadWrite := TRUE);
        checkwriteregister := ERROR_RET_VAL;
    ELSE
        checkwriteregister := READ_SUCCSESSFULL;
    END_IF
    

    Aufrufen tue ich die Funktion wie folgt:

    Case _devicestatus OF
    ...
        50:
            IF checkwriteregister(16#5E, ADR(bma456_config),6144) < 0 THEN
                RETURN;
            ELSE
                _devicestatus:=60;
            END_IF
        60:
    

    Leider werden die Daten aus irgendeinem Grund nicht geschrieben und ich komme nicht in den Schritt 60:

    Kann jemand helfen?

    Gruß

    Andre

     
  • andrax

    andrax - 2022-08-24

    Hallo zusammen,

    ich konnte das Problem lösen und der Sensor läuft jetzt.
    Ich erreiche zwar nur eine Samplingrate von 250Hz, aber immerhin.

    Grüße

     
  • andrax

    andrax - 2022-08-24

    Doppelpost

     

    Last edit: andrax 2022-08-24

Log in to post a comment.