Code Monkey home page Code Monkey logo

shiftavr's Introduction

ShiftAvr

The Avr-Sandbox project

A modern implementation of avr-core and GNU libraries for avr microcontroller units purely written in C.

This project is composed of several subprojects:

  • shiftavr-core: A low-level API that provides a direct implementation to the internal avr-units.
  • shiftavr-api: A high-level API that provides a combination of several hardware and sensors implementation combined with high-level design patterns and software principles to engage the core into a competitive level.
  • shiftavr-examples: Tech-demos and examples for the shiftavr project.

The project shiftavr-core includes the following libraries:

  • libuart
  • libadc
  • libgpio
  • libspi
  • libtwi
  • libpwm
  • libtimer

The project shiftavr-examples includes the following techdemos:

  • hello_uart
  • hello_adc
  • hello_gpio_write
  • hello_gpio_read
  • hello_spi
  • hello_twi
  • hello_pwm
  • hello_timer

The project shiftavr-api includes the following libraries:

  • libmcp3008
  • libstepper
  • libjoystick
  • libultrasonic
  • libmq135
  • libvectormath
  • libnumberformat

shiftavr's People

Contributors

scrappers-glitch avatar

Stargazers

 avatar  avatar

shiftavr's Issues

[libshiftavr] Use volatile addresses and members in callbacks

The [libuart] and [libadc] use only volatile protocol_callback* var in their callback instances which restricts the interrupt-safety to the actual instance of the callback and not the instance address and its members, so by changing it to volatile protocol_callback *volatile var and declaring the struct protocol_callback members to volatile, the interrupt-safety will include also asynchronous changes to the addresses and member states.

  1. The volatile protocol_callback* would add this feature:
volatile protocol_callback* internal_protocol_callback = ...;
protocol_callback finalize_callback = ...;

ISR(_xxx__vector) {
    //Adjusts the callback instance
    *internal_protocol_callback = finalize_callback;
}
  1. The protocol_callback *volatile would add this functionality:
protocol_callback *volatile internal_protocol_callback = ...;
protocol_callback *volatile finalize_callback = ...;

ISR(_xxx__vector) {
    //Adjusts the callback instance address to another one
    internal_protocol_callback = finalize_callback;
}
  1. The typedef struct { void (*volatile on_command)(vector); } protcol_callback; would add this functionality:
volatile protocol_callback *volatile internal_protocol_callback = ...;
volatile protocol_callback *volatile finalize_callback = ...;

ISR(_xxx__vector) {
    //Adjusts the callback instance address to another one
    internal_protocol_callback->on_command = finalize_callback->on_command;
}

[CI/CD] Ubuntu runner image crashes because of user-local uploaded CMakeCache Files

Here is the crash-logs:

Run chmod +rwx ./helper-scripts/project-impl/compile-all.sh && ./helper-scripts/project-impl/compile-all.sh
  chmod +rwx ./helper-scripts/project-impl/compile-all.sh && ./helper-scripts/project-impl/compile-all.sh
  shell: /usr/bin/bash -e {0}
CMake Error: Unknown argument --build
CMake Error: Run 'cmake --help' for all supported options.
CMake Error: The current CMakeCache.txt directory /home/runner/work/ShiftAvr/ShiftAvr/shiftavr-core/build/atmega3[2](https://github.com/Software-Hardware-Codesign/ShiftAvr/actions/runs/4652878191/jobs/8233329813#step:5:2)/CMakeCache.txt is different than the directory /home/twisted/GradleProjects/ShiftAvr/shiftavr-core/build/atmega[3](https://github.com/Software-Hardware-Codesign/ShiftAvr/actions/runs/4652878191/jobs/8233329813#step:5:3)2 where CMakeCache.txt was created. This may result in binaries being created in the wrong place. If you are not sure, reedit the CMakeCache.txt
gmake: /usr/bin/cmake: No such file or directory
gmake: *** [Makefile:525: cmake_check_build_system] Error 127
CMake Error: Unknown argument --build
CMake Error: Run 'cmake --help' for all supported options.
CMake Error: The current CMakeCache.txt directory /home/runner/work/ShiftAvr/ShiftAvr/shiftavr-core/build/atmega328p/CMakeCache.txt is different than the directory /home/twisted/GradleProjects/ShiftAvr/shiftavr-core/build/atmega328p where CMakeCache.txt was created. This may result in binaries being created in the wrong place. If you are not sure, reedit the CMakeCache.txt
gmake: /usr/bin/cmake: No such file or directory
gmake: *** [Makefile:[5](https://github.com/Software-Hardware-Codesign/ShiftAvr/actions/runs/4652878191/jobs/8233329813#step:5:6)25: cmake_check_build_system] Error 12[7](https://github.com/Software-Hardware-Codesign/ShiftAvr/actions/runs/4652878191/jobs/8233329813#step:5:8)

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.