投稿者
 メール
  題名
  内容 入力補助動画検索画像・ファイル<IMG><OBJECT>タグが利用可能です。(詳細)
    
  ファイル1
  ファイル2
  ファイル3
アップロード可能な形式(各1MB以内):
画像(gif,png,jpg,bmp) 音楽(mmf,mld) 動画(amc,3gp,3g2)

 URL
[ ケータイで使う ] [ BBSティッカー ] [ 書込み通知 ] [ teacup.>アマチュア無線 ] [ 検索 ]

[PR]     銀座 インプラント
teacup. ] [ 無料掲示板 ] [ プレミアム掲示板 ] [ teacup.コミュニティ ] [ ブログ ] [ チャット ]

全251件の内、新着の記事から10件ずつ表示します。 4  5  6  7  8  9  10  11  12  13  |  《前のページ |  次のページ》 

Re: 16F628Aのシリアル受信

 投稿者:nekosan  投稿日:2009年 7月 6日(月)20時44分56秒
返信・引用
  > No.182[元記事へ]

naga64さんへのお返事です。

> 詳しい方教えてください。前にアセンブラでPIC16F84AでPCでハイパーターミナルで文字コード送るとF84Aで文字を戻すようなソフトを作ったことがあるのですが、今回16F628AでCCS−CでUSARTをしようして同じようなソフトを作ろうとしてるのですが、何故かうごきません。16F628AでUSARTを使用する場合は何か細かい設定をこちらでしないと駄目なのでしょうか?LEDは点滅するのでマイコンでプログラムha動いています。
> CCS−Cのシリアル関係のコマンドを使ってるので簡単に出来ると思っていたのですが、予想外な結果で困ってます。



>何故かうごきません。

「うごかない」という状態がどういう状態を指して
いるのかわからないので、どんな風に動かないのか
が想像つきません。

これだけだと情報が少なくてなんとも判断が出来ませんが、
幾つかの観点から切り口はあるかと思います。


(1)内蔵ペリフェラル有無

 16F84AはUSART機能を搭載してないので、
 CCS−CではソフトウェアでUSARTの機能を
 実現しています。
 一方16F628AはハードウェアUSARTを
 登載しているので、CCS−Cは内蔵USARTを
 利用するコードを吐き出します。

 なので、ソースプログラム上で同じコードを書いても、
 生成される実行プログラムは全く異なったものに
 なるかと思われます。

 また、(2)とも絡みますが、各ピンモード(trisとか)
 のデフォルトの設定値も(確か)異なっていたと
 思います。

(2)ピン互換性

 16F84Aと16F628Aはおよそピン配置が
 互換になってますが、628は後発品で色々機能拡張
 されている都合、それぞれのピンにたくさんの機能が
 重畳されています。

 RB1、RB2などもUSARTとデジタルI/Oが
 重畳されているので、個別にピンモードを設定する
 必要があるかと思います。

 (AVRなんかは、シリアルモードにすると同時に
  I/Oピンのモードも勝手に切り替わるので
  混乱無いのですが)

(3)その他

 クロック回路も内蔵RC発振モードが追加になって
 いるなど変更があるので、コンフィグビットの
 設定などによって意図しない動作になっている
 可能性もあります。


制御レジスタの設定と、それによってI/Oピンが
どのように動作するのかは、データシート37ページの
FIGURE 5-9とFIGURE 5-10が参考になるかと思います。


ちなみにそのプログラムは、シミュレータ上では
意図されているとおりに動いているのでしょうか?
各制御レジスタ(trisやtxstaなど)の設定値は意図
通りになっているのでしょうか?

とりあえずこのあたりを見直してみていただければ
と思います。
 

16F628Aのシリアル受信

 投稿者:naga64  投稿日:2009年 7月 6日(月)11時53分6秒
返信・引用
  詳しい方教えてください。前にアセンブラでPIC16F84AでPCでハイパーターミナルで文字コード送るとF84Aで文字を戻すようなソフトを作ったことがあるのですが、今回16F628AでCCS−CでUSARTをしようして同じようなソフトを作ろうとしてるのですが、何故かうごきません。16F628AでUSARTを使用する場合は何か細かい設定をこちらでしないと駄目なのでしょうか?LEDは点滅するのでマイコンでプログラムha動いています。
CCS−Cのシリアル関係のコマンドを使ってるので簡単に出来ると思っていたのですが、予想外な結果で困ってます。
 

Re: ICD2でデバックできない。

 投稿者:naga64  投稿日:2009年 7月 6日(月)11時44分21秒
返信・引用
  > No.178[元記事へ]

kugaさんへのお返事です。

詳しい説明ありがとうございました。
PICにはデバックモードを持ってるのと無いのがあるのですね。
勉強不足でした。
ありがとうございました。

> naga64さんへのお返事です。
>
> > ICD2を使ってデバックしたいのですが、「ICDWarn0020: Invalid target device id (expected=0x89, read=0x83)」というエラーが出てデバックモードに入れません。プログラムはCCS−Cでしています。ちなみにプログラムモードだと正常にプログラムできます。何が悪いのでしょうか?ICD2で16F877Aと16F819はデバックしたことがあるのですが、同じようにしてなぜ出来ないのでしょうか?教えてください。
>
> 877や819と異なり、16F628Aにはデバッグ機能がありません。
> ICD2でデバッグするには、専用のデバッグ機能付きのカスタムCHIPが載ったICD 2 Headers
> が必要となります。
>
> http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en538769
 

Re: ICD2でデバックできない。

 投稿者:naga64  投稿日:2009年 7月 6日(月)11時41分16秒
返信・引用
  > No.177[元記事へ]

nekosanさんへのお返事です。

こんにちは。nekosanの言われたとおりのようでした。
ありがとうございます。

> naga64さんへのお返事です。
>
> > ICD2を使ってデバックしたいのですが、「ICDWarn0020: Invalid target device id (expected=0x89, read=0x83)」というエラーが出てデバックモードに入れません。プログラムはCCS−Cでしています。ちなみにプログラムモードだと正常にプログラムできます。何が悪いのでしょうか?ICD2で16F877Aと16F819はデバックしたことがあるのですが、同じようにしてなぜ出来ないのでしょうか?教えてください。
>
> ICD2は持ってないので詳しくは良く判りませんが、
> これだけの情報ではいずれにしても判断は困難だと
> 思われます。
>
> ただ、具体的なチップのidが返って来ているところ
> を鑑みると、IDE環境側で想定しているチップidと
> 実際に接続しているチップのidが一致していない
> ということではないでしょうか?
>
> デバッグモード以前に、多分ICSPモードにも入れて
> いないのではないかと思います。
 

Re: ICD2でデバックできない。

 投稿者:nekosan  投稿日:2009年 7月 5日(日)23時34分33秒
返信・引用
  > No.178[元記事へ]

kugaさんへのお返事です。

> 877や819と異なり、16F628Aにはデバッグ機能がありません。
> ICD2でデバッグするには、専用のデバッグ機能付きのカスタムCHIPが載ったICD 2 Headers
> が必要となります。


kugaさん、情報ありがとうございます。
そういう外付け部品が必要だったんですか。

事前にデータシートの113ページを眺めてみて、
一応In-Circuit Debuggerの記述があるという
ことだけチラッと見て、あぁ、In-Circuit
Debuggerでデバッグできるのか…と単純に
思い込んでしまいました。

よく読んでみたら制約があったんですね。
 

Re: ICD2でデバックできない。

 投稿者:kuga  投稿日:2009年 7月 5日(日)14時32分23秒
返信・引用
  > No.173[元記事へ]

naga64さんへのお返事です。

> ICD2を使ってデバックしたいのですが、「ICDWarn0020: Invalid target device id (expected=0x89, read=0x83)」というエラーが出てデバックモードに入れません。プログラムはCCS−Cでしています。ちなみにプログラムモードだと正常にプログラムできます。何が悪いのでしょうか?ICD2で16F877Aと16F819はデバックしたことがあるのですが、同じようにしてなぜ出来ないのでしょうか?教えてください。

877や819と異なり、16F628Aにはデバッグ機能がありません。
ICD2でデバッグするには、専用のデバッグ機能付きのカスタムCHIPが載ったICD 2 Headers
が必要となります。

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en538769
 

Re: ICD2でデバックできない。

 投稿者:nekosan  投稿日:2009年 7月 5日(日)00時40分40秒
返信・引用
  > No.173[元記事へ]

naga64さんへのお返事です。

> ICD2を使ってデバックしたいのですが、「ICDWarn0020: Invalid target device id (expected=0x89, read=0x83)」というエラーが出てデバックモードに入れません。プログラムはCCS−Cでしています。ちなみにプログラムモードだと正常にプログラムできます。何が悪いのでしょうか?ICD2で16F877Aと16F819はデバックしたことがあるのですが、同じようにしてなぜ出来ないのでしょうか?教えてください。

ICD2は持ってないので詳しくは良く判りませんが、
これだけの情報ではいずれにしても判断は困難だと
思われます。

ただ、具体的なチップのidが返って来ているところ
を鑑みると、IDE環境側で想定しているチップidと
実際に接続しているチップのidが一致していない
ということではないでしょうか?

デバッグモード以前に、多分ICSPモードにも入れて
いないのではないかと思います。
 

Re: MCLRピンの使い方について

 投稿者:naga64  投稿日:2009年 7月 3日(金)22時58分38秒
返信・引用
  > No.168[元記事へ]

nekosanさんへのお返事です。

こんばんわ。いつも詳しい説明ありがとうございます。
やはりこのPINは難しいですね。
これから色々と実験してみます。
ありがとうございました。

> naga64さんへのお返事です。
>
> > 初心者の質問で恐縮なのですが、PIC16F628Aを使って製作するのですが、ポートRA5使ってLED等を駆動しますが、このRA5のピンはリセットに関係する /MCLRピンと兼用になっています。リセット端子として考えると?電源にプルアップ等しなければいけないと思いますが、ポートRA5として使う時でも電源にプルアップしなければいけないのでしょうか?通常電源にプルアップ又は直接電源に接続するのが正解ですか?それとも、プルアップは書き込み時のみ必要ですか?でもプルアップしなくてリセットはかかるのでしょうか?詳しく教えてください。
>
>
> まず結論から。
>
> 628のRA5はI/Oピンモードに変更しても
> 入力モードにしかなりません。
>
> データシートの35ページ、TABLE 5-1: PORTA FUNCTIONS
> をご覧ください。
> LEDを駆動とのことですが、多分出力(LEDを点灯)
> という用途だと思うので、その用途には使えません。
>
> どうしてもRA5ピンでなければだめなのでしょうか?
>
>
> あと、簡単なように見えてマイコンのリセット回路周りは
> 結構頻繁にトラブルを起こす原因になっています。
>
> 仮に制御レジスタの設定は今回の628用のケース
> だけに特化して
>   「どうすればいいか」
> の結論だけ知っても、多分応用が一切利かないと
> 思われます。
>
> さらにはリセットに限った話ではなく、マイコンの
> I/Oピンは一般にたくさんの機能を重畳させて
> あり、都度制御レジスタを切り替えて使用する必要が
> あります。
> 特にPICはAVR以上にI/Oピンの切り替え設定が
> 複雑なので、単純に制御レジスタの設定方法を628の
> 1パターンだけ知っても多分全く応用が利かないと
> 思います。
>
> 面倒でも、データシートに書かれている内部回路を
> 紐解いていって、制御レジスタの情報がどういう風に
> 入出力ピンに影響しているのか、どこをどんな風に
> 設定すればいいか…
>   「こうすればいいはず」
> を都度都度突き詰めていかないと、いざ思い通りに
> 動かなかった時に、原因究明も対策も打ち様がない
> かと思われます。
>
>
> 実はPICを触り始めた頃にまさにその辺りで
> 私自身がとーーーーーーっても悩んだ経験があります。
>
> で、いきなり英文データシート読んでもチンプンカンプン
> だったので、日本語と挿絵で判りやすく解説されている
> 後閑さんの本を一通り読み下し、マイコンの中身が
> どうなっているのかとかを理解し、それに関する
> 専門単語の意味などを覚えました。
>
>
> 後閑さんや山根さんの本にはその辺りの内部回路の
> 読み解き方とか制御方法とかのイロハが平易に
> 書かれているので、これらの本で一度読み解けば
> 英文データシートも特に難しいものではありません。
> (文法なんて中学生レベルですしね)
>
> 逆にいうと、後閑さんや山根さんの本はデータシートの
> 解読本といった感じなので、一旦理解してしまえば、
> PICだろうがAVRだろうが、あとは単にバリエーション
> の話なのでいくらでも応用は利きます。
>
> プルアップってなんなのか、とか、プルアップが
> 必要なのか必要ではないのかとか、そもそも
> リセットって内部ではどのように働いているのか、
> とか、その手の話が理解できれば自信を持って
> 判断できるようになるかと思います。
>
>
> 文章を拝読するに、リセット関係について勘違いを
> されているような気がするのですが、
> 設定間違えると、エラーメッセージなど出ずに
> マイコンから煙がでたりしちゃいますしね…。
>
>
> あと、リセットをひとたびI/Oピンに変えてしまうと、
> 元に戻す時等に厄介なので(再度プログラムの書き換えを
> する時など)、よほど必要に迫られない限りはリセット
> 端子として残しておいた方が良いかと思います。
>
>
> 始められてからまだ間もないのだと思いますが、
> まさにこの辺りがソフトウェアだけの開発と
> 大きく違うところで、一つの大きな壁だと思うので、
> 是非頑張って乗り越えいっていただければ、と。
>
>
> (知ったようなことを書いてますが、そもそも私自身
>  が新しい情報に触れるたびに勉強不足を思い知る
>  毎日といった感じなので、
>    「えらそうなことを…」
>  という程度で読み流していただければ…)
 

Re: リングバッファについて

 投稿者:naga64  投稿日:2009年 7月 3日(金)22時57分3秒
返信・引用
  > No.167[元記事へ]

nekosanさんへのお返事です。

こんばんわ。いつも詳しい説明ありがとうございました。
これから色々試してみたいと思っています。
ありがとうございました。

> naga64さんへのお返事です。
>
> > PIC16F628Aを使用して、シリアル通信のソフトを作りたいのですが、頻繁にデータ受信するにはリングバッファを入れないと取りこぼすのではないかと思うのですが、リングバッファを作った経験がありません。どのように作ればいいのでしょうか?また、リングバッファを使った例とか詳しく書いてる物がありましたら教えてください。多分、ポインタを使う必要があるのではと思っています。参考プログラムとかあれば非常にありがたいです。言語はCCS−Cで作ります。以上回答頂けると嬉しいです。
>
>
> リングバッファとポインタの関係が良く解らないのですが、
> どなたかが「ポインタが必要」とお話されていたので
> しょうか?
> 一般に、リングバッファはポインタが使えない言語系でも
> 組めますし、Cのようなポインタが使える言語系でも
> ポインタを使う必要は特にないかと思います。
>
> あと、リングバッファ自体も取りこぼしを防ぐ免罪符には
> ならないので、ストックとフロー、そして処理時間の計算
> を精緻に行って、本当にバッファが必要なのかどうか、
> バッファを設けることで本当に充分なのか、といったことを
> 事前に計算しておいたほうがよろしいかと言う気がします。
>
>
> リングバッファの処理自体はとても簡単だと思います。
>
> ただマイコンでは登載しているSRAM容量が小さいため、
> SRAM容量の許す範囲で適当な大きさのバッファを
> 用意して、書き込みをする位置と読み出しをする位置、
> (あと必要に応じてバッファに詰め込み済みのデータ数)
> を変数として用意しておけばよろしいかと。
>
>
> 例えば、100バイトのchar型のバッファを確保すること
> を考えます。
> そのためには、char型で要素数が100個の配列を定義します。
> そして、書き込み位置と読み出し位置をともに0番目
> (int型変数で値を0)とでもしておいて、あと
> データ数(これもint型)も初期値として0と置いておきます。
>
> データを1バイト受信するたびに、書き込み位置に相当する
> 配列の要素に受信データを代入し、書き込み位置を1増やし、
> 同時にデータ数も1増やします。
> (この時書き込み位置が100に届いたら0に戻します)
>
> 読み出しの際には、まずデータ数を参照して0より大きいか
> 確かめて、0より大きい場合は到着済みデータがあるという
> ことなので1バイトだけ読み出しを行います。
> 読み出し位置が指す配列の要素を1バイト取り出せばOK。
> そして読み出し位置を1増やし、データ数も1減らします。
> (読み出し位置が100に届いたら0に戻します)
>
> こんな感じで上手く動くかと。
>
>
>
> ただ、リングバッファとUARTをどのように組み合わ
> せるかと言う部分がちょっと気になります。
> 普通であれば、受信についてはUART受信割り込みを
> 使ってデータが届くたびに受信処理を行い、読み出しに
> ついてはメインルーチン側(など)で適宜データ数を
> 参照し、0より大きいかどうかを確認すればよいかと
> 思います。
>
> そうすると、一般には割り込み制御が必要になります。
> 割り込み処理についてはとりあえず詳説しないので、
> 参考書などをご参照ください。
>
>
> バリエーションは色々あるかと思いますが、だいたい
> このような感じになるかと思います。
 

ICD2でデバックできない2.

 投稿者:naga64  投稿日:2009年 7月 3日(金)21時50分53秒
返信・引用
  したの投稿で、使用してるPICの名前を書き忘れました。デバック(ステップ実行とか)が出来ないのは、PIC16F628Aです。
CCS−Cのバージョンは「PCM」で4.068です。
 

以上は、新着順71番目から80番目までの記事です。 4  5  6  7  8  9  10  11  12  13  |  《前のページ |  次のページ》 
/26 


[PR]