All Projects → EDI-Systems → M2A01_MuSimpron

EDI-Systems / M2A01_MuSimpron

Licence: other
Small yet powerful state machine coroutine library

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to M2A01 MuSimpron

State Machine
🤖 A state machine library for Kotlin, with extensions for Android.
Stars: ✭ 72 (+111.76%)
Mutual labels:  state-machine, coroutines
UnityHFSM
A simple yet powerful class based hierarchical finite state machine for Unity3D
Stars: ✭ 243 (+614.71%)
Mutual labels:  state-machine, coroutines
DemOS
Free, simple, extremely lightweight, stackless, cooperative, co-routine system (OS) for microcontrollers
Stars: ✭ 18 (-47.06%)
Mutual labels:  state-machine, coroutines
Hal
🔴 A non-deterministic finite-state machine for Android & JVM that won't let you down
Stars: ✭ 63 (+85.29%)
Mutual labels:  state-machine, coroutines
leeks.js
Simple ANSI styling for your terminal
Stars: ✭ 12 (-64.71%)
Mutual labels:  8-bit, 4-bit
TFLite-Android-Helper
TensorFlow Lite Helper for Android to help getting started with TesnorFlow.
Stars: ✭ 25 (-26.47%)
Mutual labels:  coroutines
ProtoPromise
Robust and efficient library for management of asynchronous operations in C#/.Net.
Stars: ✭ 20 (-41.18%)
Mutual labels:  coroutines
Semantic-Segmentation-BiSeNet
Keras BiseNet architecture implementation
Stars: ✭ 55 (+61.76%)
Mutual labels:  simple
server-framework
纯C的分布式服务器框架通用模板,跨平台,模块动态加载,tcp/可靠UDP,协程RPC,日志,集群建立
Stars: ✭ 24 (-29.41%)
Mutual labels:  coroutines
DevFolio
A Modern Portfolio Template for Developers with easy setup process documented(with hosting).
Stars: ✭ 96 (+182.35%)
Mutual labels:  simple
font8x8-rs
8x8 monochrome bitmap fonts for rendering. Implemented in Rust.
Stars: ✭ 15 (-55.88%)
Mutual labels:  8-bit
ChatApp
Chat app based on Firebase tools.
Stars: ✭ 88 (+158.82%)
Mutual labels:  coroutines
agile
🌌 Global State and Logic Library for JavaScript/Typescript applications
Stars: ✭ 90 (+164.71%)
Mutual labels:  simple
compose-actors
🤖 Android app built with jetpack 🚀 compose follows new revamped guide to app architecture. Implemented with State, Coroutines ➰, ViewModels, Repository pattern, Light/Dark theme 🌈 MD3, Animations, Draw on canvas, Custom layouts, UI state handling, 🌀 Image loading with coil, Palette 🎨 usage and dynamic theming etc.
Stars: ✭ 80 (+135.29%)
Mutual labels:  coroutines
classy
Super simple text classifier using Naive Bayes. Plug-and-play, no dependencies
Stars: ✭ 12 (-64.71%)
Mutual labels:  simple
FireSnapshot
A useful Firebase-Cloud-Firestore Wrapper with Codable.
Stars: ✭ 56 (+64.71%)
Mutual labels:  simple
tstate-machine
TypeScript implementation of State Manager(like StateMachine)
Stars: ✭ 20 (-41.18%)
Mutual labels:  state-machine
MatrixLib
Lightweight header-only matrix library (C++) for numerical optimization and machine learning. Contact me if there is an exciting opportunity.
Stars: ✭ 35 (+2.94%)
Mutual labels:  simple
Flapi
Flapi is an API generator for Java, which generates 'smart' interfaces for improved fluency in your code.
Stars: ✭ 56 (+64.71%)
Mutual labels:  state-machine
workflow-manager
Minimal Workflow orchestrator for AWS Step Functions
Stars: ✭ 20 (-41.18%)
Mutual labels:  state-machine

logo

Proto Machine (RMS)

点击 这里 查看中文版。

    RMS is a super-simple state machine-based coroutine library targeting 4- and 8-bit microcontrollers.

  • Macro-packaged C constructs as the body of the control flow
  • Practically useful OS for 4- and 8-bit MCUs
  • Contains only 50 lines of code and have almost zero context switch overhead
  • Completely free from assembly coding or porting
  • Boost system flexibility and functionality
  • No separate stacks for different coroutines required
  • No system tick timer required

    This software is licensed under the MIT license.

Quick Demo

Normal coroutines

void Task1(void)
{
    SYS_TASK_BEGIN();

    /* User program */
    case TASK1_STATE1:
    {
        TASK_STATE=TASK1_STATE2;
        printf("Task 1: State 1 -> State 2\n");
        Delay(1);
        SYS_YIELD();
    }

    case TASK1_STATE2:
    {
        TASK_STATE=TASK1_STATE1;
        printf("Task 1: State 2 -> State 1\n");
        Delay(1);
        SYS_YIELD();
    }

    default:
    {
        SYS_YIELD();
    }

    SYS_TASK_END();
}

void Task2(void)
{
    SYS_TASK_BEGIN();
    
    /* User program */
    case TASK2_STATE1:
    {
        TASK_STATE=TASK2_STATE2;
        printf("Task 2: State 1 -> State 2\n");
        Delay(1);
        SYS_YIELD();
    }

    case TASK2_STATE2:
    {
        TASK_STATE=TASK2_STATE1;
        printf("Task 2: State 2 -> State 1\n");
        Delay(1);
        SYS_YIELD();
    }

    default:
    {
        SYS_YIELD();
    }

    SYS_TASK_END();
}

Interrupt coroutines

#define INT1_STATE_1         0
#define INT1_STATE_2         1

#define INT2_STATE_1         0
#define INT2_STATE_2         1

u8 Int_State_1=0;
u8 Int_State_2=0;

void Int_Task_1(void)
{
    INT_TASK_BEGIN(Int_State_1);

    case INT1_STATE_1:
    {
        Int_State_1=INT1_STATE_2;
        INT_YIELD();
    }

    case INT1_STATE_2:
    {
        Int_State_1=INT1_STATE_1;
        INT_YIELD();
    }

    INT_TASK_END();
}

void Int_Task_2(void)
{
    INT_TASK_BEGIN(Int_State_2);

    case INT2_STATE_1:
    {
        Int_State_2=INT2_STATE_2;
        INT_YIELD();
    }

    case INT2_STATE_2:
    {
        Int_State_2=INT2_STATE_1;
        INT_YIELD();
    }

    INT_TASK_END();
}

void Handler(void)
{
    Int_Task_1();
    Int_Task_2();
}

Getting Started

    Copy the single file into your project and use it as the main file. No porting needed as long as you have a C compiler. The "kernel" file supplied contains the example program itself, and it will use printf to output the current state of the two example tasks. A Visual Studio project is provided for illustration purposes; if you want to use gcc, simply type gcc -o RMS.elf kernel.c in shell. Deploying this into mass-produced products should be very easy. This product does not have documents associated with it; it should be self-illustrating.
    Keep in mind that this is designed for 4- and 8-bit MCUs, not for high-performance MCUs or application processors, though it is possible to run such "RTOS" on high-end processors as well. However, doing so will be a huge wastage of their resources. For 16-or 32-bit MCUs, consider M5P1_MuProkaron Real-Time Minikernel instead; for high-end 32-bit MCUs or application processors, consider M7M1_MuEukaron Real-Time Multi-Core Microkernel instead.

EDI Project Information

    Mutate - Archaeo - Simpron (M2A1 R3T1)

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].