sdsads

Committer:
pavledjo
Date:
Thu Jul 01 15:47:18 2021 +0000
Revision:
10:37b8f497b698
Parent:
0:38c206f19bb7
promena za dva senzora;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pavledjo 10:37b8f497b698 1 /* Copyright 2016 Rohm Semiconductor
pavledjo 10:37b8f497b698 2
pavledjo 10:37b8f497b698 3 Licensed under the Apache License, Version 2.0 (the "License");
pavledjo 10:37b8f497b698 4 you may not use this file except in compliance with the License.
pavledjo 10:37b8f497b698 5 You may obtain a copy of the License at
pavledjo 10:37b8f497b698 6
pavledjo 10:37b8f497b698 7 http://www.apache.org/licenses/LICENSE-2.0
pavledjo 10:37b8f497b698 8
pavledjo 10:37b8f497b698 9 Unless required by applicable law or agreed to in writing, software
pavledjo 10:37b8f497b698 10 distributed under the License is distributed on an "AS IS" BASIS,
pavledjo 10:37b8f497b698 11 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
pavledjo 10:37b8f497b698 12 See the License for the specific language governing permissions and
pavledjo 10:37b8f497b698 13 limitations under the License.
pavledjo 10:37b8f497b698 14 */
pavledjo 10:37b8f497b698 15 #include "../rohm-sensor-hal/rohm_hal.h" //types, USE_MBED_HARDWARE_I2C, DEBUG_print*, I2C_SDA, I2C_SCL
pavledjo 10:37b8f497b698 16 #ifdef USE_MBED_HARDWARE_I2C
pavledjo 10:37b8f497b698 17 #include "../rohm-sensor-hal/I2CCommon.h" //prototypes
pavledjo 10:37b8f497b698 18 #include "I2C.h" //I2C
pavledjo 10:37b8f497b698 19 #define I2C_WRITE 0
pavledjo 10:37b8f497b698 20 #define I2C_READ 1
pavledjo 10:37b8f497b698 21 I2C i2c1(PB_9, PB_8);
pavledjo 10:37b8f497b698 22 I2C i2c2(PB_11,PB_10);
pavledjo 10:37b8f497b698 23 I2C i2c[2]= {i2c1,i2c2};
pavledjo 10:37b8f497b698 24 //Note that I2CCommonBegin() must be called before using read/write functions.
pavledjo 10:37b8f497b698 25 bool I2CCommonBegin(){
pavledjo 10:37b8f497b698 26 return( true ); //always succeeds
pavledjo 10:37b8f497b698 27 }
pavledjo 10:37b8f497b698 28
pavledjo 10:37b8f497b698 29 /* i2c common functions */
pavledjo 10:37b8f497b698 30 uint8_t read_register(uint8_t sad, uint8_t reg, uint8_t* buf, uint8_t buf_len,int n) {
pavledjo 10:37b8f497b698 31 uint8_t received_bytes;
pavledjo 10:37b8f497b698 32 int read_ok;
pavledjo 10:37b8f497b698 33
pavledjo 10:37b8f497b698 34 i2c[n].write( (int)((sad << 1) | I2C_WRITE), (char*)&reg, (int)1 );
pavledjo 10:37b8f497b698 35 read_ok = i2c[n].read( (int)((sad << 1) | I2C_READ), (char*)buf, (int)buf_len);
MikkoZ 0:38c206f19bb7 36
pavledjo 10:37b8f497b698 37 if( read_ok == 0 ){ //0 == success(ack)
pavledjo 10:37b8f497b698 38 received_bytes = buf_len;
pavledjo 10:37b8f497b698 39 }
pavledjo 10:37b8f497b698 40 else{ //non0 == fail (nack)
pavledjo 10:37b8f497b698 41 received_bytes = 0;
pavledjo 10:37b8f497b698 42 }
pavledjo 10:37b8f497b698 43 return( received_bytes );
pavledjo 10:37b8f497b698 44 }
pavledjo 10:37b8f497b698 45
pavledjo 10:37b8f497b698 46 void write_registers(uint8_t sad, uint8_t reg, uint8_t* data, uint8_t data_len,int n) {
pavledjo 10:37b8f497b698 47 i2c[n].write( (int)((sad << 1) | I2C_WRITE ), (char*)&reg, (int)1, true);
pavledjo 10:37b8f497b698 48 i2c[n].write( (int)((sad << 1) | I2C_WRITE ), (char*)data, (int)data_len, false);
pavledjo 10:37b8f497b698 49 }
pavledjo 10:37b8f497b698 50
pavledjo 10:37b8f497b698 51 void write_register(uint8_t sad, uint8_t reg, uint8_t data,int n) {
pavledjo 10:37b8f497b698 52 char data_to_send[2];
pavledjo 10:37b8f497b698 53
pavledjo 10:37b8f497b698 54 data_to_send[0] = reg;
pavledjo 10:37b8f497b698 55 data_to_send[1] = data;
pavledjo 10:37b8f497b698 56 i2c[n].write( (int)((sad << 1) | I2C_WRITE ), &data_to_send[0], 2);
pavledjo 10:37b8f497b698 57 }
pavledjo 10:37b8f497b698 58
pavledjo 10:37b8f497b698 59 bool change_bits(uint8_t sad, uint8_t reg, uint8_t mask, uint8_t bits,int n){
pavledjo 10:37b8f497b698 60 uint8_t value, read_bytes;
pavledjo 10:37b8f497b698 61 read_bytes = read_register(sad, reg, &value, 1,n);
pavledjo 10:37b8f497b698 62 if( read_bytes != 0 ){
pavledjo 10:37b8f497b698 63 value = value & ~mask;
pavledjo 10:37b8f497b698 64 value = value | (bits & mask);
pavledjo 10:37b8f497b698 65 write_register(sad, reg, value,n);
pavledjo 10:37b8f497b698 66 return true;
pavledjo 10:37b8f497b698 67 }
pavledjo 10:37b8f497b698 68 else{
pavledjo 10:37b8f497b698 69 //DEBUG_printf("Read before change_bits() failed.");
pavledjo 10:37b8f497b698 70 return false;
pavledjo 10:37b8f497b698 71 }
pavledjo 10:37b8f497b698 72 }
pavledjo 10:37b8f497b698 73
pavledjo 10:37b8f497b698 74 #endif
pavledjo 10:37b8f497b698 75
pavledjo 10:37b8f497b698 76