忍者ブログ

あやの

NゲージをベースとしたDCCについての日記を 書いています。 ある程度貯まりましたら、鉄道模型のDCCのまとめサイトに まとめています。 DCC館 http://1st.geocities.jp/dcc_digital/ DCC2号館 http://dcc.client.jp/

2017/10    09« 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  »11
ATtiny85のPWM周りのおさらい(^^
twaydcc さん情報ありがとうございます。

以下のソースファイルの抜粋は、前進か後進かで、PWM出力するポートを
O2かO4に切り替えるスケッチです。
CS10レジスタを1〜15の設定、1分周〜16384分周まで設定できるので、
遅い点滅も出来ますね。

if( gDirection == 0){
// PB1:O2:6pin PWM 出力 , PB4:O4:3pin LOW出力

 //      OCR1B無効   OCR1B未使用 
GTCCR = 0; 

digitalWrite(O4, LOW); // PB4:O4:3pin LOW出力

 //               OCR1A有効   high出力          分周無し 
TCCR1 = 1<<PWM1A | 2<<COM1A0 | 1<<CS10; 

// analogWrite(F3, aPwmRef); // analogWriteは使えない 
OCR1A = aPwmRef;               // 0〜255 

} else {
// PB1:O2:6pin LOW出力  , PB4:O4:3pin PWM 出力

//               OCR1A無効   OCR1A未使用  分周無し 
TCCR1 = 1<<CS10; 

digitalWrite(O2, LOW); // PB1:O2:6pin LOW出力

//                OCR1B有効     high出力 
GTCCR = 1 << PWM1B | 2 << COM1B0; 

analogWrite(F1, aPwmRef); // 0〜255 
// OCR1B = aPwmRef;         // この設定もできる 

}

ということは、ATtiny85 でも、モータースケッチ作れますね!
 
【6/18追記】
arduinoのwiring_analog.cのソース内に
#if defined(TCCR1A) && defined(COM1A1)
 case TIMER1A:
 // connect pwm to pin on timer 1, channel A
 sbi(TCCR1A, COM1A1);
 OCR1A = val; // set pwm duty
 break;
#endif

なんか、設定すれば使えるようになるのかな。


拍手[1回]

PR

無題

よかったです。OCR1B = aPwmRef;を使うと僅かにメモリ節約できますね。やり過ぎるとArduinoじゃなくなっちゃいますが。
ATtiny861を使うため 3rd-party-boards urlをdrazzyに変えましたが、analogWrite(F3, はやっぱり駄目でした。

by twaydcc 2016/06/18(Sat)10:06:56 編集

無題

コメントありがとうございます。 Arduinoのソースを眺めると、設定でOCR1Aが使えるanalogWriteが有効になりそうですね。
ATtiny861を使ったデコーダをつくられているんですね!。
by あやのすけ 2016/06/18(Sat)12:38:37 編集
お名前
タイトル
メール(非公開)
URL
文字色
絵文字 Vodafone絵文字 i-mode絵文字 Ezweb絵文字
コメント
パスワード   コメント編集に必要です
管理人のみ閲覧

ブログ内検索

プロフィール

HN:
あやのすけ
性別:
非公開
<< Back  | HOME Next >>
Copyright ©  -- あやの --  All Rights Reserved
Design by CriCri / Material by もずねこ / powered by NINJA TOOLS / 忍者ブログ / [PR]