wii + arduino + シリアル

#include
#include "GenericTypeDefs.h"
#include "HardwareProfile.h"
#include "usb_config.h"
#include "USB/usb.h"
#include "USB/usb_host_bluetooth.h"
#include "user.h"
#include "timer.h"
#include "xprintf.h"

#define PIN_CODE_DEFAULT "0000"
#define BOARD_SBDBT 1
#define BOARD_SBXBT 0

// Define the baud rate constants UART1
#define BAUDRATE1 2400
#define BRG_DIV1 4
#define BRGH1 1
// Define Hardware Flow Control UART1 (0:off 1:on)
#define UART1_HW_FLOW 0
#define UART1_TX_POLARITY 0 //送信信号極性 0:通常 1:反転
#define UART1_RX_POLARITY 0 //受信信号極性 0:通常 1:反転


//接続方法 (RVL-CNT-01-TRでは1+2同時押しでの接続はできない)
#define WII_REMOTE_CONNECTION_SYNC 0 //0:1+2同時押しで接続 1:蓋の中のSYNCボタンで接続

//Wiiリモコンからの接続を待つか (Wiiリモコンからの接続はSYNCで一度接続後のみ可能、SYNCや1+2では接続できなくなる)
#define MODE_NO_INQUIRY 0 //0:INQUIRYでWiiリモコンを探す 1:INQUIRYをやめWiiリモコンからの接続を待つ

//wiiリモコンのレポートモードを設定(拡張機器なしの場合)
#define WII_REMOTE_REPORT_MODE 0x31 //0x30:Core Buttons 0x31:Core Buttons and Accelerometer

//wiiリモコンのレポートモードを設定(拡張機器ありの場合) 現在0x35固定
#define WII_REMOTE_REPORT_MODE_EXT 0x35 //0x35:Core Buttons and Accelerometer with 16 Extension Bytes

//wiiリモコンの状態をIOで送信するかシリアルで送信するか
#define SERIAL_TRANSFER 1 //0:I/Oで送信 1:シリアルで送信 2:シリアルRCB-3プロトコル

//シリアルの場合の送信タイミング
#define SEND_ON_DIFFERENT_DATA 0 //0:連続送信 1:前回のデータと差があったときのみ送信
#define UART1_MINIMUM_INTERVAL 0 //電文の周期に制限がある場合 0:なし 1以上:1電文あたりの最低時間(ms)

//Wiiリモコンの設定(RCB-3プロトコルの場合のみ関係あり)
#define WII_REMOTE_HORIZONTAL 1 //0:縦持ち 1:横持ち
#define WII_REMOTE_ACC_SCALE 6 //加速度センサの値の倍率 0:1倍 n:(n*2)倍
#define WII_REMOTE_ACC_DEADZONE 12 //wiiリモコン加速度センサのデッドゾーン設定 (7ビットにした後の値)
#define WII_CC_ANALOG_DEADZONE 8 //クラッシックコントローラーのアナログデッドゾーン設定 (7ビットにした後の値)

//送信方法パラメータ(RCB-3プロトコルの場合のみ関係あり)
#define NEUTRAL_DATA_SUPPRESS 1 //連続送信時 ニュートラル位置のデータは 0:連続送信 1:連続送信を抑制する
#define NEUTRAL_ADDITIONAL_PACKETS 0 //ニュートラル位置のデータのみ追加で送信するパケット数 0:追加なし 1以上:追加パケット数


// Define the baud rate constants UART2 (Debug)
#define BAUDRATE2 115200
#define BRG_DIV2 4
#define BRGH2 1

// Define LED1 communication indicator on time(ms)
#define LED1_ON_COUNT 10

#if BOARD_SBDBT
#define LOCAL_NAME "SBDBT"
#define ICSDEF ICS_PGx1
#endif

#if BOARD_SBXBT
#define LOCAL_NAME "SBXBT"
#define ICSDEF ICS_PGx1

// for using SBXBC
//#define ICSDEF ICS_PGx3
#endif

#if __DEBUG
//disable watchdog timer
#define FWDTENDEF FWDTEN_OFF
#define RestartWatchdog()
#else
//enable watchdog timer
#define FWDTENDEF FWDTEN_ON
#define RestartWatchdog() ClrWdt()
#endif


#if BOARD_SBXBT
//
// for SBXBT board
//
// Configure LED1 - put on pin 14 (RB14)
#define led1_setup() (TRISBbits.TRISB15=0)
#define led1_on() (LATBbits.LATB15=0) //ON
#define led1_off() (LATBbits.LATB15=1) //OFF

// Configure LED2 - put on pin 15 (RB15)
#define led2_setup() (TRISBbits.TRISB14=0)
#define led2_on() (LATBbits.LATB14=0) //ON
#define led2_off() (LATBbits.LATB14=1) //OFF

#if SERIAL_TRANSFER
//UARTで出力
// Configure U1RX - put on pin 3 (RP23)
#define u1rx_setup() (RPINR18bits.U1RXR = 23)
// Configure U1TX - put on pin 2 (RP22)
#define u1tx_setup() (RPOR11bits.RP22R = 3)
// Configure U1CTS - put on pin 4 (RP24)
#define u1cts_setup() (RPINR18bits.U1CTSR = 24)
// Configure U1RTS - put on pin 5 (RC9)
// U1RTS has software control
#define u1rts_setup() (TRISCbits.TRISC9=0)
#define u1rts_on() (LATCbits.LATC9=0) //ON:rx ready
#define u1rts_off() (LATCbits.LATC9=1) //OFF:rx not ready

#else
//I/Oで出力
// Configure UP OUT on CPU pin36 (RC3) (SBXBT pin4)
#define up_out_setup() (TRISCbits.TRISC3=0)
#define up_out_write(x) (LATCbits.LATC3=((x)?1:0))

// Configure DOWN OUT on CPU pin38 (RC5) (SBXBT pin7)
#define down_out_setup() (TRISCbits.TRISC5=0)
#define down_out_write(x) (LATCbits.LATC5=((x)?1:0))

// Configure LEFT OUT on CPU pin43 (RB7) (SBXBT pin9)
#define left_out_setup() (TRISBbits.TRISB7=0)
#define left_out_write(x) (LATBbits.LATB7=((x)?1:0))

// Configure RIGHT OUT on CPU pin27 (RC2) (SBXBT pin11)
#define right_out_setup() (TRISCbits.TRISC2=0)
#define right_out_write(x) (LATCbits.LATC2=((x)?1:0))

// Configure BUTTON A OUT on CPU pin5 (RC9) (SBXBT pin12)
#define but_a_out_setup() (TRISCbits.TRISC9=0)
#define but_a_out_write(x) (LATCbits.LATC9=((x)?1:0))

// Configure BUTTON 1 OUT on CPU pin19 (RA0) (SBXBT pin14)
#define but_1_out_setup() (TRISAbits.TRISA0=0)
#define but_1_out_write(x) (LATAbits.LATA0=((x)?1:0))

// Configure BUTTON 2 OUT on CPU pin4 (RC8) (SBXBT pin16)
#define but_2_out_setup() (TRISCbits.TRISC8=0)
#define but_2_out_write(x) (LATCbits.LATC8=((x)?1:0))

// Configure BUTTON B OUT on CPU pin26 (RC1) (SBXBT pin17)
#define but_b_out_setup() (TRISCbits.TRISC1=0)
#define but_b_out_write(x) (LATCbits.LATC1=((x)?1:0))

// Configure BUTTON HOME OUT on CPU pin25 (RC0) (SBXBT pin18)
#define but_home_out_setup() (TRISCbits.TRISC0=0)
#define but_home_out_write(x) (LATCbits.LATC0=((x)?1:0))

// Configure BUTTON + OUT on CPU pin24 (RB3) (SBXBT pin19)
#define but_plus_out_setup() (TRISBbits.TRISB3=0)
#define but_plus_out_write(x) (LATBbits.LATB3=((x)?1:0))

// Configure BUTTON - OUT on CPU pin23 (RB2) (SBXBT pin20)
#define but_minus_out_setup() (TRISBbits.TRISB2=0)
#define but_minus_out_write(x) (LATBbits.LATB2=((x)?1:0))
#endif

#if __DEBUG
// Configure debug console OUT(U2TX) put on CPU pin37 (RP20) (SBXBT pin6)
#define u2tx_setup() (RPOR10bits.RP20R = 5)
#define sto_setup()
#define sto_l()
#define sto_h()
#else
#define u2tx_setup()
// Configure RSSI(status) OUT - put on pin 37 (RC4)
#define sto_setup() (TRISCbits.TRISC4=0)
#define sto_l() (LATCbits.LATC4=0)
#define sto_h() (LATCbits.LATC4=1)
#endif


// Configure Association OUT - put on pin 20 (RA1)
#define assoc_setup() (TRISAbits.TRISA1=0)
#define assoc_l() (LATAbits.LATA1=0)
#define assoc_h() (LATAbits.LATA1=1)

// Configure ON OUT - put on pin 44 (RB8)
#define on_setup() {TRISBbits.TRISB8=0; LATBbits.LATB8=1;}


#else

//
//for SBDBT board
//
// Configure LED1 - put on pin 14 (RB14)
#define led1_setup() (TRISBbits.TRISB14=0)
#define led1_on() (LATBbits.LATB14=0) //ON
#define led1_off() (LATBbits.LATB14=1) //OFF

// Configure LED2 - put on pin 15 (RB15)
#define led2_setup() (TRISBbits.TRISB15=0)
#define led2_on() (LATBbits.LATB15=0) //ON
#define led2_off() (LATBbits.LATB15=1) //OFF

#if SERIAL_TRANSFER
// Configure U1RX - put on pin 3 (RP23)
#define u1rx_setup() (RPINR18bits.U1RXR = 23)
// Configure U1TX - put on pin 2 (RP22)
#define u1tx_setup() (RPOR11bits.RP22R = 3)
// Configure U1CTS - put on pin 4 (RP24)
#define u1cts_setup() (RPINR18bits.U1CTSR = 24)
// Configure U1RTS - put on pin 5 (RC9)
// U1RTS has software control
#define u1rts_setup() (TRISCbits.TRISC9=0)
#define u1rts_on() (LATCbits.LATC9=0) //ON:rx ready
#define u1rts_off() (LATCbits.LATC9=1) //OFF:rx not ready
#else
// Configure UP OUT on CPU pin5 (RC9) (SBDBT pin6)
#define up_out_setup() (TRISCbits.TRISC9=0)
#define up_out_write(x) (LATCbits.LATC9=((x)?1:0))

// Configure DOWN OUT on CPU pin2 (RC6) (SBDBT pin7)
#define down_out_setup() (TRISCbits.TRISC6=0)
#define down_out_write(x) (LATCbits.LATC6=((x)?1:0))

// Configure LEFT OUT on CPU pin3 (RC7) (SBDBT pin8)
#define left_out_setup() (TRISCbits.TRISC7=0)
#define left_out_write(x) (LATCbits.LATC7=((x)?1:0))

// Configure RIGHT OUT on CPU pin4 (RC8) (SBDBT pin9)
#define right_out_setup() (TRISCbits.TRISC8=0)
#define right_out_write(x) (LATCbits.LATC8=((x)?1:0))

// Configure BUTTON A OUT on CPU pin1 (RB9) (SBDBT pin10)
#define but_a_out_setup() (TRISBbits.TRISB9=0)
#define but_a_out_write(x) (LATBbits.LATB9=((x)?1:0))

// Configure BUTTON 1 OUT on CPU pin21 (RB0) (SBDBT pin4)
#define but_1_out_setup() (TRISBbits.TRISB0=0)
#define but_1_out_write(x) (LATBbits.LATB0=((x)?1:0))

// Configure no BUTTON B OUT
#define but_b_out_setup()
#define but_b_out_write(x)

// Configure no BUTTON HOME OUT
#define but_home_out_setup()
#define but_home_out_write(x)

// Configure no BUTTON + OUT
#define but_plus_out_setup()
#define but_plus_out_write(x)

// Configure no BUTTON - OUT
#define but_minus_out_setup()
#define but_minus_out_write(x)
#endif

#if __DEBUG
#if !SERIAL_TRANSFER
// Configure no BUTTON 2 OUT
#define but_2_out_setup()
#define but_2_out_write(x)
#endif

// Configure debug console OUT(U2TX) put on CPU pin22 (RP1) (SBDBT pin5)
#define u2tx_setup() (RPOR0bits.RP1R = 5)
#else
#if !SERIAL_TRANSFER
// Configure BUTTON 2 OUT on CPU pin22 (RB1) (SBDBT pin5)
#define but_2_out_setup() (TRISBbits.TRISB1=0)
#define but_2_out_write(x) (LATBbits.LATB1=((x)?1:0))
#endif

// Configure no debug console
#define u2tx_setup()
#endif

// Configure no RSSI(status) OUT
#define sto_setup()
#define sto_l()
#define sto_h()

// Configure no Association OUT
#define assoc_setup()
#define assoc_l()
#define assoc_h()

// Configure no ON OUT
#define on_setup()
#endif


#define Nop() __builtin_nop()
#define ClrWdt() {__asm__ volatile ("clrwdt");}
#define Sleep() {__asm__ volatile ("pwrsav #0");}
#define Idle() {__asm__ volatile ("pwrsav #1");}
typedef unsigned clock_t;

extern void (*usb_tick_handler)(void);
void event_bluetooth_rxEvent_done(WORD size);
void event_bluetooth_rxAcl_done(WORD size);
スポンサーサイト
プロフィール

二名川(ニナガワ)

Author:二名川(ニナガワ)
ホビーロボットをレトロゲームが発展したものと捉えて楽しく遊び倒します。
子供が夢を見ている時間帯に稼働します。

宣伝:電子出版しました。
「コンソロイド ガイドブック」
46107_CONSOLOID_GUID_FACE_200.jpg





■作成中の機体
汎用ヒト型決戦遊具 ~RX計画~
RX-7.5 ゼロタンク
RRf-0.6 ゼニィ
RXM-7.9 ゼムネス
RX-7.5R 量産型ゼロタンク
RX-7.5Fp ファミタンク仮設1号
RX-7.7 ゼロキャノン
RX-7.8 ゼログレイ
SMS-0.1 ゼロライナー
以下続く

ブログ内検索
最近の記事
最近のコメント
カテゴリ
月別アーカイブ
リンク