2014-01-01から1年間の記事一覧

シェルスクリプトでの乱数

【レビュー】シェルやシェルスクリプトで乱数を使う2つの方法 | マイナビニュースいつもこうやってたんで、どうにかならないものかと思ってたけど、 for i in `seq 5`; do echo $i; done | shuf | head -n1 こうやるんですね。 echo $(( $(od -vAn -N4 -tu4 …

リングバッファ

今回は、リングバッファについてです。 Ring Buffer モジュールは、utils/ringbuf.c、utils/ringbuf.h に含まれています。 しかしながら、リードポインタのライトポインタ追い越しとか、1byte毎にポインタを 割り込み抑止して更新するとか、ちょっといただけ…

PWM 割り込み

先日から、PWMの使い方について調べてきました。今日は、PWM の立ち上がり、立ち下がりで割り込みをとる設定についてです。PWM - Vakna! PWM その2 - Vakna!PWM割り込みを使う場合、PWMを使うための設定に加えて、以下の設定が必要です。 割り込みハンドラの…

PWM その2

タイマのPWMモードで生成される波形についてです。 データシートをちゃんと読んでいなかったので、PWMを2本出した時に想定外の波形になっていることに気づいたのでメモします。PWMモードでは、PWMの周期にあたるLoadと、dutyを決めるMatchを設定する必要があ…

Simple Task Scheduler

今回は、StellarisWareのSimple Task Schedulerライブラリをみてみます。Simple Task Schedulerは、utils/scheduler.c で提供されます。ユーザーズガイドによると、 一定間隔での関数呼び出しす必要のあるアプリケーションを簡単に実装する方法を提供する 呼…

アライメントの話

stellarisのようなARMのCPUでは、メモリアクセスの際のアドレス制約があるので、コンパイラは構造体をアライメントに従って配置してくれます。しかし、ローンチパッドのようにRAMが少なかったり、構造体をバッファからシリアライズ・デシリアライズしたい場…

PWM

TivaCローンチパッドのTM4C123GH6PMには、16ch PWM出力がついているようですが、stellarisローンチパッドのLM4F120には、PWMモジュールがついていません。代わりにタイマをPWMモードで使うことができるので試してみます。まず、タイマをPWMモードで使う場合…

BitBand

今回、ライブラリの使い方は置いといて、ARM Cortex-MのBitBandという機能について見てみます。BitBandについては、こちらでわかりやすく説明されています。要約すると、RAMやレジスタを複数箇所で触っている場合、1ビット操作をしたいときに、普通はディス…

シリアル通信

Stellaris Wareでは、いくつかの方法でシリアル通信が可能です。今回は、ユーティリティライブラリのUART Standard IOモジュールを使ってみます。UART Standard IOはutils/uartstdio.c、utils/uartstdio.hで提供されます。UART上で、C標準ライブラリのstdio.…

Micro Standard Library

先日から、Stellarisローンチパッドで遊んでいます。Stellarisローンチパッドには、Stellaris Wareというライブラリ群がバンドルされているので、その使い方を調べていきます。今回はMicro Standard Libraryという、C標準ライブラリの非常に小さなサブセット…

Stellaris ローンチパッド

1年くらい前に、共立エレショップでTIのStellarisローンチパッドを買いました。http://eleshop.jp/shop/g/gC9Q361/現在、\1,680になっていますが、当時、\500(お一人様4個まで)で売られていたので、きっちり4つ買いました。 Stellarisはルミナリーマイクロの…