add button handling

This commit is contained in:
Thomas Klaehn 2020-03-10 12:25:09 +01:00
parent 4ed74dad32
commit fe74ccd8e3
3 changed files with 96 additions and 20 deletions

8
include/board.h Normal file
View File

@ -0,0 +1,8 @@
#ifndef __BOARD_H__
#define __BOARD_H__
#ifdef BOARD_PCA10040
#include "platform/narf52/narf52_dk.h"
#endif
#endif

View File

@ -6,7 +6,8 @@
#include "driver.h" #include "driver.h"
struct narf52_gpio narf_led_1 = { // LEDs
const struct narf52_gpio narf_led_1 = {
.pin_number = 17, .pin_number = 17,
.dir = NARF_GPIO_DIR_OUT, .dir = NARF_GPIO_DIR_OUT,
.input = NARF_GPIO_PIN_INPUT_DISCONNECT, .input = NARF_GPIO_PIN_INPUT_DISCONNECT,
@ -15,13 +16,13 @@ struct narf52_gpio narf_led_1 = {
.sense = NARF_GPIO_PIN_NOSENSE, .sense = NARF_GPIO_PIN_NOSENSE,
}; };
struct driver led_1 = { const struct driver led_1 = {
.name = "LED_1", .name = "LED_1",
.fp = &gpio_fp, .fp = &gpio_fp,
.dev = (void *)&narf_led_1, .dev = (void *)&narf_led_1,
}; };
struct narf52_gpio narf_led_2 = { const struct narf52_gpio narf_led_2 = {
.pin_number = 18, .pin_number = 18,
.dir = NARF_GPIO_DIR_OUT, .dir = NARF_GPIO_DIR_OUT,
.input = NARF_GPIO_PIN_INPUT_DISCONNECT, .input = NARF_GPIO_PIN_INPUT_DISCONNECT,
@ -30,13 +31,13 @@ struct narf52_gpio narf_led_2 = {
.sense = NARF_GPIO_PIN_NOSENSE, .sense = NARF_GPIO_PIN_NOSENSE,
}; };
struct driver led_2 = { const struct driver led_2 = {
.name = "LED_2", .name = "LED_2",
.fp = &gpio_fp, .fp = &gpio_fp,
.dev = (void *)&narf_led_2, .dev = (void *)&narf_led_2,
}; };
struct narf52_gpio narf_led_3 = { const struct narf52_gpio narf_led_3 = {
.pin_number = 19, .pin_number = 19,
.dir = NARF_GPIO_DIR_OUT, .dir = NARF_GPIO_DIR_OUT,
.input = NARF_GPIO_PIN_INPUT_DISCONNECT, .input = NARF_GPIO_PIN_INPUT_DISCONNECT,
@ -45,13 +46,13 @@ struct narf52_gpio narf_led_3 = {
.sense = NARF_GPIO_PIN_NOSENSE, .sense = NARF_GPIO_PIN_NOSENSE,
}; };
struct driver led_3 = { const struct driver led_3 = {
.name = "LED_3", .name = "LED_3",
.fp = &gpio_fp, .fp = &gpio_fp,
.dev = (void *)&narf_led_3, .dev = (void *)&narf_led_3,
}; };
struct narf52_gpio narf_led_4 = { const struct narf52_gpio narf_led_4 = {
.pin_number = 20, .pin_number = 20,
.dir = NARF_GPIO_DIR_OUT, .dir = NARF_GPIO_DIR_OUT,
.input = NARF_GPIO_PIN_INPUT_DISCONNECT, .input = NARF_GPIO_PIN_INPUT_DISCONNECT,
@ -60,10 +61,71 @@ struct narf52_gpio narf_led_4 = {
.sense = NARF_GPIO_PIN_NOSENSE, .sense = NARF_GPIO_PIN_NOSENSE,
}; };
struct driver led_4 = { const struct driver led_4 = {
.name = "LED_4", .name = "LED_4",
.fp = &gpio_fp, .fp = &gpio_fp,
.dev = (void *)&narf_led_4, .dev = (void *)&narf_led_4,
}; };
// BUTTONs
const struct narf52_gpio narf_button_1 = {
.pin_number = 13,
.dir = NARF_GPIO_DIR_IN,
.input = NARF_GPIO_PIN_INPUT_CONNECT,
.pull = NARF_GPIO_PIN_PULLUP,
.drive = NARF_GPIO_PIN_S0S1,
.sense = NARF_GPIO_PIN_NOSENSE,
};
const struct driver button_1 = {
.name = "BUTTON_1",
.fp = &gpio_fp,
.dev = (void *)&narf_button_1,
};
const struct narf52_gpio narf_button_2 = {
.pin_number = 14,
.dir = NARF_GPIO_DIR_IN,
.input = NARF_GPIO_PIN_INPUT_CONNECT,
.pull = NARF_GPIO_PIN_PULLUP,
.drive = NARF_GPIO_PIN_S0S1,
.sense = NARF_GPIO_PIN_NOSENSE,
};
const struct driver button_2 = {
.name = "BUTTON_2",
.fp = &gpio_fp,
.dev = (void *)&narf_button_2,
};
const struct narf52_gpio narf_button_3 = {
.pin_number = 15,
.dir = NARF_GPIO_DIR_IN,
.input = NARF_GPIO_PIN_INPUT_CONNECT,
.pull = NARF_GPIO_PIN_PULLUP,
.drive = NARF_GPIO_PIN_S0S1,
.sense = NARF_GPIO_PIN_NOSENSE,
};
const struct driver button_3 = {
.name = "BUTTON_3",
.fp = &gpio_fp,
.dev = (void *)&narf_button_3,
};
const struct narf52_gpio narf_button_4 = {
.pin_number = 16,
.dir = NARF_GPIO_DIR_IN,
.input = NARF_GPIO_PIN_INPUT_CONNECT,
.pull = NARF_GPIO_PIN_PULLUP,
.drive = NARF_GPIO_PIN_S0S1,
.sense = NARF_GPIO_PIN_NOSENSE,
};
const struct driver button_4 = {
.name = "BUTTON_4",
.fp = &gpio_fp,
.dev = (void *)&narf_button_4,
};
#endif #endif

View File

@ -1,10 +1,7 @@
#include <stdbool.h> #include <stdbool.h>
#include <stdint.h> #include <stdint.h>
#include "nrf_delay.h"
#include "boards.h"
#include "platform/narf52/narf52_dk.h"
#include "board.h"
#include "driver.h" #include "driver.h"
int main(void) int main(void)
@ -15,14 +12,23 @@ int main(void)
drv_open(&led_3); drv_open(&led_3);
drv_open(&led_4); drv_open(&led_4);
drv_open(&button_1);
drv_open(&button_2);
drv_open(&button_3);
drv_open(&button_4);
while(true) { while(true) {
for(uint32_t i = 0; i < UINT32_MAX; i++) { char x;
char x = 0x30 | (char)(1 & i); drv_read(&button_1, &x, 1);
drv_write(&led_1, &x, 1); drv_write(&led_1, &x, 1);
drv_write(&led_2, &x, 1);
drv_write(&led_3, &x, 1); drv_read(&button_2, &x, 1);
drv_write(&led_4, &x, 1); drv_write(&led_2, &x, 1);
nrf_delay_ms(500);
} drv_read(&button_3, &x, 1);
drv_write(&led_3, &x, 1);
drv_read(&button_4, &x, 1);
drv_write(&led_4, &x, 1);
} }
} }