wiki:AVR-Ethernet

Version 22 (modified by sgk, 13 years ago) ( diff )

--

AVRイーサネット

こんな物を作りました。 ATMega168とENC28J60をSPIで接続した、ごくありふれた回路です。 特に、ENC28J60まわりは、データシートに掲載されている推奨回路のままです。 RJ45ジャックはメジャーなMagJackではなく、秋月で手に入るPulseJack J0011D21Bです。

キットを購入して下さった方に:キットについての解説

AVR Ethernetボード

ファームウェアが悩みですが、先人の人々がいろいろと実現してくれているのでおんぶにだっこで行く方針。

解説

回路図およびパターン図は、このページ最下部の「Attachments」を見てください。

  • 電源は3.3Vです。
  • SPI接続のために、PB3(MOSI)、PB4(MISO)、PB5(SCK)を使っています。また、SPIのチップセレクトのためにPB2を使っています。
  • ENC28J60からの割り込みを受け付けるため、PC2を使っています。
  • ENC28J60のクロック出力をATMega168に供給してありますが、内蔵クロックで動作させるのをお勧めします(後述の注意を参照)。
  • リセット線はATMega168とENC28J60で共有し、プルアップしてあります。
  • PB1には、確認用のLEDを接続してあります。Lで点灯します。
  • 6ピンISPコネクタがあります。
  • ボード端に並んでいる端子は、PB0~5、PD0~7、+3.3V、GND、AREFです。
  • PC0~5はカード中央にあるため、ブレッドボードには適しません。ブレッドボードを使う際は、PC0~5は使わない方がいいです。

クロックについて

ENC28J60にはクロック出力ピンがあり、これでATMega168を駆動することも可能です。 しかし、これを使わず、内蔵クロックで動作させることを強くお勧めします。 ひとたび、外部クロックを使用するようにATMega168のヒューズビットを設定すると、ISPでは書き込みできなくってしまいます。 なぜならば、ISPで書き込もうとするとリセットピンがLにされ、ENC28J60もリセット状態になってクロックが止まるからです。 (リセット線を共有するかどうか悩んだのですが…)

ENC28J60からのクロックを使用する場合には、ファームウェアの最初でENC28J60のレジスタを操作して、クロック(25MHz)を1/2分周したもの(12.5MHz)を出力するように設定してください。 また、ATMega168のプログラミングにおいて、外部クロックを使用するようにヒューズビットを設定してください。

課題

  • ATMega168の外付けクリスタルの場所を確保する。
  • リセット線を共有しているのをやめる。
  • ATMega168の電源を5Vにできるようにする。20MHz動作のため。
  • すると、ENC28J60の3.3Vのためのレギュレータが必要。
  • ピン配置の見直し。
  • 取り付け穴がもうひとつ欲しい。

ファームウェア

このあたりで開発中ですが、あまり期待しないでください。 ソースコードを取得する方法は、ソースコードレポジトリのページで説明します。

参考になるかも知れないページ

今後

  • 希望してくれる人がいれば、そのうちキットで販売するかもしれません。主要部品がちょっぴり高価なのが問題です。
  • 微妙に販売中です。よかったらどうぞ。
  • Arduino化しようかとか。
  • 自分用のひみつのプロジェクトとか。
  • やっぱり自前でIPはつらいから、W5100行ってみるか。
  • 意味なく小型化に挑戦してみるか。RJ45って、でかいですね。

キットを作ってくれた人々

(2008/8/25 - sgk)

Attachments (4)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.