summaryrefslogtreecommitdiff
path: root/atmel-samd/common-hal
diff options
context:
space:
mode:
authorScott Shawcroft <scott@chickadee.tech>2016-10-05 18:44:55 -0700
committerScott Shawcroft <scott@chickadee.tech>2016-10-05 18:44:55 -0700
commitafedba5c2f638581e0c9839844fcb63b9bd8a7bb (patch)
tree3bfaf6250a2675363f00f243de5d364abeb4539b /atmel-samd/common-hal
parent42f6ba04a2065624fb90cac19eace3da3d158ba1 (diff)
atmel-samd: Support with statements for I2C class.
Also add init/deinit if you want to init/deinit manually.
Diffstat (limited to 'atmel-samd/common-hal')
-rw-r--r--atmel-samd/common-hal/modules/machine.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/atmel-samd/common-hal/modules/machine.c b/atmel-samd/common-hal/modules/machine.c
index 5597f77ed..a43762e0f 100644
--- a/atmel-samd/common-hal/modules/machine.c
+++ b/atmel-samd/common-hal/modules/machine.c
@@ -36,8 +36,8 @@
// Number of times to try to send packet if failed.
#define TIMEOUT 1
-void mp_hal_i2c_init(machine_i2c_obj_t *self, const pin_obj_t* scl,
- const pin_obj_t* sda, uint32_t freq) {
+void mp_hal_i2c_construct(machine_i2c_obj_t *self, const pin_obj_t* scl,
+ const pin_obj_t* sda, uint32_t freq) {
struct i2c_master_config config_i2c_master;
i2c_master_get_config_defaults(&config_i2c_master);
// Struct takes the argument in Khz not Hz.
@@ -66,9 +66,16 @@ void mp_hal_i2c_init(machine_i2c_obj_t *self, const pin_obj_t* scl,
nlr_raise(mp_obj_new_exception_msg(&mp_type_OSError, "I2C bus init error"));
}
+}
+
+void mp_hal_i2c_init(machine_i2c_obj_t *self) {
i2c_master_enable(&self->i2c_master_instance);
}
+void mp_hal_i2c_deinit(machine_i2c_obj_t *self) {
+ i2c_master_disable(&self->i2c_master_instance);
+}
+
void mp_hal_i2c_write(machine_i2c_obj_t *self, uint8_t addr, uint8_t *data,
size_t len) {
struct i2c_master_packet packet = {