From b982a132ae1746bacec93de4e04cdc735d03b62f Mon Sep 17 00:00:00 2001 From: thanhpn Date: Sun, 23 Apr 2017 15:35:23 +0700 Subject: [PATCH] add --- examples/pcf8591/Makefile | 3 +++ examples/pcf8591/main.c | 43 +++++++++++++++++++++++++++++++++++++ extras/pcf8591/component.mk | 6 ++++++ extras/pcf8591/pcf8591.c | 15 +++++++++++++ extras/pcf8591/pcf8591.h | 31 ++++++++++++++++++++++++++ 5 files changed, 98 insertions(+) create mode 100644 examples/pcf8591/Makefile create mode 100644 examples/pcf8591/main.c create mode 100644 extras/pcf8591/component.mk create mode 100644 extras/pcf8591/pcf8591.c create mode 100644 extras/pcf8591/pcf8591.h diff --git a/examples/pcf8591/Makefile b/examples/pcf8591/Makefile new file mode 100644 index 0000000..f9d5768 --- /dev/null +++ b/examples/pcf8591/Makefile @@ -0,0 +1,3 @@ +PROGRAM = pcf8591 +EXTRA_COMPONENTS = extras/i2c extras/pcf8591 +include ../../common.mk diff --git a/examples/pcf8591/main.c b/examples/pcf8591/main.c new file mode 100644 index 0000000..4b1e7a6 --- /dev/null +++ b/examples/pcf8591/main.c @@ -0,0 +1,43 @@ +/* + * Example of using PCA9685 PWM driver + * + * Part of esp-open-rtos + * Copyright (C) 2016 Ruslan V. Uss + * Public domain + */ +#include +#include +#include +#include +#include + +#define ADDR 0x40 + +#define SCL_PIN 5 +#define SDA_PIN 4 + +#define PWM_FREQ 500 + +void user_init(void) +{ + uart_set_baud(0, 115200); + printf("SDK version:%s\n", sdk_system_get_sdk_version()); + + i2c_init(SCL_PIN, SDA_PIN); + + pca9685_init(ADDR); + + pca9685_set_pwm_frequency(ADDR, 1000); + printf("Freq 1000Hz, real %d\n", pca9685_get_pwm_frequency(ADDR)); + + uint16_t val = 0; + while (true) + { + printf("Set ch0 to %d, ch4 to %d\n", val, 4096 - val); + pca9685_set_pwm_value(ADDR, 0, val); + pca9685_set_pwm_value(ADDR, 4, 4096 - val); + + if (val++ == 4096) + val = 0; + } +} diff --git a/extras/pcf8591/component.mk b/extras/pcf8591/component.mk new file mode 100644 index 0000000..5e09035 --- /dev/null +++ b/extras/pcf8591/component.mk @@ -0,0 +1,6 @@ +# Component makefile for extras/pcf8591 + +INC_DIRS += $(pcf8591_ROOT).. +pcf8591_SRC_DIR = $(pcf8591_ROOT) + +$(eval $(call component_compile_rules,pcf8591)) diff --git a/extras/pcf8591/pcf8591.c b/extras/pcf8591/pcf8591.c new file mode 100644 index 0000000..c9b45f7 --- /dev/null +++ b/extras/pcf8591/pcf8591.c @@ -0,0 +1,15 @@ +#include +#include +#include + +#include +#include "pcf8591.h" + +static uint8_t mAddress = PCF8591_DEFAULT_ADDRESS; +static float mVoltage = 3.3f; + +void +pcf8591_set_address(uint8_t addr) +{ + // +} diff --git a/extras/pcf8591/pcf8591.h b/extras/pcf8591/pcf8591.h new file mode 100644 index 0000000..2cfbfde --- /dev/null +++ b/extras/pcf8591/pcf8591.h @@ -0,0 +1,31 @@ +/** + * Driver for 8-bit analog-to-digital conversion and + * an 8-bit digital-to-analog conversion PCF8591 + * + * Part of esp-open-rtos + * Copyright (C) 2017 Pham Ngoc Thanh + * BSD Licensed as described in the file LICENSE + */ +#ifndef _EXTRAS_PCF8591_H_ +#define _EXTRAS_PCF8591_H_ + +#ifdef __cplusplus +extern "C" +{ +#endif + +#define PCF8591_DEFAULT_ADDRESS 0x90 + +/** + * Set new sensor address for switching another. + * @param[in] addr Pointer to device + * @return none + */ +void pcf8591_set_address(uint8_t addr); + + +#ifdef __cplusplus +} +#endif + +#endif /* _EXTRAS_PCF8591_H_ */