PIC初心者用掲示板

PICの初心者用の質問箱です。
何でもお気軽にどうぞ!

■最新ツリー一覧

□このツリー付近のツリー一覧

★新規ツリー作成

◆ 5990. パリティの計算 [2005/08/28 14:47
    ┗ 5992. Re: パリティの計算 [komi] 2005/08/29 09:09
    ┗ 5993. Re: パリティの計算 [新参者] 2005/08/29 09:20
    ┗ 5994. 投稿者削除 [ ] 2005/08/29 13:12
    ┗ 5996. Re: パリティの計算 [PIC初心者II] 2005/08/29 14:24
        ┗ 6002. Re: パリティの計算 [JO_O2005/08/30 00:38
            ┗ 6015. 投稿者削除 [ ] 2005/08/31 07:48
            ┗ 6016. Re: パリティの計算 [PIC初心者] 2005/08/31 07:55
                ┗ 6019. 投稿者削除 [ ] 2005/08/31 12:04
                ┗ 6020. Re: パリティの計算 [nyannnyannko2005/08/31 12:07
                    ┗ 6022. 投稿者削除 [ ] 2005/08/31 14:14
    ┗ 6003. Re: パリティの計算 [DANGAN4] 2005/08/30 09:17


5990. パリティの計算 [2005/08/28 14:47
PICを使ってシリアル通信用プログラムを作成中ですが、
相手はEvenParityで受信するため、パリティの計算が必要になります、サンプルコードはないのでしょうか?

5992. Re: パリティの計算 [komi] 2005/08/29 09:09
>PICを使ってシリアル通信用プログラムを作成中ですが、
>相手はEvenParityで受信するため、パリティの計算が必要になります、サンプルコードはないのでしょうか?

CQ出版のPICマイコン活用ハンドブックに偶数パリティ生成サンプルが載っていたのを記憶しています。
出版物ですので転載は勘弁してください。m(__)m

5993. Re: パリティの計算 [新参者] 2005/08/29 09:20
言語とデバイスの指定ありませんが、パリティbit生成のコードを含む資料(MPASM用)
Application Notes "AN555"を参照

5994. 投稿者削除 [ ] 2005/08/29 13:12

5996. Re: パリティの計算 [PIC初心者II] 2005/08/29 14:24
>PICを使ってシリアル通信用プログラムを作成中ですが、
>相手はEvenParityで受信するため、パリティの計算が必要になります、サンプルコードはないのでしょうか?

USART内蔵のPICマイコンでは、パリティチェックはハードウェアに実装されていないのでしょうか?



6002. Re: パリティの計算 [JO_O2005/08/30 00:38
毎度JOです。
PICのUSARTには、パリティビットが有りません、これはパリティを計算する機能がハードウエアに実装されていないと言う事です。
その代わりにデーターが9BITに出来ますので、この9BIT目をパリティとして、使用出来ます。
もちろんパリティの計算は、プログラムから行うことになりますが・・・
また PICはストップビットが「1」に固定されていますので、この9BIT目をストップビットとしても使用可能です。
この場合ストップビットは「1」及び「2」の指定となります。

6003. Re: パリティの計算 [DANGAN4] 2005/08/30 09:17
「パリティビット」で検索したらこんなのがありました。
http://www.lightstone.co.jp/products/wedge/serial_commu04.htm
この理屈が理解できていれば BTFSC 命令などを用いて 送信しようとしているデータの 1の数を数えて 9ビット目を 0にするか 1にするかを決定します。

6015. 投稿者削除 [ ] 2005/08/31 07:48

6016. Re: パリティの計算 [PIC初心者] 2005/08/31 07:55
>毎度JOです。
>PICのUSARTには、パリティビットが有りません、これはパリティを計算する機能がハードウエアに実装されていないと言う事です。
>その代わりにデーターが9BITに出来ますので、この9BIT目をパリティとして、使用出来ます。
>もちろんパリティの計算は、プログラムから行うことになりますが・・・
>また PICはストップビットが「1」に固定されていますので、この9BIT目をストップビットとしても使用可能です。
>この場合ストップビットは「1」及び「2」の指定となります。
>

1バイト毎にパリティ用のビット演算をするのは面倒で、
またPIC16F系ではPROM容量が少なく、
そのパリティ演算にメモリをとられるのは
困るなーと思います。
どうしてこの仕様になっているのでしょうか?

6019. 投稿者削除 [ ] 2005/08/31 12:04

6020. Re: パリティの計算 [nyannnyannko2005/08/31 12:07

>どうしてこの仕様になっているのでしょうか?
PIC16F88 の場合では有りますが、DS30487B-page 98 ADDEN bit の使い方を
読むと少しは分かるかも。

またパリティbit が本当に役に立つかどうかも考慮する必要もあるかと思います。
通信相手に合わせる場合は仕方が無いんですけどね。

parity_calc:
     movwf Mtemp
     bcf  STATUS,C ;or bsf  STATUS,C
     movlw 1<<C
     btfsc Mtemp,0
     xorwf STATUS,F
     btfsc Mtemp,1
     xorwf STATUS,F
     btfsc Mtemp,2
     xorwf STATUS,F
     btfsc Mtemp,3
     xorwf STATUS,F
     btfsc Mtemp,4
     xorwf STATUS,F
     btfsc Mtemp,5
     xorwf STATUS,F
     btfsc Mtemp,6
     xorwf STATUS,F
     btfsc Mtemp,7
     xorwf STATUS,F
     movf Mtemp,W
     return

ループにするともっと減ります。

6022. 投稿者削除 [ ] 2005/08/31 14:14