トップページ電気・電子
1002コメント338KB
PIC専用のスレ Part 57
■ このスレッドは過去ログ倉庫に格納されています
0001774ワット発電中さん
垢版 |
2018/02/03(土) 23:52:05.99ID:EM0c0L1y
     ______
   /Microchip ./|
 / ( ゚∀゚)   /  | アセンブラのアの字もわからない
 |~ ̄ ̄ ̄ ̄ ̄|  /. 超初心者からHEXが読めてしまう
 |/Z./Z./Z./Z_|/ ||  鬼プロフェッショナルの為のスッドレ(#゚Д゚)だ!モ゙ルァ
  ||. ||. ||. ||
大人気のPICマイコンのスレ
なんといっても情報が豊富だし、開発環境も多いし、パッケージも豊富
使いやすくて、しかも安い。やっぱりPICだよね
例の如く基本リンクだ
http://www.microchip.com/  マイクロチップ本社(Microchip Technology Inc. )
http://www.microchip.co.jp/ マイクロチップ テクノロジー ジャパン 株式会社
http://www.microchip.com/maps/microcontroller.aspx Microchip Advanced Part Selector (Maps)
またーりやっておくんなまし
種類が多くてワカランって奴は上記パーツセレクタで、機能から最適製品を絞り込め!
教えて君はとりあえずGoogle( http://www.google.co.jp/ ) くらい使おう

テンプレ内の秋月小売価格も在庫が捌ければ、次の仕入れからは昨今の為替相場変動にならって
適宜価格改定されてます。ここの表記価格とは違うかもしれないのでそのつもりで

回答者する人の注意
.  最初に回答したい気持ちは分かるけど、質問者の内容を、落ち着いてよく読もう。
質問者する人の注意
.  あなたの周囲しか通じない変な省略語は使わずに、なるべく詳しく説明してね

前スレ:
PIC専用のスレ Part 56
https://rio2016.5ch.net/test/read.cgi/denki/1501476623/
0461774ワット発電中さん
垢版 |
2018/03/18(日) 06:13:21.10ID:0qAzozuu
>>458
今時のプロセスルールだと5V仕様にできないから
180nmくらいの大きいプロセスだと思うよ。
0462774ワット発電中さん
垢版 |
2018/03/18(日) 07:31:15.71ID:9m8X1Bwp
>>458
だから16bitや32bitにシフトしてるわけで

>>459
PIC24はオワコン
PIC32に対してメリットが無くて
Microchip自体売る気が無い
0465774ワット発電中さん
垢版 |
2018/03/18(日) 08:59:07.39ID:TjNM3B7c
>>462
フラッシュメモリー部分は、信頼性考えるとセルサイズ小さく出来ないから、単純な処理ならコードサイズ小さくて済む8bit有利。
0467774ワット発電中さん
垢版 |
2018/03/18(日) 17:44:26.35ID:iFqItWu4
> 今時のプロセスルールだと5V仕様にできないから
そんな理由があったのか・・・・
コマケーのも良し悪し棚。
0470774ワット発電中さん
垢版 |
2018/03/19(月) 02:09:12.01ID:vJ4UuSS/
↑ 物もある とか言っとかないと、上げ足取られるぞw
0471774ワット発電中さん
垢版 |
2018/03/19(月) 12:39:21.55ID:qzqBQlit
>>469
5V単一電源で内部降圧してるcpuって例えばどれ?
スレ的にはpicで、と言いたいがとりあえず何でも。
0472774ワット発電中さん
垢版 |
2018/03/19(月) 13:01:27.56ID:61FOhub8
>>469じゃないけど

16bit以上はほぼそうなんでは?
今時5Vでコアを動かしてたら電力が
0476774ワット発電中さん
垢版 |
2018/03/20(火) 21:34:44.04ID:MtOyVDmZ
>>474
30Fは熱かったね、電流がよく流れてた
初めて使ったとき、これは最大クロックはダメだって思って3.3Vの33Fに乗り換えた
0481774ワット発電中さん
垢版 |
2018/03/24(土) 02:37:48.20ID:RwpJ9/D6
趣味の電子工作で 8pin 8bit PIC 用を使って
赤外線リモコンデータの受信解析ソフトをスク
ラッチからアセンブラで書いたんだ。そしたら、
なんと自分でもビックリしたことに一発完動。
今日の株価暴落はこれが原因だったようだ。
0483774ワット発電中さん
垢版 |
2018/03/24(土) 03:01:04.21ID:RwpJ9/D6
8pin 8bit PIC 秋月価格1万個分くらいのロスを出しましたので、それにてご容赦を m(_ _)m
0485774ワット発電中さん
垢版 |
2018/03/24(土) 07:58:17.02ID:6jTbMacT
よくTVリモコンが行方不明になるので予備機をPICで自作してみたけど
電器屋で税込1000円以下のELPAリモコンの方が
軽くて操作性も良いので
結局そっちばかり使ってしまう
0487774ワット発電中さん
垢版 |
2018/03/24(土) 08:42:13.58ID:z99hJzxQ
使うCPUのデータシート(別途インストラクションマニュアルがあればそれ)
0491774ワット発電中さん
垢版 |
2018/03/24(土) 10:07:38.27ID:yxTaArxD
勉強のつもりなら8ビットはやめておけ
癖が強すぎる
PICに限らず
0492774ワット発電中さん
垢版 |
2018/03/24(土) 11:16:06.75ID:RwpJ9/D6
>>484
リモコン解析部はソースの行数で300行くらい。
別のリアルタイム処理と並列動作させるため状態
遷移処理で作ったので結構ムズイ作り。
ただし、コードの見やすさと実行処理ステップ数
小を優先したのでコードを減らす努力なし。

>>485
電源投入時に必ずリモコン操作が必要になる機器
2台用にPICで作った赤外線リモコン信号自動送出
器が我が家では毎日大活躍。

>>486
データシート以外は検索でサンプルを拾ってくれ
ば十分かと。ただし、おすすめの入門書おしえて
と聞く人にアセンブラは向かない気がする。
0493774ワット発電中さん
垢版 |
2018/03/24(土) 12:07:51.66ID:yxTaArxD
リモコンデータの受信解析ソフトって、
単なるリモコンの受信処理部分のこと?
それとも受信回路や送信機の評価用の解析?
0494774ワット発電中さん
垢版 |
2018/03/24(土) 12:10:08.87ID:DULXL6IN
両方
0495774ワット発電中さん
垢版 |
2018/03/24(土) 12:45:24.08ID:ZChT3Wwu
状態遷移処理って何?
逆に状態が遷移しない処理があるのか?
0496774ワット発電中さん
垢版 |
2018/03/24(土) 12:49:09.22ID:yFlQbYi+
PLCのラダーのような
状態変移で動かすプログラミング
FAやプラントではそういう書き方しないとメンテナンスが面倒
0498774ワット発電中さん
垢版 |
2018/03/24(土) 12:56:13.38ID:BlNTL06s
PCの値が遷移
0500774ワット発電中さん
垢版 |
2018/03/24(土) 13:03:26.23ID:ZChT3Wwu
状態を示す変数を用いる処理が状態遷移処理だとしたら
ほぼ全ての処理がそうじゃないか?
0502774ワット発電中さん
垢版 |
2018/03/24(土) 13:20:15.96ID:RwpJ9/D6
>>493
何のリモコンのどのボタンを押したかを解析する処理。
NEC, AEHA, SONY フォーマットMAX6バイトに対応。
受信モジュールは月並な 38kHz 3pinタイプ。
リモコンで遠隔操作ができるようになっただけでなく、
8pin PIC でも入力ボタンが一気に増えた気がする
のがうれしい。

>>495
説明が悪かったかな。状態ごとに変数値を決めて
その値に基づいて処理を行うやりかた。
ひとつのことにかかりきりでよければ、プログラム
の流れそのもので、すなわち、状態を表す変数なし
でも処理ができるので、それと区別をしたつもり。
0505774ワット発電中さん
垢版 |
2018/03/24(土) 14:16:23.13ID:Kty3MHA/
状態遷移の状態を、状態と日本語で書くから知らないやつはわからない
stateと書けばいいんだよ
0506774ワット発電中さん
垢版 |
2018/03/24(土) 14:23:28.21ID:DULXL6IN
常態にしとけ
0507774ワット発電中さん
垢版 |
2018/03/24(土) 14:27:25.07ID:ZChT3Wwu
パルスの受信は割り込みで
解析は割り込みの外だろ?
「状態遷移処理」とCPU占有の関係がいまいちわからん

CPUを占有してよくて
「状態遷移処理」じゃない処理にすれば
解析が簡単なのか?
0508774ワット発電中さん
垢版 |
2018/03/24(土) 14:33:12.09ID:Kty3MHA/
>>502
他のマイコンだと、状態遷移テーブルをポインタ関数テーブルに対応させてアドレスジャンプさせるんだけど
8ビットPICだとどうやるの?
アセンブラでもスマートだが、unixのcで、select文と組み合わせてスマートに実現しているのをみたときは
K&Rはこれがやりたかったのかと感動した。ネットワークと内部込みで。
0509774ワット発電中さん
垢版 |
2018/03/24(土) 14:37:39.55ID:b8u8WUUR
質問です。

16F1705にてUSARTにて通信テストを行っているのですがうまくいきません。
何でもいいので受信すれば、1回LEDが点滅するようにしたいですがうまくいきません。

↓メイン部分でどこか間違いなどありますでしょうか?

// メインの処理
void main()
{
/** 各ピン設定 **/
ANSELA = 0b00000000 ; // AN0-AN3は使用しない全てデジタルI/Oとする
ANSELC = 0b00000000 ; // 全てデジタルI/Oとする
TRISA = 0b00000000 ; // ピン(RA)は全て出力に割当てる(RA3は入力専用)
TRISC = 0b00100000 ; // RC5(rx)だけ入力その他のピンは出力に割当てる
PORTA = 0b00000000 ; // RA出力ピンの初期化(全てLOWにする)
PORTC = 0b00000000 ; // RC出力ピンの初期化(全てLOWにする)


//UART用設定
RC4PPS = 0b10100 ; // 出力(C4へTXを割当てる)
RXPPS = 0b10101 ; // 入力(RC5を割当てる:デフォルト)
TXSTA = 0b00100100 ; // 送信情報設定:非同期モード 8ビットデータ・ノンパリティ
RCSTA = 0b10010000 ; // 受信情報設定
//UART用設定 データシートP340参照
SYNC = 0;
BRGH = 0;
BRG16 = 1;
SPBRG = 25 ; // ボーレートを9600(高速モード)に設定
RCIF = 0 ; // USART割込み受信フラグの初期化
RCIE = 1 ; // USART割込み受信を有効にする
PEIE = 1 ; // 周辺装置割込みを有効にする
GIE = 0 ; // 全割込み処理を許可しない
Flag = 0 ; // データ受信フラグのリセット

/*************** メインループ ********************/
while(1)
{
//PIC電源確認LED点灯
LATCbits.LATC0 = 1;
__delay_ms(500) ;
LATCbits.LATC0 = 0;
__delay_ms(500); // 500ms遅延する

while(1)
{
// USARTからデータが送られてきたら処理する
LATCbits.LATC0 = 1; // LED点灯
if(RCIF==1)
{
RXBUFF=RCREG; // 受信データの取り出し
LATCbits.LATC0 = 0; // LED点灯
__delay_ms(500); // 500ms遅延する
}
}
}
}
0510774ワット発電中さん
垢版 |
2018/03/24(土) 15:01:32.96ID:ZChT3Wwu
>>509を見てよくわかりました
こういうプログラムが
「状態遷移処理」がないプログラムですね
0511774ワット発電中さん
垢版 |
2018/03/24(土) 15:19:55.18ID:b8u8WUUR
>>510
スマホからですみません
状態遷移処理がないとはどういう意味ですかね?

お手数をおかけしてしまって申し訳ないです
0513774ワット発電中さん
垢版 |
2018/03/24(土) 15:32:53.18ID:BlNTL06s
受信データ列は正しいビットレートで正しいレベルで入力しているのは確認してあるんかいな。
0514774ワット発電中さん
垢版 |
2018/03/24(土) 15:50:42.50ID:b8u8WUUR
>>513
受信データのビットレートは9600bps(PICは4Mhz外部クロック)で入力の電圧も問題ないと思います。
ただ、PIC(特にPPSの設定)と通信用のモジュール(※)が今回初めて使用する物なので、
基本的な記述に問題がないか確認したく書き込みました。

初心者のため意図と違う返信になっていたらごめんなさい

※通信モジュール
ttp://akizukidenshi.com/catalog/g/gK-07378/
0515774ワット発電中さん
垢版 |
2018/03/24(土) 15:59:28.72ID:FAmVE2sl
初期化のところは見てないのだけど(ここが問題かも)

while(1)のループが入れ子になっていて、breakもないし、外のwhile(1)は要らんよね?

どっち?
LATCbits.LATC0 = 1; // LED点灯
LATCbits.LATC0 = 0; // LED点灯

ビットレートが合っているかどうかは、初期化が終わったあとに、何か文字を送信して
オシロで見るか、PCで受信して確認すると良いと思う。
0516774ワット発電中さん
垢版 |
2018/03/24(土) 16:39:28.98ID:b8u8WUUR
>>515
返信ありがとうございます。

 》while(1)のループが入れ子になっていて、breakもないし、外のwhile(1)は要らんよね?
 そのとおりです。削除します。

 》どっち?
 LATCbits.LATC0 = 1; // LED点灯
 LATCbits.LATC0 = 0; // LED消灯
 が正しいです。

 》ビットレートが合っているかどうかは、初期化が終わったあとに、何か文字を送信して
 》オシロで見るか、PCで受信して確認すると良いと思う。
 オシロが手元にないので、PCに受信する方向で確認してみます!!

  》初期化のところは見てないのだけど(ここが問題かも)
  そこが問題かもしれないです・・・引き続き調査して見ます。
0517774ワット発電中さん
垢版 |
2018/03/24(土) 17:22:17.89ID:b8u8WUUR
>>516
連投すみません

PIC側から文字を送信したところ、無事にpc側にて受信できました。

恐らく受信部分の問題だと思われます
引き続き調査してみます。
0518774ワット発電中さん
垢版 |
2018/03/24(土) 18:04:42.63ID:BlNTL06s
その送信の線を受信につないでみると?
0519774ワット発電中さん
垢版 |
2018/03/24(土) 18:30:09.45ID:b8u8WUUR
>>518
なるほど!!目からうろこでした

PICは正常に動作しました!(LEDは消灯しました)

ということはモジュールとPIC間かPCの送信の問題ですね
0520774ワット発電中さん
垢版 |
2018/03/24(土) 19:31:08.66ID:D2mDamJb
48MHzで動いてるPIC18から12MHzのクロックって出力されてましたっけ?
HSモードじゃだめかな

外付けセンサーで12MHzが欲しいんだけどなんかPIC用とセンサー用で12MHzを
2つ実装するのが馬鹿みたいな気がして
0521774ワット発電中さん
垢版 |
2018/03/24(土) 21:01:41.47ID:b8u8WUUR
>>519
とりあえず問題の切り分けはできましたありがとうございます

結局のところPIC側ではなくて、モジュールの問題かもしれません

送信はうまく行くのですが、受信をすると電源が落ちてリセットしてしまうことがわかりました。

理由はこれから調査しますが、不良品の可能性もあるのかな?
0523774ワット発電中さん
垢版 |
2018/03/24(土) 22:08:15.09ID:Kty3MHA/
>>521
質問する前にモジュールのデータシートは読んだ?
いや、俺は読んでないけど。
0524774ワット発電中さん
垢版 |
2018/03/24(土) 22:28:40.03ID:b8u8WUUR
>>523
モジュールのデータシー読み込めてないです(泣)
英語ばっかで、つなぎ方などを見ただけで

一度読み込んで見ます

ありがとうございますm(_ _)m
0525774ワット発電中さん
垢版 |
2018/03/24(土) 23:20:20.15ID:ZChT3Wwu
まずは
PC <===> PIC
PC <===> モジュール
で動作確認

PIC <===> モジュール
はその後で
0526774ワット発電中さん
垢版 |
2018/03/24(土) 23:26:08.28ID:b8u8WUUR
>>525
了解しました

とりあえずpcとPICの通信を完全にします

色々ありがとうございます
0528774ワット発電中さん
垢版 |
2018/03/25(日) 00:12:50.86ID:mWqzvsF5
あまりのレスの多さに感動です

>>503
随分インプリメント依存の所への質問ですね。
今回は、約 125μs ごとに赤外線パルスの有無を
チェックし、1ms以上パルスが続けばリーダーと
判断。その後、パルスが止まってから次のパルス
が始まるまでが 1ms以上なら NEC か AEHA、1ms
未満なら SONY と判定するロジックにしました。
2ms 以上パルスが来なければ終わりと判断。

>>504
とりあえず受け取った bit 数と MAX 6 バイトを
丸ごとレジスタに保存。この内容を後で適宜判断
します。

>>505
PIC には、そもそも STATUS というレジスタがあ
るのでそう書くのを躊躇いました。

>>507
以前は割り込みの無い PIC (12F510) を使ってい
たもので、そのくせというかなごりで、TMR0 の
とあるビットを監視してタイミングをとる形で、
全てポーリング処理で作りました。

> CPUを占有してよくて…解析が簡単なのか?

私はそう思っています。マルチタスクは CPU占有
ではありませんが、ひとつのことに専念している
ようにプログラムを書けるので簡単に作れる気が
するのではないでしょうか。

>>508
8 bit PIC の常套手段かと思いますが、プログラ
ムカウンターに対して状態変数を加算することで
複数のアドレスに一発で分岐できます。その分岐
先には、一般的に GOTO を並べておきます。

addwf pcl,f で検索するとワラワラ見つかります。
0529774ワット発電中さん
垢版 |
2018/03/25(日) 00:32:11.73ID:mPfq9Gm7
>>528
せっかくのキャプチャー割り込みを使わないで
ポーリングでやってるのか

メインループの他の処理によってサンプリングタイミングがずれるし
1000命令かかる処理が他に有れば完全に取りこぼすわけだ

125usと言えばPIC16ではトップレベルで応答性が要求される処理
これで割り込みを使わないで何に割り込みを使うの?

アセンブラの前にもうちょっと基本的なことを学んだ方が良い気がする
0531774ワット発電中さん
垢版 |
2018/03/25(日) 01:14:39.79ID:mWqzvsF5
割り込み機能の全くない 12F510 が 50円だった頃
20個買ったやつがまだ結構余ってるんですよ。
今回は割り込み機能のある 12F1501 をハンダ付け
してしまってから間違いに気が付いたのですが、ま、
いいかとそのまま 12F1501 でプログラムを作成。
余ってる 12F510 にもダウングレ−ド移植をしやす
いようにとポーリングでやったんですよ。

全ての処理はイベント処理的に 125μs 以内に終わ
るようにコーディングしてます。割り込みを使えな
いわけではなくて、割り込みを使わないで作ったと
いうだけのことです。
0532774ワット発電中さん
垢版 |
2018/03/25(日) 11:40:34.40ID:BOg+2r5T
超小規模なプログラミングでも
ホビーと業務レベルとの差は大きいな
アセンブラってところがまた泣かせる
0533774ワット発電中さん
垢版 |
2018/03/25(日) 13:25:26.97ID:lrSYKSS5
業務用のは保守性と再利用性最重要視してるから
冗長過ぎて眠くなる
趣味のは各個人の技巧やら独自記法満載で
読んでえ辛くなる
0534774ワット発電中さん
垢版 |
2018/03/25(日) 13:33:12.42ID:3ONxWJnp
>>528
>8 bit PIC の常套手段かと思いますが、プログラ
>ムカウンターに対して状態変数を加算することで
>複数のアドレスに一発で分岐できます。その分岐
>先には、一般的に GOTO を並べておきます。

通常のCPUならそうなんですが、PICのレジスタバンクまたいでアドレスジャンプやGOTOして
かつ、ちゃんと帰ってこれるのかなと思って。
0535774ワット発電中さん
垢版 |
2018/03/25(日) 13:46:34.46ID:mWqzvsF5
赤外線リモコン受光信号にちょくちょく
ちょっかいを出してくるヤツが居る。
何か?と思ったら、Win10 にしてあるも、
ちょっと古いノートPCが、近くに相手が
居ないか定期的に赤外線で声掛けをして
いるようなのだ。

これを使えば PC-PIC 間で赤外線通信が
できるじゃん、と思って技術資料を探そ
うとググってみても中々みつからない。

参考になりそうなサイトをご存知の方、
とりあえずヒントだけでも教えていただ
けませんでしょうか。
0539774ワット発電中さん
垢版 |
2018/03/25(日) 14:04:57.39ID:mWqzvsF5
>>534
プログラムアドレスの下位バイトが 0xff から次の 0x00 にまたがないようにコーディングする必要があります。
0540774ワット発電中さん
垢版 |
2018/03/25(日) 14:36:33.68ID:mWqzvsF5
早速ありがとうございます。でも IrDA のプロトコルスタックを
PIC 側に自作する根性は湧きません。PC側をもっと低水準で
Lチカしたくなります。
0544774ワット発電中さん
垢版 |
2018/03/25(日) 16:54:08.29ID:SORJJxgJ
PC用のIrデバイスドライバがありゃ良いんだな
0545774ワット発電中さん
垢版 |
2018/03/25(日) 16:55:14.71ID:SORJJxgJ
PIC側でbluetooth使うのもありか
0546774ワット発電中さん
垢版 |
2018/03/25(日) 17:18:10.56ID:AuEketqe
memo

https://taroumaru.jp/main/irda_windows10
https://github.com/irkit
https://github.com/kerikun11/IR-Station
https://github.com/iguanaworks/iguanair
https://www.driverguide.com/driver/download/SigmaTel-USB-IrDA-Dongle
http://mcn.oops.jp/lab/machines/irda-dongle/index.htm
http://hp.vector.co.jp/authors/VA005810/irda/link_irda.htm
http://tech.nikkeibp.co.jp/it/free/NT/WinReadersOnly/20050721/1/
https://support.microsoft.com/ja-jp/help/3150989/an-irda-networking-device-does-not-work-in-windows-10-version-1511
0548774ワット発電中さん
垢版 |
2018/03/25(日) 19:58:35.66ID:qua2RALn
>>547
え?御社には開発基準が存在せず、ドキュメント管理の効率化もやっていない、
と言っているようなものですよそれ…
0550774ワット発電中さん
垢版 |
2018/03/25(日) 20:06:49.41ID:SHaSvhaJ
>>526
とりあえず通信は完了しました!

色々皆さんありがとうございました!

助かりました
0552774ワット発電中さん
垢版 |
2018/03/25(日) 21:03:42.50ID:3ONxWJnp
>>547
横からごめん、東芝の4ビットでも保守性と再利用性は最重要視されてます。@車両関連メーカー
速度とか機能は仕様の問題だよね。そんなの仕様を満足してればまったく重要視されません。
あとはコストとのバーターだけど、コストの話になると保守と再利用できないと、いまどきのメーカとしてはダメなんだよね。
そこらは営業と調達ががんばるだけ。
0553774ワット発電中さん
垢版 |
2018/03/25(日) 21:59:16.88ID:34OP5Ze7
仕様
信頼性
コスト
開発期間/納期

これらよりも
コードの保守性や再利用性を重視するアホなメーカーがあるのね
0554774ワット発電中さん
垢版 |
2018/03/25(日) 22:15:20.75ID:3ONxWJnp
>>553
お前ほんとにわかってないんだな。
仕様と保守を同一に語るメーカーがあると思ってるのか?
違いがわからないのかな
0556774ワット発電中さん
垢版 |
2018/03/26(月) 01:13:49.99ID:XHOfX23W
最重要視

この言葉の意味がわからないのか自分で書いてて
他のいろんな事を犠牲にしてでも保守性や再利用性を確保する
っていう意味だぞ

なにも犠牲にせずに単に
保守性や再利用性を考えたコード
っていう感じで使ったのなら
当然だろうね
保守性や再利用性を考えないコードなどあり得ない
0557774ワット発電中さん
垢版 |
2018/03/26(月) 01:17:23.60ID:XHOfX23W
一部上場電機メーカーで量産品をたくさん作ってるよ

他部署や顧客に
「保守性や再利用性を最重要視して開発しました」
なんて言ったら笑われるよ普通
0559774ワット発電中さん
垢版 |
2018/03/26(月) 04:15:03.65ID:feh8Yv3J
とにかく戦わないと気が済まない人っているよね
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況