背景
Arduinoとは電子工作に利用しやすいように開発環境が整えられている仕組みや開発ボードのことです。オシレーター(発振回路)とは電源を供給すると周波数を発生する装置のことです。
周波数を発生する装置としては水晶振動子がありますが、これは信号線を2本繋げて使うタイプなので、電源を供給して信号線1本で周波数を送信するオシレーターとは別物です。
(説明が間違っていたら指摘してもらえると嬉しいです。)
マイコンの設定をミスしてオシレーターが必要になったものの、持っていなくて困っていました。
(ミスの内容を具体的に言うと、外部の水晶振動子を利用したかったのに、外部のオシレーターを利用する設定にしてしまい、マイコンが起動しなくなりました。)
調べてみたらArduinoをオシレーターとして動かせるらしく、それを利用することでマイコンを復活させられました。
オシレーターとして動かす方法を知ったStackExchangeのやりとり
Using an Arduino as a crystal oscillator
便利だったので、備忘録として情報を共有します。
使ったもの
Arduino Uno + 信号線(今回はジャンパワイヤ)
atmega328pが載っているNanoでも動くと思います。
出力ピンが変わりますが、Megaでも動かせるようです。
Arduino IDEを使えるPC
Arduino IDEとはArduinoにプログラムを書き込める開発環境です。下記のURLからファイルをダウンロードしてPCにインストールできます。
Arduino Software
プログラム
下記のプログラムをArduino Unoに書き込みます。OCRTAの値を1にすると、4MHzのオシレーターとして動作するようです。
#ifdef __AVR_ATmega2560__ const byte CLOCKOUT_PIN = 11; // Mega 2560 #else const byte CLOCKOUT_PIN = 9; // Uno, Duemilanove, etc. #endif void setup() { // set up timer on CLOCKOUT_PIN (OC1A) pinMode (CLOCKOUT_PIN, OUTPUT); // set up Timer 1 TCCR1A = bit (COM1A0); // toggle OC1A on Compare Match TCCR1B = bit (WGM12) | bit (CS10); // CTC, no prescaling OCR1A = 0; // 0: 8MHz, 1: 4MHz } void loop() { // whatever }
Arduino IDEからUnoに書き込みました。
接続
GNDと信号線(Unoの場合はD9, Megaの場合はD11)を周波数を認識させたい装置に接続します。USBで電源を供給する場合はこれで動きますが、USB給電無しで動かしたい場合は5VかVinに電源を接続してください。
まとめ
オシロスコープを持っていないので波の形は確認できませんでしたが、外部のオシレーターを必要とする状態のマイコンが動いたので、多分オシレーターとして動かせたと思います。参考になれば嬉しいです。
0 件のコメント :
コメントを投稿