diff options
Diffstat (limited to 'code/main/teensy_goalie')
| -rw-r--r-- | code/main/teensy_goalie/CMakeLists.txt | 38 | ||||
| -rw-r--r-- | code/main/teensy_goalie/prj.conf | 9 | ||||
| -rw-r--r-- | code/main/teensy_goalie/src/main.c | 55 | ||||
| -rw-r--r-- | code/main/teensy_goalie/teensy41.overlay | 58 |
4 files changed, 117 insertions, 43 deletions
diff --git a/code/main/teensy_goalie/CMakeLists.txt b/code/main/teensy_goalie/CMakeLists.txt new file mode 100644 index 0000000..27e5715 --- /dev/null +++ b/code/main/teensy_goalie/CMakeLists.txt @@ -0,0 +1,38 @@ +# SPDX-License-Identifier: Apache-2.0 + +cmake_minimum_required(VERSION 3.20.0) +find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) +project( + player + VERSION 1.0 + DESCRIPTION "The code for the soccer player robot. https://github.com/mendelcollege-robotics/robotica" + LANGUAGES C +) + +#[===[ +# Create a static library target named "my_lib" +add_library(my_lib + STATIC + src/my_lib.c +) +target_include_directories( + my_lib + PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR}/include +) + +# Create an executable target with the same name as the project name +add_executable( + ${PROJECT_NAME} + src/main.c +) + +# Link the library to the executable. PRIVATE means that the library is not +# exposed to targets that depend on this target. +target_link_libraries( + ${PROJECT_NAME} + PRIVATE + my_lib +) +]===] +target_sources(app PRIVATE src/main.c) diff --git a/code/main/teensy_goalie/prj.conf b/code/main/teensy_goalie/prj.conf new file mode 100644 index 0000000..8379fac --- /dev/null +++ b/code/main/teensy_goalie/prj.conf @@ -0,0 +1,9 @@ +CONFIG_GPIO=y +CONFIG_USB_DEVICE_INITIALIZE_AT_BOOT=y +CONFIG_PRINTK=y +CONFIG_SERIAL=y +CONFIG_UART_INTERRUPT_DRIVEN=y +CONFIG_PWM=y +CONFIG_LOG=y +CONFIG_LOG_MODE_IMMEDIATE=y +CONFIG_PWM_LOG_LEVEL_DBG=y diff --git a/code/main/teensy_goalie/src/main.c b/code/main/teensy_goalie/src/main.c index f8aff35..137e898 100644 --- a/code/main/teensy_goalie/src/main.c +++ b/code/main/teensy_goalie/src/main.c @@ -1,48 +1,17 @@ -/* - * Copyright (c) 2016 Intel Corporation - * - * SPDX-License-Identifier: Apache-2.0 - */ - #include <stdio.h> #include <zephyr/kernel.h> +#include <zephyr/sys/printk.h> +#include <zephyr/device.h> +#include <zephyr/drivers/pwm.h> +#include <zephyr/devicetree.h> #include <zephyr/drivers/gpio.h> -/* 1000 msec = 1 sec */ -#define SLEEP_TIME_MS 1000 - -/* The devicetree node identifier for the "led0" alias. */ -#define LED0_NODE DT_ALIAS(led0) - -/* - * A build error on this line means your board is unsupported. - * See the sample documentation for information on how to fix this. - */ -static const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(LED0_NODE, gpios); - -int main(void) -{ - int ret; - bool led_state = true; - - if (!gpio_is_ready_dt(&led)) { - return 0; - } - - ret = gpio_pin_configure_dt(&led, GPIO_OUTPUT_ACTIVE); - if (ret < 0) { - return 0; - } - - while (1) { - ret = gpio_pin_toggle_dt(&led); - if (ret < 0) { - return 0; - } +// Settings +#define PWM_PERIOD_NS 20000000 +#define PWM_PULSE_WIDTH 1400000 +static const int32_t sleep_time_ms = 100; +static const struct gpio_dt_spec btn = GPIO_DT_SPEC_GET(DT_ALIAS(powerswitch), gpios); +static const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(DT_ALIAS(redled), gpios); - led_state = !led_state; - printf("LED state: %s\n", led_state ? "ON" : "OFF"); - k_msleep(SLEEP_TIME_MS); - } - return 0; -} +#define LED0_NODE DT_ALIAS(redled) +#define PWM_LED0 DT_ALIAS(en3a) diff --git a/code/main/teensy_goalie/teensy41.overlay b/code/main/teensy_goalie/teensy41.overlay new file mode 100644 index 0000000..3b023e3 --- /dev/null +++ b/code/main/teensy_goalie/teensy41.overlay @@ -0,0 +1,58 @@ +/* + * + * This is the overlay device tree file for the teensy 4.1 in the robosoccer mendelcollege robot. + * + * For more information on overlay files see + * https://docs.zephyrproject.org/latest/build/dts/howtos.html#set-devicetree-overlays + * https://www.digikey.be/en/maker/tutorials/2025/introduction-to-zephyr-part-4-devicetree-tutorial + * + */ +/ { + aliases { + powerswitch = &soft_power_switch; + redled = &red_led; + greenled = &green_led; + bueled = &blue_led; + en3a = &pwm_dev0; + }; + + buttons { + compatible = "gpio-keys"; + debounce-interval-ms = <50>; + polling-mode; + + soft_power_switch: d5 { + gpios = <&gpio4 4 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; + }; + }; + leds { + compatible = "gpio-leds"; + red_led: red-led { + gpios = <&gpio2 29 GPIO_ACTIVE_HIGH>; + label = "LED Pin 34 --> RED"; + }; + green_led: green-led { + gpios = <&gpio2 7 GPIO_ACTIVE_HIGH>; + label = "LED Pin 33 --> GREEN"; + }; + blue_led: blue-led { + gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>; + label = "LED Pin 16 --> BLUE"; + }; + }; + pwmdevs { + compatible = "imx-pwm"; + pwm_dev0: pwm_dev_0 { + pwms = <&gpio2 10>; + }; + }; + +}; +&flexpwm1 { + status = "ok"; + flexpwm1_pwm0: flexpwm1_pwm0 { + status = "ok"; + }; + +}; + |
