{"id":18794859,"url":"https://github.com/acerv/rpi3tester","last_synced_at":"2026-04-29T20:05:13.716Z","repository":{"id":122919344,"uuid":"53596428","full_name":"acerv/rpi3tester","owner":"acerv","description":"A super simple Raspberry PI 3 GPIO tester","archived":false,"fork":false,"pushed_at":"2016-11-27T07:01:53.000Z","size":35,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-21T16:49:34.043Z","etag":null,"topics":["frequency","frequency-signal","gpio","measurements","raspberry-pi","testing"],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/acerv.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-03-10T15:43:21.000Z","updated_at":"2025-05-10T18:43:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"3e30b1d9-774d-4e1c-9d41-a56085ecc0e5","html_url":"https://github.com/acerv/rpi3tester","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/acerv/rpi3tester","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acerv%2Frpi3tester","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acerv%2Frpi3tester/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acerv%2Frpi3tester/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acerv%2Frpi3tester/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/acerv","download_url":"https://codeload.github.com/acerv/rpi3tester/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acerv%2Frpi3tester/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32441456,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T18:12:22.909Z","status":"ssl_error","status_checked_at":"2026-04-29T18:11:33.322Z","response_time":110,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["frequency","frequency-signal","gpio","measurements","raspberry-pi","testing"],"created_at":"2024-11-07T21:31:20.831Z","updated_at":"2026-04-29T20:05:13.361Z","avatar_url":"https://github.com/acerv.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Introduction\n\n[![Build Status](https://travis-ci.org/acerv/rpi3tester.svg?branch=master)](https://travis-ci.org/acerv/rpi3tester)\n\nThis is a simple test program for the Raspberry Pi 3, that can be use to measure the efficency of the GPIOs.\nIt can also be used to read input frequency of a waveform and the generate frequency signals.\n\nThe program command-line looks like this:\n\n    Use one of the following commands:\n    - input [gpio]\n    - output [gpio]\n    - read [gpio]\n    - write [gpio]\n    - blink start [gpio] [time_ns]\n    - blink stop [gpio]\n    - freq start [gpio]\n    - freq stop\n    - freq print\n    - exit\n    \n    cmd\u003e \n\n## Compiling\nThe program must be compiled for the Raspberry PI3 platform, which is ARM.\n\nIf you are using a Debian based distribution (i.e. Ubuntu), install the tools for cross compiling:\n\n    $ sudo apt install build-essential g++-arm-linux-gnueabihf gcc-arm-linux-gnueabihf \n\nTo compile the program, run the following commands inside the project directory:\n\n    $ export CC=arm-linux-gnueabihf-gcc\n    $ make\n\nThen you need to copy `rpi3tester` binary output in the Raspberry PI3 device and run it:\n\n    $ scp ./rpi3tester pi@\u003craspberrypi IP\u003e:/home/pi\n    $ ssh pi@\u003craspberrypi IP\u003e /home/pi/rpi3tester\n\n## Single GPIO setup and measurement\nTo read/write a sinlge GPIO, use the following procedures:\n* use the `input` command to setup the GPIO as input, then call the `read` command to read the GPIO status;\n* use the `output` command to setup the GPIO as output, then call the `write` command to write the GPIO status.\n\n## Frequency generator\nTo generate a frequency signal out of a GPIO, use the `blink` command.\nThe `blink` command works as follows:\n* `blink start [pin] [time_ns]`: it generates a square waveform out of the given GPIO, with the specified time (in nanoseconds) between rising edges;\n* `blink stop`: it stops the sqare waveform.\n\nWith these routines, it's possible to obtain a 15MHz signal (~60ns wave) maximum, but the result can be improved reducing register operations on GPIO virtual memory map (ie. knowing before the GPIO we want to use).\n\n`nanosleep` is used to generate the square wave, but the resolution depends on the operative system. I checked it out, obtaining max 150us resolution between rising edges, when using the smallest sleep time (1ns).\n\n## Frequency reader\nTo read the frequency of a sqared waveform, use the `freq` command.\nThe `freq` command works as follows:\n* `freq start [gpio]`: it starts to read the frequency of the waveform into the specified GPIO pin\n* `freq stop`: it stops the frequency read\n* `freq print`: it prints the current frequency\n\nWith these routines, the program can measure signals up to 4MHz, but the result can be improved reducing register operations on GPIO virtual memory map (ie. knowing before the GPIO we want to use).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Facerv%2Frpi3tester","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Facerv%2Frpi3tester","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Facerv%2Frpi3tester/lists"}