Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
Nodemcu Firmware
Commits
cf079fa3
You need to sign in or sign up before continuing.
Commit
cf079fa3
authored
Oct 08, 2015
by
chris
Browse files
Basic hx711 functionality
parent
5e19b848
Changes
3
Show whitespace changes
Inline
Side-by-side
app/include/user_modules.h
View file @
cf079fa3
...
@@ -43,6 +43,7 @@
...
@@ -43,6 +43,7 @@
#define LUA_USE_MODULES_SNTP
#define LUA_USE_MODULES_SNTP
//#define LUA_USE_MODULES_BMP085
//#define LUA_USE_MODULES_BMP085
#define LUA_USE_MODULES_TSL2561
#define LUA_USE_MODULES_TSL2561
#define LUA_USE_MODULES_HX711
#endif
/* LUA_USE_MODULES */
#endif
/* LUA_USE_MODULES */
...
...
app/modules/hx711.c
0 → 100644
View file @
cf079fa3
#include "lualib.h"
#include "lauxlib.h"
#include "platform.h"
#include "auxmods.h"
#include "lrotable.h"
#include "c_stdlib.h"
#include "c_string.h"
#include "user_interface.h"
static
uint8_t
data_pin
;
static
uint8_t
clk_pin
;
/*Lua: init(clk_pin,data_pin)*/
static
int
hx711_init
(
lua_State
*
L
)
{
clk_pin
=
luaL_checkinteger
(
L
,
1
);
data_pin
=
luaL_checkinteger
(
L
,
2
);
MOD_CHECK_ID
(
gpio
,
clk_pin
);
MOD_CHECK_ID
(
gpio
,
data_pin
);
platform_gpio_mode
(
clk_pin
,
PLATFORM_GPIO_OUTPUT
,
PLATFORM_GPIO_FLOAT
);
platform_gpio_mode
(
data_pin
,
PLATFORM_GPIO_INPUT
,
PLATFORM_GPIO_FLOAT
);
platform_gpio_write
(
clk_pin
,
1
);
//put chip to sleep.
return
0
;
}
#define HX711_MAX_WAIT 1000000
/*will only read chA@128gain*/
/*Lua: result = hx711.read()*/
static
int
ICACHE_FLASH_ATTR
hx711_read
(
lua_State
*
L
)
{
uint32_t
i
;
int32_t
data
=
0
;
//TODO: double check init has happened first.
//wakeup hx711
platform_gpio_write
(
clk_pin
,
0
);
//wait for data ready. or time out.
//TODO: set pin inturrupt and come back to it. This may take up to 1/10 sec
// or maybe just make an async version too and have both available.
for
(
i
=
0
;
i
<
HX711_MAX_WAIT
&&
platform_gpio_read
(
data_pin
)
==
1
;
i
++
){
asm
(
"nop"
);
//don't optimize away this loop.
}
//Handle timeout error
if
(
i
>=
HX711_MAX_WAIT
)
{
return
luaL_error
(
L
,
"ADC timeout!"
,
(
unsigned
)
0
);
}
for
(
i
=
0
;
i
<
24
;
i
++
){
//clock in the 24 bits
platform_gpio_write
(
clk_pin
,
1
);
platform_gpio_write
(
clk_pin
,
0
);
data
=
data
<<
1
;
if
(
platform_gpio_read
(
data_pin
)
==
1
)
{
data
=
i
==
0
?
-
1
:
data
|
1
;
//signextend the first bit
}
}
//add 25th clock pulse to prevent protocol error (probably not needed
// since we'll go to sleep immediately after and reset on wakeup.)
platform_gpio_write
(
clk_pin
,
1
);
platform_gpio_write
(
clk_pin
,
0
);
//sleep
platform_gpio_write
(
clk_pin
,
1
);
lua_pushinteger
(
L
,
data
);
return
1
;
}
#define MIN_OPT_LEVEL 2
#include "lrodefs.h"
const
LUA_REG_TYPE
hx711_map
[]
=
{
{
LSTRKEY
(
"init"
),
LFUNCVAL
(
hx711_init
)},
{
LSTRKEY
(
"read"
),
LFUNCVAL
(
hx711_read
)},
//{ LSTRKEY( "write" ), LFUNCVAL( ws2812_writegrb )},
{
LNILKEY
,
LNILVAL
}
};
LUALIB_API
int
luaopen_hx711
(
lua_State
*
L
)
{
// TODO: the below todo was inherited from the ws2812 code but is still valid.
// TODO: Make sure that the GPIO system is initialized
LREGISTER
(
L
,
"hx711"
,
hx711_map
);
return
1
;
}
app/modules/modules.h
View file @
cf079fa3
...
@@ -245,6 +245,14 @@
...
@@ -245,6 +245,14 @@
#define ROM_MODULES_TSL2561
#define ROM_MODULES_TSL2561
#endif
#endif
#if defined(LUA_USE_MODULES_HX711)
#define MODULES_HX711 "hx711"
#define ROM_MODULES_HX711 \
_ROM(MODULES_HX711, luaopen_hx711, hx711_map)
#else
#define ROM_MODULES_HX711
#endif
#define LUA_MODULES_ROM \
#define LUA_MODULES_ROM \
ROM_MODULES_GPIO \
ROM_MODULES_GPIO \
ROM_MODULES_PWM \
ROM_MODULES_PWM \
...
@@ -275,6 +283,7 @@
...
@@ -275,6 +283,7 @@
ROM_MODULES_RTCFIFO \
ROM_MODULES_RTCFIFO \
ROM_MODULES_SNTP \
ROM_MODULES_SNTP \
ROM_MODULES_BMP085 \
ROM_MODULES_BMP085 \
ROM_MODULES_TSL2561
ROM_MODULES_TSL2561 \
ROM_MODULES_HX711
#endif
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment