2014/03/23

[電子工作]aitendoのDDSモジュールを動かす その3

,
 前記事は[電子工作]aitendoのDDSモジュールを動かす その2でした。
しばらく触ってなかったのですが、元々無いやる気を必死に絞り出して、ちょっとだけ進めました。現状だとLCDを付けたのが新しい点です。
 基板の写真です。
基板表面 + LCD + LPC-Link2
基板裏面。UEWによる配線(電源も)だけれど、電流容量とクロストークノイズが気になるところ。
さて、今回も幾つか詰まった点があったので、メモしておきます。

aitendoのLPC1114ボードの誤表記

一番詰まったことは、シルクに書いてあるポートと、実際に接続されてるポートが違うことでした。
 aitendoのLPC1114ボードには、裏面にシルクでポート番号が書かれています。それを信じて接続してたところ、最初はLCDが動きませんでした。LCDコネクタとピンヘッダ間はテスターで導通チェックしていたので、配線に間違いは無いはずだと思い、ソフト側が問題かと思っていました。しかし、ロジアナでソフトの動作を確認していたところ、P2.4、P2.5に接続していたRS、Eが全く動いてないことに気づきました。
 で、ふと回路図を見ていたところなんか変だったので、実際にテスターで追っていったところ、正しい結線は以下のようになってるらしいです。

LPC1114のポート 基板に書かれてるシルク(J2のピン番号)
PIO2_4 DM
PIO2_5 DP
PIO3_4 P2.4
PIO3_5 P2.5
ややこしい…というか、これはおいそれとは気付かないと思うんだ。
 
ややこしい回路図
プログラム側で簡単に修正したら動くようになりました。
 しかし、DM/DPは多分USBの端子の名前で、LPC1114にはUSB機能はないのですが…LPC1300とかと間違えたんでしょうか?

EZ-LCDライブラリの移植

EZ-LCDとは

EZ-LCDとは、ChaN氏という方が制作された、HD44780互換LCDを動かすためのC言語のライブラリです。今回LCDを使いたかったので、これを利用することにしました。
 移植と言っても、移植手順に書かれているように、
1)hd44780.hの_LCD_ROWSで行数を、_LCD_COLSで桁数を設定する
2)hd44780.cの、環境依存な関数(ポートのON/OFFとか)を記述する
だけです。

 実際に、hd44780.cの環境依存部のコードを下に示します。上に書いたように、ポートが違ってたなどのミスもありましたが、割と直ぐに動かすことが出来ました。
#else
#include "LPC11xx.h"
#include "gpio.h"    
#define IF_BUS  4   
#define DELAY_US(n) delay_us(n) 
#define IF_INIT() {}   
#define IF_DLY60() {}   
#define IF_DLY450() delay_us(1)   
#define E1_HIGH() (GPIOSetValue(3, 4, 1)) 
#define E1_LOW() (GPIOSetValue(3, 4, 0)) 
//#define E2_HIGH() bclr(P1) /* Set E2 high (dual controller only) */
//#define E2_LOW() bclr(P1) /* Set E2 low (dual controller only) */
#define RS_HIGH() (GPIOSetValue(3, 5, 1))
#define RS_LOW() (GPIOSetValue(3, 5, 0)) 
#define OUT_DATA(d) dataOut(d)  
 
static void delay_us (int ustime){
 //LPC1114 is runnning at SystemCoreClock
 const int count = SystemCoreClock / 1000000 / 3 * ustime; //Nusあたりのループ数
 int reg1;

 __asm volatile{
  MOV reg1, count; //1clock
  loop:
  SUBS reg1, reg1, 1; //1clock
  BNE loop;   //1clock if not branch, 3clock if branch
 }
 return;
}

#endif

void dataOut(const uint8_t data){
 GPIOSetValue(2, 0, data >> 7); //DB7
 GPIOSetValue(2, 1, data >> 6); //DB6
 GPIOSetValue(2, 2, data >> 5); //DB5
 GPIOSetValue(2, 3, data >> 4); //DB4
}
注意としては、予めポートの方向をGPIOSetDir()などで設定すること、R/WはサポートされないのでGNDに落とすなどする(常時Write)、です。

delay_us()について

上のコードで、delay_us()だけはAVRと違い公式ライブラリには存在しないので、アセンブラで書きました。
 参考 : Starting with the LPC1114FN28 ARM Cortex-M0 chip in DIP package
 ここのarm_lpc111x/lib/delay.hをほぼ丸パクリ参考にしました。
 次に各命令についてです(といっても3つだけですが)。

命令 意味
MOV Rd, Rm レジスタからレジスタに移動。1cycle。
SUBS Rd, Rn, #<imm> SUBは減算(Rd = Rn - #<imm>)。サフィックスが-Sなのでステータスフラグ更新。1cycle。
BNE ジャンプ(branch if (Z flag is) not Equal(Zフラグが0、つまり前の計算結果が0じゃないなら実行))。分岐時は3cycle、しないときは1cycle
ちなみに、上のコードは、[Optimization]が[-O0]で、以下のようなコードになりました。volatileなのに中身が変わっている…
    61: static void delay_us (int ustime){
    62:         //LPC1114 is runnning at SystemCoreClock
0x00000300 B5F8      PUSH     {r3-r7,lr}
0x00000302 4604      MOV      r4,r0
    63:         const int count = SystemCoreClock / 1000000 / 3 * ustime;       //Nusあたりのループ数
    64:         int reg1;
    65:         __asm volatile{
0x00000304 498A      LDR      r1,[pc,#552]  ; @0x00000530
0x00000306 488B      LDR      r0,[pc,#556]  ; @0x00000534
0x00000308 6800      LDR      r0,[r0,#0x00]
0x0000030A F000FFBF  BL.W     __aeabi_uidiv (0x0000128C)
0x0000030E 4607      MOV      r7,r0
0x00000310 2103      MOVS     r1,#0x03
0x00000312 F000FFBB  BL.W     __aeabi_uidiv (0x0000128C)
0x00000316 4360      MULS     r0,r4,r0
0x00000318 4605      MOV      r5,r0
    66:                 MOV reg1, count;        //1clock
0x0000031A 462E      MOV      r6,r5
    67:                 loop:
0x0000031C BF00      NOP    
    68:                 SUBS reg1, reg1, 1;     //1clock
0x0000031E 1E76      SUBS     r6,r6,#1
0x00000320 D000      BEQ      0x00000324
    69:                 BNE loop;                     //1clock if not branch, 3clock if branch
    70:         }
    71:         return;
0x00000322 E7FC      B        0x0000031E
    72: }

エラーとか

さて、最初はinline assemblerにレジスタを直に書いていました(r1など)が、
warning:  #1267-D: Implicit physical register R1 should be defined as a variable
と出るので、KeilのFAQにあるように、ローカル変数か何かを使った方がいいみたいです(上の例では、アセンブラを見たところ、reg1がr3として使われてました)。

 また、subsではなくsub命令を使おうとしたところ、
hd44780.c(68): error:  #2829: Cannot perform desired action on condition flags
                SUB reg1, reg1, 1;      //1clock
と出てしまい使えませんでした(理由が分からない、condition flagsというのはなんだ)。
 

参考サイト

KeilのARMCCで__asmを使うときのガイドはこちら。
Compiler User Guide: Inline assembler rules for compiler keywords __asm and asm
Compiler User Guide: Inline assembly language syntax with the __asm keyword in C and C++

 また、Cortex-M0の命令については以下を参考にしました。
ARM Information Center Cortex-M0 テクニカルリファレンス マニュアル 3.3. 命令セットの概要 #<imm>は即値。サイクル数などの参考に。
ARM Information Center RealView Compilation Tools アセンブラガイド 2.4.2. 条件実行 bne(b + ne)などの条件実行命令について。
Assembly Programming on ARM Linux (2) 条件実行について。これめっちゃ便利ですね。

多分違うであろうdelay_us

ちなみに、絶対間違ってるとは思いますが、以下の様なナメた感じのコードでも動作はします。また、IF_DLY60()、IF_DLY450()は何も書かなくても動作するのを確認しました。12MHzなら大体1clock=83nsなので、ポートon/off以外のコードが間に入ることを考えれば、妥当?
static void delay_us (int ustime){
 //LPC1114 is running at SystemCoreClock
 const int count = SystemCoreClock / 1000000 * ustime; //Nusあたりのループ数
 while(--count > 0){
  __asm volatile("nop");
 }
 return ;
}

まとめ

・aitendoのLPC1114ボードは、少し結線の表記がおかしいところがある。
・EZ-LCDライブラリは移植が楽だが、delay()系関数が無いと少し大変。
・インラインアセンブリは難しい(CPUの理解、命令の理解、インラインアセンブリの書き方の理解)。

今回は以上です。
Read more →

2014/03/15

[電子工作]Eagleあれこれ

,
 Eagleを使ってて!とか?と思った点です

タグっぽいラベル

下の記事で知ったのですが、Netに付けるラベルは、図形付きで表示することも出来るんですね。

CuBeatSystems: Proteus 7のデモバージョンを試す(EAGLEの上にも10年)

こんなん。
NetのLabel表記を、タグっぽいのにしたやつ
こうするには、上のメニューバーでそれっぽいボタンを選ぶか、labelの[Properties]→[Xref]にチェックを入れる。
それっぽいボタン
もしくは、Labelの[Properties]で[Xref]にチェックを入れる。ちなみにこの例では単位はinch。
上のメニューバー見てなくて全然気づかなかった…。
 ちなみに、[Size]が0.07inchだと、デフォルトのGrid幅で並べた時に重なってしまう。重ならないのは0.05inchとかその辺りから(上の写真は0.05inch)。

USB端子型の基板の作り方

時々有りますよね。基板の端っこがそのままUSB端子となって、挿入可能なやつ。トラ技2008/08の78K0基板とかもそうでした。
 作りたいなあとは思ってたんですけど、偶然作り方まとめみたいな記事を見つけたので、書いておきます。

USB PCB Business Card

 でもまあこの形だとElecrowではダメでしょうね…

中を塗りつぶした丸

[Circle]の[Width]を0にすればいいらしいです。1ピン横の丸ポッチ書くのに気になってた。
参考 : EAGLE使いこなし
[Circle]の[Properties]→[Width]を0にすると、中が塗りつぶされる。
こうなる。

ベタグラウンドのどこにも接続してない部分(島)を消す

基板を最終的にベタグラウンドにすること、よくあると思います。Eagleなら、Polygon機能を使えば出来ます。ただ、よく「ベタグラウンドだが、四方を配線に囲まれていて、どこにも接続していない部分」というものも出来てしまいます。
 何が問題かというと、「浮いている」というのは「電圧不定」ということなので、何Vとなっているのか分からず、もしどこかと接触した場合などとても怖い(怖そう)です。なので、基本はViaを打ち、反対側のベタグラウンドと接続し、GNDに落とすと思います。

 で。そのViaなんですが、デフォルトでは打つと新しいネット扱い(Name S$240とか)となって、GNDではなくなってしまいます。なので、[Name]で[GND]に指定する必要があります。
 まあ、Viaは1個配置したらCopy & Pasteした方が早いように思います…

 もし反対側までViaが打てないような場合、
・41 tRestrict Layer(Top面の配線禁止領域を指定するLayer)
・42 bRestrict Layer(Bottom面の配線禁止領域を設定するLayer)
などのLayerに浮いたベタグラウンドを囲むようPolygonを書き、配線禁止にしてベタグラウンドを作成しないようにします。
tRestrictで囲って浮いたベタグラウンドを消す方法。

Read more →

2014/03/09

[雑記]ガーラ湯沢に行く時に気をつけるべき7つのこと

,
 それっぽいタイトルにしてしまった…
 3/1に日帰りでガーラ湯沢に滑りに行きました。当日の夜中に行くことを決めたので、てんやわんやの強行軍だったのですが、なかなか満足した小旅行でした。
 それで、ガーラ湯沢に次に行くときに気をつけようと思うことをメモしておきます。

びゅう旅行商品の日帰りパックを使う

旅行費用を決める主要因なので、多分一番大きなポイントです。新幹線で行くとなると、やはり気掛かりなのはその費用です。もし素直に切符を買うとすると、

運賃(片道) \3,570 指定席券(片道) \3,330 計\6,900

がかかります(3/9の場合)。往復だと切符代だけで\13,800、ここにリフト券(場内1日券\4,500、冬価格)、レンタル代なども加わり、2万円近く飛んでしまいます。
 これが日帰りパックを利用すると、平日\7,200、休日でも1万円前後になり、かなり節約することが出来ます。
 但し、「ネットでの日帰りパックの予約は、旅行日の数日前までのみ」のような制約もあるようです…(今回それで使えなかった)。

レンタルは事前にネットで予約しておく

JR SKI SKIでも手ぶらでスキー場に行けると宣伝してるだけあって、来る人の多くがレンタルを利用します。その為に、レンタルカウンターには長蛇の列が出来てしまいます(私は45分位並びました)。
 一方事前予約をしておけば、3Fのレンタルカウンター(予約しないと2F)で直ぐに受け取ることが出来たみたいです(ソース無し)。しかも、カードの事前決済なら20%OFFにもなります。なので、折角の時間を無駄にしたくないなら、予約するほうが利口だと思います。
 
 但し、レンタル事前予約も2日前までに申込が必要なので、そこに注意が必要です。

もしレンタルを予約しないなら

まずは、レンタル+場内1日券が安くなる(と言っても-\500とかか)クーポンがあるので、それをリフト券購入時に見せましょう。クーポンはこれです。
 (印刷せず、画面を見せるだけで大丈夫なクーポンは、公式サイトのこれくらいです。他のクーポンだと、何故か印刷する必要がある旨が但書きされてたりします。)

 なので、レンタルの地獄のような行列に並ぶことを考えると、なるべく階段に近いところに乗りたいのですが、何号車付近なのか分からない…。

新幹線(Maxたにがわ8両編成)の自由席について

ガーラ湯沢に行くMaxたにがわの場合、指定席車両はあまり多くなく、自由席が大半になります。なので、スキーシーズンだと切符を取れず、自由席に乗ることもあるかもしれません。
 で、その自由席なのですが、ここなどを見ると分かる通り、Maxたにがわの自由席のうち1号車の定員は、他の車両より少ないです。更に、1~3号車の2Fは3列+3列で窮屈らしいです(それでも夜行バスよりは断然快適ですけど…)。東京駅では何故か自由席の行列がどこも同じ長さなので、出来るなら1号車以外に乗りたいなあと思いました。

 因みに、私が乗った時は東京からの人は大体座れてましたが(数人のグループは別)、大宮から乗った方は通路に立っている人も多かったです。
 また、自由席特急券は「途中下車前途無効」であって、改札を出ないで他列車自由席への乗り換えは可能(?)だと思うので、越後湯沢で新潟⇔東京の新幹線に乗り換えるのも手かなあ、と思ってます。

ゲレンデあれこれ

ゲレンデについてです(コース図)。
 まず、中央ゲレンデはかなり混みます。ゴンドラに乗った後は、必ず中央ゲレンデの高速クワッド(バルーシュ/ソーシャブル)に乗ることになるためでしょうか。
 逆に、南エリアは比較的空いてたように思いました。ただ、南は中級者/上級者コースばかりなので、初心者には不向きなのかもしれません。
 又、北エリアも中央よりは空いていましたが、確か16:00くらいに閉まるので、注意が必要です。ただ、南北共にリフトの運行時間は中央よりも短いので、最後は中央を回すことになるんだろうなあとは思います。

 逆に、初級者コース(特にエーデルワイスの下部)はかなり人で溢れてました。特に、コースが狭くなっているところなどはぶつかりそうで、正直怖かったです。

 また、レストハウスが2つ(中央のチアーズ・北のオーレ)しか無いので、お昼どきはかなり混雑します。自分は13:30頃に行って、席を探すのに結構苦労しました。
 

入浴施設の場所

スキーで運動したなら、帰る前には体を洗いたいって思いますよね。そんな時のための入浴施設の一部紹介です。

SPAガーラの湯 入浴料\1,300(大人、各タオルセット付)
 ガーラ湯沢駅3Fにある温泉です。でも同行者(前に行ったことあるらしい)によると、あんま良くないとか。基準が分からないけれど…。

酒風呂 湯の沢 入浴料\800 
 越後湯沢駅構内にある温泉です。アクセスの良さ、酒風呂という珍しさがウリでしょうか。混んでなければここでいいような気もします。


・江神共同浴場 入浴料\400、貸タオル・バスタオルは料金別途
 越後湯沢駅から歩いて数分のところにある共同浴場です。私が行った時はこっちを利用しました。駅から近いとはいえ、ちょっとは歩くので穴場かなと思ってましたが、行ったら人が一杯いました…。



帰りは越後湯沢に寄ろう

自由席特急券をガーラ⇔東京で買ってたりすると無理な気がしますが…。
 越後湯沢駅構内には、「CoCoLo湯沢」、「ぽんしゅ館」といった施設があり、笹だんごから日本酒、その他様々な工芸品などのお土産を購入したり、日本酒の利き酒が出来たり、入浴施設(前述の酒風呂)があったり、ご飯を食べることが出来たり(9店舗くらい)と、様々なことが出来、スキーと同じくらい楽しめる場所でした。

 ちなみに、湯沢で私が推してるのは糀ラテです。かなり甘いけれど美味しくて、糀独特のいい匂いがとても印象に残っててよかったです。なかなか東京でも出会えないものなので、もう一度飲みに行きたいくらい。
 それから後は蒸して温めてある笹だんご…?(1つ\130)

 ちなみに、越後湯沢駅までは、ガーラ湯沢の1Fから出ている無料シャトルバスで10分程度です。ただこのバス、毎回階段にまで行列が伸びていて、乗れないこともしばしばあるようでした。
 

まとめ

こんなに気をつけることあるんかい!ってくらい長くなってしまいましたが、私が気を付けようと思った点はこれくらいです。
Read more →

2014/03/01

[電子工作]LPCXpresso LPC1768 評価ボードに書き込めない

,

概要

LPCXpresso LPC1768 評価ボードに書き込めなくなりました。
 症状としては、LPCXpressoでProjectをBuild後、[Debug 'periph_blinky' [Debug]]ボタンを押しても、以下の様になって書き込めません。
LPCXpresso評価ボードに書き込む際エラーが出る、LPCXpress IDEのスクリーンショット
エラーログです。
//一番上に出てくるダイアログ
02: Failed on connect
  02: Failed on connect
  Cannot find selected MEM-AP (check target power)
  Emu(0): Conn&Reset. Was: None. DpID: 2BA01477. Info: HID64HS12

//二番目に出てくるダイアログ
Error in final launch sequence
  Failed to execute MI command:
-target-select extended-remote | crt_emu_cm3_nxp -msg-port=61865 -g -mi -2 -pLPC1769 -vendor=NXP -e0 -wire=hid
Error message from debugger back end:
Remote communication error.  Target disconnected.: No error.
  Remote communication error.  Target disconnected.: No error.

//LPCXpressoのConsole
LPCXpresso Debug Driver v6.0 (Sep 10 2013 00:02:23 - crt_emu_cm3_nxp build 1208)
Looked for chip XML file in D:/nxp/LPCXpresso_6.0.2_151/lpcxpresso/bin/LPC1769.xml
Looked for vendor directory XML file in D:/nxp/LPCXpresso_6.0.2_151/lpcxpresso/bin/nxp_directory.xml
Found generic directory XML file in D:/nxp/LPCXpresso_6.0.2_151/lpcxpresso/bin/crt_directory.xml
Failed on connect: Em(01). Cannot find selected MEM-AP (check target power)
Conn&Reset. Was: None. DpID: 2BA01477. Info: HID64HS12

環境は
IDE : LPCXpresso v6.0.2 [Build 151]
OS : Windows 8
LPCXpresso 評価ボード : LPC-Link取り外しておらず、USBハブを通じてケーブルで接続

そもそもなんでFailedになるのか

そもそもMEM-APってなんだよ?と云う話ですが。
Memory Access Port (MEM-AP), which is designed for connection to memory bus system with address and data controls.
詳細はADIv5とかの長いPDFを読まないと分からないんですが、Cortex-M*コアをデバッグする際の、メモリにアクセスする部分が、LPC-Linkから見つからないよといった感じでしょうか…。

 因みに、エラーメッセージで検索すると、code_redのFAQページが出てきます。
DebugErrors - ** Code Red Support Site ** 
どうやら、TIのLM Flash Programmerというツールを使って、Flashを"mass erase"するみたいです。ただ、LPCXpresso評価ボードについての話じゃないようなので、ちょっと正しいのか疑問です。

 このFAQによれば、
One thing that can happen is that certain code configurations can make it difficult (or impossible) for the debugger to communicate over JTAG or SWD. Things like programming JTAG/SWD signals to GPIO, or the setting the system clock to an invalid or out-of-spec value. Since the debugger takes some time to connect and a little bit of code always gets run when connecting, it becomes a race to connect before the bad code gets (http://support.code-red-tech.com/CodeRedWiki/DebugErrorsから引用)  
だそうです。つまり、プログラムのせいでJTAG/SWDのポート機能を書き換えてしまったとか、内部クロックの設定を間違えたのが原因の1つみたいです。

 あまり他にこのエラーになった方はいないようですが、LPCWareを見てみると、こんな投稿がありました。
Code enters DeepSleep, now I can't connect debugger | www.LPCware.com
GPIO経由でFlashMagicを使うみたいですね。

 で、実際にやろうとして眠気に負けました。おやすみなさい。
14/3/18 書き込んでBlinkyまで確認しました。

LPC-Link部分とLPCXpresso部分は分離しなくても良い…?

LPCXpresso LPC1768の回路図を見たところ、次のように書かれていました。
http://laboratorios.fi.uba.ar/lse/tools/2012-ide/LPCXpressoLPC1768revA.pdfより。
"Bridge wires can be cut on pcb by removing solder paste"、つまり、小さく乗ってる半田を吸い取り線などで外せば、LPC-LinkのJTAGとの接続が切れるみたいです。切っちゃったよ!
既に切り離されたLPCXpresso…

FlashMagicで書き込む

1)公式サイトからFlashMagicをDLし、インストールします。
2)Serial to USBか何かを用意し、そのポート番号(COM **とか)をチェックします。
 ISPモードでUART経由で書き込むので、PCにシリアルポートが無い場合は、FT232などVirtual COM機能を持ったICでUART→USB変換をします。私は秋月のFT232モジュールを使いました。
3)
Read more →

[電子工作]Arduino Unoの裏面シルクの話

,

概要

Arduino Uno R3の裏面は、そのほとんどが白のシルク(?)で覆われています。表面を見れば、この基板は青レジストだと分かるんですけど、白シルクを上手に使うことで模様を描いたりしていて、是非真似したいものだなあと思っていました。
 
Arduino公式サイトより、http://arduino.cc/en/uploads/Main/ArduinoUno_R3_Back.jpgを引用
ですが、実際やってみようとすると大きな疑問が生じます。それは、『どうやってビアやランドに掛かるシルクだけ、消しているんだろう?』ということです。

どうして問題なのか?

『シルクとランドが重なった場合、ランドの上にシルクが印刷されてしまうので、ハンダ付け出来なくなってしまう』からです、多分。

 えー大変じゃないですか、ということで。そもそも基板の製造会社は、こういう処理をしてくれたりしないんでしょうか?
 調べてみると、シルクを避けてくれる会社はあるようです(FusionPCBとか、参考)。逆に、データに忠実に従って、重ねるところもあるみたいです(Olimaxとかダメらしい)。
 私は殆ど基板を作ってもらったことが無いので、実際に重ねてしまった例が無く分からないのですが…実際Elecrowにそんな例を作ってもらって、判断するというのも有りなのかもしれませんね。

CADでどうにか出来ない?

Google先生によると、この『パッドと重なる部分のシルクを消す』ことを、『シルクカット』などと呼ぶみたいです。
参考 : シルクが重なる場合はシルクカットを行なう | ノイズ対策.com

 なので、Eagleでシルクカットが出来ないか調べてみたのですが、あまり出来るという趣旨の記述は見当たりませんでした…そもそも、重なっていたらDRCだかでエラーになってしまうみたいです。vRestrict Layer系統も、シルクの物はないし、そもそもオートルーターのためのものですし。。
 あるとすればulp(User Language Program)とかでしょうか。それとも、シルクカットじゃない、別のもっとメジャーな呼び方が有るのかもしれません。

 もう一つ思いついた方法は、全ての基板設計が終わればランドの位置は既知となるので、その情報を用いて"予めランドを抜いたシルク"を生成するとかでしょうか。でもimport-bmp.ulp使っているとしたら画像の段階で抜かないといけないので、かなり至難の業な気がしますが…。

 スクリプト書け、ということなのでしょうか…。


 因みに、他のCADであるAltium Designerだと出来るみたいです。欲しくなってきましたね!(27万する)
ガーバーエディタの活用 | アルティウムの日替り?情報局 - Altium Designer 導入と運用の道標

Arduinoのデータだとどうなっているか?

Arduinoのデータは、公式サイトの"arduino-uno-Rev3-reference-design.zip"からDownloadすることが出来ます。試しに.brdをそのままElecrow_Gerber_Generater_DrillAlign.camに読ませ、ガーバーファイルを生成、GC-Prevueで裏面シルク(.GBO)を見てみました。
GC-Prevueで見たarduino_Uno_Rev3-02-TH.GBO
…あれ?そもそもシルクじゃないの…?

まとめ

・白シルクで絵を描くのかっこいい
・でもランドとかと重なると面倒。しかも製造会社がやってくれるとは限らない
・Eagleだと対処法がわからない…(そもそもDRCとかでエラーになるみたい)
 ということで、どなたかEagleで行う方法をご存知でしたら、是非教えて頂けると嬉しいです…。

おまけ : 基板について調べてると、結構基板設計基準みたいなものを見かけました。
ex.)プリント基板製造データ基準書 | 株式会社シグナス
コーディング規約みたいなものでしょうか。お勉強にもなるのでなかなかおもしろかったです。
Read more →