GR-SAKURA
GR-KURUMI
GR-COTTON
GR-CITRUS
GR-PEACH
GR-KAEDE
GR-ADZUKI
GR-LYCHEE
GR-ROSE
GR-MANGO(*)
SNShield
Web Compiler
IDE for GR
TOPPERS関連
女子美コラボ
その他
※プロデューサミーティング中
作り方使い方資料
イベント関連
作品記事
体験記事
ライブラリ
ツール
その他・過去ファイル
まとめておくとそのうち修正されたりされなかったりするんじゃないかという期待を込めて立てました。
サイズ縮小の要望
いまのライブラリで生成されるROMイメージファイルは無駄にでかいので、改善していただきたい。
『クルミの研究』 の投稿に改善案として修正したものを添付しています。
GR-SAKURA ライブラリ V2 と同様に bitbucket 等でリポジトリを公開して pull req とかできるようなってると良いですね。
HardwareSerial::flush() の動作が正確でない。
#include <RLduino78.h> void setup() { Serial.begin(9600); Serial.print("0123456789"); Serial.flush(); Serial.end(); } void loop() { }
↑を実行すると、
012345678
までしか出力されない。 それへの修正。
Fujitaさん、いつもありがとうございます。
TSUBAME や KAEDE のフォーラムもレスポンス願います。
修正:
作業予定:
RLduino78_RTC.* 修正
static const RTC_TIMETYPE initTime = {97, 8, 29, RTC_WEEK_FRIDAY, 2, 14, 0}; rtc_set_time(&initTime);
くるみのスケッチリファレンスのattachMicroIntervalTimerHandlerの記述では、コールバック関数の型は
void(*)(unsigned long)
となっていますが、実際は
void (*)(void)
ですね。
attachMicroIntervalTimerHandler() の MsTimer2 風ラッパです。
使い方は MsTimer2 と同じですが、今のところの制限として
void MsTimer2::set(unsigned long ms, void (*f)())
に指定できる ms の値が最大で 64 となっています。
また、μ秒単位で割り込み間隔を指定する
void MsTimer2::setMicros(unsigned long us, void (*f)())
という関数が拡張されています。
サンプルスケッチ:
/*GR-KURUMI Sketch Template Version: V1.11*/ #include <RLduino78.h> #include <MsTimer2.h> // Pin 22,23,24 are assigned to RGB LEDs. int led_red = 22; // LOW active int led_green = 23; // LOW active int led_blue = 24; // LOW active void intervalFunc() { static int n = 0; digitalWrite(led_red, n & 0x80 ? HIGH : LOW); digitalWrite(led_green, n & 0x40 ? HIGH : LOW); digitalWrite(led_blue, n & 0x20 ? HIGH : LOW); n++; } void setup() { pinMode(led_red, OUTPUT); pinMode(led_green, OUTPUT); pinMode(led_blue, OUTPUT); MsTimer2::set(1, intervalFunc); } void loop() { MsTimer2::start(); delay(1000); MsTimer2::stop(); delay(1000); }
> 指定できる ms の値が最大で 64 となっています。
という制限がダサかったので制限がないよう修正。
void MsTimer2::setMicros(unsigned short us, void (*f)())
引数 us のデータ長変更。
違うか。65か。まあもう過去のことだ。
Fujitaさん、次のバージョンで採用させてください!
ゼヒお願いします。
学生に7セグLED x 4を使った時計を制作させています。セグメンLEDのダイナミック点灯にタイマー割込みを使った例も紹介したいので使わせていただきます。
Fujitaさんのこれまでの修正案を採用させていただき、V1.12とさせていただきたいと思います。Fujitaさん、本当にありがとうございます!
・digitalWrite/Readの高速化
・analogWriteの全ピン対応(3,5,6,9,10のハード以外をソフトで対応)
・Serial.flushが正しく実行されないことへの修正
・RTCのrtc_set_timeで年の設定を0~99に限定。また、引数にconstを指定できるように変更
・MsTimer2の追加
・fastDigitalWrite/Readを追加。
> 学生に7セグLED x 4を使った時計を制作させています。
良いテーマですね。いいのを作るとホワイトハウスにご招待されるかも。[ご参考]
> これまでの修正案を採用させていただき、V1.12とさせていただきたいと思います。
ありがとうございます。これで himekurumi も捗ります。
初めてKURUMIでSDカードを扱ってみました。
初めはリファレンス通りにやってみてファイルの作成や書き込みができることは確認しましたが、タイムスタンプが正しく設定されないのでここでキーワード「タイムスタンプ」で検索掛けて、SAKURAの場合の解決方法を試したら、RTC時刻のタイムスタンプが設定されました。
japan.renesasrulz.com/.../2814.aspx
めでたし、めでたしと思いましたが、SD.openを行う度にその時刻が設定されてしまいます。まあそれは当然と言えば当然なのかもしれませんが、
リファレンスのopen時の引数のモードでFILE_WRITEを指定すると動作は事実上追記でファイルにデータを書き込むわりに、タイムスタンプはその度に更新されてしまい、一番最初にファイルを生成した時刻が保存されません。
と言う訳で、ファイルにデータは追記モードで書きたいですが、CREATEした時間はそのまま保持して欲しい時のモードは何にすれば良いんでしょうか?
と言う質問です。
逆に上書きの場合はどうすんだろう?バイナリーモードは???
FILE_WRITE、FILE_READしかモードが無いのだろうか?