(ARDUINO)ATtiny85を8Mhz動作でプログラムする [arduino]
今回はATtiny85を8Mhzクロック動作にして、統合開発環境Arduino1.0でプログラミングしてみます。
8Mhz動作にすると、SoftwareSerialが使えるのが大きいです。
もちろん、シリアルのprint構文なども使えるようになります。
するとこんな感じに、LEDを点けるだけでなく、シリアル接続の7セグLEDを使えたりします。
(※シリアル接続のLEDは、SPARKFUNのCOM-09230という旧タイプ、現在はCOM-09764という新しいタイプになっています。電源は乾電池2本で5Vを出力する電池ボックスPRT-08249です)
かなり表現範囲が広がるので、いろいろなことが出来るようになります。
では、肝心の設定に参りましょう!
■8Mhz動作への切り替え
(1)ArduinoとATtiny85をプログラムする時と同じように結線する。
(2)Arduino1.0を起動する
(3)Arduino1.0の[Tools]から[Boad]と進み[Attiny85(internal 8Mhz clock)]を選択
(4)Arduino1.0の[Tools]から[Programmer]と進み、[Arduino as ISP]を選択
(5)Arduino1.0の[Tools]から[Burn bootloader]を選択
ただし、ここでブートローダを書き込んだとしても、シリアル通信でATtiny85をArduinoのようにプログラムすることは出来ません。
この手順によって、ATtiny85は8Mhz動作になるようにヒューズ・ビットが設定されるだけです。ですので、プログラムする時は相変わらず、ArduinoISPなどの外付けのISPが必要です。
後はいつものようにプログラムをして、Attiny85(internal 8Mhz clock)に書き込むことが出来ます。
もちろん、ソフトウェアシリアルは使えます。
テストのために、サンプルのBlinkをAttiny85(internal 8Mhz clock)として書き込んでみてください。きちんとヒューズ・ビットの設定が出来ている場合には、一秒間隔で正しく点滅しますが、もし1Mhz動作のままならば、8秒くらいの長い間隔で点滅してしまいます。
■1Mhz動作への切り替え
(1)ArduinoとATtiny85をプログラムする時と同じように結線する。
(2)Arduino1.0を起動する
(3)Arduino1.0の[Tools]から[Boad]と進み[Attiny85(internal 1Mhz clock)]を選択
(4)Arduino1.0の[Tools]から[Programmer]と進み、[Arduino as ISP]を選択
(5)Arduino1.0の[Tools]から[Burn bootloader]を選択
こうすることで、1Mhzの動作の設定に戻すことが出来ます。
※一度、8Mhzクロックにすれば、以降はずっと8Mhzで動作しますので、書き込むたびに設定する必要はありません。
※今回はなぜか、Arduino1.0のArduino ISPでなぜかプログラムがうまく書き込めませんでした。それで、ArduinoIDEの「IDE-0023」を起動し、そちらのArduinoISPを書き込んで使いました。書き込んだ後は、Arduino1.0を立ち上げ直して、そちらで作業しました。なにかまだISPに問題があるのかもしれません。
わかり次第報告します。
------------------------------
(追加)
2012/2/6
ShooさんからUNOについての情報が寄せられました。
Arduino Unoのブートローダー(Optiboot)に問題があるので、それをOptifixに変更することで、ArduinoISPを使えるようになるとのことです。
------------------------------
※今回使ったスケッチ
8Mhz動作にすると、SoftwareSerialが使えるのが大きいです。
もちろん、シリアルのprint構文なども使えるようになります。
するとこんな感じに、LEDを点けるだけでなく、シリアル接続の7セグLEDを使えたりします。
(※シリアル接続のLEDは、SPARKFUNのCOM-09230という旧タイプ、現在はCOM-09764という新しいタイプになっています。電源は乾電池2本で5Vを出力する電池ボックスPRT-08249です)
かなり表現範囲が広がるので、いろいろなことが出来るようになります。
では、肝心の設定に参りましょう!
■8Mhz動作への切り替え
(1)ArduinoとATtiny85をプログラムする時と同じように結線する。
(2)Arduino1.0を起動する
(3)Arduino1.0の[Tools]から[Boad]と進み[Attiny85(internal 8Mhz clock)]を選択
(4)Arduino1.0の[Tools]から[Programmer]と進み、[Arduino as ISP]を選択
(5)Arduino1.0の[Tools]から[Burn bootloader]を選択
ただし、ここでブートローダを書き込んだとしても、シリアル通信でATtiny85をArduinoのようにプログラムすることは出来ません。
この手順によって、ATtiny85は8Mhz動作になるようにヒューズ・ビットが設定されるだけです。ですので、プログラムする時は相変わらず、ArduinoISPなどの外付けのISPが必要です。
後はいつものようにプログラムをして、Attiny85(internal 8Mhz clock)に書き込むことが出来ます。
もちろん、ソフトウェアシリアルは使えます。
テストのために、サンプルのBlinkをAttiny85(internal 8Mhz clock)として書き込んでみてください。きちんとヒューズ・ビットの設定が出来ている場合には、一秒間隔で正しく点滅しますが、もし1Mhz動作のままならば、8秒くらいの長い間隔で点滅してしまいます。
■1Mhz動作への切り替え
(1)ArduinoとATtiny85をプログラムする時と同じように結線する。
(2)Arduino1.0を起動する
(3)Arduino1.0の[Tools]から[Boad]と進み[Attiny85(internal 1Mhz clock)]を選択
(4)Arduino1.0の[Tools]から[Programmer]と進み、[Arduino as ISP]を選択
(5)Arduino1.0の[Tools]から[Burn bootloader]を選択
こうすることで、1Mhzの動作の設定に戻すことが出来ます。
※一度、8Mhzクロックにすれば、以降はずっと8Mhzで動作しますので、書き込むたびに設定する必要はありません。
※今回はなぜか、Arduino1.0のArduino ISPでなぜかプログラムがうまく書き込めませんでした。それで、ArduinoIDEの「IDE-0023」を起動し、そちらのArduinoISPを書き込んで使いました。書き込んだ後は、Arduino1.0を立ち上げ直して、そちらで作業しました。なにかまだISPに問題があるのかもしれません。
わかり次第報告します。
------------------------------
(追加)
2012/2/6
ShooさんからUNOについての情報が寄せられました。
Arduino Unoのブートローダー(Optiboot)に問題があるので、それをOptifixに変更することで、ArduinoISPを使えるようになるとのことです。
------------------------------
※今回使ったスケッチ
#include <SoftwareSerial.h> // ライブラリの導入 #define rxPin 1 #define txPin 2 SoftwareSerial MS = SoftwareSerial(rxPin, txPin); int b=0; /* Blink Turns on an LED on for one second, then off for one second, repeatedly. This example code is in the public domain. */ void setup() { // initialize the digital pin as an output. // Pin 0 has an LED connected on most Arduino boards: pinMode(0, OUTPUT); MS.begin(9600); // スピードを設定 MS.print("w"); MS.print(char(0)); MS.print("z"); MS.print(char(10)); } void loop() { digitalWrite(0, HIGH); // set the LED on delay(1000); // wait for a second digitalWrite(0, LOW); // set the LED off delay(1000); // wait for a second if(b<1000){ MS.print("X");} if(b<100){ MS.print("X");} if(b<10){ MS.print("X");} MS.print(b); b++; if (b>9999){b=0;} }
2012-01-28 21:13
nice!(0)
コメント(0)
トラックバック(0)
コメント 0