1 :
名無しさん@お腹いっぱい。:
とかハード絡みのソフトな話とか
抵抗1本でシュミットトリガ的入力動作をさせるという話
抵抗1本10KΩとか22KΩを通して入力させるだけ
ポートは常時は出力ポートに設定し、現在の入力状態を出力しておきます
入力直前にポートを入力にすると、抵抗値と端子の入力容量で定まる
時定数(50n〜200n)を持ちます
ポートを入力にしてから実際に入力する迄の時間によってシュミット
的動作をするという話です。
3 :
PIC初心者:2000/08/16(水) 10:13
>1
入力レベルが変化するタイミングが分かっていながら、
その入力されるハードウェアの環境をわざわざソフト側で整備しなきゃ
ならん状況というのが、想像できません。
普通にポーリングしてチャタリング除去するプログラムを書く以上に
どういうメリットがあるのでしょう?
4 :
>3:2000/08/16(水) 10:24
リレーやスイッチのようにチャタリングなら比較安定値取り込み
int chatKey(int newkey)
{
int wk;
static int key=0;
static int oldkey=0;
wk =(~(oldkey^newkey)) & (key^newkey);
oldkey=newkey;
return key ^=wk;
}
の方法で良いですが、温度センサの取り込みのように対象がアナログ値の場合、
この方法では必ずしも安定しません。
入力はアナログだけど処理はデジタルにして不感帯を持たせたい場合があります。
>>2の方式なら入出力方向の切替えから実際の入力迄のタイミング調整だけでその不感帯
も調整出来ます。
また、アルゴリズムによっては簡易ADCとして動作させられます
5 :
PIC初心者:2000/08/16(水) 10:46
>4
なるほど〜。面白いお話でした。
ところで、当方ふだんはアセンブラ使用者なので、こういうのを
Cのコードをみるとたいへん新鮮にみえます。
PICでもCでガンガン書けるようになれば便利なのは分かってる
のですが、コンパイラがどんなコードを吐き出すのか想像しなが
らCで書くくらいなら、はじめからアセンブラで書いたほうが、
私には性にあってます。
6 :
4>5:2000/08/16(水) 11:06
7 :
名無しさん@お腹いっぱい。:2000/08/16(水) 12:08
一番旬なPICってどれ?
232Cのような調歩同期信号を送受信する話
2400bps程度の低速ならx4以上の周期での一定周期タイマ割込みを使えば簡単
9600bps前後なら送信はx1タイマ割込で
受信は立ち下がりエッジ割込みで 1/2ソフトウエイトしてそこからx1タイマ割込開始
それ以上の通信速度なら命令数を数えるソフトウエイトを使います
送信は1命令の実行時間を数えて命令数で時間を作ります。
受信はエッジ割込内で3/2ソフトウエイトして、後はx1ウエイト毎に値を読むだけです
>>3 PIC初心者こんにちは。4さんの他に、この方法は長い配線の先の信号を取込む
場合のように信号が酷く鈍ったりノイズで大きくオフセットがかかる場合にも有効です。
抵抗はマイコン側を保護する事にもなりますし、常時は出力にする事もポート保護に役立ちます。
>>7 さんこんにちは。
適材適所でしょうね。AVRもなかなかいいです。丁度トラ技で特集やってますね
16bit系ならH8系が一時入手難もあって 今三菱が頑張っています。
高速書込み可能なフラッシュで、書込みツールもプリンタポート使って自作出来
ますし、cコンパイラもシェア(期間限定)で公開されていますし。
10 :
PIC初心者:2000/08/17(木) 13:16
>9
宿題をやってみました。
org 0x0C
key res 1
oldkey res 1
newkey res 1
wk res 1
org 0x????
chatkey
movfw oldkey
xorwf newkey@`w
movwf wk
comf wk@`f
incf wk@`f
movfw key
xorwf newkey@`w
andwf wk
movfw newkey
movfw oldkey
movfw wk
return
そのまんまで何のひねりもないですが、変な色気をだすと
たぶん失敗するので……
それに、PICの命令体系では、頑張ってかっこいいコードを書いても、
Z80なんかと違って報われないことが多いと思うので、先日はじめて
受けたPICの仕事では、あまり頭を使わないことに決めてかかりました。
そのときのハードウェアの試作品にも「信号が酷く鈍ったりノイズで
大きくオフセットがかかる」スイッチが付いていたのですが、私は何
も考えず、タイマーをつけて入力レベルが安定するまで待つのみで
した。
ハンダゴテをもつのが面倒になってくると、抵抗やコンデンサ
一個つけるのも嫌で、ソフトでなんとかしようとしてしまいます。
私に限ったことでもないと思うのですが、とくに納期に余裕がなく
て気持ちがあせっているときなどにはその傾向が強くなります。
11 :
4>10:2000/08/17(木) 18:45
実はPICは良く判りません。
そんな訳で勘違いかもしれませんが、 incf はいらないように思います
PICって変な命令体系だなと思ってましたが、案外短いコードになるんですね。
#私はハンダ付けはどちらかというと好きです。でもヘタなのですが
12 :
>11:2000/08/18(金) 11:21
PICよりAVRの方が取っ付き易いね。でも馴れだよ
13 :
PIC初心者:2000/08/18(金) 13:32
>10
たしかに「incf」は不要でしたね。
最後から3行目の「movfw oldkey」も間違いですね。
「movwf oldkey」とすべきところです。
14 :
名無しさん@お腹いっぱい。:2000/08/19(土) 01:08
もうZ80は時代遅れなのかにゃあ
15 :
>14:2000/08/19(土) 09:05
ですねえ。CPU単体でって事はもう殆ど無いし、ちょっと大きくなれば86系になるし
Z80アセンブラ互換てのが東芝でTMP91とかであって一時使ってたけど。
16 :
名無しさん@お腹いっぱい。:2000/08/19(土) 19:29
組み込み向けは、SuperHitachでいんじゃないの?
S1ボードもいいかんじだし。
17 :
名無しさん@お腹いっぱい。:2000/08/20(日) 00:44
PICもAVRも、セラを付けて電源入れるだけで動く手軽さを覚える
とZ80とかは面倒だなぁ。
俺はAVRをもっぱら使ってるよ。でも、なかなかまだ日本語文献が
少ないのがネックだね。わかりやすさはAVRの方がPICより上だと
思うのだけど。
18 :
>16:2000/08/20(日) 10:28
チョコっと
>>9が触れてるけど三菱もいいよ。
高速なフラッシュと結構大きいRAM M16シリーズは入手もいい って一時悪かったか
19 :
>18:2000/08/20(日) 23:47
三菱の石は秋葉原などで手に入りますか?
うちの会社は三菱とは全く取引がなくて、サンプルはもらえ
そうにないもので・・
20 :
1 :2000/08/25(金) 09:47
高性能タイマの無い時の苦し紛れな話
1チップな4ビット・8ビット系で特に安価なものには高性能タイマが用意されて
ない場合があります。たとえば調光を4チャンネル個別にするような話の場合、
タイマー頻度では性能が出ないとかタイマ数が足りないとかになった時の究極の対策
は、「命令数を数える」という事です。
まず、全ての処理を同じ長さのサブルーチンに分解します。
たとえば8ビットカウンタが必要なら、下位4ビットと上位4ビットに分けます。
すると、必要なチャンネルは4チャンネルですから必ず上位が連続して変化する
個所が出ます。ここにこの等長のサブルーチンを挿みます。
分岐があっても全ての命令数を数えながら等長になるように書かなければなりません。
実際にこの作業をすると普通なら1日で書けるような仕事も1週間かかり、なかなか
それだけのお金を貰えない事もあって、「2度とやるか」と思う事でしょう。
もちろん少数生産品なら高性能タイマを持った高級なCPUを選択すべきですね。
21 :
PIC初心者 :2000/08/28(月) 09:17
>1
命令の実行時間を数えなきゃならんような仕事は、本当にやりたくありませんね。
この手の作業を楽しみながら徹夜でやってのけることのできるプログラマーの方も
いらっしゃいますが、私は絶対にいやです。
「二度とやるか」と思っても、とりあえず、いったん引きうけてしまったぶんに
ついては片付けなければならないので、もう手遅れです。工数に見合った金は
とれないし、苦し紛れに書いたぐちゃぐちゃのコードなんてあとで有効活用す
ることもできないし、納期が遅れることを客に説明するのも、いかにも言い訳く
さくて気分が悪いし。
でも、CPU選択の段階から自分の仕事だった場合には、それも自分の責任なの
で仕方ありませんけどね。
PICのプログラム作成の出来る方。
個人、法人、問いません。
趣味の延長でも、ちゃんと請け負うことが出来る方であれば、
問題ありません。報酬は、応相談。
依頼内容等、詳細については、追ってご連絡致します。
内容を確認の上、ご判断下さい。
本文は、このBBSの趣旨に反するとは思いますが、
ご理解の程、お願い申し上げます。