Giter Site home page Giter Site logo

rp2040-ctcss's Introduction

rp2040-ctcss

Create CTCSS tones in Micropython or C++ with a PIO machine on the RP2040. The output signal must be filtered with a low-pass filter.

How to use in Micropython

See example in ctcss.py.

How to use in C++

Copy ctcss.pio into your project folder.

in CMakeListe.txt

pico_generate_pio_header(<your project name> ${CMAKE_CURRENT_LIST_DIR}/ctcss.pio)

somewhere

#include "hardware/pio.h"
#include "hardware/clocks.h"
include "ctcss.pio.h"

inline const auto CTCSS_PIO = pio1;   // pio0 or pio1
inline const uint CTCSS_PIN = 10;     // any GPIO pin
inline const uint CTCSS_CYCLES = 180; // do not change

...

// setup ctcss pio
uint ctcssOffset = pio_add_program(CTCSS_PIO, &ctcss_program);
uint ctcssSm = pio_claim_unused_sm(CTCSS_PIO, true);
pio_sm_config ctcssConfig = ctcss_program_get_default_config(ctcssOffset);
sm_config_set_set_pins(&ctcssConfig, CTCSS_PIN, 1);
pio_gpio_init(CTCSS_PIO, CTCSS_PIN);
pio_sm_init(CTCSS_PIO, ctcssSm, ctcssOffset, &ctcssConfig);
pio_sm_set_enabled(CTCSS_PIO, ctcssSm, false);

...

// run ctcss pio
const double fCtcss = 151.4; // ctcss frequency
const auto sysClock = clock_get_hz(clk_sys);
const double clkDiv = sysClock / (fCtcss * CTCSS_CYCLES);
pio_sm_set_clkdiv(CTCSS_PIO, ctcssSm, clkDiv);
pio_sm_set_enabled(CTCSS_PIO, ctcssSm, true);

rp2040-ctcss's People

Contributors

michaelgroni avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.