Category Archives: 電子回路 カテゴリ "電子回路"のRSS  

[PIC]C18コンパイラでsprintfを使う時の注意

2015年12月23日 (カテゴリ: PIC:)

sprintfの第二引数で指定する文字列は、文字列定数を指定する必要があります。 OKなパターン sprintf( TmpBuff, "test%d", 10 ); NGなパターン char pMsg[] = "test%d"; sprintf( TmpBuff, pMsg, 10 ); これは、以下の理由に起因します。 ・PICはハーバードアーキテクチャを採用している。 ・文字列定数はプログラムメモリ、文字列の配列はファイルレジスタに保存される。 ・sprintf()の第二引数は、プログラムメモリの番地を…


続きを読む

Nexus7のUSBコネクタが壊れたのでDock用のコネクタから強制充電させる

2013年7月2日 (カテゴリ: 電子回路:)

Nexus7のUSBコネクタ壊れてしまったらしく、充電が出来なくなってしまいました。 普段充電に使用しているPCのUSBポートでは500mAしか流せないのでそれが原因かと思い、本体に付いて来た純正のACアダプタを使用しても上手くいかない… 他にもモバイルバッテリーなども試してみたのですが、どう頑張ってもダメです。 Nexus7には、USB以外にもDock用の端子が付いているのでこちらから充電させることも可能です。 純正品だと、下記の商品になります。 Nexus 7専用ドッキングステーション 90-XB3XOKDS00020 純正のDockを買っても良いのですが、ちょっと高いので手元…


続きを読む

PIC16F84Aのファイルレジスタ

2012年12月2日 (カテゴリ: PIC:)

PIC16Fシリーズの入門用として有名な16F84Aには、83byteのファイルレジスタが用意されています。 ファイルレジスタというのは、パソコンで言うところのRAMと、メモリマップされたI/Oレジスタに相当するものです。 名前は、ファイル”レジスタ”ですが、IntelのCPUで使用されている演算用レジスタ(EAX,EBX等の名前で呼ばれています)とは意味が違うので注意してください。(これに相当する,汎用レジスタはWレジスタというもので別途用意されています) ファイルレジスタのメモリマップ 利用可能な144byteにはそれぞれ固有の(ユニークな)番地が割り振られています…


続きを読む

[PIC]HI-TECH Cのサンプルプログラムを逆アセンブルしてみる

2012年12月2日 (カテゴリ: C#, PIC:, )

前に作りかけたPic16f84のCPUシミュレータですが、暇が出来たので開発を再開させます。 ずいぶん久しぶりなので、何をやってたかを思い出すのを兼ねて、動作確認用サンプルのhexファイルを作る事にします。 今回の対象はHI-TECH Cのコンパイラをインストールしたときに一緒に入っているサンプルPGです。 ファイルは、標準インストールだと以下の辺りに入ってます。 C:\Program Files\HI-TECH Software\PICC\9.83\samples\misc\led.c このプログラムはLEDの点滅プログラムで、コードは以下の通りのシンプルなものです。 “Free…


続きを読む

電圧計(テスタ)の内部抵抗を調べる方法

2012年11月29日 (カテゴリ: 電子回路基礎:)

テスタ(デジタルマルチメータ)の電圧計を使うと、回路中の電位差を計測することが出来ます。 電圧値を測る場合は、対象物と並列に電圧計を入れる必要があります。 計測を行う上で電圧計の内部抵抗値が低いと、元の回路の電流に影響を与えてしまいます。 このため、電圧計は、高い内部抵抗値となっています。 電圧計の内部抵抗値は、一般に数メガオーム ~ 十数メガオームといわれています。 というのが電圧計の教科書的な説明なのですが、”高い内部抵抗値”というのは実際のところどの程度のものなのでしょうか?自分が持っている電圧計の具体的な抵抗値を計測するにはどうすればよいでしょうか? 気になる場…


続きを読む

[殻割り]フォトカプラを分解する

2012年11月26日 (カテゴリ: 電子回路基礎:, )

電子回路を構成する素子のひとつにフォトカプラというものが有ります。 フォトカプラは通常、発光ダイオードとフォトトランジスタで構成されています。 入力された電気信号は発光ダイオードに入り光信号に置き換えられます。 一方フォトトランジスタは光を受けると通電するので、光を経由して電気信号を伝える事が可能です。 これにより電気的に絶縁された状況で情報を伝える事ができ、ノイズの影響を防ぐことが可能です。 …というのが、教科書的なフォトカプラの説明ですが、実際の所、中身はどんな感じになんでしょうか? 気になったので、実際にフォトカプラを購入して殻割りしてみました。 まずは、今回の実験台になって…


続きを読む

LEDフラッシャーIC「M34-1L,2L,8L」の点滅をPICで再現する

2012年11月25日 (カテゴリ: PIC:, )

LEDを点滅させるためのICとして、M34シリーズの三端子LEDフラッシャ-ICというものが有ります。 これは、トランジスタのように3本の端子が出ているパーツで、接続するだけで指定された周期でLEDを点滅させる事が出来ます。 点滅の周期は型番によって異なり、以下の通りとなっています。 M34-1L 1.0 秒周期 ON-OFF比率 = 1:8 M34-2L 0.5 秒周期 ON-OFF比率 = 1:8 M34-4L 0.25 秒周期 ON-OFF比率 = 1:8 M34-8L 0.125秒周期 ON-OFF比率 = 1:2 実際にどんな感じで点滅するか、YouTubeに動画があがってました。 …


続きを読む

[PIC]全ピン数対応のライタ基板を製作(PICkit3使用)

2012年11月24日 (カテゴリ: PIC:)

半年ほど前、PICのライタとしてPICkit3を購入しました。 これまで書き込み側の回路はブレッドボードで組んでいたのですが、ブレッドボードだと書き込み/デバッグ中にライタが外れてしまう事もあり不便でした。 ライタは頻繁に使いますしPICの開発も慣れてきたので、今回、書き込み用の回路をユニバーサル基板で作成する事にしました。 PICはブレッドボードにさせるタイプのPDIP形式のものだけでも、ピン数が8, 14, 18, 20, 28, 40ピンと6種類も有り、それぞれ書き込みピンの位置が異なるので、これら全種類に対応できるようにします。 また、ライタにPICを刺したまま状態で、簡単な回路なら確…


続きを読む

[PIC18シリーズ]ピン数別の機能・評価一覧

2012年11月18日 (カテゴリ: PIC:, )

PIC18シリーズの価格と特徴を分かりやすく整理してくれている一覧です。 この一覧にある製品は、秋月で販売されているという事で入手性も良いです。 PIC16シリーズについて知りたい場合はこちらの記事を参考にして下さい。  [PIC16シリーズ]ピン数別の機能・評価一覧 PIC専用のスレ Part40 http://uni.2ch.net/test/read.cgi/denki/1345537082/ より編集 秋月のPIC18シリーズDIP品限定ピン数別評価 特徴 【PIC18】8bitマイコン。 5V動作可(J除)で比較的高速(10~MIPS) 新型のKシリーズは多機能で高速(16MI…


続きを読む

[MPLAB]ブレークポイントで表示される黄色い”B”マークの意味

2012年11月16日 (カテゴリ: PIC:)

PICの開発環境であるMPLABで、ブレークポイントをセットすると、赤色の”B”マークが表示されます。 ですが、開発を行っていると時々、以下の様に黄色い”B”マークが表示される事があります。 この黄色のBの意味は、アセンブリコードに対するブレークポイントです。 厳密に言うと、C言語1行に対して複数行のアセンブリが生成されたとき、生成後アセンブリの1ステップ目以降のコードにブレークポイントが張られたとき、黄色のマークになります。 C言語レベルでのデバッグを行っている場合、黄色のブレークポイントだと、該当行に矢印がある時点でアセンブリの一部分だけが実…


続きを読む

[PIC]MPLABでICD0191エラーが出た時の対処法

2012年11月10日 (カテゴリ: PIC:)

表示されるエラーメッセージ ICD0191: Unable to perform operation as hardware memories are locked. Try later. ICD0191エラーが発生するのは、MPLAB ICD2が他の機能で使用されている為、操作したかった作業が出来ない時に発生します。 対処法としては、通常はそのまま待って、しばらくしてからもう一度同じ作業をすると正常に動作します。 それでもダメな場合は、一度MPLABを再起動&ICDのケーブルを刺しなおして下さい。


続きを読む

PICのスペックを指定して型番を検索できるサイト

2012年11月9日 (カテゴリ: PIC:)

個人でもお手軽に利用できるPICマイコンですが、現在では700種類以上あり、欲しい機能を持った製品を探すのが大変です。この問題を解消するために製造元のMicrochipでは、スペックを指定して型番を検索できるサイトを幾つか用意してくれています。 今回は、PICのスペック検索サイトを紹介します。 Microcontroller Product Selector (MPS) サイト:http://www.microchip.com/productselector/MCUProductSelector.html 以前より存在していた検索ページでAdobeのFlashで作られています。 ページ上部で検…


続きを読む

[PIC]ICD0019エラーが出た時の対処法

2012年11月8日 (カテゴリ: PIC:)

MPLABで、ICD 2ライタ/デバッガを使用しているとき、ICD0019エラーが出た場合の対処法です。 エラーメッセージ Connecting to MPLAB ICD 2 ICD0019: Communications: Failed to open port (USB): (Windows::GetLastError() = 0x2, ‘指定されたファイルが見つかりません。’) ICD0021: Unable to connect with MPLAB ICD 2 (USB) ICD0019エラーは、MPLABがPICのライタを認識できていない事を意味するエラーです。 このエラーが出る時…


続きを読む

[PIC18]PWM機能を使用してLEDをふんわり点滅させる

2012年11月7日 (カテゴリ: PIC:, , )

PIC18シリーズのマイコンで、PWM出力を利用してLEDをふんわり点滅させてみます。 今回はCCP機能に含まれるPWM出力を使用して明るさの制御を行います。 この為、LEDはPWM出力ピンであるCPP1のピンに接続します。 #include "p18f4620.h" #include "timers.h" #include "delays.h" #include "pwm.h"   // Configuration bitの指定 #pragma config OSC = HS // HS oscilla…


続きを読む

PIC向けCコンパイラ(HI-TECH C,C18,C30,C32)のinline関数サポート状況まとめ

2012年11月6日 (カテゴリ: PIC:)

PICで使用できるMicrochip社提供のコンパイラには、HI-TECH C,C18,C30,C32等が有ります。 これらのコンパイラで、インライン関数が使用できるかを調べたのでまとめてみました。 HI-TECH C,C18コンパイラ HI-TECH Cと、C18コンパイラでは、インライン関数はサポートされていません。 使用したい場合は、関数マクロで代替する必要があります。 参考: HI-TECH Software Frequently Asked Questions C30,C32コンパイラ C30とC32のコンパイラではインライン関数はサポートされており、使い方は同じです。 但し、使用す…


続きを読む

[PIC]C18コンパイラでstrcpy()使用時,文字列セットが出来ない

2012年11月5日 (カテゴリ: PIC:)

PICのプログラムをC18コンパイラを使用して開発している場合、以下のコードは正しく動作せず、Bufferに”hello”という文字列がセットされません。 (当然ですが、このコードはVisual C++の様な普通のCコンパイラだと正しく動きます) char Buffer[32]; strcpy( Buffer, "Hello" ); これは、”Hello”の文字列定数がプログラムメモリに配置されるのに対して、strcpy()関数は指定された番地のRAM(File Register)からデータをR…


続きを読む

電子回路用CADのEAGLEをインストールする

2012年11月3日 (カテゴリ: EAGLE:)

今回は、電子工作用の回路図作成やプリント基板(PCB)のレイアウトソフトとして有名な、eagleのインストールを行います。 EAGLEは商用のソフトなのですが、非営利目的なら一部制限がありつつもほぼ全ての機能がフリーで使用することが出来ます。仕事で使うのなら商用ライセンスが必要ですが、個人のホビーユースならフリー版でも十分に利用する事が出来ます。 フリー版の制限は以下の通りです。 ボードのサイズが100 x 80 mm (4 x 3.2 inches)までに制限される。 多層基板は作成で傷、2面(両面実装の基板)までしか作成できない。 プロジェクト内に回路図は1枚しか作成できない。 個人が趣味…


続きを読む

[HI-TECH C] “Warning [228] illegal character”警告が出る場合の対処法

2012年11月3日 (カテゴリ: PIC:, , )

HI-TECH Cでプログラムをコンパイルすると、以下のようにWarning [228]の警告が出ることがあります。 これは”警告”なのでコンパイルは完了し、大抵の場合プログラムは想定どおり動作することが多いです。 Make: The target "C:\home\project\pic\16F84A_LCD\main.p1" is out of date. Executing: "C:\Program Files\HI-TECH Software\PICC\9.83\bin\picc.exe" –pass1 C:\main.…


続きを読む

PIC16F84Aで,HI-TECH Cを使用してLCD出力を行う

2012年11月3日 (カテゴリ: PIC:, , , )

PIC16シリーズの定番、PIC16F84Aを使用してLCDへの出力を行うプログラムです。 16F84AでC言語を使用したLCD制御のサンプルは、意外と見つからないので公開しておきます。 LCDは16文字x2行表示が行えるSC1602を使用します。 また、Cコンパイラは、HI-TECH Cを使用します。HI-TECH Cは、PICC LITEとも呼ばれています。 HI-TECH CにはLCD制御用のライブラリがない為、プロトコルを確認してコマンド送信を自前で実装する必要があります。 動作確認はPIC16F84Aで行っていますが、特殊な事はしてないので16Fシリーズなら基本的にどのチップでもその…


続きを読む

[PIC]ICD2デバッグ時に「ICD0154エラー」が出た場合の対処法

2012年11月2日 (カテゴリ: PIC:, )

エラーの内容 MPLABでMicrochip ICDを使用してプログラム書き込み/デバッグを行っている時に,以下のエラーが発生する(メッセージ中の”TM = Running”の部分は、変わる場合があります)。 MPLAB ICD 2 ready for next operation ICD0154: Invalid target mode for requested operation (TM = Running)Running Target ICD0083: Debug: Unable to enter debug mode. Please double click …


続きを読む