アンドロイドのusb端子にuart変換チップを接続してモニタしてみる。

秋月でuart変換チップ基板とその他を購入 
 1.FT232HL ハイスピードUSBシリアル変換モジュール
  価格:¥1,200 × 数量:1 = 合計:¥1,200
 2.丸ピンICソケット (28P) 600mil 桟ありタイプ
  価格:¥70 × 数量:1 = 合計:¥70
 3.片面ユニバーサル基板 Cタイプ緑(72x48mm) めっき仕上げ
  価格:¥70 × 数量:1 = 合計:¥70

基板を組み立てて、gnd, rx, txにピンをたてる。
gnd --- j2.5pin
tx    --- j2.6pin
rx    --- j2.7pin
DSC_0404 
 















windows7 64bit機に接続すると、ドライバが勝手にインストールされる。
一回抜いて、再度接続すると、さらにインストールされるようで、これでOKなのか??

ftdiのサイトからFT_progをdlしLEDが点灯するようにconfigを変更。
http://www.ftdichip.com/Support/Utilities.htm
の真ん中あたりのFT_PROG 3.0.56.245 - EEPROM Programming Utility
あたりからDL。


モニタするための信号をPIC16F877Aからだす。
MPLAB 8.92 + XC8 でつくる。ICD2で書き込み。

/*
android uart 用入力プログラム
1-100までをuartから出力。繰り返す。
9600 8bit 1stop bit parity:none flow]none
main clock 4MHz
*/
#include 
#include 
#include 
#include 

// Watchdog Timer Enable bit: WDT enabled
// Power-up Timer Enable bit: PWRT disabled
// Flash Program Memory Code Protection bit: Code protection off
// Brown-out Reset Enable bit: BOR enabled
// In-Circuit Debugger Mode bit: In-Circuit Debugger disabled, RB6 and RB7 are general purpose I/O pins
// Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit: RB3/PGM pin has PGM function; low-voltage programming enabled
// Data EEPROM Memory Code Protection bit: Data EEPROM code protection off
// Flash Program Memory Write Enable bits: 0000h to 0FFFh write-protected; 1000h to 1FFFh may be written to by EECON control
// Oscillator Selection bits: HS oscillator
#pragma config WDTE = OFF, PWRTE = OFF, CP = OFF, BOREN = OFF, DEBUG = ON, LVP = ON, CPD = OFF, WRT = OFF, FOSC = HS


void uart_init(void){
	TRISCbits.TRISC5 = 0;
	TRISCbits.TRISC6 = 0;
//txsta
//7:don't care
//6:9-bit transmit enablebit
//5:transmit enable
//4:SYNC
//3:no data, read '0'
//2:brgh
//1:TRMT status
//0:TX9D
	TXSTA = 0b01100110;
//brg
	SPBRG = 25;
//rcsta 7-0
//7:serial enable
//6:rx9-bit recieve enable
//5:single recieve enable
//4:continuous recive enable
//3:address detect enable
//2:framing error
//1:overrun error
//0:rx9d
	RCSTA = 0b11010000;
}


void main(void){
  TRISA = 0b11111111;      /* IOポートRA0...RA5を出力モードに(RA3は仕様により入力専用) */
  TRISB = 0b11111111;      /* IOポートRB4...RB7を出力モードに */
  TRISC = 0b11111111;      /* IOポートRC0...RC7を出力モードに */
	TRISD = 0x11111111;
	TRISE = 0x11111111;
  INTCONbits.PEIE = 0;      /* 割り込み機能をOFF */

  PORTA = 0;                /* RA0...RA5をV-low */
  PORTB = 0;                /* RB4...RA7をV-low */
  PORTC = 0;                /* RC0...RC7をV-low */
	uart_init();

	set_uart_num(0);
	
	unsigned char tdata;
	tdata = 0;
	while(1){
		while(TXIF == 0);
		TXREG = tdata;
		tdata++;
     	if(tdata == 100){
			tdata = 0;
		}
	}
}

1-100までを延々とuartから出力。


android側のプログラムは
http://d.hatena.ne.jp/ksksue/20130402/1364922862
のサイトのものを使わせてもらった。
ftdiのd2xxドライバをつかっている。

接続してみてみる。

DSC_0405
















read dataがアスキーで表示されているので、アスキーコード表一覧みたいになっている。
read dataを内部でraw -> ascii変換して表示してみる。


DSC_0407







 








んー、データがあちこち欠けてるのか?
ちょっと調べてみよう。。