summaryrefslogtreecommitdiff
path: root/shared-module
diff options
context:
space:
mode:
authorDan Halbert <halbert@halwitz.org>2019-07-09 08:58:49 -0400
committerDan Halbert <halbert@halwitz.org>2019-07-09 08:58:49 -0400
commit6a001786a9b030a6c42bc3c84c91db302620f1ba (patch)
tree7a830e4633e29746884fe186beebe6c67ef61639 /shared-module
parentddd4d616db3d60e5f6aa2a313be3206393e104b1 (diff)
parentf4a64a2e803ed64b3ccbb1c3a8dd72ae27953f1d (diff)
merge from master
Diffstat (limited to 'shared-module')
-rw-r--r--shared-module/displayio/FourWire.c7
-rw-r--r--shared-module/displayio/TileGrid.c13
2 files changed, 15 insertions, 5 deletions
diff --git a/shared-module/displayio/FourWire.c b/shared-module/displayio/FourWire.c
index b01456bba..d38da56fc 100644
--- a/shared-module/displayio/FourWire.c
+++ b/shared-module/displayio/FourWire.c
@@ -31,13 +31,14 @@
#include "py/gc.h"
#include "shared-bindings/busio/SPI.h"
#include "shared-bindings/digitalio/DigitalInOut.h"
+#include "shared-bindings/microcontroller/__init__.h"
#include "shared-bindings/time/__init__.h"
#include "tick.h"
void common_hal_displayio_fourwire_construct(displayio_fourwire_obj_t* self,
busio_spi_obj_t* spi, const mcu_pin_obj_t* command,
- const mcu_pin_obj_t* chip_select, const mcu_pin_obj_t* reset) {
+ const mcu_pin_obj_t* chip_select, const mcu_pin_obj_t* reset, uint32_t baudrate) {
self->bus = spi;
common_hal_busio_spi_never_reset(self->bus);
@@ -45,7 +46,7 @@ void common_hal_displayio_fourwire_construct(displayio_fourwire_obj_t* self,
// of the heap as well.
gc_never_free(self->bus);
- self->frequency = common_hal_busio_spi_get_frequency(spi);
+ self->frequency = baudrate;
self->polarity = common_hal_busio_spi_get_polarity(spi);
self->phase = common_hal_busio_spi_get_phase(spi);
@@ -89,7 +90,7 @@ void common_hal_displayio_fourwire_send(mp_obj_t obj, bool command, uint8_t *dat
displayio_fourwire_obj_t* self = MP_OBJ_TO_PTR(obj);
if (command) {
common_hal_digitalio_digitalinout_set_value(&self->chip_select, true);
- common_hal_time_delay_ms(1);
+ common_hal_mcu_delay_us(1);
common_hal_digitalio_digitalinout_set_value(&self->chip_select, false);
}
common_hal_digitalio_digitalinout_set_value(&self->command, !command);
diff --git a/shared-module/displayio/TileGrid.c b/shared-module/displayio/TileGrid.c
index 43ce36ed3..0cd00e0ce 100644
--- a/shared-module/displayio/TileGrid.c
+++ b/shared-module/displayio/TileGrid.c
@@ -219,10 +219,19 @@ void common_hal_displayio_tilegrid_set_tile(displayio_tilegrid_t *self, uint16_t
} else {
tile_area = &temp_area;
}
- tile_area->x1 = x * self->tile_width;
+ int16_t tx = (x - self->top_left_x) % self->width_in_tiles;
+ if (tx < 0) {
+ tx += self->width_in_tiles;
+ }
+ tile_area->x1 = tx * self->tile_width;
tile_area->x2 = tile_area->x1 + self->tile_width;
- tile_area->y1 = y * self->tile_height;
+ int16_t ty = (y - self->top_left_y) % self->height_in_tiles;
+ if (ty < 0) {
+ ty += self->height_in_tiles;
+ }
+ tile_area->y1 = ty * self->tile_height;
tile_area->y2 = tile_area->y1 + self->tile_height;
+
if (self->partial_change) {
displayio_area_expand(&self->dirty_area, &temp_area);
}