PIC - 1 ページ 2 週目 UBW を使用してみる 2010 年 5 月 23 日 15:28 前回の Gainer mini はあくまでも PC 側にプログラムがあり PIC は IO ボックス的な使用しかできなかった 入出力デバイスとして PIC を使う場合は 簡易で便利であるが それ以上の事 (PC なしでの動作 PC と対等の動作 ) は出来ない 今週からは 本来の PIC としての使い方を学ぶ しかしながら USB のみで開発できる環境は とても使いやすいここでは USB Bit Whacker(UBW) を使用してみる 本家 URL; http://www.schmalzhaus.com/ubw/index.html 参考 URL:PICGAMES ORG http://www.picgames.org/modules/tinyd1/index.php?id=30 千秋ゼミ http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/index.php?memo%2fubw 使用する PIC は 1 週目と一緒で秋月の AE-18F2550 (20MHz PIC18F2550) Boot loader は 起動時に boot モードであればプログラムを読み込み FLASH メモリに書き込みを行う 従って書き込み器が不要となる Boot loader( ここではUBW) を使用する欠点として Configure Bitが設定できない 使用できるPIN 数が減る Boot loaderプログラムを入れておかないといけないのでメモリが少し減る UBW は Firmware B( 今回使用する Boot の部分 )Firmware D( 仮想シリアル環境 Gainer mini みたいな ) などなどある 1. 準備 PIC にファームウエアを書き込む本家 URL よりダウンロード UBW (USB Bit Whacker) Project http://www.schmalzhaus.com/ubw/index.html 画面の領域の取り込み日時 : 2010/05/23 15:47 PIC 焼き器で焼く 2. ハードウエアの準備 http://www.schmalzhaus.com/ubw/images/28dipv3schematic.png 画面の領域の取り込み日時 : 2010/05/24 10:30
PIC - 2 ページ 異なるのはこの 4 か所のみ こんな感じ LED は 1kΩ SW には 10KΩ を接続 2. 書き込みの準備 書き込みは色々あるみたいですがここでは MyBoot を使用します ( 千秋ゼミ HP よりダウンロード ) あらかじめ千秋ゼミの HP よりダウンロードした MCHIP-USB.zip ファイルを解凍しておく MyBoot を解凍して中の MyBoot を実行する 画面の領域の取り込み日時 : 2010/05/23 21:38 PIC を BOOT モードにするために 1. リセットスイッチと BOOT スイッチを押す 2. リセットスイッチを先に放す 3.LED が点滅して BOOT モードになる 画面の領域の取り込み日時 : 2010/05/23 21:46 3. 簡単な PIC のプログラムの作成 (Swordfish を用いたプログラミング ) ダウンロード & インストール Swordfishのホームページよりダウンロードしてインストールする 起動する http://www.sfcompiler.co.uk/swordfish/
PIC - 3 ページ 画面の領域の取り込み日時 : 2010/05/23 22:06 MyBoot を使用するために ( 千秋ゼミの HP から転載 : ここでは使用せず ) (1) Swordfish Compiler の PIC ライタとして Myboot.exe を組み込むメニュー View Compile and Program Options... を選択 (2) Install New Programmer を選択し (3) Myboot( 名前 ) (4) Myboot.exe ( サーチし 登録 ) Myboot.exe と mpusbapi.dll ファイルは 事前に PATH の通ったディレクトリにコピーしておくこと (5) $long-hex-filename$ を登録して完了 貼り付け元 <http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/index.php?memo%2fubw_tools> Swordfish でブートローダを使うためには以下の文が必要です *************************************: // 18F2550 @ 48MHz を指定した例 ( 必ず指定すること ) Clock = 48 ************************************* サンプル 1( 千秋ゼミから転載 ) UWB に使用している LED を点滅させるプログラム // 18F2550 @ 48MHz を指定した例 ( 必ず指定すること ) Clock = 48 // alias to port pin... Dim LED_Y As PORTC.0 Dim LED_R As PORTC.1 // main program... Low(LED_Y) High(LED_R) Repeat Toggle (LED_Y) Toggle (LED_R) DelayMS (1000) Until false 貼り付け元 <http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/index.php?memo%2fsfc_01> まず Build の右隣の を押して Option を CompileOnly にします そして Build を押します ドキュメントの Swardfish のフォルダに HEX ファイルができます Myboot で書き込みます OpenHex で Hex ファイルを読み込みます Write/Verify で書き込みます リセットボタンを押すとプログラムが動きます サンプル 2LCD に文字を表示 LCD 側は DB4,DB5,DB6,DB7,E,RS,RW の順
PIC - 4 ページ Swordfish は RS を GND に接続するタイプなので,, 表示が間に合わないので サンプルよりタイミングを落としています Clock = 24 // some LCD options... #option LCD_DATA = PORTB.0 #option LCD_RS = PORTB.5 #option LCD_EN = PORTB.4 #option LCD_COMMAND_US = 4000 #option LCD_DATA_US = 100 #option LCD_INIT_DELAY = 200 // import LCD library... Include "LCD.bas" Include "utils.bas" // program start... SetAllDigital Cls WriteAt(1,1,"Hello World") サンプル 3 電圧計 RA0 に可変抵抗を付けて LCD に電圧値を表示 Clock = 24 // some LCD options... #option LCD_DATA = PORTB.0 #option LCD_RS = PORTB.5 #option LCD_EN = PORTB.4 #option LCD_COMMAND_US = 4000 #option LCD_DATA_US = 100 #option LCD_INIT_DELAY = 200 // uses LCD and AD libraries... include "LCD.bas" include "ADC.bas" include "convert.bas" // read the AD port and scale for 0-5 volts... function ADInAsVolt() as word result = (ADC.Read(0) + 1) * 500 / 1024 end function // sampled AD value... dim ADVal as word // initialise and clear LCD... ADCON1 = $07 // PORTE as digital (LCD) TRISA.0 = 1 // configure AN0 as an input ADCON1.7 = 1 // set analogue input on PORTA.0 delayms (500) LCD.Cls // main program loop... while true ADVal = ADInAsVolt LCD.MoveCursor (1,1) LCD.Write("DC Volts = ", DecToStr(ADVal / 100), ".", DecToStr(ADVal, 2), " ") delayms(250) wend
PIC - 5 ページ