Leverage built in LED (#6)
* turn on LED on startup and blink for frequent activity
This commit is contained in:
parent
f67a57d2ba
commit
8ab7ebcabe
|
@ -7,12 +7,18 @@ project(picoprobe)
|
||||||
pico_sdk_init()
|
pico_sdk_init()
|
||||||
|
|
||||||
add_executable(picoprobe
|
add_executable(picoprobe
|
||||||
|
src/led.c
|
||||||
src/main.c
|
src/main.c
|
||||||
src/usb_descriptors.c
|
src/usb_descriptors.c
|
||||||
src/probe.c
|
src/probe.c
|
||||||
src/cdc_uart.c
|
src/cdc_uart.c
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (DEFINED ENV{PICOPROBE_LED})
|
||||||
|
message("PICOPROBE_LED is defined as " $ENV{PICOPROBE_LED})
|
||||||
|
target_compile_definitions(picoprobe PRIVATE PICOPROBE_LED=$ENV{PICOPROBE_LED})
|
||||||
|
endif()
|
||||||
|
|
||||||
set(DBG_PIN_COUNT=4)
|
set(DBG_PIN_COUNT=4)
|
||||||
|
|
||||||
pico_generate_pio_header(picoprobe ${CMAKE_CURRENT_LIST_DIR}/src/probe.pio)
|
pico_generate_pio_header(picoprobe ${CMAKE_CURRENT_LIST_DIR}/src/probe.pio)
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
#include <pico/stdlib.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#include "picoprobe_config.h"
|
||||||
|
|
||||||
|
#define LED_COUNT_SHIFT 14
|
||||||
|
#define LED_COUNT_MAX 5 * (1 << LED_COUNT_SHIFT)
|
||||||
|
|
||||||
|
static uint32_t led_count;
|
||||||
|
|
||||||
|
void led_init(void) {
|
||||||
|
led_count = 0;
|
||||||
|
|
||||||
|
gpio_init(PICOPROBE_LED);
|
||||||
|
gpio_set_dir(PICOPROBE_LED, GPIO_OUT);
|
||||||
|
gpio_put(PICOPROBE_LED, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void led_task(void) {
|
||||||
|
if (led_count != 0) {
|
||||||
|
--led_count;
|
||||||
|
gpio_put(PICOPROBE_LED, !((led_count >> LED_COUNT_SHIFT) & 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_signal_activity(uint total_bits) {
|
||||||
|
if (led_count == 0) {
|
||||||
|
gpio_put(PICOPROBE_LED, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (led_count < LED_COUNT_MAX) {
|
||||||
|
led_count += total_bits;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
#ifndef LED_H
|
||||||
|
#define LED_H
|
||||||
|
|
||||||
|
void led_init(void);
|
||||||
|
void led_task(void);
|
||||||
|
void led_signal_activity(uint total_bits);
|
||||||
|
|
||||||
|
#endif
|
|
@ -33,6 +33,7 @@
|
||||||
#include "picoprobe_config.h"
|
#include "picoprobe_config.h"
|
||||||
#include "probe.h"
|
#include "probe.h"
|
||||||
#include "cdc_uart.h"
|
#include "cdc_uart.h"
|
||||||
|
#include "led.h"
|
||||||
|
|
||||||
// UART0 for Picoprobe debug
|
// UART0 for Picoprobe debug
|
||||||
// UART1 for picoprobe to target device
|
// UART1 for picoprobe to target device
|
||||||
|
@ -43,6 +44,7 @@ int main(void) {
|
||||||
cdc_uart_init();
|
cdc_uart_init();
|
||||||
tusb_init();
|
tusb_init();
|
||||||
probe_init();
|
probe_init();
|
||||||
|
led_init();
|
||||||
|
|
||||||
picoprobe_info("Welcome to Picoprobe!\n");
|
picoprobe_info("Welcome to Picoprobe!\n");
|
||||||
|
|
||||||
|
@ -50,6 +52,7 @@ int main(void) {
|
||||||
tud_task(); // tinyusb device task
|
tud_task(); // tinyusb device task
|
||||||
cdc_task();
|
cdc_task();
|
||||||
probe_task();
|
probe_task();
|
||||||
|
led_task();
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -31,4 +31,17 @@
|
||||||
#define PICOPROBE_UART_TX 4
|
#define PICOPROBE_UART_TX 4
|
||||||
#define PICOPROBE_UART_RX 5
|
#define PICOPROBE_UART_RX 5
|
||||||
|
|
||||||
|
// LED config
|
||||||
|
#ifndef PICOPROBE_LED
|
||||||
|
|
||||||
|
#ifndef PICO_DEFAULT_LED_PIN
|
||||||
|
#error PICO_DEFAULT_LED_PIN is not defined, run PICOPROBE_LED=<led_pin> cmake
|
||||||
|
#elif PICO_DEFAULT_LED_PIN == -1
|
||||||
|
#error PICO_DEFAULT_LED_PIN is defined as -1, run PICOPROBE_LED=<led_pin> cmake
|
||||||
|
#else
|
||||||
|
#define PICOPROBE_LED PICO_DEFAULT_LED_PIN
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -11,6 +11,7 @@
|
||||||
#include <hardware/clocks.h>
|
#include <hardware/clocks.h>
|
||||||
#include <hardware/gpio.h>
|
#include <hardware/gpio.h>
|
||||||
|
|
||||||
|
#include "led.h"
|
||||||
#include "picoprobe_config.h"
|
#include "picoprobe_config.h"
|
||||||
#include "probe.pio.h"
|
#include "probe.pio.h"
|
||||||
#include "tusb.h"
|
#include "tusb.h"
|
||||||
|
@ -172,6 +173,9 @@ void probe_handle_read(uint total_bits) {
|
||||||
|
|
||||||
void probe_handle_write(uint8_t *data, uint total_bits) {
|
void probe_handle_write(uint8_t *data, uint total_bits) {
|
||||||
picoprobe_debug("Write %d bits\n", total_bits);
|
picoprobe_debug("Write %d bits\n", total_bits);
|
||||||
|
|
||||||
|
led_signal_activity(total_bits);
|
||||||
|
|
||||||
probe_write_mode();
|
probe_write_mode();
|
||||||
|
|
||||||
uint chunk;
|
uint chunk;
|
||||||
|
|
Loading…
Reference in New Issue