https://github.com/yud0uhu/chocottoos
ATtiny85とATmega328Pで動くRTOSのサンプルソースコードです。
https://github.com/yud0uhu/chocottoos
atmega328p attiny85 c cpp
Last synced: about 1 month ago
JSON representation
ATtiny85とATmega328Pで動くRTOSのサンプルソースコードです。
- Host: GitHub
- URL: https://github.com/yud0uhu/chocottoos
- Owner: yud0uhu
- Created: 2022-08-31T14:08:28.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2022-09-18T02:24:20.000Z (almost 4 years ago)
- Last Synced: 2025-02-16T07:18:40.921Z (over 1 year ago)
- Topics: atmega328p, attiny85, c, cpp
- Language: C++
- Homepage:
- Size: 14.6 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ChocottoOS 仕様書

[ATmega328P 実行環境サンプル](https://www.tinkercad.com/things/6Aaprh6Yftg?sharecode=2OyEuBo7mYWo1OJAKlSDvcfxUJd8KXGvkDT3uYiYsmg)
## timer_create()
- タイマカウンターの作成
```
引数:void
戻り値:void
```
## all_set_task()
- 新規タスクをスレッドに登録する
```
引数:struct task define *tasks
戻り値:void
```
引数は `volatile unsigned char task*id*`, `Priority priority`, `void (*task*handler*)(void)` を引数に持つ構造体配列.
以下のように実行したいタスク関数を作成する
```c++
void LED(void)
{
digitalWrite(1, !digitalRead(1));
}
```
作成したタスク関数に対し、
```c++
tasks[0] = {2, 2, LED)};
```
としてタスク ID とプライオリティをセットし、次のようにスレッドに登録する
```c++
all_set_task(tasks);
```
## タスク関数
- プライオリティは `0~10` の範囲で指定
```c++
void task_function(void)
{
// do something
}
```
## main 関数
- タイマを用いる場合、main 関数の最後に `while (1);`命令を明示する
```c++
int main(void)
{
init_all();
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
tasks[0] = {2, 2, LED1};
tasks[1] = {3, 3, LED2};
tasks[2] = {4, 4, LED3};
all_set_task(tasks);
timer_create();
os_start();
while (1)
; // 無限ループ(割込み待ち)
}
```