aboutsummaryrefslogtreecommitdiff
path: root/cc3200/mods/modpyb.c
diff options
context:
space:
mode:
authordanicampora2015-02-10 13:11:27 +0100
committerdanicampora2015-02-13 17:54:04 +0100
commit99f3f6b5de567c1bdf04259d2c8322681755c732 (patch)
treef80a4d986bf20478283abb9dd45517fbdc4740c3 /cc3200/mods/modpyb.c
parent601c814603801ad3af78e37d26c87a4470156738 (diff)
cc3200: Add I2C module. Only master mode is currently supported.
Diffstat (limited to 'cc3200/mods/modpyb.c')
-rw-r--r--cc3200/mods/modpyb.c23
1 files changed, 16 insertions, 7 deletions
diff --git a/cc3200/mods/modpyb.c b/cc3200/mods/modpyb.c
index 869adc761..86c726587 100644
--- a/cc3200/mods/modpyb.c
+++ b/cc3200/mods/modpyb.c
@@ -62,6 +62,8 @@
#include "mpexception.h"
#include "random.h"
#include "pybextint.h"
+#include "pybi2c.h"
+#include "utils.h"
#ifdef DEBUG
@@ -218,10 +220,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(pyb_delay_obj, pyb_delay);
STATIC mp_obj_t pyb_udelay(mp_obj_t usec_in) {
mp_int_t usec = mp_obj_get_int(usec_in);
if (usec > 0) {
- uint32_t count = 0;
- const uint32_t utime = ((HAL_FCPU_HZ / 1000000) * (usec / 4));
- while (++count <= utime) {
- }
+ UtilsDelay(UTILS_DELAY_US_TO_COUNT(usec));
}
return mp_const_none;
}
@@ -261,6 +260,17 @@ STATIC mp_obj_t pyb_repl_uart(uint n_args, const mp_obj_t *args) {
}
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(pyb_repl_uart_obj, 0, 1, pyb_repl_uart);
+/// \function mkdisk('path')
+/// Formats the selected drive, useful when the filesystem has been damaged beyond repair
+STATIC mp_obj_t pyb_mkdisk(mp_obj_t path_o) {
+ const char *path = mp_obj_str_get_str(path_o);
+ if (FR_OK != f_mkfs(path, 1, 0)) {
+ nlr_raise(mp_obj_new_exception_msg(&mp_type_OSError, mpexception_os_operation_failed));
+ }
+ return mp_const_none;
+}
+STATIC MP_DEFINE_CONST_FUN_OBJ_1(pyb_mkdisk_obj, pyb_mkdisk);
+
MP_DECLARE_CONST_FUN_OBJ(pyb_main_obj); // defined in main.c
STATIC const mp_map_elem_t pyb_module_globals_table[] = {
@@ -291,8 +301,7 @@ STATIC const mp_map_elem_t pyb_module_globals_table[] = {
{ MP_OBJ_NEW_QSTR(MP_QSTR_delay), (mp_obj_t)&pyb_delay_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_udelay), (mp_obj_t)&pyb_udelay_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_sync), (mp_obj_t)&pyb_sync_obj },
-
- //{ MP_OBJ_NEW_QSTR(MP_QSTR_Timer), (mp_obj_t)&pyb_timer_type },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_mkdisk), (mp_obj_t)&pyb_mkdisk_obj },
#if MICROPY_HW_ENABLE_RNG
{ MP_OBJ_NEW_QSTR(MP_QSTR_rng), (mp_obj_t)&pyb_rng_get_obj },
@@ -304,7 +313,7 @@ STATIC const mp_map_elem_t pyb_module_globals_table[] = {
{ MP_OBJ_NEW_QSTR(MP_QSTR_Pin), (mp_obj_t)&pin_type },
{ MP_OBJ_NEW_QSTR(MP_QSTR_ExtInt), (mp_obj_t)&extint_type },
-
+ { MP_OBJ_NEW_QSTR(MP_QSTR_I2C), (mp_obj_t)&pyb_i2c_type },
{ MP_OBJ_NEW_QSTR(MP_QSTR_UART), (mp_obj_t)&pyb_uart_type },
};