2005年08月

作業日記トップへ

08月01日(月)  08月03日(水)  08月04日(木)  08月11日(木) 

2005年08月11日(木)

掲示板1へ

M16C/62のシリアルサンプルプログラム2(シリアル受信(割り込みなし))

プログラム内容

設定内容

設定項目設定内容
ボーレート57600bps
キャラクタビット8ビット
ストップビット1ビット
パリティビットなし
転送クロックソース内部クロックf1(=16MHz)
CTS機能禁止

ser02.c
/*------------------------------------------------------*/
/* ファイル名:        sci.c                           */
/*      内容:          シリアルで文字列送受信          */
/*      日付:          2005.06.29(Wed)                 */
/*      作成者:        denno_ono                       */
/*------------------------------------------------------*/


#include<oaks_sfr.h>

/* UART1初期化 */

typedef enum {        // ボーレート設定リスト
  br4800  = 207,
  br9600  = 103,
  br14400 = 68,
  br19200 = 51,
  br28800 = 34,
  br31250 = 33,
  br57600 = 16
} BaudRate;

/*-----------------------------------------------*/
/* 通信関係                                      */
/*-----------------------------------------------*/
// UART1初期化

void InitSCI3 (BaudRate b)
{

  u1brg = b;    // ボーレート設定
  u1mr=0x05;    //8ビット、内部クロック、1ストップビット、パリティなし
  u1c0=0x10;    //クロックf1
  u1c1=0x05;    //送受信許可
  ucon=0x00;    //割り込み要因

}

// 1文字送信
void rs_putc (char c)
{
  while (ti_u1c1 == 0) ;
  u1tb = c;
}

// 文字列送信
void rs_puts (char _far *st)
{
  while (*st) rs_putc (*st++);
}

// 受信データバッファより1文字読み出し
char rs_getc (void)
{
  char  c;

  while (ri_u1c1 == 0) ; 
  c = u1rbl; 
  return c;
}

int main(void)
{
  char rc;
  InitSCI3(br57600);
  while(1){
    rc=rs_getc();
    rs_puts("receive:");
    rs_putc(rc);
    rs_putc(0x0D);
    rs_putc(0x0A);
  }
  return(0);
}

実行結果

コメント

    rs_putc(0x0D);
    rs_putc(0x0A);

0x0DはLF(改行)、 0x0AはCR(復帰)。

2005年08月05日(金)

掲示板1へ

たまには自分でCNC

「小人つかいくん」にばかり頼っていてもしょうがないので、 自分でブラケットを作ってみました。

思ったより大変です。 ミニCNCフライス。 慣れていないせいか、不燃ごみをいくつも作ってしまいました。

削る

やっと成功した一枚。 周りに失敗した穴が・・・

削りだし

バリ取りとねじ切り

CNCで削りだせれば、後は何とかなるというものです。

バリ取りとねじ切り

曲げて完成

Micro-MGにつけてみました。 不慣れでうまく使いこなせていないとはいえ、 さすがに手作業とは違います。

2mmの穴の位置がきちんと合っているので感動です。

曲げて完成

2005年08月04日(木)

掲示板1へ

M16C/62のシリアルサンプルプログラム1(文字列送信)

プログラム内容

設定内容

設定項目設定内容
ボーレート57600bps
キャラクタビット8ビット
ストップビット1ビット
パリティビットなし
転送クロックソース内部クロックf1(=16MHz)
CTS機能禁止

ser01.c
/*------------------------------------------------------*/
/*  ファイル名:  ser01.c                               */
/*  内容:        シリアルで文字列送信                  */
/*  日付:        2005.06.29(Wed)                       */
/*  作成者:      denno_ono                             */
/*------------------------------------------------------*/

#include<oaks_sfr.h>

typedef enum {        // ボーレート設定リスト
  br4800  = 207,
  br9600  = 103,
  br14400 = 68,
  br19200 = 51,
  br28800 = 34,
  br31250 = 33,
  br57600 = 16
} BaudRate;

/*-----------------------------------------------*/
/* 通信関係                                      */
/*-----------------------------------------------*/
// UART1初期化

void InitSCI3 (BaudRate b)
{

  u1brg = b;    // ボーレート設定
  u1mr=0x05;    //8ビット、内部クロック、1ストップビット、パリティなし
  u1c0=0x10;    //クロックf1
  u1c1=0x05;    //送受信許可
  ucon=0x00;    //割り込み要因

}

// 1文字送信
void rs_putc (char c)
{
  while (ti_u1c1 == 0) ;
  u1tb = c;
}

// 文字列送信
void rs_puts (char _far *st)
{
  while (*st) rs_putc (*st++);
}

int main(void)
{
  char mess[10]="denno_ono";
  InitSCI3(br57600);
  rs_puts(mess);
  while(1){
    ;
  }
  return(0);
}

実行結果

コメント

  char mess[10]="denno_ono";
  rs_puts(mess);

は、

  rs_puts("denno_ono");

でも良い

2005年08月03日(水)

掲示板1へ

UART(Universal Asynchronous Receiver Transmitter)

UART(ユーアート)

Asynchronous:非同期の

シリアル信号をパラレル信号へ、パラレル信号をシリアル信号へ変換する通信回路。 シリアル通信に使われる。

スタートビットやストップビットなどもUARTによってつけ加えられる。

UART

M16C/62のUART

M16C/62のシリアルI/OはUART0、UART1、UART2およびSI/O3、4の5チャンネル。

UARTは、UART0、UART1、UART2でクロック非同期形シリアルI/Oモードを選択したときの機能。

2005年08月01日(月)

掲示板1へ

M16C/62のシリアルI/O関連レジスタ(その2)

UART1をクロック非同期形シリアルI/Oモードで利用する場合のレジスタの機能のみ記述

UART1送信バッファレジスタ

シンボルアドレスリセット値
u1tb03AA-03AB不定
ビット機能
b0送信データ
b1
b2
b3
b4
b5
b6
b7
b0(b8)
b1(b9)何も配置されていない
書き込みは「0」を
読み出した場合、値は不定
b2(b10)
b3(b11)
b4(b12)
b5(b13)
b6(b14)
b7(b15)

UART1受信バッファレジスタ

シンボルアドレスリセット値
u1rb03AE-03AF不定
ビットビットシンボルビット名機能
b0--受信データ
b1
b2
b3
b4
b5
b6
b7
b0(b8)
b1(b9)何も配置されていない
書き込みは「0」を
読み出した場合、値は不定
b2(b10)
b3(b11)-アービトレーションロスト検出フラグ無効(UART2のみ)
b4(b12)oer_u1rbオーバーランエラーフラグ 0:オーバーランエラーなし
1:オーバーランエラー発生
b5(b13)fer_u1rbフレーミングエラーフラグ 0:フレーミングエラーなし
1:フレーミングエラー発生
b6(b14)per_u1rbパリティーエラーフラグ 0:パリティーエラーなし
1:パリティーエラー発生
b7(b15)sum_u1rbエラーサムフラグ 0:エラーなし
1:エラー発生

UART1転送速度レジスタ

シンボルアドレスリセット値
u1brg03A9不定
ビット機能設定可能値
b0転送速度がfi/[16(n+1)] (fi=f1,f8,f32)となるようなnを指定 00H-FFH(0-255)
b1
b2
b3
b4
b5
b6
b7

UART1送受信モードレジスタ

シンボルアドレスリセット値
u1mr03A800000000
ビットビットシンボルビット名機能
b0smd0_u1mrシリアルI/Oモード選択ビット 000:シリアルI/O無効
100:転送データ長7ビット
101:転送データ長8ビット
110:転送データ長9ビット
上記以外の値は設定しない
b1smd1_u1mr
b2smd2_u1mr
b3ckdir_u1mr内/外部クロック選択ビット 0:内部クロック
1:外部クロック
b4stps_u1mrストップビット長選択ビット 0:1ストップビット
1:2ストップビット
b5pry_u1mrパリティ奇/偶選択ビット パリティ許可ビットが許可のときのみ有効
0:奇数パリティ
1:偶数パリティ
b6prye_u1mrパリティ許可ビット 0:パリティ禁止
1:パリティ許可
b7iopol_u1mrスリープ選択ビット 0:スリープモード解除
1:スリープモード選択

UART1送受信制御レジスタ0

シンボルアドレスリセット値
u1c003AC00001000
ビットビットシンボルビット名機能
b0clk0_u1c0BRGカウントソース選択ビット 00:f1を選択
01:f8を選択
10:f32を選択
11:この値は設定しないこと
b1clk1_u1c0
b2crs_u1c0 CTS/RTS機能選択ビット b4が「0」のとき有効
0:CTS機能を選択
1:RTS機能を選択
b3txept_u1c0送信レジスタ空フラグ 0:送信レジスタにデータあり(送信中)
1:送信レジスタにデータなし(送信完了)
b4crd_u1c0 CTS/RTS禁止ビット 0:CTS/RTS機能許可
1:CTS/RTS機能禁止
b5nch_u1c0データ出力選択ビット 0:TxD1端子はCMOS出力
1:TxD1端子はNチャンネルオープンドレイン出力
b6ckpol_u1c0CLK極性選択ビット 「0」を設定
b7uform_u1c0転送フォーマット選択ビット 「0」を設定

UART1送受信制御レジスタ1

シンボルアドレスリセット値
u1c103AD00000010
ビットビットシンボルビット名機能
b0te_u1c1送信許可ビット 0:送信禁止
1:送信許可
b1ti_u1c1送信バッファ空フラグビット 0:送信バッファレジスタにデータあり
1:送信バッファレジスタにデータなし
b2re_u1c1 受信許可ビット 0:受信禁止
1:受信許可
b3ri_u1c1受信完了フラグ 0:受信バッファレジスタにデータあり
1:受信バッファレジスタにデータなし
b4 なにも配置されていない
書き込み場合には「0」を書き込む
読み出したとき、値は「0」
b5
b6
b7

UART1送受信制御レジスタ2

シンボルアドレスリセット値
ucon03B0X0000000
ビットビットシンボルビット名機能
b0u0irsUART0送信割り込み要因選択ビット 0:送信バッファ空(ti_u0c1=1)
1:送信完了(ti_u0c0=1)
b1u1irsUART1送信割り込み要因選択ビット 0:送信バッファ空(ti_u1c1=1)
1:送信完了(ti_u1c0=1)
b2u0rrm UART0連続受信モード許可ビット 「0」を設定する
b3u1rrm UART1連続受信モード許可ビット 「0」を設定する
b4clkmd0CLK,CLKS選択ビット0 無効
b5clkmd1CLK,CLKS選択ビット1 「0」を設定する
b6予約ビット「0」を設定する
b7 なにも配置されていない
書き込み場合には「0」を書き込む
読み出したとき、値は不定

作業日記トップページへ

トップページへ

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送