Git Product home page Git Product logo

psoc6_zephyr's Introduction

psoc6_zephyr

PSOC6 Eval Kit and Zephyr Tutorials

.. _button-sample:

Button

Overview


A simple button demo showcasing the use of GPIO input with interrupts. The sample prints a message to the console each time a button is pressed.

Requirements


The board hardware must have a push button connected via a GPIO pin. These are called "User buttons" on many of Zephyr's :ref:boards.

The button must be configured using the sw0 :ref:devicetree <dt-guide> alias, usually in the :ref:BOARD.dts file <devicetree-in-out-files>. You will see this error if you try to build this sample for an unsupported board:

.. code-block:: none

Unsupported board: sw0 devicetree alias is not defined

You may see additional build errors if the sw0 alias exists, but is not properly defined.

The sample additionally supports an optional led0 devicetree alias. This is the same alias used by the :ref:blinky-sample. If this is provided, the LED will be turned on when the button is pressed, and turned off off when it is released.

Devicetree details

This section provides more details on devicetree configuration.

Here is a minimal devicetree fragment which supports this sample. This only includes a sw0 alias; the optional led0 alias is left out for simplicity.

.. code-block:: devicetree

/ { aliases { sw0 = &button0; };

soc {
	gpio0: gpio@0 {
		status = "okay";
		gpio-controller;
		#gpio-cells = <2>;
		/* ... */
	};
};

buttons {
	compatible = "gpio-keys";
	button0: button_0 {
		gpios = < &gpio0 PIN FLAGS >;
		label = "User button";
	};
	/* ... other buttons ... */
};

};

As shown, the sw0 devicetree alias must point to a child node of a node with a "gpio-keys" :ref:compatible <dt-important-props>.

The above situation is for the common case where:

  • gpio0 is an example node label referring to a GPIO controller
  • PIN should be a pin number, like 8 or 0
  • FLAGS should be a logical OR of :ref:GPIO configuration flags <gpio_api> meant to apply to the button, such as (GPIO_PULL_UP | GPIO_ACTIVE_LOW)

This assumes the common case, where #gpio-cells = <2> in the gpio0 node, and that the GPIO controller's devicetree binding names those two cells "pin" and "flags" like so:

.. code-block:: yaml

gpio-cells: - pin - flags

This sample requires a pin cell in the gpios property. The flags cell is optional, however, and the sample still works if the GPIO cells do not contain flags.

Building and Running


This sample can be built for multiple boards, in this example we will build it for the nucleo_f103rb board:

.. zephyr-app-commands:: :zephyr-app: samples/basic/button :board: nucleo_f103rb :goals: build :compact:

After startup, the program looks up a predefined GPIO device, and configures the pin in input mode, enabling interrupt generation on falling edge. During each iteration of the main loop, the state of GPIO line is monitored and printed to the serial console. When the input button gets pressed, the interrupt handler will print an information about this event along with its timestamp.

Pre-Requiste

  1. Install Zephyr and Zephyr SDK in windows
  2. Insall ModusTool 2.4 (if any other version update settings.json)
  3. Testd with CY8CPROTO_062_4343W Board

psoc6_zephyr's People

Contributors

hariudkmr 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.