commit edb98ecff6d4367953ef23e0b3ba57e56495a6f7 Author: 许晟昊 <545403892@qq.com> Date: Wed Dec 27 08:14:55 2023 +0800 init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..89cc49c --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +.pio +.vscode/.browse.c_cpp.db* +.vscode/c_cpp_properties.json +.vscode/launch.json +.vscode/ipch diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..080e70d --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,10 @@ +{ + // See http://go.microsoft.com/fwlink/?LinkId=827846 + // for the documentation about the extensions.json format + "recommendations": [ + "platformio.platformio-ide" + ], + "unwantedRecommendations": [ + "ms-vscode.cpptools-extension-pack" + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..853162e --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,293 @@ +{ + "C_Cpp_Runner.cCompilerPath": "C:/Users/xushenghao/.platformio/packages/toolchain-xtensa-esp32/bin/xtensa-esp32-elf-gcc.exe", + "C_Cpp_Runner.cppCompilerPath": "C:/Users/xushenghao/.platformio/packages/toolchain-xtensa-esp32/bin/xtensa-esp32-elf-g++.exe", + "C_Cpp_Runner.debuggerPath": "C:/Users/xushenghao/.platformio/packages/toolchain-xtensa-esp32/bin/xtensa-esp32-elf-gdb.exe", + "C_Cpp_Runner.cStandard": "gnu99", + "C_Cpp_Runner.cppStandard": "gnu++11", + "C_Cpp_Runner.msvcBatchPath": "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build/vcvarsall.bat", + "C_Cpp_Runner.useMsvc": false, + "C_Cpp_Runner.warnings": [ + "-Wall", + "-Wextra", + "-Wpedantic", + "-Wshadow", + "-Wformat=2", + "-Wcast-align", + "-Wconversion", + "-Wsign-conversion", + "-Wnull-dereference" + ], + "C_Cpp_Runner.msvcWarnings": [ + "/W4", + "/permissive-", + "/w14242", + "/w14287", + "/w14296", + "/w14311", + "/w14826", + "/w44062", + "/w44242", + "/w14905", + "/w14906", + "/w14263", + "/w44265", + "/w14928" + ], + "C_Cpp_Runner.enableWarnings": true, + "C_Cpp_Runner.warningsAsError": false, + "C_Cpp_Runner.compilerArgs": [], + "C_Cpp_Runner.linkerArgs": [], + "C_Cpp_Runner.includePaths": [ + "C:/Users/xushenghao/Documents/PlatformIO/Projects/TI-ADS1256/include", + "C:/Users/xushenghao/Documents/PlatformIO/Projects/TI-ADS1256/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/newlib/platform_include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/freertos/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/freertos/include/esp_additions/freertos", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/freertos/port/xtensa/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/freertos/include/esp_additions", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/esp32", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/port/esp32", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/port/esp32/private_include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/heap/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/log/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/lwip/include/apps", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/lwip/include/apps/sntp", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/lwip/lwip/src/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/lwip/port/esp32/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/lwip/port/esp32/include/arch", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/soc/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/soc/esp32", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/soc/esp32/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/hal/esp32/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/hal/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/hal/platform_port/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_rom/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_rom/include/esp32", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_rom/esp32", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_common/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_system/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_system/port/soc", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_system/port/public_compat", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp32/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/xtensa/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/xtensa/esp32/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/driver/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/driver/esp32/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_pm/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_ringbuf/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/efuse/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/efuse/esp32/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/vfs/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_wifi/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_event/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_netif/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_eth/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/tcpip_adapter/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_phy/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_phy/esp32/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_ipc/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/app_trace/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_timer/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/mbedtls/port/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/mbedtls/mbedtls/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/mbedtls/esp_crt_bundle/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/app_update/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/spi_flash/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bootloader_support/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/nvs_flash/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/pthread/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_gdbstub/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_gdbstub/xtensa", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_gdbstub/esp32", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espcoredump/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espcoredump/include/port/xtensa", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/wpa_supplicant/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/wpa_supplicant/port/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/wpa_supplicant/esp_supplicant/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/ieee802154/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/console", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/asio/asio/asio/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/asio/port/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/common/osi/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/include/esp32/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/common/api/include/api", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/common/btc/profile/esp/blufi/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/common/btc/profile/esp/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/host/bluedroid/api/include/api", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_common/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_common/tinycrypt/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_core", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_core/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_core/storage", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/btc/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_models/common/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_models/client/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_models/server/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/api/core/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/api/models/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/api", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/cbor/port/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/unity/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/unity/unity/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/cmock/CMock/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/coap/port/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/coap/libcoap/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/nghttp/port/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/nghttp/nghttp2/lib/includes", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-tls", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-tls/esp-tls-crypto", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_adc_cal/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hid/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/tcp_transport/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_http_client/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_http_server/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_https_ota/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_https_server/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_lcd/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_lcd/interface", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/protobuf-c/protobuf-c", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/protocomm/include/common", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/protocomm/include/security", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/protocomm/include/transports", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/mdns/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_local_ctrl/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/sdmmc/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_serial_slave_link/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_websocket_client/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/expat/expat/expat/lib", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/expat/port/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/wear_levelling/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/fatfs/diskio", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/fatfs/vfs", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/fatfs/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/freemodbus/freemodbus/common/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/idf_test/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/idf_test/include/esp32", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/jsmn/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/json/cJSON", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/libsodium/libsodium/src/libsodium/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/libsodium/port_include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/mqtt/esp-mqtt/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/openssl/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/perfmon/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/spiffs/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/ulp/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/wifi_provisioning/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/rmaker_common/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_diagnostics/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/rtc_store/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_insights/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/json_parser/upstream/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/json_parser/upstream", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/json_generator/upstream", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_schedule/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp_secure_cert_mgr/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_rainmaker/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/gpio_button/button/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/qrcode/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/ws2812_led", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_littlefs/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/tool", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/typedef", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/image", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/math", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/nn", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/layer", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/detect", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/model_zoo", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-sr/src/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-sr/esp-tts/esp_tts_chinese/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-sr/include/esp32", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp32-camera/driver/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp32-camera/conversions/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/dotprod/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/support/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/hann/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/blackman/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/blackman_harris/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/blackman_nuttall/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/nuttall/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/flat_top/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/iir/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/fir/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/add/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/sub/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/mul/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/addc/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/mulc/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/sqrt/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/matrix/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/fft/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/dct/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/conv/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/common/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/kalman/ekf/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/kalman/ekf_imu13states/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/fb_gfx/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/qio_qspi/include", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/cores/esp32", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/variants/uPesy_esp32_wroom_devkit", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/ArduinoOTA/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/AsyncUDP/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/BLE/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/BluetoothSerial/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/DNSServer/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/EEPROM/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/ESP32/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/ESPmDNS/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/Ethernet/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/FFat/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/FS/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/HTTPClient/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/HTTPUpdate/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/HTTPUpdateServer/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/I2S/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/Insights/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/LittleFS/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/NetBIOS/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/Preferences/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/RainMaker/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/SD/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/SD_MMC/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/SPI/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/SPIFFS/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/SimpleBLE/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/Ticker/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/USB/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/Update/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/WebServer/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/WiFi/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/WiFiClientSecure/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/WiFiProv/src", + "C:/Users/xushenghao/.platformio/packages/framework-arduinoespressif32/libraries/Wire/src", + "" + ], + "C_Cpp_Runner.includeSearch": [ + "*", + "**/*" + ], + "C_Cpp_Runner.excludeSearch": [ + "**/build", + "**/build/**", + "**/.*", + "**/.*/**", + "**/.vscode", + "**/.vscode/**" + ], + "C_Cpp_Runner.useAddressSanitizer": false, + "C_Cpp_Runner.useUndefinedSanitizer": false, + "C_Cpp_Runner.useLeakSanitizer": false, + "C_Cpp_Runner.showCompilationTime": false, + "C_Cpp_Runner.useLinkTimeOptimization": false, + "C_Cpp_Runner.msvcSecureNoWarnings": false, + "idf.portWin": "COM5", + "C_Cpp.errorSquiggles": "disabled", + "files.associations": { + "algorithm": "cpp" + } +} \ No newline at end of file diff --git a/include/README b/include/README new file mode 100644 index 0000000..194dcd4 --- /dev/null +++ b/include/README @@ -0,0 +1,39 @@ + +This directory is intended for project header files. + +A header file is a file containing C declarations and macro definitions +to be shared between several project source files. You request the use of a +header file in your project source file (C, C++, etc) located in `src` folder +by including it, with the C preprocessing directive `#include'. + +```src/main.c + +#include "header.h" + +int main (void) +{ + ... +} +``` + +Including a header file produces the same results as copying the header file +into each source file that needs it. Such copying would be time-consuming +and error-prone. With a header file, the related declarations appear +in only one place. If they need to be changed, they can be changed in one +place, and programs that include the header file will automatically use the +new version when next recompiled. The header file eliminates the labor of +finding and changing all the copies as well as the risk that a failure to +find one copy will result in inconsistencies within a program. + +In C, the usual convention is to give header files names that end with `.h'. +It is most portable to use only letters, digits, dashes, and underscores in +header file names, and at most one dot. + +Read more about using header files in official GCC documentation: + +* Include Syntax +* Include Operation +* Once-Only Headers +* Computed Includes + +https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html diff --git a/lib/ADS1256.cpp b/lib/ADS1256.cpp new file mode 100644 index 0000000..713be12 --- /dev/null +++ b/lib/ADS1256.cpp @@ -0,0 +1,289 @@ +/* + ADS1256.h - Arduino Library for communication with Texas Instrument ADS1256 ADC + Written by Adien Akhmad, August 2015 + Modfified Jan 2019 by Axel Sepulveda for ATMEGA328 +*/ + +#include "ADS1256.h" +#include "Arduino.h" +#include "SPI.h" + +ADS1256::ADS1256(float clockspdMhz, float vref, bool useResetPin) +{ + // Set DRDY as input + pinMode(pinDRDY, INPUT); + // Set CS as output + pinMode(pinCS, OUTPUT); + + if (useResetPin) + { + // set RESETPIN as output + pinMode(pinRST, OUTPUT); + // pull RESETPIN high + pinMode(pinRST, HIGH); + } + + // Voltage Reference + _VREF = vref; + + // Default conversion factor + _conversionFactor = 1.0; + + // Start SPI on a quarter of ADC clock speed +} + +void ADS1256::writeRegister(unsigned char reg, unsigned char wdata) +{ + CSON(); + SPI.transfer(ADS1256_CMD_WREG | reg); // opcode1 Write registers starting from reg + SPI.transfer(0); // opcode2 Write 1+0 registers + SPI.transfer(wdata); // write wdata + delayMicroseconds(1); + CSOFF(); +} + +unsigned char ADS1256::readRegister(unsigned char reg) +{ + unsigned char readValue; + CSON(); + SPI.transfer(ADS1256_CMD_RREG | reg); // opcode1 read registers starting from reg + SPI.transfer(0); // opcode2 read 1+0 registers + delayMicroseconds(7); // t6 delay (4*tCLKIN 50*0.13 = 6.5 us) + readValue = SPI.transfer(0); // read registers + delayMicroseconds(1); // t11 delay (4*tCLKIN 4*0.13 = 0.52 us) + CSOFF(); + return readValue; +} + +void ADS1256::sendCommand(unsigned char reg) +{ + CSON(); + waitDRDY(); + SPI.transfer(reg); + delayMicroseconds(1); // t11 delay (4*tCLKIN 4*0.13 = 0.52 us) + CSOFF(); +} + +void ADS1256::setConversionFactor(float val) { _conversionFactor = val; } + +void ADS1256::readTest() +{ + unsigned char _highByte, _midByte, _lowByte; + CSON(); + SPI.transfer(ADS1256_CMD_RDATA); + delayMicroseconds(7); // t6 delay (4*tCLKIN 50*0.13 = 6.5 us) + + _highByte = SPI.transfer(ADS1256_CMD_WAKEUP); + _midByte = SPI.transfer(ADS1256_CMD_WAKEUP); + _lowByte = SPI.transfer(ADS1256_CMD_WAKEUP); + + CSOFF(); +} + +float ADS1256::readCurrentChannel() +{ + CSON(); + SPI.transfer(ADS1256_CMD_RDATA); + delayMicroseconds(7); // t6 delay (4*tCLKIN 50*0.13 = 6.5 us) + float adsCode = read_float32(); + CSOFF(); + return ((adsCode / 0x7FFFFF) * ((2 * _VREF) / (float)_pga)) * + _conversionFactor; +} + +// Reads raw ADC data, as 32bit int +long ADS1256::readCurrentChannelRaw() +{ + CSON(); + SPI.transfer(ADS1256_CMD_RDATA); + delayMicroseconds(7); // t6 delay (4*tCLKIN 50*0.13 = 6.5 us) + long adsCode = read_int32(); + CSOFF(); + return adsCode; +} + +// Call this ONLY after ADS1256_CMD_RDATA command +unsigned long ADS1256::read_uint24() +{ + unsigned char _highByte, _midByte, _lowByte; + unsigned long value; + + _highByte = SPI.transfer(0); + _midByte = SPI.transfer(0); + _lowByte = SPI.transfer(0); + + // Combine all 3-bytes to 24-bit data using byte shifting. + value = ((long)_highByte << 16) + ((long)_midByte << 8) + ((long)_lowByte); + return value; +} + +// Call this ONLY after ADS1256_CMD_RDATA command +// Convert the signed 24bit stored in an unsigned 32bit to a signed 32bit +long ADS1256::read_int32() +{ + long value = read_uint24(); + + if (value & 0x00800000) + { // if the 24 bit value is negative reflect it to 32bit + value |= 0xff000000; + } + + return value; +} + +// Call this ONLY after ADS1256_CMD_RDATA command +// Cast as a float +float ADS1256::read_float32() +{ + long value = read_int32(); + return (float)value; +} + +// Channel switching for single ended mode. Negative input channel are +// automatically set to AINCOM +void ADS1256::setChannel(byte channel) { setChannel(channel, -1); } + +// Channel Switching for differential mode. Use -1 to set input channel to +// AINCOM +void ADS1256::setChannel(byte AIN_P, byte AIN_N) +{ + unsigned char MUX_CHANNEL; + unsigned char MUXP; + unsigned char MUXN; + + switch (AIN_P) + { + case 0: + MUXP = ADS1256_MUXP_AIN0; + break; + case 1: + MUXP = ADS1256_MUXP_AIN1; + break; + case 2: + MUXP = ADS1256_MUXP_AIN2; + break; + case 3: + MUXP = ADS1256_MUXP_AIN3; + break; + case 4: + MUXP = ADS1256_MUXP_AIN4; + break; + case 5: + MUXP = ADS1256_MUXP_AIN5; + break; + case 6: + MUXP = ADS1256_MUXP_AIN6; + break; + case 7: + MUXP = ADS1256_MUXP_AIN7; + break; + default: + MUXP = ADS1256_MUXP_AINCOM; + } + + switch (AIN_N) + { + case 0: + MUXN = ADS1256_MUXN_AIN0; + break; + case 1: + MUXN = ADS1256_MUXN_AIN1; + break; + case 2: + MUXN = ADS1256_MUXN_AIN2; + break; + case 3: + MUXN = ADS1256_MUXN_AIN3; + break; + case 4: + MUXN = ADS1256_MUXN_AIN4; + break; + case 5: + MUXN = ADS1256_MUXN_AIN5; + break; + case 6: + MUXN = ADS1256_MUXN_AIN6; + break; + case 7: + MUXN = ADS1256_MUXN_AIN7; + break; + default: + MUXN = ADS1256_MUXN_AINCOM; + } + + MUX_CHANNEL = MUXP | MUXN; + + CSON(); + writeRegister(ADS1256_RADD_MUX, MUX_CHANNEL); + sendCommand(ADS1256_CMD_SYNC); + sendCommand(ADS1256_CMD_WAKEUP); + CSOFF(); +} + +/* +Init chip with set datarate and gain and perform self calibration +*/ +void ADS1256::begin(unsigned char drate, unsigned char gain, bool buffenable) +{ + _pga = 1 << gain; + sendCommand(ADS1256_CMD_SDATAC); // send out ADS1256_CMD_SDATAC command to stop continous reading mode. + writeRegister(ADS1256_RADD_DRATE, drate); // write data rate register + uint8_t bytemask = B00000111; + uint8_t adcon = readRegister(ADS1256_RADD_ADCON); + uint8_t byte2send = (adcon & ~bytemask) | gain; + writeRegister(ADS1256_RADD_ADCON, byte2send); + if (buffenable) + { + uint8_t status = readRegister(ADS1256_RADD_STATUS); + bitSet(status, 1); + writeRegister(ADS1256_RADD_STATUS, status); + } + sendCommand(ADS1256_CMD_SELFCAL); // perform self calibration + + waitDRDY(); + ; // wait ADS1256 to settle after self calibration +} + +/* +Init chip with default datarate and gain and perform self calibration +*/ +void ADS1256::begin() +{ + sendCommand(ADS1256_CMD_SDATAC); // send out ADS1256_CMD_SDATAC command to stop continous reading mode. + uint8_t status = readRegister(ADS1256_RADD_STATUS); + sendCommand(ADS1256_CMD_SELFCAL); // perform self calibration + waitDRDY(); // wait ADS1256 to settle after self calibration +} + +/* +Reads and returns STATUS register +*/ +uint8_t ADS1256::getStatus() +{ + sendCommand(ADS1256_CMD_SDATAC); // send out ADS1256_CMD_SDATAC command to stop continous reading mode. + return readRegister(ADS1256_RADD_STATUS); +} + +void ADS1256::CSON() +{ + // PORT_CS &= ~(1 << PINDEX_CS); + digitalWrite(pinCS, LOW); +} // digitalWrite(_CS, LOW); } + +void ADS1256::CSOFF() +{ + digitalWrite(pinCS, HIGH); + // PORT_CS |= (1 << PINDEX_CS); +} // digitalWrite(_CS, HIGH); } + +void ADS1256::waitDRDY() +{ + // while (PIN_DRDY & (1 << PINDEX_DRDY)); + while (digitalRead(pinDRDY)) + ; +} + +boolean ADS1256::isDRDY() +{ + return !digitalRead(pinDRDY); +} diff --git a/lib/ADS1256.h b/lib/ADS1256.h new file mode 100644 index 0000000..9deef34 --- /dev/null +++ b/lib/ADS1256.h @@ -0,0 +1,156 @@ +/* + ADS1256.h - Arduino Library for communication with Texas Instrument ADS1256 ADC + Written by Adien Akhmad, August 2015 + Modifified Jan 2019 by Axel Sepulveda for ATMEGA328 +*/ + +#ifndef ADS1256_h +#define ADS1256_h + +#if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega168__) + + #define pinDRDY 9 + #define pinRST 8 + #define pinCS 10 + +#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) + + #define pinDRDY 49 + #define pinRST 48 + #define pinCS 53 + + // Contributions are welcome +#elif defined(ARDUINO_ARCH_ESP8266) +//https://esp8266-shop.com/esp8266-guide/esp8266-nodemcu-pinout/ + #define pinDRDY D0 + #define pinRST D1 + #define pinCS D8 // D8 Hw Cs in esp8266 + +#elif defined(ARDUINO_ARCH_ESP32) + // Contributions are welcome + //https://circuits4you.com/wp-content/uploads/2018/12/ESP32-Pinout.jpg + #define pinDRDY 17 + #define pinRST 16 + #define pinCS 5 // +#else + // Contributions are welcome + #warning "Oops! Pins for your board are not defined: pinDRDY, pinRST, pinCS" +#endif + +// ADS1256 Register address +#define ADS1256_RADD_STATUS 0x00 +#define ADS1256_RADD_MUX 0x01 +#define ADS1256_RADD_ADCON 0x02 +#define ADS1256_RADD_DRATE 0x03 +#define ADS1256_RADD_IO 0x04 +#define ADS1256_RADD_OFC0 0x05 +#define ADS1256_RADD_OFC1 0x06 +#define ADS1256_RADD_OFC2 0x07 +#define ADS1256_RADD_FSC0 0x08 +#define ADS1256_RADD_FSC1 0x09 +#define ADS1256_RADD_FSC2 0x0A + +// ADS1256 Command +#define ADS1256_CMD_WAKEUP 0x00 +#define ADS1256_CMD_RDATA 0x01 +#define ADS1256_CMD_RDATAC 0x03 +#define ADS1256_CMD_SDATAC 0x0f +#define ADS1256_CMD_RREG 0x10 +#define ADS1256_CMD_WREG 0x50 +#define ADS1256_CMD_SELFCAL 0xF0 +#define ADS1256_CMD_SELFOCAL 0xF1 +#define ADS1256_CMD_SELFGCAL 0xF2 +#define ADS1256_CMD_SYSOCAL 0xF3 +#define ADS1256_CMD_SYSGCAL 0xF4 +#define ADS1256_CMD_SYNC 0xFC +#define ADS1256_CMD_STANDBY 0xFD +#define ADS1256_CMD_RESET 0xFE + +// define multiplexer codes +#define ADS1256_MUXP_AIN0 0x00 +#define ADS1256_MUXP_AIN1 0x10 +#define ADS1256_MUXP_AIN2 0x20 +#define ADS1256_MUXP_AIN3 0x30 +#define ADS1256_MUXP_AIN4 0x40 +#define ADS1256_MUXP_AIN5 0x50 +#define ADS1256_MUXP_AIN6 0x60 +#define ADS1256_MUXP_AIN7 0x70 +#define ADS1256_MUXP_AINCOM 0x80 + +#define ADS1256_MUXN_AIN0 0x00 +#define ADS1256_MUXN_AIN1 0x01 +#define ADS1256_MUXN_AIN2 0x02 +#define ADS1256_MUXN_AIN3 0x03 +#define ADS1256_MUXN_AIN4 0x04 +#define ADS1256_MUXN_AIN5 0x05 +#define ADS1256_MUXN_AIN6 0x06 +#define ADS1256_MUXN_AIN7 0x07 +#define ADS1256_MUXN_AINCOM 0x08 + +// define gain codes +#define ADS1256_GAIN_1 0x00 +#define ADS1256_GAIN_2 0x01 +#define ADS1256_GAIN_4 0x02 +#define ADS1256_GAIN_8 0x03 +#define ADS1256_GAIN_16 0x04 +#define ADS1256_GAIN_32 0x05 +#define ADS1256_GAIN_64 0x06 + +// define drate codes +/* + NOTE : Data Rate vary depending on crystal frequency. Data rates + listed below assumes the crystal frequency is 7.68Mhz + for other frequency consult the datasheet. +*/ + +#define ADS1256_DRATE_30000SPS 0xF0 +#define ADS1256_DRATE_15000SPS 0xE0 +#define ADS1256_DRATE_7500SPS 0xD0 +#define ADS1256_DRATE_3750SPS 0xC0 +#define ADS1256_DRATE_2000SPS 0xB0 +#define ADS1256_DRATE_1000SPS 0xA1 +#define ADS1256_DRATE_500SPS 0x92 +#define ADS1256_DRATE_100SPS 0x82 +#define ADS1256_DRATE_60SPS 0x72 +#define ADS1256_DRATE_50SPS 0x63 +#define ADS1256_DRATE_30SPS 0x53 +#define ADS1256_DRATE_25SPS 0x43 +#define ADS1256_DRATE_15SPS 0x33 +#define ADS1256_DRATE_10SPS 0x23 +#define ADS1256_DRATE_5SPS 0x13 +#define ADS1256_DRATE_2_5SPS 0x03 + +#include "Arduino.h" +#include "SPI.h" + +class ADS1256 { + public: + ADS1256(float clockspdMhz, float vref, bool useresetpin); + void writeRegister(unsigned char reg, unsigned char wdata); + unsigned char readRegister(unsigned char reg); + void sendCommand(unsigned char cmd); + float readCurrentChannel(); + long readCurrentChannelRaw(); + void setConversionFactor(float val); + void setChannel(byte channel); + void setChannel(byte AIP, byte AIN); + void begin(unsigned char drate, unsigned char gain, bool bufferenable); + void begin(); + uint8_t getStatus(); + void waitDRDY(); + boolean isDRDY(); + void setGain(uint8_t gain); + void readTest(); + + private: + void CSON(); + void CSOFF(); + unsigned long read_uint24(); + long read_int32(); + float read_float32(); + byte _pga; + float _VREF; + float _conversionFactor; +}; + +#endif diff --git a/lib/README b/lib/README new file mode 100644 index 0000000..6debab1 --- /dev/null +++ b/lib/README @@ -0,0 +1,46 @@ + +This directory is intended for project specific (private) libraries. +PlatformIO will compile them to static libraries and link into executable file. + +The source code of each library should be placed in a an own separate directory +("lib/your_library_name/[here are source files]"). + +For example, see a structure of the following two libraries `Foo` and `Bar`: + +|--lib +| | +| |--Bar +| | |--docs +| | |--examples +| | |--src +| | |- Bar.c +| | |- Bar.h +| | |- library.json (optional, custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html +| | +| |--Foo +| | |- Foo.c +| | |- Foo.h +| | +| |- README --> THIS FILE +| +|- platformio.ini +|--src + |- main.c + +and a contents of `src/main.c`: +``` +#include +#include + +int main (void) +{ + ... +} + +``` + +PlatformIO Library Dependency Finder will find automatically dependent +libraries scanning project source files. + +More information about PlatformIO Library Dependency Finder +- https://docs.platformio.org/page/librarymanager/ldf.html diff --git a/platformio.ini b/platformio.ini new file mode 100644 index 0000000..881dac2 --- /dev/null +++ b/platformio.ini @@ -0,0 +1,18 @@ +; PlatformIO Project Configuration File +; +; Build options: build flags, source filter +; Upload options: custom upload port, speed and extra flags +; Library options: dependencies, extra library storages +; Advanced options: extra scripting +; +; Please visit documentation for the other options and examples +; https://docs.platformio.org/page/projectconf.html + +[env:upesy_wroom] +platform = espressif32 +board = upesy_wroom +framework = arduino +lib_extra_dirs = ~/Documents/Arduino/libraries +lib_deps = + ./lib +monitor_speed = 115200 diff --git a/public/原理图.jpeg b/public/原理图.jpeg new file mode 100644 index 0000000..22c4d6e Binary files /dev/null and b/public/原理图.jpeg differ diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..a99a9a9 --- /dev/null +++ b/readme.md @@ -0,0 +1,3 @@ +# 接线 + +https://github.com/ADS1xxx-Series-ADC-Libraries/ADS1255-ADS1256/issues/11 diff --git a/src/adc1256.cpp b/src/adc1256.cpp new file mode 100644 index 0000000..0a2c068 --- /dev/null +++ b/src/adc1256.cpp @@ -0,0 +1,41 @@ +#include +#include +float clockMHZ = 7.68; // crystal frequency used on ADS1256 +float vRef = 2.5; // voltage reference +// Construct and init ADS1256 object +ADS1256 adc(clockMHZ, vRef, false); + +void adc1256_init(void) +{ + SPI.begin(); + sleep(0.1); + SPI.beginTransaction( + SPISettings(clockMHZ * 1000000 / 4, MSBFIRST, SPI_MODE1)); + sleep(0.1); + adc.begin(ADS1256_DRATE_30000SPS, ADS1256_GAIN_1, false); + + Serial.println("ADC Started"); + + // Set MUX Register to AINO-AIN1 so it start doing the ADC conversion + adc.setChannel(3); +} + +float adc1256_read(void) +{ + adc.waitDRDY(); + adc.setChannel(3); + return adc.readCurrentChannel(); +} + +void adc1256_loop(void) +{ + float rst; + adc.waitDRDY(); // wait for DRDY to go low before changing multiplexer register + adc.setChannel(3); // Set the MUX for differential between ch2 and 3 + rst = adc.readCurrentChannel(); // DOUT arriving here are from MUX AIN0 and AIN1 + + Serial.print(rst, 6); + Serial.print("\n"); + + delay(1000); +} diff --git a/src/adc1256.h b/src/adc1256.h new file mode 100644 index 0000000..963a40f --- /dev/null +++ b/src/adc1256.h @@ -0,0 +1,8 @@ +#ifndef ADC1256_H +#define ADC1256_H + +// Function declarations +void adc1256_init(void); +void adc1256_loop(void); +float adc1256_read(void); +#endif // ADC1256_H diff --git a/src/board.cpp b/src/board.cpp new file mode 100644 index 0000000..4087695 --- /dev/null +++ b/src/board.cpp @@ -0,0 +1,13 @@ +#include +#include "board.h" +#include "adc1256.h" +void board_init(void) +{ + Serial.begin(115200); // The value does not matter if you use an MCU with native USB + while (!Serial) + { + ; // Wait until the serial becomes available + } + Serial.println("ADS1256 - 2023-12-22"); + adc1256_init(); +} diff --git a/src/board.h b/src/board.h new file mode 100644 index 0000000..f592abc --- /dev/null +++ b/src/board.h @@ -0,0 +1,7 @@ +#ifndef BOARD_H +#define BOARD_H + +// Your code here +void board_init(void); + +#endif // BOARD_H diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..db9302e --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,115 @@ +#include +#include "board.h" +#include "adc1256.h" + +volatile bool task_adc1256_flag = false; +String read_val = ""; // 用于储存串口接收的字符串 +float array[5000]; // 存储数据 + +String fenge(String str, String fen, int index) +{ + int weizhi; + String temps[str.length()]; + int i = 0; + do + { + weizhi = str.indexOf(fen); + if (weizhi != -1) + { + temps[i] = str.substring(0, weizhi); + str = str.substring(weizhi + fen.length(), str.length()); + i++; + } + else + { + if (str.length() > 0) + temps[i] = str; + } + } while (weizhi >= 0); + + if (index > i) + return "-1"; + return temps[index]; +} + +void task_ads(void *pt) +{ + float *array; // 存储数据 + + uint16_t i = 0, j = 0; + float temp = 0; + while (1) + { + while (task_adc1256_flag) + { + Serial.println("Waiting for processing ..."); + + String part01 = fenge(read_val, ",", 0); + String part02 = fenge(read_val, ",", 1); + read_val = ""; + + int count = part01.toInt(); + int delay = part02.toInt(); + + array = static_cast(malloc(sizeof(float) * count)); + memset(array, 0, sizeof(array)); + for (i = 0; i < count; i++) + { + array[i] = adc1256_read(); + vTaskDelay(delay); + } + // 对array[i]从小到大排序后取中间一个值 + for (i = 0; i < count - 1; i++) + { + for (j = 0; j < count - 1 - i; j++) + { + if (array[j] > array[j + 1]) + { + temp = array[j]; + array[j] = array[j + 1]; + array[j + 1] = temp; + } + } + } + + Serial.println(array[count / 2], 8); + task_adc1256_flag = false; + + free(array); + } + + vTaskDelay(100); // 延时100ms + } +} + +void task_serial(void *pt) +{ + for (;;) + { + while (Serial.available() > 0) + { + read_val = read_val + char(Serial.read()); // 接收串口数据 + vTaskDelay(20); + } + if (read_val.length() > 0) + { + task_adc1256_flag = true; + } + vTaskDelay(100); // 延时100ms + } +} + +void setup() +{ + // put your setup code here, to run once: + board_init(); + + xTaskCreate(task_serial, "task_serial", 1024 * 4, NULL, 1, NULL); + xTaskCreate(task_ads, "task_ads", 1024 * 4, NULL, 1, NULL); +} + +void loop() +{ + // put your main code here, to run repeatedly: + vTaskDelay(1000); // 延时100ms +} diff --git a/test/README b/test/README new file mode 100644 index 0000000..9b1e87b --- /dev/null +++ b/test/README @@ -0,0 +1,11 @@ + +This directory is intended for PlatformIO Test Runner and project tests. + +Unit Testing is a software testing method by which individual units of +source code, sets of one or more MCU program modules together with associated +control data, usage procedures, and operating procedures, are tested to +determine whether they are fit for use. Unit testing finds problems early +in the development cycle. + +More information about PlatformIO Unit Testing: +- https://docs.platformio.org/en/latest/advanced/unit-testing/index.html