So-net無料ブログ作成

Arduino AVRでマルチタスクしてみる タスク1 [ATmarquino Arduino]

arduinoAvrMultiTask_001.png

gitHubで公開と言う慣れない事をやっているので、良かったら教えてね!

https://github.com/chobichan/avrMultiTask_001
※ちょっとだけ修正入れています。ダウンロード実績1件、わらった!

サンプルINOは3つのタスクが起動しています。
1.stackMonitor
2.task1
3.task2
ライブラリの非依存部のサービスコールは従来からこのblogで公開している物。
AVRに依存するライブラリを今回新たに作成している。

AVR依存部を作成するにあたって考慮するところ!
※AVR GCCの破壊レジスタ : r0,r18-r27(X register),r30-r31(Z register)

※;AVR GCCの非破壊レジスタ : r2-r17,r28-r29(Y register)

※関数から戻る時は必ずr1レジスタを0にする r1=0

※AVR GCCの最初の引数 : r25:r24、AVR GCCの2番目の引数 : r23:r22、AVR GCCの3番目の引数 : r21:r20、AVR GCCの4番目の引数 : r19:r18

※AVR GCCの戻り値 : r25:r24

コンテキストをスタックに積むところは以下の様にした。
スタックポインタからのオフセットレジスタ
0r29
1r28
2r17
3r16
4r15
5r14
6r13
7r12
8r11
9r10
10r9
11r8
12r7
13r6
14r5
15r4
16r3
17r2
18ステータスレジスタ
19空き
20プログラム・カウンタ 上位
21プログラム・カウンタ 下位


スタックにプログラム・カウンタを積むところで結構嵌った(笑)。

nice!(0)  コメント(0) 

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。