diff options
Diffstat (limited to 'software/main/iic.cpp')
| -rw-r--r-- | software/main/iic.cpp | 174 |
1 files changed, 0 insertions, 174 deletions
diff --git a/software/main/iic.cpp b/software/main/iic.cpp deleted file mode 100644 index ac74818..0000000 --- a/software/main/iic.cpp +++ /dev/null @@ -1,174 +0,0 @@ -/* - * iic.cpp - * - * Created on: 26.02.2022 - * Author: steffen - */ - -#include "iic.h" - -esp_err_t I2C_read(uint8_t slave_addr, uint8_t reg_addr, uint8_t *data, uint8_t len) { - return i2c_master_write_read_device(I2C_MASTER_NUM, slave_addr, ®_addr, 1, data, 2, I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS); -} -esp_err_t I2C_register_write_byte(uint8_t slave_addr, uint8_t reg_addr, uint8_t data) { - uint8_t write_buf[2] = { reg_addr, data }; - return i2c_master_write_to_device(I2C_MASTER_NUM, slave_addr, write_buf, sizeof(write_buf), I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS); -} -esp_err_t I2C_init(void) { - int res1,res2; - int I2C_master_port = I2C_MASTER_NUM; - i2c_config_t I2C_conf = { .mode = I2C_MODE_MASTER, .sda_io_num = I2C_MASTER_SDA_IO, .scl_io_num = I2C_MASTER_SCL_IO, .sda_pullup_en = GPIO_PULLUP_ENABLE, .scl_pullup_en = GPIO_PULLUP_ENABLE, .master { .clk_speed = I2C_MASTER_FREQ_HZ, } }; - i2c_param_config(I2C_master_port, &I2C_conf); - res1=i2c_driver_install(I2C_master_port, I2C_conf.mode, - I2C_MASTER_RX_BUF_DISABLE, I2C_MASTER_TX_BUF_DISABLE, 0); - - I2C_buf[0] = 0x7F; // write data to output port 1 - I2C_buf[1] = 0x00; // write data to output port 1 - res1 = i2c_master_write_to_device(I2C_MASTER_NUM, I2C_PORTEXP1, I2C_buf, 2, I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS); - res2 = i2c_master_write_to_device(I2C_MASTER_NUM, I2C_PORTEXP2, I2C_buf, 2, I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS); - printf("\nMaster wrote %d %d %02X\n", res1,res2,I2C_buf[0]); - - I2C_buf[0] = 0x02; // write data to output port 1 - I2C_buf[1] = 0xFF; // write data to output port 1 - I2C_buf[2] = 0xFF; // write data to output port 1 - I2C_buf[3] = 0x00; // write data to output port 1 - I2C_buf[4] = 0x00; // write data to output port 1 - res1 = i2c_master_write_to_device(I2C_MASTER_NUM, I2C_PORTEXP1, I2C_buf, 5, I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS); - res2 = i2c_master_write_to_device(I2C_MASTER_NUM, I2C_PORTEXP2, I2C_buf, 5, I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS); - printf("\nMaster wrote %d %d %02X\n", res1,res2,I2C_buf[0]); - - I2C_buf[0] = 0x11; // write data to output port 1 - I2C_buf[1] = 0x10; // write data to output port 1 - res1 = i2c_master_write_to_device(I2C_MASTER_NUM, I2C_PORTEXP1, I2C_buf, 2, I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS); - res2 = i2c_master_write_to_device(I2C_MASTER_NUM, I2C_PORTEXP2, I2C_buf, 2, I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS); - printf("\nMaster wrote %d %d %02X\n", res1,res2,I2C_buf[0]); - - - - // printf("\nI2C wrote 0x%02X%02X: %d\n", I2C_buf[0], I2C_buf[1], res1); -// I2C_buf[0] = 0x00; // lese 3 bytes -// res2 = i2c_master_read_from_device(I2C_MASTER_NUM, I2C_PORTEXP1, I2C_buf, 1, I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS); - - - /* - I2C_buf[0] = 0x8C; // write config port 0 with auto inc - I2C_buf[1] = 0xFF; // Port 0 Input - I2C_buf[2] = 0x00; // Port 1 Output - I2C_buf[3] = 0xFF; // Port 2 Input - res = i2c_master_write_to_device(I2C_MASTER_NUM, I2C_PORTEXP1, I2C_buf, 4, I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS); - printf("\nMaster wrote %02X %02X: %d\n", I2C_buf[0], I2C_buf[1], res); - - I2C_buf[0] = 0x05; // write data to output port 1 - I2C_buf[1] = 0x00; - res = i2c_master_write_to_device(I2C_MASTER_NUM, I2C_PORTEXP1, I2C_buf, 2, I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS); - printf("\nMaster wrote %02X %02X: %d\n", I2C_buf[0], I2C_buf[1], res); -*/ - return res1; -} -esp_err_t ADC_init(void) { - int res; - - I2C_buf[0] = 0x01; // -> config register - I2C_buf[1] = 0x40; // 0 100 000 0 A0-GND +-6.144 CONT - I2C_buf[2] = 0x0; // O00 0 0 0 11 8 SPS no comp - res = i2c_master_write_to_device(I2C_MASTER_NUM, ADC_DEFAULT_IIC_ADDR, I2C_buf, 3, I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS); - printf("\nMaster wrote %02X %02X: %d\n", I2C_buf[0], I2C_buf[1], res); - return res; -} -int ADCReadAll(void) { -// for i in range(ADC_CHAN_NUM): -// data=self.bus.read_i2c_block_data(self.addr,REG_RAW_DATA_START+i,2) -// val=data[1]<<8|data[0] -// array.append(val) - int res1=0,res2,i; - I2C_buf[0] = 0x00; // conversion register - I2C_buf[1] = 0x00; - I2C_buf[2] = 0x00; - res1 = i2c_master_write_to_device(I2C_MASTER_NUM, ADC_DEFAULT_IIC_ADDR, I2C_buf, 1, I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS); -// printf("\nI2C wrote 0x%02X: %d\n", I2C_buf[0], res1); - - for (i=0;i<256;i++) { - res2 = i2c_master_read_from_device(I2C_MASTER_NUM, ADC_DEFAULT_IIC_ADDR, I2C_buf, 2, I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS); - printf("I2C read %02x -> ",i); -// for (i=0;i<4;i++) { - printf(" %02X %02X ",I2C_buf[0],I2C_buf[1]); -// } - printf(" %d\n", res2); - } -// printf(" #:S%d R:%d ", res1, res2); - fflush(stdout); - - return res1; -} -int DoorIsClosed(int doormask) { - int res1,res2; - I2C_buf[0] = 0x80; // Setze CMD read port 0 - I2C_buf[1] = 0x00; - I2C_buf[2] = 0x00; - res1 = i2c_master_write_to_device(I2C_MASTER_NUM, I2C_PORTEXP1, I2C_buf, 1, I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS); -// printf("\nI2C wrote 0x%02X%02X: %d\n", I2C_buf[0], I2C_buf[1], res1); - I2C_buf[0] = 0x00; // lese 3 bytes - res2 = i2c_master_read_from_device(I2C_MASTER_NUM, I2C_PORTEXP1, I2C_buf, 3, I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS); -// printf("\nI2C read 0x %02X %02X %02X: %d\n", I2C_buf[0], I2C_buf[1], I2C_buf[2], res2); - printf(" #:S%d R:%d ", res1, res2); - fflush(stdout); - // Open 0x0F = 0000 1111 - // 1 closed 0x0B = 0000 1011 - // 2 closed 0x0E = 0000 1110 - // 3 closed 0x0D = 0000 1101 - // 4 closed 0x07 = 0000 0111 - if ((I2C_buf[LOCKR_PORT] & doormask)==0) { - return 1; - } else { - return 0; - } - -} -int DoorOpen(int door) { - int mask=0; - int maskr=0; - int res; - int to=10; - switch (door) { // we allow only one door to open - case 1: { - mask = LOCK1; - maskr= LOCK1R; - } break; - case 2: { - mask = LOCK2; - maskr= LOCK2R; - } break; - case 3: { - mask = LOCK3; - maskr= LOCK3R; - } break; - default: { - mask = LOCK4; - maskr= LOCK4R; - } - } - - I2C_buf[0] = 0x05; - I2C_buf[1] = mask; - printf("\nMASTER wrote %02X %02X\n", I2C_buf[0], I2C_buf[1]);fflush(stdout); - res = i2c_master_write_to_device(I2C_MASTER_NUM, I2C_PORTEXP1, I2C_buf, 2, I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS); - printf("\nI2C wrote 0x%02X%02X: %d\n", I2C_buf[0], I2C_buf[1], res);fflush(stdout); - while (to>0) { - if (DoorIsClosed(maskr)==0) { - to=0; - } else { - to--; - vTaskDelay(1); - } - } - I2C_buf[0] = 0x05; - I2C_buf[1] = 0x00; - printf("\nMASTER wrote 0x%02X%02X\n", I2C_buf[0], I2C_buf[1]);fflush(stdout); - res = i2c_master_write_to_device(I2C_MASTER_NUM, I2C_PORTEXP1, I2C_buf, 2, I2C_MASTER_TIMEOUT_MS / portTICK_PERIOD_MS); - printf("\nI2C wrote 0x%02X%02X: %d\n", I2C_buf[0], I2C_buf[1], res); - - return 0; -} - - - |
