From 8b2f18415d0e01bfd407b60eca3f2a1004e8d109 Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Tue, 19 Mar 2024 16:46:52 +0100 Subject: [PATCH] buttons --- .gitignore | 4 ++- game-ctrl/Makefile | 2 +- game-ctrl/buttons.c | 78 +++++++++++++++++++----------------------- game-ctrl/firmware.gdb | 2 ++ 4 files changed, 42 insertions(+), 44 deletions(-) create mode 100644 game-ctrl/firmware.gdb diff --git a/.gitignore b/.gitignore index 5488f5d..c63ce08 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ *.o -firmware.* +firmware.txt +firmware.elf +firmware.map diff --git a/game-ctrl/Makefile b/game-ctrl/Makefile index 95cda96..53b30f6 100644 --- a/game-ctrl/Makefile +++ b/game-ctrl/Makefile @@ -7,7 +7,7 @@ MCU=msp430g2553 CFLAGS=-Wall -mmcu=$(MCU) -std=gnu99 -I $(TOOLCHAIN_PREFIX)/include -O1 -g0 # for debugging -# CFLAGS+= -g3 -ggdb -gdwarf-2 +#CFLAGS+= -g3 -ggdb -gdwarf-2 LDFLAGS=-mmcu=$(MCU) -L $(TOOLCHAIN_PREFIX)/include diff --git a/game-ctrl/buttons.c b/game-ctrl/buttons.c index 3174419..c8a74e2 100644 --- a/game-ctrl/buttons.c +++ b/game-ctrl/buttons.c @@ -1,5 +1,6 @@ -#include "stddef.h" -#include "stdint.h" +#include +#include +#include #include "buttons.h" #include "scheduler.h" @@ -8,52 +9,45 @@ #include "led.h" -// TEST CODE -uint16_t counter; - static uint8_t buttonsMoveLeftPressed() { - // ----------------------- - // TEST CODE - //if (counter == 95) { - // ledGreenToggle(); - // return 1; - //} - // ----------------------- - return 0; + static uint8_t last = 0; + uint8_t current = (P2IN & BIT4); + uint8_t res = (current != 0) && (current != last); + last = current; + return res; } static uint8_t buttonsMoveRightPressed() { - // ----------------------- - // TEST CODE - if (counter == 95) { - ledGreenToggle(); - return 1; - } - // ----------------------- - return 0; + static uint8_t last = 0; + uint8_t current = (P2IN & BIT0); + uint8_t res = (current != 0) && (current != last); + last = current; + return res; } static uint8_t buttonsRotateLeftPressed() { - return 0; + static uint8_t last = 0; + uint8_t current = (P2IN & BIT3); + uint8_t res = (current != 0) && (current != last); + last = current; + return res; } static uint8_t buttonsRotateRightPressed() { - // ----------------------- - // TEST CODE - if (counter == 35) { - ledGreenToggle(); - return 1; - } - // ----------------------- - // ----------------------- - // TEST CODE - if (counter == 45) { - ledGreenToggle(); - return 1; - } - // ----------------------- - return 0; + static uint8_t last = 0; + uint8_t current = (P2IN & BIT1); + uint8_t res = (current != 0) && (current != last); + last = current; + return res; +} + +static uint8_t buttonsMoveDownPressed() { + static uint8_t last = 0; + uint8_t current = (P2IN & BIT2); + uint8_t res = (current != 0) && (current != last); + last = current; + return res; } void buttonsExec(void *handle) { @@ -62,9 +56,6 @@ void buttonsExec(void *handle) { return; } - // TEST CODE - counter++; - uint8_t buttonPressed = 0; if (buttonsMoveLeftPressed()) { @@ -83,6 +74,10 @@ void buttonsExec(void *handle) { stoneRotateRight(); buttonPressed = 1; } + if (buttonsMoveDownPressed()) { + stoneMoveDown(); + buttonPressed = 1; + } if (buttonPressed == 1) { canvasShow(); @@ -90,8 +85,7 @@ void buttonsExec(void *handle) { } void buttonsInit() { - // TEST CODE - counter = 0; + P2DIR &= ~(BIT0|BIT1|BIT2|BIT3|BIT4); schAdd(buttonsExec, NULL, 0, 100); } diff --git a/game-ctrl/firmware.gdb b/game-ctrl/firmware.gdb new file mode 100644 index 0000000..6312fd6 --- /dev/null +++ b/game-ctrl/firmware.gdb @@ -0,0 +1,2 @@ +target remote localhost:2000 +file firmware.elf