{"id":21690067,"url":"https://github.com/rodan/atlas430","last_synced_at":"2025-06-12T15:04:02.103Z","repository":{"id":12105920,"uuid":"14694981","full_name":"rodan/atlas430","owner":"rodan","description":"library of HAL functions for MSP430 microcontrollers","archived":false,"fork":false,"pushed_at":"2024-11-11T17:31:05.000Z","size":3133,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-11-11T18:30:31.222Z","etag":null,"topics":["hal","msp430"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rodan.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":"2013-11-25T18:55:54.000Z","updated_at":"2024-11-11T17:31:12.000Z","dependencies_parsed_at":"2024-11-11T18:35:11.035Z","dependency_job_id":null,"html_url":"https://github.com/rodan/atlas430","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodan%2Fatlas430","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodan%2Fatlas430/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodan%2Fatlas430/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodan%2Fatlas430/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rodan","download_url":"https://codeload.github.com/rodan/atlas430/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226371302,"owners_count":17614486,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["hal","msp430"],"created_at":"2024-11-25T17:28:55.256Z","updated_at":"2024-11-25T17:28:55.928Z","avatar_url":"https://github.com/rodan.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n## atlas430\n\nlibrary of HAL functions that provide a glue layer between the upstream [Texas Instruments mspdriverlib](https://www.ti.com/tool/MSPDRIVERLIB) and projects that need quick prototyping while also allowing easier code migration from one msp430 microcontroller to another. on one hand it has a number of generic functions and configurable compile-time defines that will set up the hardware abstraction layer allowing the user to focus on the higher level code and on the other hand it can be out-of-the-way and allow direct access to the registers or to the TI driverlib. strives to also provide limited device-specific pin initialization for about 320 microcontrollers from the F5xx, F6xx, FR2xx, FR4xx, FR5xx and FR6xx families via code generated by scripted datasheet parsing.\n\n\n![Lib Logo](./doc/img/target_devboard.png)\n\n\n```\n source:    https://github.com/rodan/atlas430\n author:    Petre Rodan \u003c2b4eda@subdimension.ro\u003e\n license:   BSD\n```\n\n### components\n\n* TI MSP430 DriverLib\n* HAL glue for\n  * port init\n  * system and auxiliary clocks\n  * uart with optional interrupt driven tx\n  * interrupt driven i2c\n  * spi functions\n  * interrupt-based event handling\n  * scheduling\n* sample drivers\n  * *Honeywell High Accuracy Ceramic* (HSC) and *Standard Accuracy Ceramic* (SSC) piezoresistive silicon pressure sensors\n  * *Cypress FM24xxx* i2c FRAM IC\n  * *Texas Intruments ADS1110* 16bit ADC\n  * *Texas Instruments TCA6408* IO expander \n  * *Maxim DS3231* rtc IC\n  * *Maxim DS3234* rtc IC\n  * *Microchip MCP41xxx*, *MCP42xxx* Single/Dual Digital Potentiometer IC\n  * *Texas Instruments PGA2311* stereo audio volume control IC\n  * *Analog Devices AD7789* low power 16/24bit sigma-delta ADC IC\n* Makefile-based build, tag file and document generation, code static scan\n* shell scripts for checking the build environment, flashing uCs, version incrementation, RTC initialization\n* a Makefile driven collection of unit tests for the drivers above\n\n### software requirements\n\nthe entire development is done on both a Gentoo Linux and a FreeBSD system using makefiles, vim, the TI toolchain and gdb.\nwhile none of those are a requirement to making the library part of any msp430 project, it happens to be the beaten path. the library can be used in the following ways:\n\n#### via a special project makefile (in a linux/bsd environment)\n\nsee [this Makefile](https://github.com/rodan/sigdup/blob/master/firmware/Makefile) for the perfect example. **REFLIB_ROOT** defines the path to where this atlas430 repository has been cloned, **TARGET** represents the target microcontroller and [config.h](https://github.com/rodan/sigdup/blob/master/firmware/config.h) will be automatically expanded into compilation macros (-DFOO arguments to be sent to gcc). if **TARGET** is not hardcoded in the Makefile, then the user needs to provide it as an argument to make:\n\n```\ngmake TARGET=MSP430FXXXX\n```\n\nthe makefile supports the following options:\n\n```\n# check if everything is installed and paths are correct\ngmake envcheck\n\n# remove the build/DEVICE/ directory\ngmake TARGET=MSP430FXXXX clean\n\n# compile the project and library\n# create dependency tree and source code tags\ngmake TARGET=MSP430FXXXX\n\n# burn the firmware onto the target microcontroller\ngmake TARGET=MSP430FXXXX install\n\n# perform an optional static scan of the source code \ngmake TARGET=MSP430FXXXX cppcheck    # needs dev-util/cppcheck\ngmake TARGET=MSP430FXXXX scan-build  # needs sys-devel/clang +static-analyzer\n```\n\nin order to use gdb to debug the project make sure to enable the **CONFIG_DEBUG** macro in config.h and run in a terminal\n\n```\nLD_PRELOAD='~/.local/share/atlas430/lib/$(uname -s)/libmsp430.so' mspdebug --allow-fw-update tilib gdb\n```\n\nand then start gdb from within the project directory:\n\n```\ngmake TARGET=MSP430FXXXX debug\n```\n\ncommonly used commands from within gdb provided as example for the unit tests:\n\n```\ntarget remote localhost:2000\nmonitor reset\nmonitor erase\nload build/MSP430FXXXX/main.elf\nb\ndisassemble\nnexti\ninfo registers\ncontinue\ntui enable\n```\n\nthe included [Makefile.env](https://github.com/rodan/atlas430/blob/master/Makefile.env) contains the paths for the excelent [TI msp430 toolchain](https://www.ti.com/tool/MSP430-GCC-OPENSOURCE) which is a requirement in this scenario. a [shell script](./tools/check_setup.sh) for checking the build environment can be run on a non-priviledged account and will provide pointers of what packages are needed for building using this library. it also helps in installing the TI toolchain and support files.\n\nall the [unit tests](https://github.com/rodan/atlas430/tree/master/tests) can be compiled with this method.\n\n#### via *Code Composer Studio for Linux*\n\nimport [this project](https://github.com/rodan/sigdup/tree/master/firmware) as an example. the atlas430 repo is expected to be symlinked or cloned into *~/.local/share/atlas430/* while the compilation macros, the memory model, compile includes are all baked into the project's xml files - one needs to tweak them via *project properties* since this scenario is not using any of the provided Makefiles or scripts. compiling and debug is done via CCS.\n\n#### via *Code Composer Studio for Windows*\n\ntheoretically like above, but I have never tested it.\n\n### testing\n\nHAL functions are expected to work on any of the supported microcontrollers and for each family there are a few devboards on which the code is manually tested. the current compatibility table can be consulted [here](doc/tests/README.md).\n\n### references \n\nthe following projects are already using this library:\n\nproject | microcontroller | short description\n------- | --------------- | -----------------\n[sigdup](https://github.com/rodan/sigdup) | msp430fr5994 | software that takes PulseView digital signal captures as input and re-plays them\n[proto430](https://github.com/rodan/proto430) | msp430fr5994 | BoosterPack-compatible development boards used for quick prototyping and interfacing with serial devices\n[solar-charger rev4.1](https://github.com/rodan/solar-charger) | msp430f5510 | off-the-grid 1 cell lipo and 12v lead battery charger for low efficiency 15-36V photovoltaic cells\n[ucurrent_ctrl](https://github.com/rodan/ucurrent_ctrl) | msp430f5510 | power controller for Dave L. Jones's µCurrent\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frodan%2Fatlas430","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frodan%2Fatlas430","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frodan%2Fatlas430/lists"}