読者です 読者をやめる 読者になる 読者になる

86duinoでのPWMの周波数の変更(タイマ割り込み)

 こんにちは

色々忘れるのでここに適当に書きます。

マイコンが欲しかったのでヒートシンクついててかっこよかったのとクロック300MHzだったので86duino買いました。

86duinoはPWMの周波数をTCCR1Aみたいなやつで変更できないのでtimeroneライブラリとかで変更する。具体的には

int value = 255;

void setup()
{
pinMode(3, OUTPUT);
Timer1.initialize(500000); 
Timer1.attachInterrupt(callback);
}

void callback()
{
if(value == 255)
value = 0;
else
value = 255;
}

void loop()
{
analogWrite(3,value);
}

みたいな感じで。

timeroneは時間割り込みするライブラリ。initializeで単位マイクロ秒でloop中の割り込み時間を指定する。この場合は500msで割り込むので周波数は2Hzになる。attachなんちゃらで引数の名前の関数を割り込んで処理させる。これでLEDに出力したら点滅が目に見えたので多分成功。デフォの周波数が1kHzらしいがそれ以上の周波数が出力されているか確認するためにはオシロが必要なのでできない。timeroneのほうのpwmの関数でもできるっぽいがよくわからない。以上が公式に載っていた情報を簡単に書いただけのもの。

マイコン初心者なのに見た目とスペックに見入られ完全互換じゃないものを買ってしまって色々手間取っている。86duinoの情報少なすぎ

※追記

割り込み後の処理が途中から再開みたいなのでひょっとしたら引数の値を変更しても次にanalogWriteが呼ばれたときにそれが反映されないかもしれない。この辺はよく分からないのでともかくオシロで確かめてみる