PICで外部と通信する手段には幾つかあるが、USARTを使ってパソコンと接続してみる。作成するシステムは以下の仕様とする。PICとパソコンの接続にはUSB変換ケーブル(5V、FTDI)を使った。
回路図 |
![]() |
![]() |
![]() |
| @Osciliator | ATMR2 | BADC |
![]() |
![]() |
![]() |
| CEUSART | DPIN | INTERRAPT |
<main.c>
#include "stdio.h"
#include "mcc_generated_files/mcc.h"
unsigned char sBuf[18];
unsigned char rBuf[18];
char Flag, mFlag;
int Index, Val;
void SendStr(unsigned char* msg){
int i;
i = 0;
while(msg[i] != 0){
EUSART_Write(msg[i++]);
}
}
void main(void)
{
// initialize the device
SYSTEM_Initialize();
mFlag = 0;
Flag = 0;
Index = 0;
// Enable the Global Interrupts
INTERRUPT_GlobalInterruptEnable();
// Enable the Peripheral Interrupts
INTERRUPT_PeripheralInterruptEnable();
LEDC3_SetHigh();
SendStr("\n\r");
SendStr("Hellow\n\r");
while (1) {
Val = ADC_GetConversion(2);
if(mFlag){
LEDC3_Toggle();
mFlag = 0;
sprintf(sBuf, "ad=%d\n\r", Val);
SendStr(sBuf);
}
if(Flag){
Flag = 0;
SendStr(rBuf);
SendStr("\n\r");
}
}
}
|
<tmr2.c>
extern char mFlag;
/* ・・・ */
void TMR2_CallBack(void)
{
// Add your custom callback code here
mFlag = 1;
// this code executes every TMR2_INTERRUPT_TICKER_FACTOR periods of TMR2
if(TMR2_InterruptHandler)
{
TMR2_InterruptHandler();
}
}
| |
| | ||
<eusart2.c>
extern char Flag;
extern unsigned char rBuf[];
extern int Index;
/* ・・・ */
void EUSART_Receive_ISR(void)
{
/* ・・・*/
// or set custom function using EUSART_SetRxInterruptHandler()
if(1 == RCSTAbits.OERR){
RCSTAbits.SPEN = 0;
RCSTAbits.SPEN = 1;
}
if((RCREG==0x0a)||(RCREG==0x0d)){
Flag = 1;
rBuf[Index] = 0;
Index = 0;
}
else{
if(Index<18)
rBuf[Index++] = RCREG;
}
}
|
![]() |
![]() |
![]() |
| コンパイラ変更 | テラターム設定 | USBポート確認 |
![]() |
![]() |
![]() |
| ケーブル接続 | ブレッドボード | テラターム画面 |
リンク(接続)とは、ショートカット(近道)のように実際にファイルがある場所とは別の場所からファイルにアクセスできる機能で、(vista以降の)windowsではハードリンク、シンボリックリンク、ジャンクションの3種類のリンクが利用できる。
ショートカットは、本来は実行ファイルのある場所でexeファイルを指定して実行するところを、ショートカットアイコンを作成することで、アイコンのある場所で実行できる。ショートカットアイコンを消去しても、元の実行ファイルなどには全く影響しない。ショートカットの作成は、設定したいファイルを選択後、マウスの右クリックメニューから作成できる。,br>
一方、リンクはあたかもファイルの実態がそこにあるように振る舞うので、コマンドの引数に用いることが出来る。例えば、DドライブのフォルダをCドライブにリンクすると、DドライブのフォルダーがCドライブにあるように振る舞わせることが出来る。これはCドライブのメモリが不足した場合に便利である。しかし、リンクフォルダーを消去すると、元のフォルダー(の中身)も消去されることがあるので注意が必要。リンクの作成は、コマンドラインからmklinkコマンドで作成し、リンクの削除、ファイルはdelコマンド、フォルダはrmdirコマンドを実行する。
| シンボリックリンク | ハードリンク | ジャンクション | ショートカット | |
| 利用者権限 | 管理者 | 一般ユーザ | 一般ユーザ | 一般ユーザ |
| ファイルへのリンク | ○ | ○ | × | ○ |
| フォルダへのリンク | ○ | × | ○ | ○ |
| パス指定 | 絶対、相対 | −−− | 絶対 | −−− |
| 他ボリュームへのリンク | ○ | × | ○ | −−− |
| リンクの作成 (フォルダ) |
mklink l〜 t〜 mklink /d l〜 t〜 |
mklink /h l〜 t〜 −−− |
−−− mklink /j l〜 t〜 |
右クリックから |
| リンクの削除 (フォルダ) |
del l〜 rmdir l〜 |
del l〜 −−− |
−−− rmdir l〜 |
ショートカット アイコンの削除 |
| リンク先の存在 | どちらでも | 存在必須 | どちらでも | −−− |
![]() |
![]() |
![]() |