1 :
名無しさん@1周年 :
2001/02/06(火) 08:53 オールインワンのマイコンチップPIC・AVRについて語るスレッドです。
2 :
あさはかマン :2001/02/06(火) 09:19
Atmel AVRのアプリケーションノートAN-204の Binary->BCD演算がありますが、 あれ どうやったら思いつくんでしょう・・・。
3 :
名無しさん@1周年 :2001/02/07(水) 03:33
AVRのSOP品売ってるとこ知らない?
4 :
名無しさん@1周年 :2001/02/07(水) 08:28
RSコンポネンツではAVR扱ってないけどなんでだろ。
5 :
あさはかマン :2001/02/07(水) 12:55
>>3 若松通商で取り寄せてもらいましょう。多分高い。
>>4 最近ATMELもデリバリーが怪しくなっているせい?
>>5 取り寄せないと無いですか
値段はいくらくらいになりそうですか?
7 :
名無しさん@1周年 :2001/02/08(木) 00:11
ミスミでも買えるらしいよ
>>7 ミスミってお店の名前ですか?
何処にあるんですか?
9 :
AVR :2001/02/08(木) 02:16
あ!?、あちょー! あのスレからセパレートされてたのねー。
10 :
AVR :2001/02/08(木) 02:23
>>2 > Atmel AVRのアプリケーションノートAN-204の
> Binary->BCD演算がありますが、
> あれ
> どうやったら思いつくんでしょう・・・。
今ちょっと見てみましたが、あれって昔からある Decimal Corective Addition
まんまのようですよ?
原理の発想はリレー式計数機械の時代と私は教わりましたでっせ。
(秋月のキットのCDに入ってるAN204と同じですよね?)
11 :
名無しさん@1周年 :2001/02/08(木) 02:28
さすがAVRさん
12 :
○大理工1回生 :2001/02/09(金) 02:56
>>10 どうしてできるのか原理とか知りたいのデスが
もっと詳しくきぼーん
13 :
AVR :2001/02/09(金) 12:44
14 :
8 :2001/02/09(金) 13:07
>>13 AVRさんありがとう
でも半導体調達サイトに行けないの
なんで?
15 :
あさはかマン :2001/02/09(金) 18:33
>>13 ミスミってメカ部品だと思ってました。便利かも。
>>14 もしかしてブラウザに問題があるのでは?
NNユーザの人とか
Java/JavaScriptを切ってる人ですか?
16 :
12 :2001/02/10(土) 04:06
>>13 すみません、氏らねーよの方でお願いします。
アセンブラよりかロジックが高級な気がして好きです。
秋月のキットのサンプルソフトはほとんど分かったけ
ど、このサブルーチンはむずくて保留してました。
プログラムの動きは分かるけど、それでなぜできるの?みたいな
ところを分かりたいです。
17 :
名無しさん@1周年 :2001/02/13(火) 00:35
>>13 ミスミは個人客は扱ってないと思うので、個人の場合は○○電機設計事務所(有)
とかのようにするといいらしいです。
18 :
名無しさん@1周年 :2001/02/13(火) 00:37
>>13 ミスミは個人客は扱ってないと思うので、個人の場合は○○電機設計事務所(有)
とかのようにするといいらしいです。
19 :
14 :2001/02/13(火) 00:49
20 :
picer :2001/02/13(火) 19:47
PIC使いはじめました。 16F84の書き込み機械の回路図は手に入ったので、 それを参考にさせていただき無事に書き込むことが できました。いよいよ、16F874の書き込みを行いたいのですが、 16F874に書き込ことの出きる機械の回路図ご存知の方、もし宣ければ 教えていただきませんか?
>>16 >>プログラムの動きは分かるけど、それでなぜできるの?みたいな
えーと、プログラムの構造をロジック回路的に書けばこうです。
自然二進数を入れる
↓
BCDのシフトレジスタ ← 自然二進のシフトレジスタ
↓
BCDに変換されて見える
最初はBCD側のレジはカラッポで、右のレジには自然二進数が居る。
で、最上位ビットから順に、1ビットずつ、BCDレジの最下位に入っていく。
たったこれだけの動作だっつうことには同意してくれますね。
でわ「これが疑問かな?」と勝手に想像してバラバラ書きます。
(1)自然二進⇒BCD が分からない (まさかと思うけど念のためね。もし気分害したら読み飛ばしてちょ) 4ビットの自然二進をBCDに変換するには、 6を足してみて、 ●5ビット目がゼロなら、自然二進のまま採用。 ●1になったら、足した結果を採用。 という方法がある。 実際に書いて試すと、 0 0000+0110= 0110 ⇒ 足す前の0000を採用 = 0H 1 0001+0110= 0111 ⇒ 足す前の0001を採用 = 1H 9 1001+0110= 1111 ⇒ 足す前の1001を採用 = 9H A 1010+0110=10000 ⇒ 加算後の10000を採用=10H B 1011+0110=10001 ⇒ 加算後の10001を採用=11H となって確かに十進数的に見える。 5ビットもやってみると 1,0011+0,0110 ⇒ 19HまではOKだ。 で、 この「6足す方法」はうひとつの使い道がある。それはBCD同士の加算。 自然二進の加算回路でBCD加算をすると結果はメタメタなのだけれど、 それに6を足すと、あたかもBCD用回路でやったように補正される。 なぜなら、 BCD同士の加算は0〜9までを足すゆえ結果は18までにしかならない。 これは「6足す方法」の守備範囲だから、というわけ。 ゆえに何桁でもOK。BCDの数値XXXXXとYYYYYを自然二進用回路で 加算した後に66666Hを足し、各4bit区切りで上記の判定(●印)をやれ ばよい。 で、ちょとしたCPUは親切に66Hを足してくれる命令があったりする。 Z80にはDAA(decimalAdjustiveAdd)命令、68000にはABCD命令
(2)BCDを勝手にシフトしたら、壊れてBCDではなくなるのでは? だいじょーぶ。 プログラムを見れば1回シフトする毎にBCD補正してる。どーいう事かつうと BCD 0〜9(1001)を左シフトすると0〜18(10010)になる(2倍したのと同じ)。 18は「6足す方法」の守備範囲だから。これだけ。 なのだけども実は、 ここに悪知恵が隠されている。「左シフトして6を足す」のを、「シフトの前に 3を足してからシフト」にする。足した3もシフトで2倍されて6になるから同じ。 で、何が悪知恵かつーと、5ビット目で判断するのが4ビット目になって、 キャリーフラグを使わずにすむ。(例えば8ビットCPU、99H+33H=CCH) Cフラグに桁上がりすると、まずそれを上位桁に足し込んでからシフトになる。 それに比べりゃプログラムはスッキリ書けるし、事前にCフラグをクリアとか の、バグりやすい元凶も使わなくてよい。 で、 アトメルのサンプルプログラムもズバリこれね。 試しにシミュレータで見て下さい。(アトメルのサイトにある無料のやつで十分) 変換する数値を 8000H(十進で32768、二進では孤立の1が立ってる)として ブレークポイントで、シフト後の所で止めて、毎回のBCDを見れば、 00001H 00002H 00004H 00008H 00016H 00032H ‥‥‥ 16384H 32768H と、 (自然二進ではなく)BCDで、ちゃんと倍々になってるはず。論より証拠、 自分の眼で見れば深まるぞ。
(3) BCD用のレジスタに自然二進を押し込んでしまって大丈夫なのか? 直感で行くね。 自然二進数を入れる ↓ 自然二進のシフトレジスタ ← 自然二進のシフトレジスタ ↓ 自然二進数が見える これは何の疑問もないしょ?1ビットずつ入ってきた自然二進数は 自然二進数的なルールにのっとって倍々されていくわけです。 次に、 自然二進数を入れる ↓ 自然二進のシフトレジスタ ← 自然二進のシフトレジスタ ↓ ↓… ↓ ↓ BCD変換回路 ↓ BCD数が見える これもぜんぜん疑問など湧かないっしょ? で、ここで一発、発想の飛躍がんばってもらうところなのね。左側の シフトレジスタとBCD変換回路をまとめて「ブラックボックス」と見るの。 入るものと出るものが同じなら途中はどーでも知らねーよっつーやつね。 で、 自然二進数を入れる ↓ BCDのシフトレジスタ ← 自然二進のシフトレジスタ ↓ BCD数が見える つーわけ。
25 :
16 :2001/02/14(水) 20:09
ありがとーございましたーっ! すっげー! (1)は、BCDって6を加算するのは知ってたけど0から9までだと思ってて 19までの事は全然でした。そっち分かってないと無理だったんですね。 (2)も全然誤解でした。BCDレジスタはシフト4回で10倍にしている処理で、 途中の3回はBCDが崩れてる?と思ってました。シミュレータで8000Hを やったらシフト1回ごとに十進で倍々になるんでちょっとびっくりでした! (3)はもう言うことないです!言葉ありません。僕のアタマでは一生かかっ てもこんな設計できないだろうなー。。 説明の途中のBCD変換回路って、順序回路でなく組み合わせ回路でBCDに する回路と思えばいいんですよね。 なんか、ガーンと叩かれた気持ちです。 それで、もう一つだけお願いしたいんですが。まだ一つだけ気持ちに 引っかかってるのは、8000Hを二進のレジスタでシフトさせても孤立の1 (この言葉すごいヒントになりました)が崩れることなく伝搬していく、だから 任意の数値でもそのまま伝搬していく。しかしBCDのシフトレジスタでは 伝搬で1のビットが増えて広がっていきます。それに下位のビットを入れる のなら、上位から広がって来てるビットデータと加算をしないと変になる気 がするんです。 あと、シフトは16ビットでBCD補正は15回というのもまだ分かってないです。 このルーチンって、ループ内からCALLではなくジャンプで飛び出す書き方 をしてますが伝統的にこう書くんですか。
26 :
AVR :2001/02/14(水) 23:27
★加算するなら納得 スルドイ。理解してるな! その通り。 で、ぢつはあの回路も BCDレジに1bitずつ入ってくる所は加算と同じことになってるのだ。 いい?どんな数も2倍すると必ず偶数になる→偶数を二進で表すと 最下位ビット必ずゼロ→そこに加算するんだから→単に代入(シフト イン)しても同じこと。 ★+3が15回 ゑ?最後のシフトのあと+3要らんしょ。次のシフト無いんだぞ。 最初のシフトの前も要らんのは分かるっしょ?BCDレジの内容が ゼロだから。ついでに細かいことを言うと3回目のシフトの前までは 要らんの。まだ3足してもbit4が立たないことが明白だから。 ★書き方 それは自由でしょ〜? そう言うくせに自分もっぱら BDconv10: call correct ; add 33H and adjust call shift dec loop_count brne BDconv10 だったりして(笑。 このアルゴリズムは質実剛健かつ時代を超越した風格があって コンピュータが二進である限り世代を越えて使われ続けるっしょ。[EOF]
27 :
あさはかマン :2001/02/18(日) 10:43
28 :
初心者 :2001/02/21(水) 09:30
これからPICを使おうと考えてる初心者です。 いろいろな種類があるみたいですが、 初心者が練習するにはどれが最適でしょうか?
29 :
あさはかマン :2001/02/21(水) 09:57
PICは16シリーズなら 安く行きたいのであればPIC16F84、 シリアルが付いてて余裕があるのがPIC16F873、 A/Dコンバータまで使えるのがPIC16CF877と言ったところ。 何れも付加機能の差があるだけで、CPUは同じものなので、 アセンブラの組み方には違いがありません。 ただし、デバッグになれていないと組込みチップは何れも苦労するかも。 個人的には開発環境が比較的楽めな Atmel AVRの方がお勧めと言う気もしますが。
30 :
28 :2001/02/21(水) 19:23
ありがとうございます。 あさはかマン さん。 とりあえず動作確認だけしたいのでPIC16F84で練習してみようと思います。
31 :
あさはかマン :2001/02/22(木) 02:44
そうしたら、まずPICとセラミック発振子、 ライタ用の部品、(なければ)5Vの電源、 その他動かすために必要そうな物を買います。 忘れずにPICのピン数にあったソケットも買いましょう。 PICは回路の失敗に巻き込まれてよく壊すからです。 そして 1:適当なNPNトランジスタ(2SC1815・945とか) 2:10KΩぐらいの抵抗 3:3〜5Vで自鳴するブザー を買っておきます。 適当なI/Oピンに10KΩの片側、、5V電源にブザーの+を繋いで、 トランジスタの ・エミッタをGND ・コレクタをブザーの− ・ベースを抵抗の残りの片側 に繋いでおきます。 I/Oピンが出力で、Hレベルになると音がでる、というわけです。 まず 最初に、I/OピンをHレベルにして、ブザーを鳴らすプログラムを書きます。 次に、ブザーを鳴らしたあとgoto $命令(でいいのか?)で 次の命令に行かないようにします。 そして、上で書いたブザーを鳴らしCPUが止まるプログラムを サブルーチンにしておきます。 あとは、プログラムの分岐が正しく働いているのかを調べるとき、 調べたい分岐先にそのサブルーチンを呼ぶようにしておけば 分岐が行われたかどうか確実にわかります。 PICに限らず、どんなCPUでもまず、これを最初にやる事になります。 そんなわけでおすすめ。
32 :
28 :2001/02/22(木) 13:47
なるほど、詳しい説明ありがとうございます。 手元にブザーがないのでLEDを使ってみます。 もし製品にする場合、 水晶発信器とセラロックのどちらが最適でしょうか。 そんなに精度はいらないんですが、セラロックは不安定だと聞いたもので・・・
33 :
あさはかマン :2001/02/22(木) 19:08
商品にするなら、必ずデータブックを取り寄せましょう。 そうでないと誰も「値段を教えて」くれません。 周波数誤差はセラロックが1桁以上悪くなってますが、 それでも温度範囲中で3000ppmぐらい。 それで得られる利益を鑑みないとまずいですよね?
しかし、製品のことを製品を作る人にはなかなか聞けないものだと 思いますがね・・・
35 :
名無しさん@1周年 :2001/02/22(木) 23:56
× 水晶発信器 ⇒ 水晶振動子 ; >>セラロックは不安定だと聞いた 聞いた本人に聴け
36 :
名無しさん@1周年 :2001/02/25(日) 17:16
CCS社のPIC用Cコンパイラ PCWの購入を考えてます。 日本の商社を経由するより直接アメリカに頼んだほうが 安く上がりそうですが、どなたかアメリカから直接購入された方はおられないでしょうか。
37 :
名無しさん@1周年 :2001/03/01(木) 09:05
16F84って何回くらいプログラムの書き込みにたえられるのですか。
38 :
あさはかマン :2001/03/01(木) 12:42
>>37 データブックの1ページ目に書いてあります。
手元にある英語版データブック、11/99版では
「消去が1000回」、となってます。
プログラム次第ではもっと行けそうですね。
39 :
37 :2001/03/02(金) 12:56
ありがとうございます。 結構いけるんですね。 データブック取り寄せてみます。
40 :
あさはかマン :2001/03/04(日) 09:10
41 :
名無しさん@1周年 :2001/03/05(月) 23:42
あV
42 :
名無しさん@1周年 :2001/03/06(火) 00:17
コメン AVR2343を国内で売っている所はある?
43 :
名無しさん@1周年 :2001/03/06(火) 00:47
AVR1200のADコンバーターを実験しています 電池を計ったら電圧が低いく出ます。テスターでは1.62V で、デジタルをポートに出してから計算すると1.26Vです。 トランジスタは945しか無いのではだめですか。抵抗の計算が 変わりますか
↑外人さんですか?ニホンゴワーカリマスカ?
45 :
名無しさん@1周年 :2001/03/06(火) 22:25
1.62V - 1.26V = 0.36V はVbeかな? A/Dコンバータの入力にトランジスタをつないでいるのなら、トランジスタをはずしてじかに電池をつないでみてください。
46 :
43 :2001/03/06(火) 23:51
あー、変なまま書き込んでしまいました。失礼しました。家には直流の 電圧があまりないので乾電池を測ってみました。マイコンにつないだ 状態でテスタで測ると1.62Vで、マイコンの8BITLED表示を計算すると 1.26Vなのです。トランジスタはPNPを持ってないのでジャンクのA109 というのを使いました。テスターでhfeを測ると94か95です。アプリケー ションノートは185位で計算してるので、同じ計算でベースの抵抗を半 分にしています。この抵抗を交換してみてもほとんど変化がないよう です。サンプルソフトのバグでしょうか。
47 :
43 :2001/03/06(火) 23:53
>>45 レスありがとうございます。トランジスタは使っていません。マイコンの
入力の抵抗に直接つけています。いっしょにテスターもつないでいます。
48 :
あさはかマン :2001/03/07(水) 00:04
>>46 ひょっとして、ATMELが発行してるアプリケーションノート
AVR400 Low Cost A/D Converter
AVR401 AVR401: 8-Bit Precision A/D Converter
(の、どちら?)のことですか?
・・・ちなみに何の前振りも無しにA/Dというと
AT90S8535等が内蔵している10bitA/Dを普通の人は考えます。
49 :
43 :2001/03/07(水) 00:18
>>48 レスありがとうございます。AVR400の8Bitの方です。部品はベースの
抵抗のほかのものはアプリケーションノートと同じ値にしました。
50 :
あさはかマン :2001/03/07(水) 01:01
>>49 終電が終わったときにこの掲示板にいらっしゃったあなたは運が良い。
AN AVR401のほうですね・・・
考えられる理由は・・・
1.クロック周波数や電源電圧
5V電源で4MHz外付け発振子の時について書かれています。
周波数が違ったり、AT90S1200A(内蔵オシレータ発振)では
計算が異なります。
2.トランジスタのVce(sat)
2SA109:富士通・Geドリフト・Vcb=9Vのとき、Ie=1mA/hfe=60
さすがに70年代の終わりの頃から電子開発を始めた
うちの会社の資料室には
ゲルマニウムトランジスタの資料らしき物はありませんでした。
もうちょっと詳しいトランジスタの特性が必要かも。
解決策として、
オシロスコープをお持ちでしたら波形を見て、
AVR401のアプリケーションノートと比較すれば超OKです。
・・・さて寝床をどうしよう。
51 :
43 :2001/03/07(水) 01:13
すみません、A1009,NECと表示さてあります。緑色のTO220形です。 クロックは4MHzの水色のセラロックをつけています。オシロスコー プはありません。ありがとうございました。
連続なのでさげ。 2SA1009、データシート有りました。 しかし、根っからのスイッチング用で hfe表記がPulsedになってます・・・ AVR401のソースコードそのものは さすがにATMEL社内で試してから公開しているので おそらくバグは無いと思いますが・・・・ あと、最後に電池を2本直列のときの値、3直の時の値を測って グラフの切片と傾き、直線と点とのずれ(バラツキ)を 求めておくのをお勧めします。 切片は電圧リファレンス(Vref)の状態とトランジスタのVce特性、 傾きはトランジスタのIc特性とコンデンサの性能、 バラツキは回路の直線度を表すはず。
野次馬でスマソだがそのサンプリソフトのユアルエルでも教えてけれ
あんがと。エーゴは夜中きついなー。あした読むわ。
56 :
53 :2001/03/07(水) 09:38
野次馬でスマソ。アプリノートの時間計算のところだが 4MHzをCK/8したクロックで動くタイマは、every 2ms で動くのではなく 2μsで動くのではないのか? 単純なミスプリントと思うが気になったもので
57 :
AVR :2001/03/07(水) 23:51
もう解決したかな 43さんは以前の16さんですか?
58 :
あさはかマン :2001/03/08(木) 12:42
>>56 多分μという字がなかったので
てきとうにmを充てたものと思われ。
・・・てまさか、計算すると文中のCは実は0.22μFでは?
59 :
AVR :2001/03/09(金) 00:13
ほんとだ。おかしいすね。そのちょっと下の方でベース電流にμAを使っ てるのに。μが正解でしょうね、二重積分方式のCに巨大な電解コンで はいかにも変だし。 トランジスタのhfeに頼った電流設定もずいぶん恐いっすね、大昔の トランジスタラジオの回路みたいだ。ちゃんとしたプロの仕事じゃない のでは?
60 :
あさはかマン :2001/03/09(金) 01:02
>>59 同意ですね。
所詮ANは参考、という事なのでしょうか?
信用できないANは結構困る気がする。
61 :
AVR :2001/03/09(金) 19:15
8ビットADコンバータ、AVR1200が無いので2313で試みました。(昨夜 作って職場でこっそり。)一発で動きました。測定の再現性も良好。トランジ スタの電流は大分いい加減でも良かったようで(測定中に変動さえしなけれ ば)、8ビットタイマを割込みの計数で9ビットに拡張してるから、電流が小さい 方にずれても余裕が2倍あるんですね。大きい方へのずれは(カウント数が 減るから)分解能が粗くなるようです。 しかし、測定値が低く表示される現象は出てこないす。
62 :
名無しさん@1周年 :2001/03/14(水) 08:12
AVRって安いけどPICほど話題になりません なぜですか?
63 :
名無しさん@1周年 :2001/03/14(水) 22:59
PIC1GHzって出るんですか?
64 :
名無しさん@1周年 :2001/03/14(水) 23:10
やっぱりAVRはまともな日本語解説書がないからね。 俺はAVRの方が好きだけど。
65 :
名無しさん@1周年 :2001/03/14(水) 23:12
PICはRISCという、ふれこみになってるが 1命令4クロックかかるなぜだ!!!!!
66 :
名無しさん@1周年 :2001/03/14(水) 23:39
67 :
あさはかマン :2001/03/15(木) 12:59
68 :
名無しさん@1周年 :2001/03/15(木) 22:27
PICのEEPROMって何回も書き込み可能ですか? 使ってるうちに記憶できなくなるってことはないんですか?
69 :
名無しさん@1周年 :2001/03/15(木) 23:41
あさはかマンさんがAVRを薦めるこれだという決め手はなんですか
70 :
名無しさん@1周年 :2001/03/16(金) 00:02
ピックよりはまし ということだろうな
71 :
AVR :2001/03/16(金) 00:18
>>66 ひぇ〜!こんなんあったすか。
でも、そこ引っ越した跡みたいすね、逝き先どこっすかねー
72 :
AVR :2001/03/16(金) 00:25
データシートには、10^6回typとありますよ。自分はデバッグ段階で バンバンISP書き込みして、ほんのたまーに書けなくなるモノに遭遇 します。(PICの話)
73 :
あさはかマン :2001/03/18(日) 09:12
>>69 C言語がフリーウェアで入手可。
・IOポートの数が多い。
・AT90S2313はパッケージが小さい。
・AT90S8515はIntel8051と互換なデータバスが外に出ている。
て、とこでしょうか。
PICはPICで、ATMELに比べて安定供給されている、
と言うのが魅力です。
ATMEL製品を量産品に積むのは
供給の面から結構チャレンジャーな気がする・・・。
74 :
名無しさん@1周年 :2001/03/18(日) 10:43
>>73 出入りの商社が言ってたがPICもいまいち(数が)動かないって(--;
16F84 20台/月の機械に載せる俺もチャレンジャーかも(鬱
75 :
名無しさん@1周年 :2001/03/20(火) 09:43
おれも商社に聞いたがAVRよりもPICが薦められたなー でも和文の取説の方がいいという意見がでて、 H8を採用しようと社内でもめてるよ。 どちらがいいのかな? 似てるようだけどH8のほうが若干規模がでかいし その分高いんだけど・・・
76 :
名無しさん@1周年 :2001/03/20(火) 10:57
若干ってレベルか?(藁
77 :
名無しさん@1周年 :2001/03/20(火) 11:30
picってほんのちょっとって感じだな・・・
78 :
AVR :2001/03/21(水) 00:40
自分のところは両方とも海外のコネで入ってます。
79 :
名無しさん@1周年 :2001/03/22(木) 00:50
ATMELは国内営業にあんまり力はいってない気がする。 というか、ほとんど代理店まかせって感じでしょうかね。 一応、ATMELはフラッシュメモリを量産品(と言っても、たか だか3000個ぐらいですが)に使ったときがあったけども、いま いち対応が悪かったな。
80 :
名無しさん@初回限定 :2001/03/22(木) 00:51
ATMELは国内営業にあんまり力はいってない気がする。 というか、ほとんど代理店まかせって感じでしょうかね。 一応、ATMELはフラッシュメモリを量産品(と言っても、たか だか3000個ぐらいですが)に使ったときがあったけども、いま いち対応が悪かったな。
81 :
名無しさん@1周年 :2001/03/22(木) 01:17
ま、海外メーカーの日本代理店の看板あげてるけど実態はただの商社、 つうのが通り相場でしょう。一皮むけばどこの代理店もメンツは同じよ。 デキる人財が適所に居る場合だけだねサポート良いのは。だがそれも セールスノルマに追われて長続きしないのが殆どだが。 半導体はちーとも詳しくないけど英語話せて人外と対等に話できます みたいな人種の溜まり場に戻ったね。半導体商社は。 はやくネット取引社会が熟成して欲しいなーっと。>やる気のないセールスマネージャ
82 :
名無しさん@1周年 :2001/03/22(木) 01:27
じゃあ国産メーカーのワンチップはどうかと言うと、これがまた どこそこのn次店とか錯綜して自由な市場にはぜんぜんなって ないのな。商社のなわばりばっか。T●芝のマイコンを選定して エミュレータの段になってあの「青い箱」を見せられたときは目 を疑ったものな。H●立はなんじゃあれ?セガのオモチャ売り専門 の子会社まで建てて心中かよ。PICやAVRの開発環境に慣れた 者にはあの京都製エミュレータの値段には仰天こいた。おれの家よ り高かったぞ、チーム一揃えで。 やっぱ日本は終わったんだな。。。
83 :
あさはかマン :2001/03/22(木) 08:42
>>82 うち、T芝のT×(あくまで伏字)ですけど
ROMエミュレータすらありません。
お金のないうちの部署にとって
評価ボード無償貸出の存在は大きかったのでした。
あとはgnuのソースウェアだけつかって自力。
・・・これも企業としては問題。
時間がいくら有ったって完成しない気がする・・・・
しまった。本筋と関係ない愚痴を書いてしまった・・・ それはさておき、AVRのGCCはかなり使えます。 32ビットでも安全に使えるので凄く便利。 定期的に4x8マトリクスキーをスキャンするなんてのも unsigned long key_scan(void); SIGNAL(SIG_OVERFLOW0){ unsigned long old_matrix, new_matrix; old_matrix=new_matrix; new_matrix=key_scan(); if (!old_matrix | new_matrix) { /*キーボードが押されたときのイベントを発生する*/} } これだけでタイマ割りこみから比較まで済んでしまうのは凄い、 けどなんか物足りない・・・
85 :
名無しさん@初回限定 :2001/03/23(金) 00:41
>>82 あ、あの青箱見ましたか(w
一時期あれが2箱も置いてありました。でも、うちの場合マイコン
では発注数量が桁違いに多いので、この手のはタダで貸してくれる
場合が結構あったり。
まぁ、自社カスタムの開発環境よりはマシなんでいいですけどね・・
こっちになると、アセンブラとかまで自作だから酷いのなんの(w
86 :
82 :2001/03/23(金) 07:39
あの青い箱を客に売ったら犯罪行為っしょ(藁 うちも数セット使ったけど、GNDケーブルのノイズで誤動作が頻発して、2段重ねの どっちだかのふたを開けたら、HC245がソケットで交換できるようになってた。 いかにも不自然に付いてたので基板の裏を見たら他の客がソケットをつけた事が分かって 爆笑だった。当初、中間の商社が「1セットは無償で貸すが2セット以後は買い取りに なってる」みたいなブラフをかましてたが、あの件でT●芝の開発元と話したらウソが バレバレだったな。あの営業マン今どこに居るかな。
87 :
名無しさん@初回限定 :2001/03/23(金) 23:39
青箱は売り物じゃなかったのか。まぁ、さすがに作りが凄かった からなぁ・・。箱に入っているだけマシかもしれないけど。 7セグLEDが山のようについている姿は壮観だったな。
88 :
名無しさん@1周年 :2001/03/24(土) 16:12
AVRのCPUをボードから外さないまま書く方法を教えてください。 秋月のライターの基板から6本出てる端子をボードのCPUに 線でつなぐところは、配線を切り離すスイッチを付けるのですか。 VDDも出ているけど、CPUの+5Vも切り離すようにしないとだめ ですか。 線は普通の線ではだめですか。何メートルまで大丈夫ですか お願いします。
89 :
あさはかマン :2001/03/24(土) 21:01
90 :
名無しさん@初回限定 :2001/03/24(土) 23:57
>>89 つーか、秋月ライタよりはるかに ChaN氏のライターの方が
性能いいしな。俺、秋月キット買ったあとに、このライターの
存在を聞いて、5000円をドブに捨てた気分になったよ(;´Д`)
>>90 私は秋月の奴はAT90S1200用のパラレルライタだと思って
買って・・・挫折したのでした。
まあ、3.3Vしか供給できない基板に実装した
5V書き換えAVRへの5V電源としては有用かも、と信じたいところですね・・・
92 :
名無しさん@1周年 :2001/03/25(日) 00:36
逝ってみたらソフトの大半が削除されてるみたい? パソコンの設定かな?
>私は秋月の奴はAT90S1200用のパラレルライタだと思って >買って・・・挫折したのでした。 例のサイトにはパラレルライタもあるね。俺は必要ではないから 作ってないけど。ベンチマークを見ると8515などもあっという間 に焼けるみたいだから、大きなソフトを書くときや、大量に石を 焼きたいときには有用そう。 簡単な仕掛けで焼けるという手軽さもAVRの魅力だと思う。
94 :
AVR :2001/03/25(日) 05:44
ChaN製ライターってDOSで動くやつですか?自分最初、只だから あれを作ろうと思ってたけど、気がついたら秋月製のを買ってしまって たです。 しかし、ISPという方式は、エミュレータメーカーという一つの分野を 終焉させてしまったですね。
95 :
AVR :2001/03/25(日) 06:23
>>88 秋月のライターなら、ライター側の電源を使う方がいいっす。今回は5Vらしい
のでいいですけど、電池で動いてるシステムだと3ボルトで動いてるICに
対してライタが出す書込み信号は5ボルトっすから。
同じ理由で書込みピンも完全に切り離しできるようにした方が楽す。IOポート
の向きとか負荷の重さとか、ライタのこと気にしないで自由にできますから。
96 :
名無しさん@そうだ選挙にいこう :2001/03/25(日) 18:59
PICの開発環境にはみなさんはどういうものを使ってますか? やっぱりMPLABですか? PICくらいの規模のシステムならBASIC+アセンブラの方が プログラムしやすい気がするのですが、 BASICコンパイラを使ってる人はいませんか?
97 :
88 :2001/03/26(月) 06:59
ありがとうございます。紹介してもらったサイトは検索で知ってました。 5Vと書きましたが電源アダプタです。測ったら3.8Vでした。 ボードのまま書き込むとうまくできないのはこれが原因ですか。ライター で書くと何度もソケットから外してソケットがゆるくなるし足も曲がるので ボードを作りなおします。切り離すのは専門的なスイッチを使うんですか? 線の長さもお願いします。1メートルは長すぎですか?
98 :
あさはかマン :2001/03/26(月) 09:07
>>97 慌てない慌てない。
まず、
・どのチップで
・どの電源電圧・周波数でで
・どうして信号線を切り離さないとまずそうなのか、
・どうしてISPケーブルを伸ばさなければいけないのか
をお教えください。
・・・全てのスイッチに専門分野がついて回ってるのですから、
専門的スイッチなんて言ってしまうと後々要らぬ勘違いをしてしまいますよ。
99 :
名無しさん@1周年 :2001/03/26(月) 09:33
>>96 MPLAB + PICSTARTPlus + PICC(PCM/PCB) っす。
Cは不得意なのでASMで書いてるほうが多いですが。
100 :
88 :2001/03/26(月) 16:02
チップはAT90S2313−10PC 電源はACアダプタ・周波数は4メガ 線を切り離すのはACアダプタとライターの電圧が違うから。VCCをスイッチ にしたけど書けなくて、あと4本も全部スイッチにしたら書けました。けど スイッチ5つは大きすぎる切り替えしめんどいです。プロの人の技術を知りたいです。 あのサイトの回路はHC126とか無いから作れないし秋月のライターでやりたいです。 ケーブルを伸ばすのはつないだまま動きまわらせたいから。2m希望です。
101 :
うさだ :2001/03/27(火) 01:12
>>100 HC126って3ステートバッファでしょ?
べつにほかのロジックIC使ってできるでしょ
あと、ケーブルを繋ぎながら動かすのはあまりお薦めしないです
ケーブルも短い方がいいよ
102 :
あさはかマン :2001/03/27(火) 09:01
>>100 HC126はどうやらChaN氏の手持ちの部品だったのでしょう。
HC244で代用できます。
それと、ChaN氏の回路と秋月の回路は原理は全く変わりません。
#言っちゃ悪いが、秋月のライタの上のAT90S1200は意味無し同然。
したがって、注意書きも全く同じです。
以下>行はChaN氏のページから引用。
>a.RESETピンに大容量のキャパシタを直結してはいけない。ただし、ノイズ防止のために 1nF程度を接続すると良い。
ISP回路の出力能力を超えてしまい、ISP回路を壊す恐れがあります。
>b.リセットICを使うときは、OC出力のみ使用可能。
ロジック出力ではISP回路の出力と衝突します。
>c.ISP動作が回路に悪影響を与えないように配慮すること。
ISP時で与えられる信号でモータが誤動作したら困ります、と言う意味。
>d.ISP中は外部からドライブしてはいけない。
他の系統の入力回路(たとえばセンサのロジック出力)とかがISPピンを駆動していると、
ISP回路が必要とする信号と衝突してうまく動かなくなります。
>e.ISP動作に影響を与えるような重負荷は接続しない
ISP回路やAVRの駆動能力を超えれば、当然動きません。
まさしくこれで必要充分。
出力能力はデータブックを読むとお判りになるかと思います。
HCロジックはどのメーカでも互換品と言われてるとはいえ
油断すると手痛い目に会うので個別のメーカのデータブックを絶対に読む事です。
#さらにデータブックを読んだからと言って油断すると誤植で痛い目にあいます。
##よりによって16ビットバスの位置に誤植とは・・・
###目の前のこの基板は如何してくれよう・・・
純粋にロジック入出力な回路のケーブルを30cm以上延ばすことはナンセンスです。
延ばしたい場合ば入出力の特性を規定して、ケーブル中のグランドを強化して延ばします。
逆にいえば、ISPのような兼用信号で、且つ信頼性がないと困るものは
延ばせません。
どうしてもとあらば、秋月のライタ(ChaN氏のライタでも可)の部品を
自作基板の方に載せてしまえば
延ばす部分は専用信号(RS-232C)と電源、両者とも相当延ばせるので
あっさり解決します。
103 :
AVR :2001/03/28(水) 07:50
>>100 長いケーブルなら
>>102 さんの方法がベスト。会社ではPICの当初からそうしてるす。
プログラマの机というのは一般的に物だらけで汚いので、デバッグする物はサイドテー
ブルに置いて、そこからRS232でパソコンと。基板のマイコンをソケットに変えて手作
りの補助基板を挿す。それには切り替え回路が。CMOSの4066というアナログスイッ
チゲートで切り替えてる。切り替え信号は秋月ライタが出すVccがピッタリ(会社のライ
タは全くオリジナルなので専用信号がある)。大抵はこれで足りてるが、IOピンに電流
を多く流す物には、小型の電磁リレーを使ってる。
個人で家にあるのは秋月のライタだけっす。ケーブルは約20センチ。
>>102 にもあると
おり長いと恐いす。もしチャレンジしたかったらCMOSの4066で知恵を絞れば?。
ただしオンしても150オームぐらい直列抵抗があるので、電流いっぱい使ってると難しい。
104 :
あさはかマン :2001/03/29(木) 09:18
MIPS組んでてふと思った・・・ ビッグエンディアンって何がお徳なのでしょうか? リトルエンディアンの方が作りやすいんだけどなー。
VRAMは大体原点側がMSBだからドットシフトするときは 便利だけど。それぐらいしか思いつかない。 いままでずっとリトルエンディアンばっかで、最近SHでビッグ エンディアン使うようになったけど、どうも慣れないな。
106 :
名無しさん@1周年 :2001/03/30(金) 00:45
エンデアンてインデアン?
107 :
名無しさん@1周年 :2001/03/30(金) 02:22
endian
108 :
あさはかマン :2001/04/01(日) 12:38
エンディアン[endian] ガリバー旅行記(スウィフト著)の中で出てくる小人国の種族(?)の名前。 卵を尖った方から割る種族を「リトルエンディアン」と呼び、 卵を丸い方から割る種族を「ビッグエンディアン」と呼び、 長年の戦争を続けている。 ・・・ ハードウェアでは、16・32・64ビットなどの大きな整数をメモリに格納するとき、 アドレスの下位(小さいアドレス)が大きな桁側になるものをビッグエンディアン、 アドレスの下位が小さな桁側になるものをリトルエンディアンと言い RISCは宗教上の理由でビッグエンディアンが殆どです。
109 :
名無しさん@1周年 :2001/04/02(月) 03:09
0x12345678 +000000 12 000001 34 000002 56 000003 78
110 :
名無しさん@1周年 :2001/04/02(月) 06:41
0x12345678 =0だろ?
111 :
名無しさん@1周年 :2001/04/06(金) 02:22
xは掛け算のしるしに使ってのではないです。 アタマ(左)から一文字ずつ判断していけるようにセコい文法を課してるのです。 最初が英字でないからこれは変数(代数記号)ではない、定数(具体的な数字)だ。 2文字が数字でないから、単純な10進数ではない、xは16進数だと約束してある。 といった具合。プログラミングとか何とか言っても、実態はセコいもんです。
112 :
あさはかマン :2001/04/06(金) 09:13
そーか。 C言語の記法では伝わらない事も有るのか・・・・ 110さんの0の意図がやっとわかりました。
コンパイラの話やん
114 :
七師 :2001/04/07(土) 00:44
>110さん そのつっこみ、面白い! PICで16ビットデータ処理をしていた後で、ハイになったところ だったのでしばらく笑えました。 ビックがリトルかは、通信する相手に合わせますが、スタンドアロンでは ビックにしちゃいます。見やすいし。
115 :
名無しさん@1周年 :2001/04/07(土) 02:49
歴史的にIBMとかCDCとかあったの?
116 :
名無しさん@1周年 :2001/04/07(土) 02:55
CDCて?。バローズとかユニバックじゃなくて? タスクとプロセスもそうだよな。同じものなのに両陣営で名前を変えやがって
×ビック ○ビッグ 日本人は「ッ」のあとの濁音を無視する癖があるので気を付けよう 例:ベッド、バッグ、デバッグ 池袋ビックカメラのBICは社長が若い頃旅したアフリカで 原住民と木登りかなんかで競って勝ったので送られた称号だという説あり。
118 :
名無しさん@1周年 :2001/04/07(土) 05:21
>>116 タスクとプロセス、どちらかがどちらかを産業スパイしたというのは
本当なのですか?どっちがどっちなの。
119 :
>>117 :2001/04/07(土) 06:50
Fuck you !
120 :
名無しさん@1周年 :2001/04/10(火) 19:15
DSPというのは、普通のマイコンとどう違うんですか。 何が強くなって何が無いとか。 個人で始める費用はいくらぐらい必要ですか。 メーカーは国産ですか。 お願いします
121 :
120 :2001/04/11(水) 12:31
DSPの中が分かるサイトをお願いします
122 :
あさはかマン :2001/04/14(土) 11:28
123 :
:2001/04/15(日) 01:51
ageといておきますね
124 :
名無しさん@1周年 :2001/04/19(木) 12:38
先月ライターのケーブルを長くする事を教えていただきました。 次の設計ではCPUの電池を別にするので3Vを計画しています。 ライターの電源は6.3ボルト電池2本でも大丈夫ですか。 切り替えはリレーに変えたいので名前と値段を教えてください。 ライターの電源は6.3V電池2本でも大丈夫でしょうか。 ケーブルはいま4mですがもっと長くしたいのです。何メートルまで 大丈夫ですか。パソコンに使ってあるリボンケーブルのように細く てもいいですか。 それから別のお願いなんですが英語のホームページを見ながら 翻訳するフリーソフトを紹介してください。
>>124 それは物の尋ねすぎ。
時間が無いかも知れませんが、
Try&Errorという言葉もありますように
まずは実験して見てはいかがでしょう?
ケーブルが4mでも動くときは動くし、動かないときは動きません。
その昔、T芝Z80モドキ(10MHz)のバスを
4mx2本の線を引っ張り出して動かした事もあります。
伝送がうまく行く/行かないは、本当に経験上の問題で、
もし動かなければ何らかの対策を講じて何とかするものなのです。
電源電圧についてはAVRのデータブックを見れば一目瞭然なはず。
リレーで(どこを?)切り替えるのであれば、
リレーは接点や駆動コイルの扱いが難しい電子部品だ、
と言う事をお忘れなく。
それと、翻訳フリーウェアは当てにならないし、
PDFは今のところ一発では翻訳できません。
たいした英語ではない(単語を除けば中学レベル)なので
印刷して翻訳しましょう・・・その努力は無にはならないはず。
・・・・
自分で動作が理解できない回路を設計・製作するのは
危険以外の何物でもありません。
そういうことです。
126 :
名無しさん@1周年 :2001/04/21(土) 12:50
初めまして、お願いです!。どうしても変な動きをします。そこだけ抜き出しました。 最初の日に電源を反対につなぎました。時間は10分ぐらいでした。 すぐ直したら動いたのでこわれてないと思っていました。 LPM命令だけこわれた可能性はありますか。 AVRASM ver. 1.21 MUZUI.ASM Sat Apr 21 12:33:04 2001 000000 e0e3 ldi r30, low(data) 000001 e0f0 ldi r31, high(data) 000002 95c8 lpm 000003 data: .db 1,2,3,4,5,6,7,8,9,10,11,12 000003 0201 000004 0403 000005 0605 000006 0807 000007 0a09 000008 0c0b Assembly complete with no errors.
127 :
あさはかマン :2001/04/21(土) 12:58
で、動かすとどうなるんですか?
128 :
名無しさん@1周年 :2001/04/21(土) 17:18
>>124 前回自分がリレーも使ってると書いたやつなら、オムロン社のMH6Pという名前。
切替え型接点が6組あってぴったりなんだけど残念ながら製造中止品。(廃品流用です)
それに巻線抵抗が25Ωなので(5Vで0.2アンペアも食うので)、電源がしっかり確保
できてないとだめだし、駆動のトランジスタとか経験が少々要るので、リレーはお奨め
でないす。それよか0.2アンペアも使えるなら、電子回路でゼイタクなことができてしま
うので、ぜひそっちを薦めます。前回はCMOSのアナログスイッチを使えたのでしょ?
それから、
電源は、3ボルトで書けるかどうかを真っ先にデータシートで見るべし!
秋月のライーターだけど、いっしょに回路図が付いていたはずで内部は5ボルトだけで
動くから電圧レギュレータのあとに直接5ボルトを入れることができれば高い電圧は不
要、と書いてあったような‥。
パソコンとのケーブルずいぶん長いんすねー、いっそ思い切って光でCMO1の信号
ラインをつなぐ方法を作ってしまえばどうです?
翻訳ソフトは絶対に自分のアタマで!英語に慣れる絶好のチャンスなんだから。
画面見ながら声に出して読むのね(一人英会話)。学校の英語みたく無言でアタマの
中で翻訳しないで、エーゴのまま肌で理解するようにする。例えばプログラム書くとき
いちいち日本語の意味を考えながら書かないでしょ、あれと同じことをするだけ。
129 :
名無しさん@1周年 :2001/04/21(土) 17:23
>>126 むははは、たぶん壊れてはないっしょ。
過去にZ80とかパソコンのアセンブラの経験があったりして、邪魔してたりして(笑
130 :
あさはかマン :2001/04/21(土) 18:26
>>129 たしかにそう、ソースが確かに間違いですね。
怪しいとは思ったけどつい感情的になってしまった。
冷たかった分お詫びでサービス。
ldi r30, low(data * 2)
ldi r31, high(data * 2)
dataと言うラベルはアセンブラによって
データ領域の開始位置のPC(ProgramCounter:実行番地)が
割り当てられます。
しかし、AVRは16bitで1命令なので
8bitのデータを置くと考えると、
当然アクセスできるメモリは2倍になるわけです。
そんなわけで、LPM命令はPCに1ビット下ケタを追加して、
無駄なくアドレスが出来るようになっています。
しかし、アセンブラが勝手に命令によってラベルの数値処理を変えると
たとえば
ldi r31,(data + 1)
のような、ラベルを含む計算式を書いたときに解釈があいまいになり
危険なため、そういった処理はしません。
で、データのラベルは必ず2倍します。
まあ、これは初心者の人は絶対にはまります・・・
あと、質問するときは「LPMがおかしいと解った理由」を
書いておきましょう。
しかしAVR、10分逆挿ししても壊れない。頑丈過ぎ・・・
普通EEPROM混載デバイスなんて1秒で10回は逝けるものですが。
131 :
名無しさん@1周年 :2001/04/21(土) 20:09
昼にカキコしてから代わりのCPU買ってきたけど…全部同じでした
>>130 さん、ありがとうございますっっ。Z80アセンブラをやりました。少しだけですけど。
それで同じだと思ってました。初めての人は絶対はまってもおかしくないんですね!
うれしーー、ありがとうございましたです。
132 :
AVR :2001/04/21(土) 23:59
>>131 解決したようでおめでとーございまーす。質問の時容疑範囲を絞って、かつアセンブル結果をコピペする手慣れた様子からして、少々どころか十分経験ある人に思えましたよ。
アセンブリ言語も流派がいろいろあるようですね。
この過去ログ読んでふと思ったですが、PICもAVRも非ノイマンなわけですが、昔の本に載ってるノイマンボトルネックの限界とか危機とかいう表現は的が外れていたのではないかと。ノイマンでは
なく、もっと原初のゥィーナーのサイバネティクス自体にある性質では?と。
ま、現在は、欲しけりゃ(キャシュメモリを)何系統でも作ってやるぞという時代。を経て、いやもうこれ以上あってもそんなに性能上がりませんのでもうこの辺で、という時代。を経て‥
126のやったことと同じことで俺もはまった経験有り(w みんなやるのねー
134 :
名無しさん@1周年 :2001/04/22(日) 09:27
124です 色々聞きすぎました、どうもすみません。 ISP書込みは2.7Vからできる事は分かりました。でもライターの インターフェースが5Vだからそのままではだめなんですよね。 リレーはあきらめました。ISP端子は出力にしてレベル変換回路の 回路を作ります。 トランジスターで作る場合はエミッター接地インバーターにしてコレ クターの電源をつなぐ相手のVddにすればいいんですよね。 しかしICで作る場合ですが、この前のHPの回路はICに電源電圧 よりも高い電圧と負の電圧が入ってますが、どうして大丈夫なん ですか。それが分かりません。もしいいのなら、同じ事をマイコンの ISP端子でやっても良いことになりませんか。
135 :
あさはかマン :2001/04/22(日) 10:04
>>134 実は、HS-CMOS(74HCシリーズ)のICの入力には
保護用ダイオードが入っていて、
・入力ピン高い電圧がかかると
保護用ダイオードがVCCと導通して入力ピンから電流を吸い込み、
VCC+0.6Vに電圧を抑えようとします。
・同じく0V以下の電圧がかかると
保護用ダイオードがGNDと導通して入力ピンへ電流を吐き出し、
GND-0.6Vに電圧を抑えようとします。
これを利用しています。
抵抗をはさんでおけば、保護用ダイオードが壊れるほどの電流は流れません。
そして、3V電源でもこれと全く同じ事が出来ます。
3V電源でもHCロジックは動くので、例のISPライタを3V電源に接続すると
問題無く動くわけです。
しかし、ATMEL AVRについての公式なデータではピン保護回路について何も触れていないので
ピンに電源電圧より高い電圧をかけた場合、
(ATMEL社の開発者以外の人は)何が起こるか実際にやって見るまでわかりません。
そんなわけで、AVRに抵抗式レベル変換はかなりチャレンジャーな選択です。
秋月のライタはRS-232変換IFのMAX232が5V電源である都合、
MAX232のHレベル出力が5Vに達する可能性があるので、
ライタコントロール用のAVRも5Vで動き、全体は5V系専用になります。
136 :
名無しさん@1周年 :2001/04/24(火) 01:06
うーん。パソコンのCOMポートて、今後ずーと生き残るのだろーか
>>136 既にノート系はCOMコネクタ無くなってきてますね(USBのみ)
USB→RS232C 変換アダプタ使ったら COM8とか9になって、ラダーソフトが
対応してなかったなんて話しも聞いてます。
TP530が壊れて 新しいの物色してるんですが どうしようかなぁ
LAN内蔵機に無線LAN追加して デスクサイドと現場で使い分けたいけど可能かも不明(^^;
雑談sage
138 :
名無しさん@1周年 :2001/04/25(水) 01:10
134です。
>>135 やっと分かりました。ネットで詳しいデーターブックを見たら書いてありました。
元々は、静電気で壊れるのを防止するダイオードですね。
HC125は無いけどPC9821のジャンクから抜いたHC244を持ってい
ます。これでもできると思うので作ります。ありがとうございました。
139 :
名無しさん@1周年 :2001/05/02(水) 11:36
ICEとまでは言わないが、H8みたく、232Cで繋ぐモニタ位は欲しいよねぇ。 特に初めてADCを使う石だと、結線とかが不安だし。 PICとかAVRで、モニタボードあります?
140 :
あさはかマン :2001/05/02(水) 12:45
ATMELの評価ボード(スターターズキット、STK200)は うちの問屋経由で8000円を割っていました。 ICEは三万切ってたような・・・・
そして、PICの評価ボードについては もはやAVRとは比較にならないほど豊富な キットや参考回路例を使ったほうが良いかと。 いずれにせよ、どちらも簡単には壊れないので 一発配線してみて、トライ&エラーをお勧めします。
142 :
nanashi :2001/05/03(木) 12:50
あさはかマンさん > 国産DSPはやめときましょう。 > TIのスタータキットで我慢してください。 なんて上のほうで言ってましたけど どうしてですかH立とかもDSPだしてるみたいですけど なにか問題あるんですか? 近々、はじめようと考えてるんですけど・・・ あと本でPICは世界第2の出荷台数だと聞いたのですが 1位はなんなんですか?
143 :
名無しさん@初回限定 :2001/05/03(木) 15:51
AVRのICEってどんな感じですか? 便利なものなら買ってみてもいいかなと思うけど。
144 :
あさはかマン :2001/05/03(木) 17:30
>>142 これはDSPでは当てはまらないかも知れませんが、
経験上、評価用に開発キットと言語は問屋さんから貸し出し
というパターンになるとまれに悲惨な目に会います。
判らないことをメーカへ直接質問しても回答がすぐ帰ってくるとは限らず、
問屋さんはメーカへプレッシャーを与える程度しか手伝ってはくれません。
かといって喧嘩すると他の製品の部品調達にダメージを与えかねません。
ようするに、評価用の貸し出しをしてくれる日本の問屋さんを
私はあまり信用してはいないと言うことです。
#データブックやファームの間違いを
#自分で探す羽目になることもあるのです。
その点でTIは開発キットを「市販」しているので
評価の為に自分でリスクを負えるという点で
しがらみを気にせず割と良いかと。
もちろん、量産の時はこの話は当てはまりません。
>>143 私は見たことも使ったこともありません。
一回でも最初に組んだプログラムが走ってしまえば
必要性余り無し。
AVR STUDIOでは、SLEEP命令以外ほぼ現物どおり走ります。
145 :
名無しさん@1周年 :2001/05/03(木) 21:28
費用を少しでも抑えたいのでリセットICを省きたいと 思ってます。(ミ○ミ製で130円しました) トリップポイントがVDDの下限だったので ブラウンアウト・リセット、パワーアップタイマーを を利用してMCLRを5Vをに直結したのですが何か問題があるでしょうか? テストしてみましたが今のところこれといった問題でていません。 実用に耐えれるのでしょう? AC100Vの単相インダクションモータをPWM制御で、 0〜60Hzの間を4段階ぐらいで速度コントロールしたいと考えてます。 PICを使用可能ならば使用したいのですが、比較的ノイズがでる環境下 なのでやはり専用のドライバICを使用したほうがいいのでしょうか。 ノイズ対策としてウオッチドックタイマを使用しただけではやっぱり 物足りないですか。
146 :
名無しさん@1周年 :2001/05/07(月) 05:51
g
147 :
あさはかマン :2001/05/07(月) 09:22
>>145 リセットICが必要な場合と言うのは
・電圧が定格電圧を超えるスパイクが出る場合
(チップの内部シーケンサが狂うことがある)
・周辺回路のリセットも必要な場合
・リセットに時間が欲しい場合
(電源を入れてからすぐには入力ピン・出力ピン電圧が安定しない場合)
・・・そういったところでしょうか?他にもあるかも知れません。
ウォッチドッグタイマは
元来ソフトウェアバグや、
割り込み応答に追従できなくなった時(スラッシングという)に
リセットをかけて取り敢えず制御を戻す、
つまりソフトウェアの誤動作を防ぐためのもので、
ハード的には運が良ければリセットが掛かる程度の
期待しか持たないほうが良いです。
プロセサを実装する回路設計を丁寧にやれば
ノイズはそんなに怖くはありません。
ノイズに問題があればドライバ回路を分けるのも吉かと。
148 :
145 :2001/05/07(月) 22:19
以前、なにも対策をほどこさずMCLRを5Vに直結していたら、時たま PICが動かないことがまれにありました。よく本には5Vの立ち上がり は遅いときはリセットICが必要だ。なんてかいてますけどこれが 原因だったんでしょうか?まあおまじないとしてリセットICは 安心感があります。
149 :
名無しさん@初回限定 :2001/05/07(月) 23:16
>>144 なかなか使用経験者はいないなぁ。
ISPでがしがし書き換えて逝けばいいってのはありますか・・
H8なんかと違って、100回しか書き換えられないってことはないし。
150 :
あさはかマン :2001/05/08(火) 08:51
MCLRはシュミットトリガ入力なので 適当な抵抗とコンデンサを繋いで 時定数回路を組めば大丈夫かも。
151 :
名無しさん@1周年 :2001/05/09(水) 04:48
age
152 :
名無しさん@1周年 :2001/05/09(水) 21:50
売っているICSP専用の書込み器を見たことないんだけど、 自分でつくらないとだめなんですか?
153 :
名無しさん@1周年 :2001/05/10(木) 00:40
PIC16F876をISPしたいと思っています。 16F876のデータシートには 他のドキュメントを見ろと書いてあるのですが ISPの資料を見つけられません。 ドキュメントの在りか、もしくは 参考になるWebをご存知の方いらっしゃいましたら 教えていただけないでしょうか?
154 :
名無しさん@1周年 :2001/05/12(土) 12:17
PICで周波数可変の方形波発生器をつくろうと考えているのですが、 発振子の精度を上げるだけで精度のいい発生回路を構成できるものでしょうか。
155 :
名無しさん@1周年 :2001/05/13(日) 20:40
g
156 :
あさはかマン :2001/05/15(火) 18:34
157 :
名無しさん@1周年 :2001/05/15(火) 23:16
どなたか17、18シリーズのPIC使われている方はいませんか。 私は16シリーズしか現在のところ使ったことがないです。 いしのお値段も高そうだし、Cコンパイラも高いし。 使うメリットはあるのでしょうか。
158 :
名無しさん@1周年 :2001/05/21(月) 22:19
g
159 :
名無しさん@1周年 :2001/05/24(木) 06:51
EEPROMとプログラムEEPROMの違いについておしえてもらえないでしょうか? プログラムEEPROMは電源の供給を停止すると消去される程度まではわかるのですが。
160 :
ななしの :2001/05/24(木) 12:41
電源切ってもEEPROMは消えないでしょ?
161 :
名無しさん@1周年 :2001/05/25(金) 12:11
消えないよねぇ? プログラムEEPROMってなに?
162 :
名無しさん@1周年 :2001/05/25(金) 21:56
CCS社CコンパイラPCWに通常のEEPROMとは別にプログラムEEPRMなるもの データを書き込むための関数があります。 たしかに電源を切るときえてしまうのでこれがなにものかを知りたいのです。
163 :
あさはかマン :2001/05/26(土) 09:04
>>162 データブックを読みましょう。EEPROM以外のEEPROMで
プログラム書き換え可能なものは無いかと。
おそらく、EEPROMを頻繁に書き換えることを防ぐために
書き換えをバッファリングしていて、
書きこみ動作を行わないからデータが飛ぶのでは?
164 :
162 :2001/05/26(土) 21:06
はいデータブックをみたのですが よくわかりませんでして・・・
>>164 コンパイラが勝手に名付けている機能だったら、コンパイラの
マニュアル見た方がいいんじゃないの?
166 :
162 :2001/05/28(月) 20:30
どうやらプログラムメモリにデータを書き込むためのものらしいです。 プログラム自身を破壊するおそれがあるから注意してつかう必要が あるみたいです。 ところでPIC START PLUSにアダプタをつかたらICSPがでるのでしょうか。
167 :
162 :2001/05/29(火) 20:25
すみません日本語になってませんでした。 ×をつかたらICSPがでるのでしょうか。 ○をつけたらICSPが可能なのでしょうか
168 :
名無しさん@1周年 :2001/06/04(月) 22:54
PICのportBは弱いプルアップができるなんて英語の データシートには書いてるんですが スイッチ入力のプルアップ抵抗の代わりにはなるの。 10kくらいの抵抗に相当するんならいいんだけど・・・
169 :
名無しさん@1周年 :2001/06/05(火) 08:40
↑思いっきりこの機能を使っていますが、 いままで問題になった事は無いです。
170 :
あさはかマン :2001/06/05(火) 08:46
>>167 使ったこと無いので何とも・・・・
>>168 英文データブックのDC/AC CharacteristicsのIPURBという項目を参照。
171 :
あさはかマン :2001/06/05(火) 10:23
172 :
名無しさん@1周年 :2001/06/05(火) 22:39
AVRはアセンブラでしか書いたことないんだけど、avr-gccって コード生成効率とかはどんなもんなんでしょうか?
まあまあです。最適化は割と掛かります。 ただし、なんか(ソフトウェアとして)安定してないです。 仕事では使わないほうが良いと思われ
175 :
うさだ :2001/06/09(土) 01:06
私的に上げたいだけだけど
>>172 それは突っ込みの仕方が間違っています
176 :
あさはかマン :2001/06/09(土) 09:07
>>171 の続報
どうやら、AVR Freaksのavr-gccと
gnu snapshotのgccはBFDオプションが違い、
AVR Studioと一緒に動作するのはAVR Freaksのgccだけの様です。
#どんなにやってもsnapshotからはavrobj出力を取り出せなかった・・・
avr-gccの出力をavrobj形式に設定した上に、
出力ファイルの拡張子を.objにするとAVR studioで読みこめます。
変数は表示されませんが、何処のコードを実行しているかわかるので
デバッグがずいぶんと楽になります。
ちなみに変数はAVR Studio4.0から対応になるらしいです。
これ御試しあれと言いたいです。
AT90S2313(大体400円以下)から使えて、
割り込み完全サポートで、おまけにフリーウェア。
恐るべし。
いま、AVRで趣味で作ってるモノがあるので、そっちで試してみようかな。 取り敢えず今日、火を入れてみたけど、参考にしたUSB-Aコネネタ図面が 間違ってて、いきなり1A以上流れて泣きそうになった(w ポリスイッチ入れておいてよかった・・
178 :
うさだ :2001/06/11(月) 00:47
>>176 えっ 2313からってことは1200では使えないんですか?
まあ今は1200ほとんど使ってないからそれでもかまいませんが
それと、AVR Studio4.0はいつ出るんですか?
>>178 1200はRAMがないからねぇ。さすがに無理でしょ。
180 :
あさはかマン :2001/06/11(月) 09:36
>>178 AVRのC言語はスタック指向の本格的なものです。
1200はスタックからレジスタへ値を取出せないので
C言語型関数(スタックにローカル記憶領域をとるタイプ)
そのものが成り立たないのです。
181 :
うさだ :2001/06/12(火) 01:13
182 :
名無しさん@1周年 :2001/06/16(土) 21:16
PICのPWMをテストしてみました。 たしかにデューティーが可変できたのですが、 この機能を使用して単相モータの速度制御ができないでしょうか。 デューティーを可変しつづけていけば、できないこともないきがするのですが。
183 :
名無しさん@1周年 :2001/06/21(木) 21:19
あげます
184 :
名無しさん@1周年 :2001/06/22(金) 03:39
185 :
名無しさん@1周年 :2001/07/02(月) 15:09
winNT、win2kでPICSTART Plusを使っているんですが、 書き込み中に頻繁に固まります。シリアルの設定は ヘルプでの指示通りです。ライタ側ファームを 最新にしてもダメです。問題なく使えてる方っていますか?
186 :
名無しさん@1周年 :2001/07/03(火) 22:18
PICでクロックジェネレータをつくってます。 デジタルスイッチをPICに接続して 周波数を可変にしたいんですが タイマーの割り込みにかかるロスのため 正確なクロックを作り出せん。 なにかコツでもあるのですか。
187 :
名無しさん@初回限定 :2001/07/04(水) 00:41
>>186 波形出すだけなら、命令の実行クロック数を計算してループ
でタイミング取った方がいいんじゃない?
188 :
名無しさん@1周年 :2001/07/10(火) 00:30
age
189 :
名無しさん@1周年 :2001/07/19(木) 14:48
AVR Studio の最新版(Ver3.5だっけ?)で、Edit->Fontを日本語に 設定すると直後は正常に表示するんだけど、再起動で欧文フォント 選んじゃってる。せっかく漢字でコメント書けるのにぃ。 まぁ、エディタのカーソルが対応しないのは、諦めるとしてチョット残念。
190 :
名無しさん@1周年 :2001/08/17(金) 00:46
age
191 :
名無しさん@1周年 :01/09/21 10:06 ID:dkTzgy2Y
PICとかAVRに繋ぐ、シリアルのDAコンバータで 通信販売で気軽に買えるものって何かないですか?
192 :
名無しさん@1周年 :01/09/25 23:08 ID:r4w5SPvQ
CCS社のPIC用Cコンパイラですが、Ver3に上がってから日替わり更新してるので、 業務用開発に使って良いのか不安です。 Ver3の32bit演算は使いたいし、Ver2.734の安定感も捨てがたいし… 今、実際に使われている方のご意見きぼーん!
193 :
名無しさん@1周年 :01/09/26 09:40 ID:ep9N/yE.
>191 PICは忘れたけど、AVRならPWM出力あるけどRC積分で使うんじゃダメなの? どうしてもシリアルD/A使いたいのならMAXIMに無料サンプル貰うとか。 最近やっとアナデバも無料サンプルくれる様になったんだっけ? 申し込んだ事ないけど。
194 :
HP200LX :01/09/28 11:48 ID:SkRf.jQk
PIC互換で4倍速と言うSCENIXはどうでしょう。 SX-KEYを買ったのですが1回使っただけで埃かぶってます。
195 :
あさはかマン :01/09/28 12:55 ID:vQT8GiRs
あのクラスのマイコンの中でも特に、 PICはコアが使いにくい欠点をカバーする程 多品種で安定な供給と安直な書き換えが売りなわけで いくらPIC互換でも、IPを売るタイプでラインナップの細いScenixは 客先の細かな仕様を尊重する時にFlashマイコンを使う傾向がある 日本には向かない可能性大。 #おまけに速度ではAVRが僅差で追い上げているという状況。 Scenixマイコンと開発環境は、 自分から「こういうのどう?」と作るときは、巧く使えば強い味方。 しかし、他人から頼まれて物を作る時にはあんまりお勧めできないって事です。
196 :
ななし :01/09/28 13:52 ID:YLGputZ6
197 :
名無しさん@1周年 :01/09/28 15:22 ID:XeEUvCV6
PICのPWM出力って877で2本だっけか。もっと多く出せるやつあったっけ?
198 :
ななし :01/09/28 15:49 ID:YLGputZ6
FED-Cはどう?。Ver7で浮動小数点使えるようになったみたいだけど。
199 :
名無しさん@1周年 :01/10/07 10:18 ID:BMUWlHM2
FED-Cって9800円くらいでとても安い気がします。 Cコンパイラとしての位置付けは HITECH-CとPCWの間とか宣伝されてますけど 性能の方はどうなんでしょうか?
200 :
名無しさん@1周年 :01/10/09 23:57 ID:VAcCUnjY
PICのEEPROMを使用するときに気になることがあります。 それはPICがEEPROMにデータを書込み中にタイミングよく 電源がOFFすると書込み最中だったデータはどうなるのか という問題です。消えてしまうのでしょうか?もしくは それに対する対策なりはあるのでしょうか?また外付けの シリアルEEPROMなども同様の問題が発生する可能性が あるのでしょうか。
201 :
あさはかマン :01/10/10 23:49 ID:LediBD0s
>>200 そりゃまあ・・・書いてる途中で電源が切れれば、
書き込み用トランジスタは保護されますが、
書き途中のデータ構造は救い様ありません。
そんなわけで、フラッシュメモリを使う場合は
電源が落ちる直前に電源電圧低下検知回路からの割り込みを入れておくと安心ですが、
電源に信頼性のある昨今では、普通そこまでしません。
202 :
名無しさん@1周年 :01/10/12 14:08 ID:LfPoRYMs
ImagecraftのAVR用Cコンパイラdemo版良いですよね。 でも、10/5付のVer6.23をインストールしても レジストレーション画面でハジかれて動作してくれない。 前のバージョンだと大丈夫なんだけど。 Ver6.22bが記念版として特別だったのかなぁ。 ココの社名って略すと”イメクラ”なのねぇ。
203 :
200 :01/10/13 19:44 ID:J9.Ct5pA
レスありがとうございます。 実は電源は昔ながらの変圧器、ブリッジダイオード 三端子レギュレータといった構成なんです。 心配なんで電源電圧低下回路で電源を監視しといて 電気二重層コンデンサで最後のEEPROMへの書込みを 持ちこたえようと考えたのですがこれは考えすぎですか? もしくは三端子レギュレータの発振防止用コンデンサ(47μF) で十分ですか?
204 :
保守係 :01/10/14 00:25 ID:EZSHrkh.
>>199 去年FED-CのVer3買いました。
Cは初めてでしたのでCの参考書も一緒に買って練習しました。
そんなレベルなので語れないです。
なら出てくるなよ!って・・・(ゴメン)
205 :
名無しさん@1周年 :01/10/14 08:36 ID:axZP7zkd
>>202 デモ版はなんらかの機能制限があるのですか?
PICからAVRに乗り換えようと思っているとこなんですよ。
AVRの方が速くて安いし。PIC18シリーズはまだ出回らないし。
ただ安定的にAVRが供給されるかが心配・・・・
206 :
あさはかマン :01/10/14 09:42 ID:iWWhCUVN
>>203 つまり、保護回路をいれるなら
1.
回路の消費電流から、
PICの定格動作電圧範囲の下限になるまでの時間を求める。
2.
PICのデータ書きこみに掛かる時間を求める。
3.
電源線の低電圧検知回路の動作下限を上記2つのパラメータから決める。
このとき部品定数の誤差を見ておく必要がある。
マージンが足りなければ1.へ戻り、コンデンサの容量を増やしたりして
時定数が足りるところまで持ちこむ。
・・・
設計上トラブルを起こしやすい部分でもあります。
不揮発にする必要があっても、何時か電源を入れることが判っている場合は
バックアップ電池+発振停止スリープの方が安全です。
207 :
202 :01/10/15 10:45 ID:79I3ZKw4
>>205 1.生成できるコードサイズが制限されている。(1kByte以内だったカナ?)
2.インストール後30日で試用停止になる。(以降どうするかは各自の裁量で)
AVRの供給は、そんなに数量も使ってないケド、別に困った事ないですけど。
PICはたま〜にアセンブラで使うだけので、Cコンパイラは未評価です。
IAR system(www.iar.com)のPIC/AVR/H8等のデモ版は専用オブジェクトしか生成できないので
書き込み→実行確認ができないので、評価できないモノでした。
あぼーん
209 :
203 :01/10/15 22:44 ID:iJmeJ4Gz
なるほど バックアップ電池+sleepが確実ですか。 でもいつ電源を入れてもらえるか心配・・・・
210 :
泰 :01/10/16 13:35 ID:GmXWBnNQ
古い話でスマンが、22の解説がいまいち分からんのよ ハードウエア回路を例にした説明なのかな? 自然二進数を入れるとはレジスタにパラレルロードなの?
211 :
AVR初心者 :01/10/23 08:30 ID:nLYyQb6m
これからAVRをやってみよと考えているものです。ちなみにPICは 経験済みです。AVRのコンパイラを選定するにあたってgccにするか ICCAVRなどのメーカ製にするかなやんでいます。コンパイルの正確性 、関数、使いやすさなどはgccとメーカ製を比較してどうなんでしょうか。
212 :
あさはかマン :01/10/23 09:04 ID:uMWt9umn
gccの性能は非常に高いです。 AVR Studio上で実行個所のトレースを取る事もできます。 そのかわり、 売り物に組みこむのであれば、使用許諾書を良く読む必要があります。
213 :
AVR :01/10/23 18:00 ID:HxlKGjMZ
>>210 どもすみません、読み返したら自分でも分かりづらかったです。手品の
タネは3つあってですね、
1. 6(0110)を足す方法の有効範囲は、ゼロ(0000)から19(10011)までOK
2. BCD数値(0〜9)は左シフト(2倍)しても最大18までしかならず、上記方法が有効
3. ゆえに普通の左シフトをしつつ1シフトごとに上記補正をすれば「BCD的左シフト」が実現できる
ということです。
(右シフトの方法は頭の体操にどうぞ)
214 :
AVR初心者 :01/10/23 20:39 ID:nLYyQb6m
あさはかマンさんどうもです。 AVRに書き込むことのできる道具はあるので gccを使ってみようかと思います。
215 :
名無しさん@1周年 :01/10/23 20:51 ID:8WPVcvqo
216 :
あさはかマン :01/10/23 21:40 ID:uMWt9umn
217 :
名無しさん@1周年 :01/10/24 17:57 ID:HbGxhepW
Cを使うべきてこと? 機械屋には…
218 :
AVR初心者 :01/10/24 20:47 ID:oUWtyIg6
だだいまAVR-GCCをセットアップ中です。 結構てこずってます。 簡単にできる方法はないものでしょうか?
219 :
あさはかマン :01/10/24 22:34 ID:jPVJ3bMQ
220 :
AVR初心者 :01/10/24 23:21 ID:oUWtyIg6
221 :
名無しさん@1周年 :01/10/31 04:30 ID:a7LkxvyP
PIC初心者です。 PCWでレジスタって直接叩けないんでしょうか? マイコンは今までずっとアセンブラでやってきたのでよくわかりません。 どなたかお願いします!
222 :
名無しさん@1周年 :01/10/31 05:11 ID:BfmoDB1H
223 :
221 :01/10/31 05:27 ID:a7LkxvyP
>>222 リンクありがとうございます。仕事は疲れちゃったんで帰ってきちゃいました(^^;
で、具体的な話ですが。
UARTの受信バッファをクリアしたいんですけど、Cだとどうすれば良いのかわからないんです。
とりあえず、#ASM〜#ENDASMで解決しましたけど、アセンブラを使わない方法は無いんでしょうか?
224 :
名無しさん@1周年 :01/10/31 20:17 ID:oWwpwpun
age
225 :
221 :01/11/01 04:10 ID:Uy7Z2mPn
うお〜誰も教えてくれない。 もしかして俺ってすっごく的外れな質問してます?
226 :
名無しさん@1周年 :01/11/01 04:44 ID:LsI4aVQM
227 :
221 :01/11/01 04:56 ID:Uy7Z2mPn
>>226 >ここは、もし仕事上の質問だと分かれば放置を覚悟した方がいい。
なるほど。言われてみれば当然の話ですね(笑)。失礼しました!
ありがと〜>226
228 :
PIC16F873 :01/11/01 13:13 ID:HszNB6AT
>221 EXAMPLESディレクトリのサンプルソース見ればわかりますよ。 #byteでアドレスを直接宣言すればいいのでは?
229 :
名無しさん@1周年 :01/11/02 00:33 ID:oWDEU5F8
>>228 それでダメだったから聞いたと思われ。アセンブラの経験ありだから。
230 :
名無しさん@1周年 :01/11/07 16:05 ID:BaCKHH0c
231 :
:01/11/07 16:48 ID:IAvxIfIO
>>230 おお、いいな。これ欲しい。
値段書いてないね。いくらだろ?
232 :
名無しさん@1周年 :01/11/07 18:49 ID:X+r9libh
ポケコンとはポケットマネーで買えるコンピュータのコトだから 300えんくらいかな?
233 :
名無しさん@1周年 :01/11/07 21:16 ID:2P2rrMXA
PICアセンブラの隠し機能でパララックスや秋月のツールにある ボーランドのIdealモードみたいな構文食ってくれないかな。 (マクロでも良いけど) フラッシュROMを書き換えてAVRにも対応できるなら、いとうれし
つーか、Sharpってまだポケコンの新製品作ってたのか・・・。
つーかまじ値段教えて。 正月にでも買いたいです。
236 :
AVR :01/11/08 01:00 ID:yp3WCSW1
>>234 数少ない日本の伝統芸だからやめないで欲しいす。
そのポケコンのサイトにあった一文、
>>検定試験に必要な度分秒(60進数)計算機能を搭載
購買ターゲットは?
237 :
名無しさん@1周年 :01/11/08 02:18 ID:oTyExEqy
なんかイタい
239 :
名無しさん@1周年 :01/11/08 11:15 ID:g0LifHNC
クリーンコンピュータだとしあわせ
240 :
名無しさん@1周年 :01/11/08 23:05 ID:QXZisygz
っつぅか、秋月に売っている液晶表示機と、16C877あたり組み合わせれば 簡易モニタ付きスタンドアロンPIC機って出来そうな気がするが。 キーボードが問題だな。ポケットボードあたりを流用するとか。
241 :
名無しさん@1周年 :01/12/03 14:25 ID:SDhTANkF
PICアセンブラのPAのサイトが消えてるんですけど。 今どこにあるんでしょ。 私はあれがないとPICのプログラムが組めません。
242 :
AVR :01/12/04 01:19 ID:7A9JWv4v
ほんと消えてますね。あれまあ。すると秋月のサイトにあるバージョンだけですか。
243 :
名無しさん@1周年 :01/12/04 22:23 ID:pe0Pnzpz
PICを乾電池で長時間つかえるようにしたいのですが PICの動作電圧を落とすことはできないのですか? データシートには3Vのときの消費電流などが記載されているのですが 低電圧駆動専用のタイプを購入する必要があるのでしょうか?
244 :
名無しさん@1周年 :01/12/05 00:12 ID:aX3F3a6C
だそうですよ。
245 :
ЯVA(w :01/12/05 01:55 ID:kuta4Umq
もし間欠的な処理(例えば毎秒10回、1回あたり数ミリ秒の処理)でOKなら、 スタンバイモードを使えば相当長く持ちますよ。例えば電池3個で1年以上動くも とかのをやっtます。
246 :
ЯVA(w :01/12/05 01:59 ID:kuta4Umq
特に低電圧品てのがあるのか知りませんが、普通に売ってる16F84でも 下は2Vをギャランティーしてるみたいですね。
247 :
名無しさん@1周年 :01/12/05 10:47 ID:QSObP/Ty
>>241 見てないけど、PIC-MLで落合さんに直接聞いてみれば?
PAってparallaxのアセンブラと同等な書式だったっけ?
ftp.armory.com/pub/user/rstevew/PIC/Parallax
一応参考で
248 :
名無しさん@1周年 :01/12/05 15:13 ID:ZaCK2kdL
PICライタを使いたいのですが、私のノートPCにはシリアルポート がありません。 USB<=>RS-232C変換コードを使おうと思っているのですが、 これでも動作しますか?
249 :
248 :01/12/05 15:16 ID:ZaCK2kdL
250 :
名無しさん@1周年 :01/12/05 20:27 ID:3KkdQUoh
251 :
248 :01/12/06 11:27 ID:1doVMYx3
>>250 パラレルポートもないんです(T T)
あと、電源を別途用意したくないのでシリアルの方がうれしいです。
252 :
暇人 :01/12/06 17:07 ID:5TKdZtwc
最近の 16F628とか 90s2313とかについている アナログコンパレータって応用として何に使うモンなんですか? すんなりADコンバータついてるほうが嬉しいのにナァ... というモレは厨房ですか?
253 :
名無しさん@1周年 :01/12/08 13:24 ID:23zNdygV
>>248 つかえますよ。
IOデータのを持っているのですが、それを使用して書き込むことができました。
もしうまくいかないときはデバイスマネージャーのポートを見直してみれば
使えるようになるはずです。
254 :
253 :01/12/08 13:26 ID:23zNdygV
あ、実際に使ったライターは秋月のキットでした・・・
255 :
あさはかマン :01/12/08 14:03 ID:Zql7l/TM
>>252 いろいろと使えます。
・電池の残りを電圧でチェック
・A/DまたはD/Aコンバータを作るとき
・微小な振幅の交流信号を入れる時。特に音波などに有効。
・アナログ値を返す、けどON/OFFしか要らないセンサをつなぐ時
まあ、なんにせよ大きさと値段の制約が無いなら
A/Dを積んだほうがよい場合が多いですが。
>>248 ソフトウェアを見る限り、8割方動きそうです。
秋月キットならば間違いなく動きます。
#USBシリアルって高い・・・・
##USB-PIC/AVRライタを作ったら売れるのかな・・・?
256 :
名無しさん@1周年 :01/12/08 14:53 ID:23zNdygV
USB-PIC/AVRライタを安く作ったら売れるかも・・ でも、USBシリアルは高いけど、結構いろいろ使えるから 持っておくといいですよ。 シリアル使いたいって思うこと時々ありますからねぇ。 ま、PCにシリアル端子がついていれば必要はないんだけど(笑)
257 :
名無しさん@1周年 :01/12/08 18:54 ID:4Lv6+r8e
sage
258 :
248 :01/12/10 08:19 ID:ygj/mIEr
259 :
名無しさん@1周年 :01/12/11 00:16 ID:VoTsfffh
ホント。なぜ高いのか。
260 :
名無しさん@1周年 :01/12/11 00:22 ID:YUpGHNFE
買う人がいないからかも・・・
最近USBシリアル買いました。便利です。 USBシリアルはシリアルをエミュするところが結構面倒くさい らしいです。Win2Kだと標準ドライバがあるからいいけど、Win98なんか だと独自ドライバを作る必要があったりで、それを同梱するためのライ センス代とか。 それよりも、あまり売れないから、というのが理由のような来もするけど >高い理由
262 :
名無しさん@1周年 :01/12/11 01:38 ID:2DnFJxhw
誰かavrで自作してブレークスルーしてくれ。 自作する人数が減ったからか?>高価
263 :
名無しさん@1周年 :01/12/11 07:30 ID:nvVW0sjG
ATmegaって高いですね・・・ H8と比べてどう利点があるのでしょうか?
264 :
258 :01/12/11 09:54 ID:XE6D+2mD
USBと携帯電話を繋ぎ、COMポートとして通信するケーブルが 比較的安く売られていますが、 これを改造したらUSB-Serialとして使えないかな。。。
265 :
暇人 :01/12/12 02:18 ID:EpgEN0Wv
>>264 > USBと携帯電話を繋ぎ、COMポートとして通信するケーブルが
> 比較的安く売られていますが、
> これを改造したらUSB-Serialとして使えないかな。。。
最近の安もの USBシリアルならおな〜
じくらいの値段では?
266 :
名無しさん@1周年 :01/12/17 00:59 ID:c6O3WLAx
アセンブラで虚数データの書き方が分かりません。
267 :
名無しさん@1周年 :01/12/17 01:14 ID:Gs8U7qDO
>>264 エレコムのだったら5,000円は切っているとおもうけど、これでも高い?
(いや確かにマウスに比べりゃ、ずいぶん高価ですね)
268 :
名無しさん@1周年 :01/12/17 01:49 ID:Qlt2FP0c
>>266 ネタかと思ってたけどひょっとしてマジ?
269 :
名無しさん@1周年 :01/12/17 02:08 ID:fSNDFRL9
>>258 成功したら教えて下さい。
私は、それ作って動かなかったんで秋月のキット買いました。
USBシリアルの環境でね。
270 :
名無しさん@1周年 :01/12/17 23:35 ID:Qa7hq+yh
最近秋月って面白そうな品物減ったね。 不正競争防止法対象商品が扱えなくなったってのを 差し引いてもさ。
271 :
名無しさん@1周年 :01/12/18 07:56 ID:vx+Iz8YH
16LF877を電池動作させることを考えてます 電源範囲が2〜6Vなので1.5V×3の4.5Vで使用し、 一本あたりが0.9V程度の合計2.7Vになるまで PICを駆動しようと思います。 このときPICを電池で直接駆動していいものでしょうか? それともDC/DCで電圧を一定値にしたほうがいいのでしょうか。 EEPROMも使用するので電池で直接駆動した場合 write時とread時の電圧の違い(たとえばwrite時2.7V、read時3.5V) も心配です。
272 :
あさはかマン :01/12/20 21:33 ID:vdJDhmBJ
冬!
>>271 定格電源電圧範囲の間ならデータブックの内容は保証されます。
ちなみに、電源電圧を下げると
ひょっとすると書き込みに掛かる時間が増えるかも。
それと、2.7Vに達したときに電源を切る回路、もしくは
2.7Vに達した時点でPICがSTOPするシステムを構築しないと
2.0Vを切っても動作しつづけようとするので危険です。
274 :
名無しさん@1周年 :01/12/21 12:56 ID:UQ2Y1BrD
そういえば、秋月スレってないんだっけ?
275 :
:01/12/21 14:38 ID:fmu1X2R+
>不正競争防止法対象商品が扱えなくなった 具体的に何の商品でしょうか?
276 :
名無しさん@1周年 :01/12/21 16:08 ID:eAh7SxFr
>>275 シリアルコピーマネージャ、ビデオコピーガードキャンセラ。
今一番欲しいのはパッシブカラー液晶モジュールを実用化するキット。
数年前買ったままほっぽりっぱなし。「AKI-80、AKI-H8等の
表示器用に最適です。」とか書いてあったから簡単に使えると
思って買ってしまった。
277 :
名無しさん@1周年 :02/01/23 13:12 ID:OokEL+MH
>>241-242 遅レス。
昨日見たら復活してましたね。
秋月のAVRライタを8,28pinに改造する情報が出てましたが、
正規品は新版になっているのかなぁ?
(28pinのAT90S4433ってPBポートが6bitになっちゃうんだね)
278 :
名無しさん@1周年 :02/01/23 17:18 ID:4m7wXr5r
PICの外部接点による割り込みにがよくわからないのですが、 RB0の立下り(立ち上がり)による割り込みと RB4などの状態による割り込みはどう違うのでしょうか。 結局どちらも同じように働くと考えてしまうのです。 状態による割り込みはある一定の幅を持ったパルスが検出されないと 作用しない(ノイズにつよい)といったことがあるのでしょうか???
279 :
あさはかマン :02/01/23 19:00 ID:YmuzbIDl
>>278 状態変化(エッジトリガ)以外にレベルトリガが出来ます。
外部機器から割り込みを出しっぱなしに出来るということ。
何が便利かというと、
割り込みがさほど重要じゃないときに
割り込みフラグをリセットして後回しにしても(割り込みの保留と言う)、
信号が出つづけている限り何度でも
割り込みを再立ち上げする事が出来るのです。
280 :
名無しさん@1周年 :02/01/24 06:54 ID:X69tQTfF
>>277 >>秋月のAVRライタを8,28pinに改造する情報が
HPキボーン
281 :
277 :02/01/24 11:12 ID:NHu7b+o9
282 :
277 :02/01/24 11:47 ID:ki+KisHI
AT90S4433でPBが8bitで無くなったのはイタイ。 PDは8bitだけどシリアル,外部割り込み兼用でフルで使えない場合が多い。 2313と比べるとA/D用に2ピン(2bit)分が犠牲になった感じ。 後から出すんならピン割り当てを上位互換にして欲しかったなぁ A/Dは4chにして2313からの変更が最小限になる配置を妄想すると 1:/RESET 2:PD0(RXD) 3:PD1(TXD) 4:XTAL1 5:XTAL2 6:PD2(INT0) 7:PD3(INT1) 8:PD4(T0) 9:PD5(T1) 10:PC0(ADC0) 11:PC1(ADC1) 12:PC2(ADC2) 13:PC3(ADC3) 14:GND 15:AGND 16:AREF 17:AVcc 18:PD7 19:PD6(ICP) 20:PB0(AIN0) 21:PB1(AIN1) 22:PB2 23:PB3(OC1) 24:PB4 25:PB5(MOSI) 26:PB6(MISO) 27:PB7(SCK) 28:Vcc
283 :
名無しさん@1周年 :02/02/01 14:14 ID:ZzZLFtVs
AVR/PICじゃないけど同じマイコンってことで...。 最近CygnalのC8051F300を使ってみました。 UART/I2C/TIMER/ADCと内蔵機能が豊富 使えるI/O数は8本とちょっと少ないけど 内蔵OSC(24.5MHz)、1命令/1or2クロックで動作するので結構ヨサゲです。 最大の問題はパッケージが3mm角なので小さすぎること(笑)
>>283 三洋がOEMで出してるヤツでそ。
評価ツールやchipの単価高くなかった?
漏れは、それで諦めた
285 :
283 :02/02/01 19:40 ID:ZzZLFtVs
>>284 チップ単価は$10.59、評価キットは$99ですね。
AVRにくらべてチップ単価が3〜4倍するのでたしかに高いけど、AVRだと力不足の時には
選択しにはなるかなと。(それに趣味なのであまりコストには気を使ってません(^^;)
286 :
あさはかマン :02/02/01 20:03 ID:D2qM28ev
>>283 三洋のホームページでスペックは押さえてます。
I2Cバスがおいしい所です。I2Cあると結構便利。
3mm角というパッケージでないと他ベンダのMCS-51系マイコンに対して
勝ち目がないのが辛いところです(藁
本当にインテリジェントなIPMとか作れそうだし
CSPの実装技術があるならぜひ使ってみたいチップの一つ。
実はATMELもMCS-51互換チップとして89シリーズを出していて
その上位機種として90シリーズであるAVRを位置付けているようです。
AtmelのMCS-51シリーズ
http://www.atmel.com/atmel/acrobat/feature.pdf そういう経緯あってなのか、AT90S8515は本家i8051/i8751に対して
そのまま置き換えが利きそうなピン配置になっています。
287 :
名無しさん@1周年 :02/02/01 20:42 ID:Kgj3Lohq
ところでAVRとは何の省略形? AはAtmel…
288 :
名無しさん@1周年 :02/02/01 21:18 ID:ZzZLFtVs
>>286 F300はたしかに小さいけど、ピン間0.5mmなのでハンダゴテで実装可能っすね。
>>288 そういえばQFPでしたっけ?
CSPだと思ってた・・・
290 :
名無しさん@1周年 :02/02/01 21:48 ID:ZzZLFtVs
何とかなりそうな気はするけど やっぱり リフロー用でしょう・・・これは。 #SDRAMに無理やり遅延スタブ線をつけたときのことを思い出す・・・・
292 :
名無しさん@1周年 :02/02/02 00:13 ID:YGShd8oS
まあお仕事で使うときはリフロー使うけど 趣味でやるなら手ハンダ数分でOKだったです。
293 :
名無しさん@1周年 :02/02/02 00:20 ID:Bl7zX4Ap
>>287 頭文字がAの人とVの人が作ったRISCとかって昔読んだ憶えが。
本当かどうかは知りませぬ。
294 :
名無しさん@1周年 :02/02/04 17:33 ID:SacTPr5F
PICでI2Cをやってるけど、うまくいきません。スレーブでi2c_read()のコマンドを出した後にプリント文を表示させたら、スレーブのアドレスが表示されて、データが表示されず、うまく行きません。どうしたらよいのでしょうか?
295 :
あさはかマン :02/02/04 20:19 ID:vm5N+Uew
うーん・・・PIC Cは使ったこと無いのでわかりませんが、 一般の組み込みに措いて、c言語のPrint系関数は非常に遅いうえに、 シリアルポートには秒間1000字ぐらいしか出せませんので、 処理速度に重大な影響をもたらします。 通信処理が終わるまでデータをそっとしておいて 通信し終わった後データを表示する構造にするのはいかが?
296 :
名無しさん@1周年 :02/02/05 17:57 ID:DAU4jG1G
そういえば、ふと疑問。AVRのタイマ割り込みって、数値上はかなり小さい時間で割り込み かけられそうだけど、実際の所どうなんだろ。 10MHz、1/64にして、カウントを0xffからカウント(1カウント目でOVF割り込み)にして、 ちゃんと動く物なのか、気になる。ご存じの方いらっしゃいます?
297 :
名無しさん@1周年 :02/02/06 11:41 ID:G9gJopMH
13us周期のタイマ割りこみはやったことあります。
298 :
名無しさん@1周年 :02/02/07 13:41 ID:b68jRpt5
>>295 やってみたけどだめでした。ほかに何か原因が考えられますか?
299 :
名無しさん@1周年 :02/02/07 22:50 ID:tvP63MuC
300 :
嶋は僕の父ではありません :02/02/08 02:08 ID:pW0AoMD5
┏━━━┓ ┏┫ ┣┓ 300ゲットォ〜 ┏┫ ┣┓ ┏┫ ┣┓ ┏┫ Z80 ┣┓ ┏┫ ┣┓ ┏┫ ┣┓ ┏┫ ┣┓ ┗━━━┛
301 :
名無しさん@1周年 :02/02/08 18:12 ID:qf4QCE/u
windows で焼いたmp3がxmms-1.2.5のプログラムリストで 日本語が表示できません。どうすればよいのでしょうか?
302 :
名無しさん@1周年 :02/02/09 11:00 ID:vGNbpK/o
>>287 Alf and Vegard's RISCですな。
トラ技2000/7にノッテターヨ
303 :
名無しさん@1周年 :02/02/24 10:09 ID:QOZ2jlFU
PICライタを自作して バックギア連動ドアミラーsageを作ってみました。 PICってオモスィロイ。
304 :
名無しさん@1周年 :02/02/24 12:10 ID:KU3VYOjB
おおそれは。
305 :
あらら! :02/02/24 12:11 ID:KU3VYOjB
おおそれは。 参考にさせてくださいよ。 電源は何ボルトでどうやりましたか クロックはいくつですか ソフトのリストを公開きぼーんです 車種も
306 :
名無しさん@1周年 :02/02/24 14:11 ID:WYLcpUoP
今は机の上で5Vの電源で動かしてます。 電源はACCの12Vから7805をカマして取る予定です。 クロックは10MHz。 車種は先代インプレッサだけど、ミラースイッチASSYにNISSANって 書いてあるよ。 実は車側の解析がまだなんだ。age、sageのスイッチをリレーで ショートさせるんだが...誰か配線図持ってません?←逆質問 リストはちょっと待ってて。
307 :
ドアミラーsageれ :02/02/24 15:01 ID:WYLcpUoP
スイッチ解析完了〜♪ リストは明日秋葉に来ればあげるよー 7805を買うために秋葉に逝くのも何だかなぁ 学校に寄ってデータシートをたっぷり印刷して来るか。
308 :
名無しさん@1周年 :02/02/24 21:43 ID:3ygCaMsi
>>306 君ねえ。ここは工作自慢の披露板ではないぞ。
そんな態度してるとまともなカキコは2度とレス付けないぞ。
少しは大人の付き合い方を覚えろ。
309 :
名無しさん@1周年 :02/02/25 01:00 ID:F+UYZmbT
車の配線なんかは、ディーラに逝って整備マニュアルの電装編見せてもらえば 参考になるはず。といっても、単なるスイッチだってわかってるなら、そこに SSRでも入れれば。 なんでもいいが、データシートは印刷するとかさばってしょうがない気がする のだけどどうよ。
310 :
名無しさん@1周年 :02/02/25 09:33 ID:6UPgppMV
>>308 しばらくROMに徹して修行します。
>>305 という訳で、申し訳ないですがご自分で...
>>309 どうもです!!ただのスイッチでした。SSRでもOKだと思いますが、
手元に5Vのメカニカルリレーが転がってるので利用したいのです。
4066もあるので、こっちが使えればもっと楽ですが、ちょっと怖い。
311 :
305 :02/02/25 23:26 ID:HH21XTyH
じゃ、そゆーことなら。。
312 :
名無しさん@1周年 :02/02/27 00:13 ID:x95Joy3P
うりゃ!アゲ
313 :
名無しさん@1周年 :02/03/08 15:17 ID:sz548KS5
AVR Studio 4 が出てるけど、誰か使ってみた?
>>313 日本語がきちんと表示できるようになったし、全体の見た目も良くなったのですが
ATMegaしか対応してないみたいですね。そこが残念です。
315 :
313 :02/03/09 22:06 ID:M+eZ/3uz
>>314 ほんとだ
だめじゃん
でも日本語表示が改善されたのなら今後に期待(Ver3.54?)
316 :
_ :02/03/10 23:27 ID:m84+6vRO
chanさんのサイトにあるAVRパラレルライタを作ったんだけど 8ピンAVR(高電圧シリアルプログラミングモード)だけ書き込 みできない鬱死・・。
317 :
名無しさん@1周年 :02/03/22 07:26 ID:2xXckOpG
まったくの初心者かつ厨房ですが、PIC使って プロコンの代わりをさせたいんですが、 (入力6点、出力4点、タイマー6点ほどの規模) どうすれば良いか教えて。
なぜAVRにしないのかが疑問である。なぜあえて困難なPICを選択したのか。 もしアプリが豊富にあるというのなら、わざわざここで聞かずにアプリから探せ と小一時間思うが。
319 :
317 :02/03/22 09:00 ID:2xXckOpG
>>318 ありがとうございます。AVRのほうが楽なのですね。
ところで初心者でもわかるAVRの学習キットのようなものが
ありましたら教えてください。小生、ソフトウェア
まったく無知です。
PICが使いにくいのはintel系(Z80含)の アセンブラ経験があるからですか?
321 :
名無しさん@1周年 :02/03/22 13:25 ID:5q2SZVYB
>>317 タイマー6点をどう処理するかが初心者には難しいと思われ...
純正のニーモニックが体質に合わなければ、上の方に書いてあるpa.exeか
パララックスがちと楽。(まぁマクロ書いても良いけどね)
AVRでもタイマは1個だよん。いっそH8にするとか。
322 :
317 :02/03/22 14:08 ID:2xXckOpG
>>321 するとAVRでは無理なのですね。
やはりマイコンいじらないとだめですか
ああ、むずかしそう。
無理ってなぁ。タイマ6点の精度にも依るけど、高い精度が必要でなければ
タイマ1個で処理出来るだろう。それと、
>>321 。AVRはタイマが2個乗って
品種の方が多いぞ。
プログラム的に1つのタイマを分割して使うことを考えてみるのがいいと
思うけど、がんばってみたらどうよ。
それ以前にタイマ6つを独立して動かすのも 割り込み応答速度とか考えると避けて通りたい道の一つ。 複数タイマの駆動は、余程の速度が必要なときか、 ハードウェアでタイマ同士(タイマ->DMAとかも)が 連携する場合とかに使えますが、 割り込みが介在すると精度すら怪しくなる気が。 H8の多連タイマはむしろ3相交流PWM発生用だと思うし。 ・・・ところで AVR Studio4はCPUエミュレータがベータ版のようです。 多分、4.1リリースの時にはClassic AVRのサポートは付きそうだと思われます。 ついにgcc出力のデバッグで、 エディタ上でCソース上の変数が読み出せるように成ったとか。
325 :
>317 :02/03/23 06:10 ID:cu8Zo8xy
しーっ!このスレには、常陸の国の患者(間者ではない)が潜んでおる! 自分の信仰するマイコン以外に客がつくのが妬ましくてならず、素人を ウソでたぶらかしてでも自スレに引きずり込もうと常々から画策しと るのじゃ! くれぐれも御油断めさるでないぞ!
326 :
317 :02/03/23 08:47 ID:QnojgxaO
ご忠告ありがあとうございます。 くわばら、くわばら
327 :
名無しさん@1周年 :02/03/23 09:40 ID:LnicB+le
プロコンって何すか?
328 :
317 :02/03/23 10:31 ID:QnojgxaO
プログラマブル コントローラーの略で、予め用意されてる命令語を 使って、簡単なラダープログラムを組むことによりシーケンス制御 を行うことができる装置です。 工場の生産ラインでの制御とか、自販機に多用されています。
329 :
名無しさん@1周年 :02/03/23 18:08 ID:0IkpzOcs
>>318 本屋にPICの本はうなる程売っているが、AVRの本は無い。(トラ技とかで特集はあっても)
H8の本も少量だし。
330 :
名無しさん@1周年 :02/03/24 00:16 ID:4ZCS1C1K
>>329 本にするほどのネタがなかったりして(簡単過ぎて)
ちなみにAVRの本は一冊あるね。(あまり役にたちそうもない内容だったが)
たしかにAVRはアプリケーションノートとデータシートを見て、他の人のソース を眺めれば大体わかるぐらい簡単なCPUでした。 自分はアセンブラでROMデータ参照で、アドレス×2でlpmするのが必要という のがひっかかったぐらいかな・・
332 :
名無しさん@1周年 :02/03/24 13:51 ID:pporONIY
資料が少ないから逆燃えるんじゃ?(w どつもこいつもPIC、PICって言うから反発してAVRを 使いたくなるのが心情かと。 ただ、AVRはPICに比べて変な癖がないからデータブック だけでも十分な気がする。 CQ出版の本を持ってるけどアレだけで十分じゃないかな。 なんて言うかAVR同人誌でも出しますか。(w
333 :
317 :02/03/24 21:21 ID:eFVRv2kZ
おすすめのAVRの品番教えてください。
334 :
名無しさん@1周年 :02/03/25 00:52 ID:TKRjjmUf
335 :
AVRER :02/03/25 01:57 ID:/CO5nn/7
てーか英語の奴よめよみんな。。。 あまえてんじゃねー
336 :
ЯVА :02/03/25 01:58 ID:AaolDbMC
337 :
329 :02/03/25 11:01 ID:YIM8a/L1
>>329 今までハードウェアに興味はあったが、敷居が高かったとかいう人に
とって、初めてワンチップいじるとしたら、やっぱ日本語解説本が
多いPICの方から入るんじゃないかと。
データシートだって日本語化されているしね。
という僕は、AVRの方が命令が素直なので、普段はAVRでやってますが、
H8/3664のキットが秋月で半完成品で売っているので、ちょっと
手を出しましたが、シミュレータが高いのがアレですねぇ。
PICもAVRもシミュレータはダウンロードできるもんねぇ。
338 :
321 :02/03/25 11:18 ID:hdm3iDR+
>>323 言葉足りなかったね。ゴメソ
1200か2313,8515かによって違うもんね。
>>324 >ついにgcc出力のデバッグで、
>エディタ上でCソース上の変数が読み出せるように成ったとか。
既に、ElfCoff.zipでAVRStudio上で変数見れますが、意味違う?
>>325-326 漏れの事?
AVR使い出してからは、PIC使ってないけど。
最終的に何使うかは317さんの好み次第。選択肢としてH8と書いただけだけど...
で結局タイマ6個はどう使うんだろう。
マイコン開発よりロジック設計の方が得意なので
>>317 氏のような問題だと
FPGAでやりたくなってしまう。
マイコンでタイマー6本は、時間計測のし方と精度によると思うけどややこしそう。
スレ違いなのでsage
>>338 ElfCoff.zip・・・知らんかった・・・・・
鬱し。
341 :
初心者3号 :02/04/02 16:15 ID:wbtizDTs
秋月のAVRライタ買った→ライタと通信できません→ハァ? →Chan氏のLPT_ISPアダプタ製作→金とコネクタないからプリンタ分解 →Divice is not working→ハァ? 憂鬱だ...
342 :
名無しさん@1周年 :02/04/05 13:16 ID:6WLV1PIv
343 :
age :02/04/07 07:07 ID:WY3DIY/l
>>341 さん
まじレスですが、DSUB25Pのコネクタの9番ピンと12番ピンが
接続されていないのでは?
D7とPEの信号線同士を接続してないのでは?
わたしもこれではまりました。
344 :
初心者3号 :02/04/08 18:06 ID:Y13niOrs
>>343 D7 と PE と BUSY の3つを接続してました。
BUSY だけ外したところ問題なく書き込めました、
ありがとうございました。
345 :
名無しさん@1周年 :02/04/12 00:34 ID:sSjL8noC
PICのTIMER0をプリスケーラと一緒に使って、一定時間の割り込み周期を作りたい のですが、割り込みルーチン内でのTIMER0値再設定で悩んでいます。 TIMER0値を再設定すると、プリスケーラまでクリアされるので意図する時間より ほんの少し長い周期になります。 仕方がないので、TIMER0を再設定せずに使うか、TIMER0の再設定までの遅延を ソフトで作って調整するなどの方法を考えています。 何かほかに良い方法はないものでしょうか。
346 :
名無しさん@1周年 :02/04/12 00:48 ID:kCQiS8zM
AVRに乗り換える事を強くお薦めします。
>>339 気持ちよくわかる俺Verilog屋なのにマイコンのことイマイチよくわからん
あのアセンブラの命令が。
ANDとかORは不定さえ入力しなければ誤動作しないし。
自分で繋ぐから動作わかるし。
でもマイコンのこと見切れたらマイコンの方が楽なんだろうな。
AVRだとぷりすけーらはクリアされないのですか?
349 :
名無しさん@1周年 :02/04/12 22:36 ID:u4v211lk
AVRも関心はあるのですが、なにぶん PIC Starter Kit も買ってしまいましたし、 16F84も20個ばかり友人に貰ったばかりなのです。 それにしても、なんでプリスケーラまでがリセットされなきゃいかんのでしょうか。
350 :
名無しさん@1周年 :02/04/12 23:46 ID:KwMgcGXn
>>348 各タイマ専用の制御レジスタがあって、その中にリセットするビットがある。
それいじらなければリセットされにゃい。それよりもAVRちゃんは割込ジャンプ
テーブル方式だからPICに比べたら大人と子供だよ。PIC全部誰かを騙して売り
つけなされ。人生の時間をそれだけ損しますぞ。
>345 tmr0はいじらずに、割り込み処理内でカウンタ回すのが楽。
>>350 解説どうもです。AVRを選んどいてよかった。
353 :
名無しさん@1周年 :02/04/13 11:55 ID:D8Ntu5sG
>>350 ありがとうございます。
PICの割り込みはひとつだけ使っているぶんには我慢もできるのですが、何種類かの
割り込みを使うようになると憂鬱になります。
>>351 どうもです。。とりあえず今回はその方法で組むことにしました。
354 :
名無しさん@1周年 :02/04/14 02:05 ID:35GaG1Us
なぜ国産がセカンドソースせんの?
avrfreaksにつながらない。。。
357 :
:02/04/20 14:55 ID:/K1bfm8i
358 :
名無しさん@1周年 :02/04/23 09:09 ID:PRe+MNSU
あたらしい SXマイコンがでたみたいなので使ってみたいのですが よいCコンパイラがないでしょうか。結構検索でしらべてみたのですが・・ C2CとCCSのコンパイラはみつけました。 C2Cは完成度が不安ですし、CCSのは統合環境のPCWしかないみたいなので 結構高いみたいです。
359 :
名無しさん@1周年 :02/05/02 23:03 ID:wLHgLRoZ
249のPICライター製作してみたんですが、エラーが出て 書き込みも読み込みも出来ません。 どなたか同じような経験の有る方いらっしゃいますか? いらっしゃいましたら、解決法がわかれば教えていただけませんでしょうか。
どんなマシン使ってどうやったらどんなエラーが出たのか何も書かないで聞いても答えるの無理だと思わない?
361 :
名無しさん@1周年 :02/05/03 09:36 ID:bwO9CySa
359です。PICは16F84Aで、使ってるパソコンはバイオのノートで COMポートが外付けのものです。また使ってる書き込みソフトは IC-PROGというものです。 ちなみにエラーの内容としては、書き込み時に「次のアドレスで照合エラー 0000h!」、読み込み時にはエラーはでないがまったく読み込んでないという 内容です。どなたかおわかりになるかたがいらっしゃいましたらお教え いただけませんでしょうか。
vddとMCLRの電圧を計ろう
363 :
名無しさん@1周年 :02/05/03 23:50 ID:gF2IKBqC
ボードの作り間違いは本当にないのか? おれもVddが何ボルトになってるか知りたいな。 ライターは他にもいっぱいあるからな
364 :
名無しさん@1周年 :02/05/05 19:01 ID:Ur0jbFPF
age
365 :
名無しさん@1周年 :02/05/06 01:21 ID:TyaYT92G
PIC用のBASICコンパイラおしえてください。 できるだけフリーでおねがいします。
366 :
名無しさん@1周年 :02/05/06 05:14 ID:WNdK6FJz
すでに検索した上でのカキコだと思うんだけど、以前にあった所みんな 消えちゃってますね、いまあるのは商品ばっかですね。 Cなら試食版がマイクロチップのHPにもあるんですね。。。どうです Cに乗り変えたら。どうせ遊びでしょう?
367 :
名無しさん@1周年 :02/05/06 09:55 ID:XJAfFgCC
遊びだからこそBASICでやりたいと思われ。
あぼーん
何が何でもBASICならCPU変えれば? 8052とか H8もあるのかな? 海外のサイトも探してみた? いくつか試してココで報告しる!
370 :
365 :02/05/06 13:11 ID:awUSUTEc
BAISスタンプという手もあるようですが、どうも金がなくて・・・ >366 Cは結構でまわってるようですね。 Cは結構使ってるんですが(LINUXプログラムで)どうもPIC用では、使いにくくて(使える命令が少なくて)。 >367 そのとうりです。 >369 8052やH8はBASICがあるんですか? 海外のサイトも検索しましたが、あまりありませんでした。(PIC16F84用が無い)
>>370 8052はBASIC-52
H8は秋月でBASICコンパイラあるでそ
googleでCPU名+「BASIC interpreter」で検索してみそ
C使えるならAVRかH8にすれば良いのに
親切終了
372 :
名無しさん@1周年 :02/05/07 04:33 ID:Wzy2KoZ3
AVRとPICって世界的なシェアではどっちなの?H8は違うらしい事は予想つくが
373 :
名無しさん@1周年 :02/05/07 12:19 ID:yYJA/LsB
PICでDA出力出したい時にはどうしてます? すなおにDAの石に8ビットパラレルで繋ぐのが普通でしょうか?
374 :
名無しさん@1周年 :02/05/07 14:35 ID:Cx6DwyLf
分解能や速度によるけどぉ 抵抗ラダー PWM→整流回路 シリアルD/A
375 :
名無しさん@1周年 :02/05/09 18:07 ID:v7y0Ifr/
PIC16シリーズについているUSARTのRX、TXのTXのみを使用して もうひとつはIOポートとして使用したいのですが可能でしょうか。
入力あっらたデータ送るの書いて動かしてみたら?
377 :
名無しさん@1周年 :02/05/12 21:54 ID:WgbVKo7A
>>373 今月のトラ偽に、PICに繋ぐ、ラダー抵抗D/Aが載ってたよ。
ところで、このラダー抵抗D/Aって、集合抵抗みたいな
ワンパッケージになったのってないのでしょうか?
378 :
名無しさん@1周年 :02/05/13 00:02 ID:DzZQEjnH
>>377 SOPのなら使ったことがあるよ。メーカー名忘れちゃったけど。
松下とかリケンあたりを調べてみてはいかがでしょうか。
379 :
名無しさん@1周年 :02/05/13 00:07 ID:qtSw2RpL
380 :
名無しさん@1周年 :02/05/13 00:58 ID:4RaJDxfU
そんな抵抗アレイは何十年も昔から抵抗メーカーのカタログにあるじゃん。 トラギ信者さんは全く世間を知らないんだねー。専門馬鹿とも言えない、 なんて言えばいいんだろう。やっぱ技術者ではナカータたというコトなのかな。 新人は世間知らずになるような本を読んじゃダメだよー。メーカーのカタログ を直接見て学べよ。
381 :
名無しさん@1周年 :02/05/13 02:03 ID:m/F5+/3i
>>380 トラ技の記事で一つも新しい事が無いとか自分の知ってる事しか載らない
なんて言う奴は思い上がりってるとしか思えない。
ある程度技術が解ってきて、トラ技の掲載範囲を少し超えただけなのに
いきがるんじゃないよ。
教えて君もアホアホだが知ったか馬鹿はそれを超える馬鹿だ。
382 :
↑ :02/05/13 02:57 ID:199AAalc
今どき珍しい脳血管障害が来たよ
>>382 病気・障碍を嘲笑するような書き込みは不愉快です。
ラダーはベックマンとかも出してるね。 精度の問題はどうなのかな? ラダーだと相対精度の規定はされているが、 D/Aとしての直線性は保証されないでしょ。 絶対精度は電源電圧,各I/O出力電圧の差と 共にスパンの精度に影響するし。 モメる前に何で誰もPWMや他の方法を薦めないの?
385 :
名無しさん@1周年 :02/05/13 12:22 ID:W5UNbO3Q
千石で、DAC08が300円で売っていた様な覚えがあるなぁ。 PIC16F84でも、タイマー割り込みを他に使っていないのなら、 PWMがなんとか作れるよね。(タイマーオーバーフロー割り込みで、 デューティー比となるタイマー値をセットする)
>>384 >モメる前に何で誰もPWMや他の方法を薦めないの?
>>377 さんが引用されている雑誌記事が、DDSだったらからではないかと
思います。
トラ疑信者に他宗派を勧めても無駄。逆切れして狂うだけだという過去の実績がある。トラ擬スレ、クリスマスツリースレ参照。
388 :
名無しさん@1周年 :02/05/14 04:26 ID:YVJgGvZt
>>387 その見識では大した仕事もしてないんだろうな・・・
信者も大概だが信者叩きも見飽きた。揉め事を持ち込まないでくれよ。
389 :
名無しさん@1周年 :02/05/14 04:57 ID:el3Oi0fI
だね。いつももめ事は信者が発端だから自重して欲しい。
390 :
激亀レス :02/05/16 02:40 ID:q5Wur5oi
見あたらない??
393 :
名無しさん@1周年 :02/05/17 12:51 ID:MgsDwVWH
ChaN氏のAVRライターって、やっぱりWin2k/XP系統では動かないんでしょうか? これだけの理由で共立ドングルライターを使っています(^^;) win98/DOS環境を今更構築するのも面倒で。。。。
394 :
avrgcc-場違いかな? :02/05/17 18:55 ID:P4K4tEPx
どしろうと質問で申し訳ないんですが、教えてください avr-gccで、同じ2バイトのSRAM変数を上位下位ばらばらに扱ったり まとめて2バイトで扱ったりするにはどうしたらいいのでしょうか? unionつかって union LoHi { Uint16_t i16; Uint8_t b8[2]; }; とでもするのが普通なのでしょうが、AVRの乏しい資産でこれだけの ために配列使うのが何となく芸がないような気がしています。 ポインタ使う手もあるのでしょうけど、あちこちでこのような 操作が生じそうなので、もっと美しい方法がないかとあがいています。 union LoHi { Uint16_t i; Uint8_t Lo,Hi; }; これだとLoHi.iもLoHi.LoもLoHi.Hiもみんな同じアドレスを指し示すんですよね? Uint16_t i;とUint8_t Loが同じアドレスを指し示して、 Uinit8_t Hiが次のアドレスを指すようにするスマートな方法はないでしょうか?
>>394 別に配列でやってもよいとは思うんだけど...。
union LoHi
{
Uint16_t WORD;
struct
{
Uint8_t Lo;
Uint8_t Hi;
} BYTE;
};
ってのはダメ?
396 :
394 :02/05/17 21:48 ID:sBrJE+v6
>>395 あ、そうか、struct入れ子にすればいいだけのか・・・
アホな質問に答えていただいてありがとうございました。
397 :
どしろうとですけど :02/05/26 08:10 ID:ze7hBe6g
>>100 あの回路の126って、接続スイッチを入れている間は単なるバッファとして
働いているんですよね。接続スイッチなし版などまさに単なるバッファ。
(もしかしたらC1とRで遅延回路形成してる?でもLPT版はそんな考慮してない)
接続スイッチ版のほうはまさに
>>100 さんの言う4信号のスイッチですよね。
結局どうしても切り離したければこれしかないように思えます。他に該当品は
たくさんあると思いますが。
電源電圧の違いですけど、ISP中だけターゲットの電圧を5Vにするのは
できないでしょうか?たぶんターゲットが低電圧のままだとHiレベル信号が
高すぎて問題あるような気もするのですが?
(絶対定格でRESETpinを除くpin許容電圧はVcc+0.5Vまで)
398 :
どしろうとですけど :02/05/26 16:08 ID:ze7hBe6g
ぎゃ、ごめんなさい、大昔のリストに間違えてResしちゃいました。 とっくに終わった議論のようですね。
399 :
初心者にもなれない(^^ :02/05/26 18:39 ID:7EyUmk1u
共立電子が出しているドングル基板でAVRのISP書き込みを行おうと 思っているものです。ところが、どうしても書き込みが安定しては できません。(数度は成功しています) 素人で何が問題かよく分からないので、とりあえずかけるだけ状況を書いてみます。 長文ごめんなさい。 現象: たまに書き込みに成功するが、多くは失敗する。 Readはしばしば成功するが、やはり時々失敗する 失敗するときはAVR2313が確認できないとATMEL AVR ISPがメッセージを 出してくることもあるし、Writeに失敗したと言ってくる場合も多い ちなみに、同じ2313を外して秋月のAVRライターで書き込むと何事もなく書き込める PC側で使っているソフト=Windows2000SP2+ATMEL AVR ISP2.4 + avrgcc (2001/08) 接続: PCのLPT1:から1.5m延長25pin-dsubケーブルで共立ドングル基板に接続(全結線なのは確認済み) 関係あるかどうか判りませんが、このLPT1:には普段はCanonのプリンタがつながっており、 ドライバもインストールしてある状態です。 ドングル基板からは共立のキットに付属していた50cmほどのフラットケーブルで接続 AVR側:2313、10MHzセラロック接続 電源は78M05。入力側に10μF、出力側に0.1μF積層セラコン接続で、 これに9V電池(単3×6本)接続 今のところPD6にLEDがpullupでつないであり、 PB2〜7にLCD用のコネクタを接続 念のためISP中はLCDは抜いてあります。 電源OFF状態でのPB2〜7相互の導通はないのでショートはないと思います。 同じ基板・AVRで、点滅プログラムのavrgccによるコンパイル、ISP転送、動作確認は一度は成功しています。
400 :
初心者にもなれない(^^ :02/05/26 18:40 ID:7EyUmk1u
長すぎると怒られたので、分割して続きです。
ISP-I/F
AVR マイコンを使ってみよう
http://www.psn.ne.jp/~z-gypsy/kousaku/avr/index.html このページを参考に、対応pinを直接接続しています。
Windows2000での動作実績もこのページを見てOKだと考えました
http://www.anc.meta.ne.jp/~eleshop/DIGIT/DATA/AVR/check.pdf ドングル側のコネクタのハンダ付けを反対にしてしまったので、
ドングル側とターゲット側で、コネクタのpin番号対応は同じになりました(^^;)
上記PDFのドングルの回路図(P11)ともにらめっこして、
pin1/3/5/7=GND
pin9=+5V(2313-20pin)
pin2=MISO(2313-18pin)、
pin4=SCK (2313-19pin)
pin6=RESET(2313-1pin,念のため47k-pullup)
pin8=LED+470Ωを介して+5V
pin10=MOSI(2313-17pin)
(これ書きながら全て導通チェックしました)
上記共立電子提供のPDFによると、LEDでプルアップして、IF間にDiodeを
かませていますが、参考にしたページ(AVR マイコンを使ってみよう)では
直結になっています。面倒だったし、これで動くならと直結させてしまった
のですが、実際動かないところを見ると、やっぱりプルアップが必要なの
でしょうか?74244(OCではない)の仕様を見る限りでは直結でも問題ないの
ではと乏しい頭で考えているのですが、いかがでしょうか?
その他見逃している点などありましたら教えてください。
実は先に秋月のライターも買っていたので、これでやっても
いいのですがいちいちAVRを抜き差しするのが面倒なので
できれば共立ドングルで行きたいのです。
秋月ライターにISP信号線らしいランドが6つ並んでいますが、
これを引っぱり出してもISP書き込みできるんでしょうか?
401 :
初心者にもなれない(^^ :02/05/26 18:50 ID:7EyUmk1u
もう1つ。 ATMEL AVR ISPでプリンタポートチェックすると、LPT1指定で Port available, STK200 or Old Kanda ISP Dongle Found と返ります。ドングルの認識はしているようです。 Advanced ISP settingsはデフォルトのままです。 Reset=Active Low,20ms,Shutdown=Reset High, Advanced Option: Disable Signature Check = CheckBox OFFのまま
402 :
名無しさん@1周年 :02/05/26 19:06 ID:JtOUU1R7
LPT1:を使うプリンタドライバを一旦外して試してみたらどうでしょうか?
403 :
初心者にもなれない(^^ :02/05/26 19:19 ID:xc+JqvbP
やってみます、と言いたいけどそのたびにドライバはずすのも辛いので、 プリンタをUSB経由に切り替えとくというのでお茶を濁してイイですか? (USBでもシリアルでも使えるCanon F620ですが、USB経由だとなぜか 安定しないのでLPT1:に繋いであったんです)
404 :
名無しさん@1周年 :02/05/26 19:39 ID:JtOUU1R7
はい。そのプリンタが使用するポートがLPT1:以外ならよいです。 (LPT1:を使用するプリンタが1つも無い状態にする)
yapp使うといいかも。 漏れも書き込み不良でえらい嵌ったが,まさかソフト変えるだけで 直るとは思いもしなかったよ。
406 :
初心者にもなれない(^^ :02/05/26 21:48 ID:xBOWjRpi
全プリンタの出力先をとりあえずFileにして、再トライしてみました。 認識、ERASE、READはほぼ問題なくできるようになりました。 関係はしているようです。しかし、Writeすると4バイトほど書き込み失敗して しまうようです。ケーブルの問題かと思い、ドングル基板をPCに直接刺して みましたが、変わりありませんでした。 一度失敗すると、次の操作はISPライターソフトが必ずハングアップする ようで、どうもうまくいきません。 なんかWindows2000がらみのような気がしてきたので (ISPAVR2.40の日付は1998,サポートOSもWin95/3.1らしい)、 新版ならどうかとアトメルHP探したらISP3.30というのがありましたが、 これだと認識すらされず。 どうも共立ドングルはSTK200相当らしいのですが、どこを探しても 2.40より上のVersionが見つからず参っています。 AVR Studio 3.53からの書き込み(STK500,AVR Prog)もどうも認識されないようです。 うーむこれはISP2.40でWin98を使えと言うことなのだろうか? 職場にあるThinkPadにはWin98入っているので、そっちで試してみます。 STK200のpdfがあったのでこのISPサポートの項を見たところ、 プルアップのことは書いてありませんでした。 (ISP側じゃなくて接続相手側に抵抗かマルチプレクサ入れろとは書いてある)
407 :
初心者にもなれない(^^ :02/05/26 21:49 ID:xBOWjRpi
>>405 yappってなんですか?って聞く前に検索かけてみます。
409 :
初心者にもなれない(^^ :02/05/27 10:27 ID:wszRgOEv
おはようございます。
yaap+Win2k+port95nt on ThinkPad 玉砕(^^;)STK200ドングルを認識せず
Win2kのデバイスマネージャーを見たらLPT1:portが0x03BC(Alternate LPT1:)に
なっていたので、yapp設定を変えてみましたが、これでも×でした。
yaap捜していたら、こんな(・∀・)イイ!!ところを見つけました。
http://www.tctvnet.ne.jp/~jcl/AVRprog.html ここにSTK200ドングルの回路図ありますが、
あらら、共立の奴と回路が一部違う!!(DB25の2pin-12pinの結合がない)
yaapで動かない原因はこれかな?
ここでATMEL ISPAVRのver2.64も見つけました。
しかしこれも認識はするがエラー頻発ですね。
認識はするので2-12 jumperの問題ではなさそうですが。
しかしいろいろあるんですね。秋月と共立の奴しか知りませんでした。
片っ端から試してみようかな。COM使用ponyprogなんかよさそう。
410 :
初心者にもなれない(^^ :02/05/27 18:50 ID:A+b4xR2n
仕事終わって早速またやってます(^^) Win98でやってみたところ、書き込みの前にERASEを掛ければ(AUTOに任せれば) ATMELのISPAVRで百発百中で書き込めるようになりました。 (それでもたまにはエラーでる) どうやらWin2kでポートを叩くプログラムを使おうとしていたのが 原因だったようですね。お騒がせしました。 でもこのままでは職場のThinkPadでしか書き込みできない。 自宅のPCにWin98入れるか、どうにかyaapを使用可能にするかしないと。
>>393 うちではWin2K(sp2)+ChaN氏のAVRSS.EXEでちゃんと書けてます。
412 :
初心者にもなれない(^^ :02/05/28 00:04 ID:mBltLWub
>>411 AVRSSはOKなんですか。STK200ドングルをそのままCOMポートに
置き換えたような感じですね。(IO足りない分切り離しは手動?)
COMならOKなのでしょうか?
413 :
名無しさん@1周年 :02/05/28 00:44 ID:IcYctSLM
>>409 そのホームページなんて重いんでしょ。画像なんとかしたらと言いたい。
ところでDongleとは何の意味なの?
>412 やってみるとWin98系よりかなり遅く動くようです。 あと、USBなどで増設したCOMポートでは出来ませんでした。 Dangle:ドングル ぶら下げるものと言う意味。 普通、ある種の暗号を作り出す回路が入っていて、 プリンタポートなどに取り付けてソフトウェアの起動キーとして使う物の事。
あう。間違えて出張をつけてしまった・・・
416 :
AVR初心者の杞憂? :02/05/31 12:11 ID:w8ULvy3J
INT0/INT1に外からの入力を入れて、これであれこれやりたいとき、
ノイズ対策はどのようにやればいいのでしょうか?
接続相手は他の論理回路の出力で、メカニカルスイッチのようなチャタリングは
ないですが、ノイズが多い場所で40cmほど線を延ばすので、ノイズ対策は考える
必要があるかなと思っています。数Hz〜300Hz程度の信号3つで、
そのうちの1つはDuty比が1%程度になることがあり、Duty比の測定を
要します。これはINTではなくTimer1-input-captureでも使おうと
思っているのですが(ハードでノイズ除去設定ができる)、あとの2つの
扱いに困っています。
とりあえずはINT割り込みルーチン内で、全部で3度くらいport読んで
全部Loなら(DownEdge割り込みの場合)OK、1つでもHiがあればその時点で
操作をご破算にして抜けるようにすればいいのだろうか??と考えています。
しかし例えばINT自体を含めて4回のサンプリングでLo→Lo→Hi→Lo→
(その後ずっとLo)のような場合(Hiはノイズ)、本当は割り込むべきなのを
無視してしまうことになりますよね。
INT割り込み中の間でもちゃんとHi→Loの時点でGIFR-INTF0/1はセットされ、
INTから抜けた時点でまたINT割り込みがかかってくれるのでしょうか?
それなら簡単なのですが、そうでない場合はどうしたらよいのでしょうか?
こういう場合でも割り込み処理として扱うにはどう処理したらいいのでしょうか?
どうしようもなければINTは諦めて、
Timer0で204.8us程度の割り込み組んで、
http://elm-chan.org/docs/te02.html のような処理をしようと思っていますが。
仕事でお前のような質問したら来週から配置変えだな。
418 :
416 :02/05/31 20:47 ID:OxuIt7+h
>>417 おそらく私宛の発言だと思いますが、
仕事上での質問ではありません。
本職はAVRのようなものとは全く関係ない仕事です。(趣味の工作)
初心者スレでもだめなほどレベルの低い質問/調べれば簡単に分かる質問と
いうことなんでしょうか?
そういうことなら質問は取り下げてなんとか自分で調べますor考えます。
失礼いたしました。
ノイズ対策はソフトウェアじゃなくてハードウェアでする事です。 最低でもハードウェア割り込み処理は、 割り込み応答時間+処理時間+割り込み復帰時間、が必要で それより早い変化には追従できません。 AVRの割り込みの場合、最速で応答を返すなら .org $1 ;外部割込み0のベクタアドレス set ;Tフラグをセット reti ;割り込み復帰 で、メインループ側でTフラグを見ること・・・が最速と思われますが これでも割り込み認識時点から7クロックの時間が必要です。 したがって、10MHzで動作しているAVRにこのプログラムを動かす場合、 「少なくとも」0.7μsより短いパルスは必ず除去するか、 絶対に入ってこない事を前提とする必要がある、と言うわけです。 ちなみに、エッジトリガ割り込みは パルスエッジを検出している、と言う意味ではありません。 レベル割り込みのように割り込み線がアクティブな間 ずっと割り込みが発生しつづけるのではなく、 パルスの変化をCPUのクロックで同期化して、 入力が変化したときに一回分の割り込みパルスを発生する・・・と言う意味です。
>>418 もっと具体的な内容を示してくれないと、ノイズ対策の話は検討すべき
範囲が広すぎてレス付き辛いと思いますよん
ノイズ源は何? (高電圧?大電流?)
40cm延ばす線は何? (ツイスト線?シールド付き?)
ソフトで逃げるのはダメ?
それよりも、AVRで3種類の信号を取りこぼさないで測れる?
300HzでDuty1%なら33.33usでそ
同期してるのかなぁ?
(port読む所の説明部分が理解出来てない)
初心者ならば苦労しそう。
他にカウンタが何個も載ったCPUも探してみたら?
でもって、 エッジトリガ割り込みに設定した場合についてのみ 割り込みが一回分だけ予約されます。 ただし、一回なので処理時間には要注意です。 しかし・・・・40cmの伝送距離でノイズがはいると言うのも・・・
422 :
416 :02/05/31 22:55 ID:w1B4BvY1
418は失礼な書き方でした。すみませんでした。
答えていただいた方々ありがとうございました。
作りたいのは車の回転計で、とりあえずは1信号なんですが、
いろいろ考えている内に速度や開弁率計も作りたいなどと考え
はじめてしまいまして。ちなみにAVRで現在までに作ったことが
あるのはデジタルクロックもどきと周波数計もどき程度なので、
すぐに上記のようなものが作れるとは思っていません。
信号源は1回転に2度出る回転信号です。
300Hzは9000rpmの時に想定される数値です。
とりあえずはこれだけの予定です。
速度信号は(今のところは考えていませんが)125Hz程度までいければ
OKということになるようです。
>>420 さんへ
duty1%前後?くらいになることがあるのは開弁率(インジェクタ)の方です。
ただduty1%などというのはアイドリング時くらいですので、
9000rpmで1%(150Hz,1%=67us)を見たいとは思っていません。
その1/5程度300us程度の分解能で、900rpmで0.2%、9000rpmでは2%刻みで
できればいいとは思っています。これは私のレベルでは夢を見ている
段階だと思うので、忘れてくださいm(_ _)m
>>419 >「少なくとも」0.7μsより短いパルスは必ず除去するか、
>絶対に入ってこない事を前提とする必要がある、と言うわけです。
ということは、もし支障があるなら、きちんとシールドするか
信号の測定に影響しない程度のLPFを入れなければならないと
いうことですね。
40cmでノイズ云々というのは、オーディオアンプには結構ノイズ
入りまくりで苦労したのでちょっと考えすぎたかもしれません。
もっとゆっくり考えます。ありがとうございました。
423 :
AVR :02/06/01 00:15 ID:MXpoa6kD
ちょと下記を教えて下さい。 最終的には7セグなどで眼で見るのかパソコンなどでデータ記録か 実装空間の大きさは 電源事情は 予算は(そこまでかかるなら止めとくという限界)
424 :
416 :02/06/01 13:16 ID:Cnc32+eG
>>423 >最終的には7セグなどで眼で見るのかパソコンなどでデータ記録か
両方欲しいですが、PC接続は今はまだ考えられないです。(UART使ったことない)
運転中に見られる情報は限られているので、最終的にはLEDバー表示か
3-4桁程度の7segLEDにしたいと思っています。できれば必要に応じて
一時的にLCDがつなげられればいいなと考えています。
リアルタイムに表示させたいと思っているのは巡航支援のための車速微分表示、
(加速度センサーだと登坂すると減速しても加速を表示する)減速比(車はATです)
などです。
実装空間は表示部別でVHSテープくらいまでは押し込めます。
電源はできれば車から取りたいです。
問題がありそうなら別電源(電池)駆動でフォトカプラなどで
車と切り離してもいいです。
予算は、趣味活動ですから小遣いが許す限り(足りなければゆっくり
やる)です。既製品買ってもそう高くもなく簡単なんでしょうけど、
先の加速表示(≠加速度)をリアルタイム表示するものなどはなかなか
ないんです。
425 :
420 :02/06/01 14:26 ID:DdtQ6fqM
426 :
416 :02/06/01 17:39 ID:rxCRvWhh
427 :
AVR :02/06/03 07:56 ID:t6CJ9Arv
>>424 拝見しました、様子が大体分かりました。もう少し教えて下さい。
1,燃料噴射の信号は、エンジン2回転に1パルスですか。
そのパルス幅の最低値と最高値のおおよその値を。
信号はどこから取り出すか、電圧値とパルスの正負を。
2,Tachometer用として、燃料噴射の信号を使うことも
出来ますよね。もしダメなら、一回転2パルスの電圧値
とパルス幅を。
3,車速用信号は車輪から取りますか?その電圧とパルス幅を。
で、
1,最初に考えた通りでよさそうですね、燃料噴射信号で
タイマ1をキャプチャする方法を少し工夫しましょう、
噴射開始のエッジで割込み処理をした後、即エッジ選択
ICES1を逆にすれば、噴射終わりでまたキャプチャ割込
が起きるので、噴射時間と回転数が同時に測れてしまい
ます。
2,車速信号の方は、私ならあっさりマイコンをもう一個使い
ます。外部割り込みにすれば一個に詰まると思いますが
窮屈だし7セグ表示が多桁になって苦労しそうな気が。
428 :
416 :02/06/03 19:15 ID:ozf1rzys
まずはあれこれやっていますが、機能を制限しないとProgramMemoryの方が あっさり一杯になりますね。2313+avrgccなんか使うからいかんのでしょうけど。 CPUを替える前にどうにかならないかと、どうにか多バイト演算を減らそうと 悪戦苦闘中です。8515指定でコンパイルして、現在1200ワード弱(^^) 普通に考えれば確かに単データ表示が精一杯のようです。 1.インジェクタの方は今のところ夢で、最初はフュエルカットを表示する 程度のことしかしない予定ですが(^^;)とりあえずエンジン2回転に 1度の噴射(気筒毎噴射)で、パルスは開弁時のみLo,あとはHi(14V) です。パルス幅はアイドリング時が狭くDuty1.5%/6Hz=2.5ms、 それ以上の回転数だとよく分かりませんがおそらく周期だけが縮んで パルス幅自体は似たようなものorそれ以上ではないかと思っています。 (エンジン1回転させるための燃料はあいどりんぐじより多いだろうとの 信号取り出しはECU付近からの予定です(既に取り出してある) 直接インジェクタにつながっている線らしく、+30V程度のスパイクが あるらしいので(整備書より。実測はしてません)、ダイオード プルアップかツェナー制限がいると思っています。 抵抗+ついでにインバータを噛ませて正論理にして入力しようと考えています 2.最初それも考えたのですが、燃料噴射停止時に表示不能になるのが難点かと。 ついでに言うと、Rev信号は1回転に2度、10Vのパルスで出るようです。 6000rpmで100Hz. 3.車速信号もECU-インパネ間にある信号を使おうと思っています。 こちらは5Vで、車輪1回転に4パルスのようです(39cm/Pulse) 140km/h(39m/s)で100Hzになります。 燃料噴射は正直今は諦めてもいいと思っています。まだいろいろ 分からないことがありそうなので(無効噴射時間が不明など) まずは速度+加速計、次に回転計+減速比表示計を考えています。 複数CPU使用も少し考えています。ただ1つのCPUでどうにか2つ取り込み たい。と思う理由は、減速比表示させてみたいという妄想のためです。 1つはデータ取りに専念させてRS232Cで送りまくるだけをさせて、 もう1つでデータを受けて解析+表示を行う、なんて考えています。 これだとあわよくば表示部を外してPCを繋げばそのままデータロガーに 早変わりなんて(^^;)ま、初心者の誇大妄想です。 まずは速度計+加減速計に絞って挑戦します。プログラムメモリも足りないし。
429 :
416 :02/06/05 22:09 ID:lG5MjUDb
その後:
サイズ縮小に挑戦とばかりまずはインラインアセンブラに手を出して、
それなりの成果を得たのですが、
「なんだ!?、AVRのアセンブラってめちゃくちゃ使いやすい!」
いやほんとに、こんなに楽に書けるとは思っても見なかったです。
アセンブラなんて6809以来なんですが(^^)
結局アセンブラに戻りそうです。
>>425 紹介のお手本もありますし。
やっぱり。。。オーデオ屋であったか。 技術的内容がおざなりで感情で書いてる長文を見て、こいつはダメ技術者に 違いないと直感したのは当たっていたな。 この板は技術相談は受け付ける。しかし工作日記報告は場違いだ。
431 :
420 :02/06/06 10:21 ID:J7koT0mT
>>430 あなたこそ場違い。
縄張り意識を発揮したいのなら自分で掲示板立ち上げて
そちらでどうぞ。
>>429 勝手に直リン貼ったけど、管理者の方へお礼や情報交換のメール
とか出されてみては?
私自身はエンジンとか全く不勉強なので何も答えられないでいたのですが...
AVRのアセンブラ楽でしょ?
でも6809以来とは、AVR初心者でもCPU(MPU)((マイコン))熟練者じゃないですかー
電気のノイズはしっかり対策し、言葉のノイズは無視して行きましょう。
432 :
416 :02/06/06 10:51 ID:agJwzAxO
>>430 ,
>>431 了解しました。とにかくだらだらと日記のように書かれるのは迷惑と思われて
いるのは分かりましたので、今後は自重します。調子に乗りすぎました。
ちなみに私は本職は技術者とはほど遠い(オーディオ屋でもありません)ので、
当然「だめ技術者」以下です。
>でも6809以来とは、
ガキのころ、6809(FM-7)の小さなアセンブラプログラムを作ったことが
あると言う程度です(^^;)その後はアセンブラについては今までご無沙汰です。
>管理者の方へお礼や情報交換のメール
それも礼儀ですね。ご指導ありがとうございます。
そのうち参考にさせていただいている旨お礼のメールします。
それでは、この辺で失礼します。
434 :
初心者になれた(^^ :02/06/09 16:38 ID:s/iISI0l
>>399 でWindows2000上で書き込みができない件で相談にのって
いただいた件ですが、
>>409 で書いたように共立電子(デジット)の
ドングル基板のDSUB25コネクタの2-12間にジャンパ線を入れたところ、
yaap+port95ntであっさりと認識でき、書き込みもWindows2000上で
安定して行えるようになりました。
yaapを教えてくださった
>>405 さん、ありがとうございました!
435 :
名無しさん@1周年 :02/06/10 01:30 ID:WRvyAkJb
ご苦労様なことで…
436 :
名無しさん@1周年 :02/06/14 04:09 ID:y6JOijLY
age
437 :
名無しさん@1周年 :02/06/14 04:22 ID:b8E4mWAW
数年まえは電子工作といえばPCの自作を意味したものだったが 今はそれも終わったねえ。
438 :
名無しさん@1周年 :02/06/14 04:40 ID:y6JOijLY
>>437 それは初耳
電子工作といえば、ラジオとか、電子オルゴールキットとか鈴虫でしょ
439 :
名無しさん@1周年 :02/06/14 04:42 ID:y6JOijLY
PCの自作≒マイコンの自作=TK-80の自作 レベルなら理解できる
438は終戦の玉音放送を小学校高学年で聞いた年代だろうな…
441 :
名無しさん@1周年 :02/06/14 06:51 ID:xCrEooFT
数十年前=真空管ラジオ 20年前=電子オルゴール 十数年前=マイコン自作 数年前=PC自作(組立) ってな過程かな?
個人的にAVRとPICを同列にするのは気が引けるが、同じ分野といえばそうなんだよねぇ。
443 :
名無しさん@1周年 :02/06/14 13:39 ID:60v/X5E/
>>437 単純なPC組み立てを、普通「電子工作」とは呼ばないよ。
最低限半田付けは必要だろう。
444 :
名無しさん@1周年 :02/06/14 22:00 ID:RR0UThOu
>>443 NotePCのCPUやXtal付け替え(一応ハンダ付け)は電子工作にはいるかな?
チョット無理か。
445 :
名無しさん@1周年 :02/06/15 00:38 ID:UvigHHmD
446 :
名無しさん@1周年 :02/06/15 01:10 ID:ddvDDZhE
>>445 でも、やっぱりそれも電子工作にあらず
喩えるなら、ミニ四駆のモーターやギアを換えたとか
プラモラジコンのバッテリを6V→7.2Vに換装する程度。
スクーターのリミッタカットするとかプーリー換えるとかな
447 :
名無しさん@1周年 :02/06/15 01:16 ID:ddvDDZhE
PIC 877のデータシート(Microchipから無償ダウンロード出来るやつ) プリントアウトしたものが3000円で売られてるってのはどーよ??
448 :
名無しさん@1周年 :02/06/15 01:36 ID:3NPd+lFb
てーかさPCの自作とかこのスレでいうかヴァカ
449 :
名無しさん@1周年 :02/06/15 10:51 ID:FrDiSCpx
恥ずかしくないのだろうか。。。
451 :
名無しさん@1周年 :02/06/15 15:14 ID:ddvDDZhE
>>450 いや、大阪日本橋にある某ジャンクパーツ屋(かなり有名)
452 :
名無しさん@1周年 :02/06/15 15:40 ID:ddvDDZhE
453 :
名無しさん@1周年 :02/06/15 15:57 ID:x68ly1Aq
>>447 まあ厚顔無恥な○立だから仕方ないな。(w
454 :
名無しさん@1周年 :02/06/15 20:06 ID:pLY2M1sd
>>447 せめてCQ出版社の規格表本みたいな形態ならまだいいが、
コピーに3000円??うーむ、microchipがそういう商売してるはずもないよねえ。
microchipに連絡すればデータシートを収めたCDROM送ってくれるのに。
456 :
名無しさん@1周年 :02/06/15 20:31 ID:ddvDDZhE
>>452 の写真では少々判りづらいですが、単にプリントアウトして
ステープラで綴じて袋に入れただけのもんです。
たしか200ページちょいだったから、10円コピーを使ったとしても
2000円ちょいでしょ。
レーザープリンタのコストって一枚2円ちょいだっけ?
それでも500円が良いとこでしょ。。。
(CQ出版の絶版本のコピーサービスもボッタくりだとは思うけど)
457 :
参考資料 :02/06/15 20:39 ID:nLwErOSH
>>456 ちなみに、日刊工業新聞社の絶版本コピーサービスは1ページ100円だ。
458 :
名無しさん@1周年 :02/06/15 20:48 ID:ddvDDZhE
まぁCQ出版とか日刊工業新聞のコピーサービスの場合は、 自社の過去の著作物を「特別に」出してるわけだから、 高いとは言え、ある程度は仕方ないかな。 また、その値段でも欲しい情報なら出すとは思うんだけれど。 あの3000円のデータシートは・・・売れないでしょうな。
459 :
名無しさん@1周年 :02/06/15 23:57 ID:a+F/q1i9
ワハハ商魂アゲ 商売としては十分ありだ。見下す方が間違ってる
>>549 ヤフオクで取説のコピーを売るのもOKになるのか?
461 :
名無しさん@1周年 :02/06/16 02:36 ID:i4NUX0OH
>>549 の回答に期待(w
その前にdat落ちするに3000ハラタイラ(・∀・)!!
462 :
名無しさん@1周年 :02/06/16 02:38 ID:i4NUX0OH
まぁ、マジレスすると、デジットがマイクロチップ社の許可を得て販売している のなら、問題無いだろうと思う。
あと130レスほどお待ちくさい
464 :
昔のマイコン屋 :02/06/16 19:54 ID:2fotV6Ty
>>439 年齢は???
40歳ってことはないね、50くらいかな??
465 :
名無しさん@1周年 :02/06/16 21:46 ID:ZQ83tRT9
PICのアセンブラで、 movlw STATUS と movfw STATUS 間違えた。デバッグ一時間かかったぞくそぅ。この分かりづらいニモニック何とかならないもんかしら。 あと、 addwf tmp,f と addwf tmp,w も間違えた。こんな間違いするのって、あたしだけかしら?
466 :
ななし :02/06/16 22:09 ID:SVkZ4R5Y
>>465 私もよくやってしまいます。なので、Cで書くことにしました。
どうしようもないところだけ、アセンブラです。
気付くと、アドレッシング以外はほとんどアセンブラになって
たりしますが、ケアレスミスは激減しました。
467 :
439 :02/06/16 23:17 ID:i4NUX0OH
468 :
ななし :02/06/17 01:19 ID:sg1z5+mW
>>467 PICの容量ですと大したこと書けませんので、あまり変わりません。
ループと代入だけみたいなものですから。
ただ、PIC独自の命令を使いたい場合などは
>>466 で書いた通りアセンブラ
で入れます。容量少ないので、インラインアセンブラでも十分です。
ピク使ってる事自体が恥
470 :
名無しさん@1周年 :02/06/17 18:26 ID:8+6kR17e
PICのレジスタ並みに小せぇ....ハァ。
>>465 マクロ定義しまくって解決するとか。他人が読めないソースになるな(^^;)
472 :
465 :02/06/17 22:39 ID:YBJHhh5F
>>471 仕事で使ってるので、それはちょっと・・・
やっぱり元がしっかりしてくれないとねぇ。
MPLAB使ってるんだけど、日本語でコメント付けられないのがつらい。
473 :
名無しさん@1周年 :02/06/18 00:05 ID:Rp42CVpP
>>472 言い訳だろ。(w
慣れれば解決する問題。
かく言う漏れも似たような失敗はしたがな。
474 :
2st4st :02/06/18 17:51 ID:Je+g2MQv
>>416 パルス幅を電圧に変換してから
ADコンバータ通すのはダメですか?
あぼーん
476 :
416 :02/06/18 22:02 ID:a2XMqEni
そんなのも考えていましたが、一番作りたいのが微加速度計だったので (0.1m/ss位の車速変化を表示する)、F-V+ADCだと分解能が厳しそうな 気がして保留しています。どれくらいの分解能が期待できるのでしょうか? 車速信号は292mm移動毎に1回、72km/h(20m/s)で68Hz程度で出ます。 これを0.05m/s程度の分解能でとらえたいというのを夢見ているのですが・・・
477 :
2st4st :02/06/18 23:40 ID:QzcbfC8I
具体的にはわかりません。ごめんなさい。 以前、インジェクタの開弁率をLEDでバーグラフ表示できたら おもしろいかな、、程度に考えていただけなので。
478 :
A- :02/06/19 04:08 ID:ltl58JmF
>>476 ADCでは全域に対する分解能も考慮すると不利です。(その他不利な点沢山)
T/Cで行う場合、20m/sに対して0.05m/sならば1/400ですので
1LSB誤差を考慮しても10ビットでOKです。
さらに相手がメカのため、値が急に飛ぶことがないので
段階的にプリスケーラ値を変更することで、
多分、必要とする速度範囲は、16ビットでカバーできると思います。
これならば、AVRやPICで楽勝かと思われ?
>416 現れるたびに微妙にやりたいことが変わってるね。
480 :
416 :02/06/19 09:18 ID:XK4oOVTi
>>477-479 さんResありがとうございます。
最初は回転計だったのですが、加速計に興味が移っています(^^;)
LEDで おらおら減速してるよアクセル踏みたせや という通知を鈍感な
自分より早く知らせるインジケータを作ってみたいと思っています。
(
>>424 )
disavr.exeを使って >disavr xxx.hex > xxx.src とすると、 Atmel AVR Disassembler v1.30 Cannot open input file. と表示されるのですが、disavr.exeの使い方を教えてください。 基本的な質問ですみません。
482 :
名無しさん@1周年 :02/06/26 13:58 ID:Lujjqtb8
483 :
名無しさん@1周年 :02/06/26 14:49 ID:P+BMNAIc
昨日 AVR Studio 3 がVer3.55になってやっと デフォルト日本語フォントで開けたよん。
484 :
名無しさん@1周年 :02/06/27 12:18 ID:Ma7xTODc
情報ありがとう
>>483 カーソル位置の日本語表示がまだおかしいけど、まあこれくらいはいいか。
485 :
483 :02/06/27 18:29 ID:Uzew4d7r
あれっ! そうなの? 表示だけ見て閉じちゃったので気付かなかった 既にVer4にしちゃったもので... ちなみに、これから見に行く人へ: DL画面はVer3.54のまま直し忘れているみたいで、 「ン?」と思ったけど日付は6/25で起動画面は ちゃんと3.55になってました。
486 :
名無しさん@1周年 :02/07/01 21:42 ID:HZH2GBAW
PullUpあげ
487 :
名無しさん@1周年 :02/07/04 18:45 ID:y9cz/BCQ
どっかに、PIC16F628のPWMとかタイマーキャプチャー制御とかアナログコンペアの ライブラリ(アセンブラのマクロ)ありませんかね? Cコンパイラで、これらをサポートしているのってあったっけ?
488 :
名無しさん@1周年 :02/07/04 18:47 ID:y9cz/BCQ
ついでに聞きますが、16F628で、タイマーキャプチャとPWMを両方使いたい っていうのはダメなんだよね? (つまり周波数→電圧変換器をやりたいんだが)
489 :
名無しさん@1周年 :02/07/05 12:23 ID:oyJtmEx2
490 :
名無しさん@1周年 :02/07/05 19:15 ID:tYXleRFQ
>>488 だめなような気がするんだけど、PWMだけソフトウェアでというのはだめ?
491 :
名無しさん@1周年 :02/07/06 14:45 ID:0S8Iot68
PIC、2石乗せれば?
492 :
名無しさん@1周年 :02/07/06 17:02 ID:5xH7WMOk
>>491 なるほど、そういう言い方もあるんだな。
ラヂオみたいで懐かしい。(w
>>491 AthlonMP2石PCなんていったら面白いな(^^)
494 :
A- :02/07/06 21:38 ID:0OhkckJo
>>488 まじレス
測定条件と応答時間によるけど、交互使用で利用可。
個別ならPWM(Timer2)優先、他タイマで周波数測定。
495 :
名無しさん@1周年 :02/07/19 00:50 ID:yxTnUYNr
直接PICと関係ないけど、パソコンのパラレルポートについてお助けを Win95で _inp _outp 関数を使用し、出力は全く問題ありませんが、 入出力モード切り替えビットを変更しても入力モードにならない ようなんですが何故でしょうか? BIOSは双方向モードになっています やったことがある人にしかわからないかもしれないけどお願いします
496 :
495 :02/07/19 03:24 ID:xPBt7UzD
自己レスです myPCのBIOSのパラレルポートのモード設定に EPP, ECP, Normal, EPP+ECP と4種類あり、EPPにしたらOKでした 全部同じアドレス、双方向モードなのに・・・ よくわかんねぇ
497 :
名無しさん@1周年 :02/07/19 22:51 ID:Jd3nC6Bd
亀ネタだが avr-freaks gcc VerUP AVR Studio4.04 リリース 報告age
498 :
名無しさん@1周年 :02/07/22 10:04 ID:ql5Y7FVo
>>497 情報ありがと
>avr-freaks gcc VerUP
更新ページ変わっちゃってたのね〜
教えて貰わなければ気づかなかった
早速落としたけど、更新&動作確認出来るのは...
おそらく、BIOSのEPPモードというのは実はPS/2モードのことと思われます。
EPP/ECPの場合の手続きの方法は、おそらく・・・
1.ホスト側がControlPortのbit2を立てる。
2.端末側が*PaperEndをアサート。
3.ホスト側が(自動的に?)*Strobeをアサート。
4.ホスト側にデータがラッチされる。
のはず。
参照:
http://www.fapo.com/ecpmode.htm
500 :
名無しさん@1周年 :02/07/28 10:51 ID:IAqc4gZS
こんにちわ。PIC16F84のことで質問があるんですが、テストボードを作るときに 出力端子にLEDを付ける方向が全部Vss→端子になっているのは何故なんですか? 5V出力するのだから端子→GNDだと思うのですが… 回路の事がわかっていないのでもしかしたら常識の話なのかもしれませんが誰か 教えてもらえませんか?
501 :
名無しさん@1周年 :02/07/28 22:43 ID:qI0Y5FVN
えーん、500ゲットされてしまった。。 Vss→端子方向にLEDが接続されているのは出力が'Low'=電流を吸い込む向き でLEDを点灯させるようになってるからだと思います。 正論理で作るならおっしゃるように端子→GNDにLEDを接続すれば、出力が 'High'で点灯します。 PICの出力ポートはMOS-FETのトーテムポールドライバですから、電流の吸 い込みと吐き出しの両方ができるようになっています。
502 :
avrまだ使えないyo :02/07/28 22:49 ID:iDlKMmVZ
ChaNさんのAVRプログラマ、「LPTポート制御 ISPアダプタ」についての質問です。 私の初めてのプログラマですので、これが良いかと作ってみました。 まずは何か書きこみたいと思い、TAP-Configにあるテスト用asmを落とし、 AVR Studio 4でhexにし、avrxsで書き込みをしてみたのですが、新品にもかかわらず ***> avrxs hoge.hex 。。。hogehoge。。。 This device is locked. といった具合なんです。付属のドキュメント曰く通信エラーらしいのですが、 石が亡くなっている場合でもこのエラーが出るのでしょうか? うっかり13Vかけてしまった時に逝かせてしまったのかも知れないのです。 また、TAP-Configには2石に1つは書けないとありますが、 その場合でもこのエラーなのでしょうか? さらに、ISP書き込みがよく分かっていないのですが、 書き込みたい石に発振子をつけて5Vをかければ書けるのでしょうか? ISPの繋ぎ方を2種類見かけるのも不安なのです。 ヘタレてごめんなさい。気が滅入ってまいりました。よろしくお願いします。 「これ読め」だけでも大変ありがたいです。
503 :
通りすがりの単なるジジイ :02/07/29 02:18 ID:Ooqlik/x
501>> ×トーテムポール→〇コンプリメンタリ 502>> 返答したい人も詳細状況不明で難しいのでは? (過去ログ参照) 一般的に考えられる主な原因は、 1. 回路などの設計ミス 2. 回路、接続などの製作ミス 3. 対象製品の不良 4. 操作者の勘違い/ミス なので、これらを確認してけば何とかなると思います。 因みに、環境によっては回路定数かプログラムの定数を変更しないと まったく書けない、「2石に1つは書けない」などの症状になる場合があります。 同一出所のものを作っても、全員が確実に成功するわけではありません。
504 :
名無しさん@1周年 :02/07/29 05:23 ID:GRtPlDrX
トーテムポールでも○
505 :
名無しさん@1周年 :02/07/29 07:19 ID:76nvxfUP
>>500 でもって、両方できるのになぜVdd→pinで使うかというと、
私は内部回路には詳しくないですが、PICのデータシート見ると
その方が内部抵抗少なく、大電流を流すことが可能になるからのようです。
16F84の場合、PIC内での電圧降下0.7Vの時の電流はpin→GNDでは
3mAですが、Vdd→pinでは8.5mAとれるようです。他のCPUやロジック
ICもこのような物が多いですね。
なぜそうなのか便乗質問します。教えてください>みなさま
506 :
名無しさん@1周年 :02/07/29 07:26 ID:76nvxfUP
>うっかり13Vかけてしまった時に逝かせてしまったのかも知れないのです。 これは新しい石を用意して試してみた方が早いでしょう。 安定して書けないときの問題は過去ログに結構あるようです。 winNT/2k/XP使っていませんか? まずはいろんな環境を試してみるのがいいかと。 NT系だと、仮想ポートドライバ使うyaapなんか安定していていいみたいです。
507 :
502 :02/07/29 09:10 ID:eADizNdg
お返事ありがとうございます.
>>503 ,506
>>503 導通チェックならやりました.
これだけ単純なので,「サルでもできる〜」な具合に作れちゃうと思っていましたが,
まさか最初のプログラマ製作で苦戦するとは...
>>506 使用のOSはWindouws98です.大事な事を書き忘れてしまいました.すみません.
あのエラーは,全ての操作で出てしまいます.
明日新しい石でやってみます.私は3個ぐらい買った方がいいみたいですね.
過去のレスでは
>>335 さんが参考になりました.atmelのpdfを色々読んでみないとダメですね.
今度はLinuxでuispを使ってみようと思います.
TAP-Configにある配線図は直結ですが,大丈夫でしょうか?
試した方のお話待ってます.
508 :
名無しさん@1周年 :02/07/29 18:34 ID:K80C7XH+
>>505 なんででしょうね。シロートなのでわかりませんが、Low側のNチャネルFETのほうが
性能がいいとか??
ちなみに出力ピンに対してどっち向きにLEDを接続するかは、ほとんど設計者の趣味
かなという気もします(w
TTLを使い慣れてる人は吸い込み方向で作る・・・とか。
509 :
506 :02/07/29 19:07 ID:fR28arCm
>>507 >>335 みてワラタ
でも本家ページの英文pdf、読み始めると面白いです。多すぎてよみきれん(^^;)
AVRは有志による翻訳版があるのがとても助かっています。安易な私はデータ
シートはもっぱらこちらを読ませて頂いています。
510 :
名無しさん@1周年 :02/07/29 19:50 ID:RIGeG5pH
>>508 等価回路を見たらどうだ?
多分それで解ると思うが。
511 :
名無しさん@1周年 :02/07/29 20:21 ID:fR28arCm
PICは手元にないのでAVRでみてます。 AVRも同じ内部電圧低下0.7Vの条件ではsinkだと35mA、ソースだと19mA程度のようですね 残念ながら等価回路は出力はラッチとして省略表現なのでわかりませんでした。 CMOSなら(AVRはCMOS)sink source電流は同じくらい取れるはずですよね。
CMOSだと同じ容量が取れるはずですが、 作り方によっては(トランジスタの物理的な大きさ、など) ピンのソース・シンクの特性が異なります。 AVRはシンク・ソース共に相当に強化してあるようですが、 PICとは反対にシンクの方がソースより許容電流が少ない作りになっています。 ところで、AVRは出力トランジスタの抵抗が高いのでLEDが「抵抗器なしで」直結できます。 出力特性グラフを参照のこと。 18mA付近でピン電圧が2V程まで少なくなるので、LEDが確かに直結できるのです。 もちろんLEDは発熱によってVfが下がること、 チップ内部の消費電力の問題もあるので、LED直結はわりとデンジャラスです。 ちゃんとする場合は抵抗をつけてLEDの電流を制限すると共に、 チップ内消費電力を減らす方が良いです。
513 :
500 :02/07/29 21:53 ID:EQ6mBFuZ
みなさんありがとうございます。 とりあえずもう一度データシートから見直してみます。 >585 ほとんどの本は吸い込み型で作ってますよね。 しかしそれ系統の本は書く人によってまちまちだから回路の基礎ができていない 俺では違いが分からない(泣 やはり回路も勉強しなおします。
514 :
名無しさん@1周年 :02/08/03 14:54 ID:CGuKTp0M
基本的にシリコンはNチャンネルの方がよい特性をだせます。 何故かは聞かないで。
515 :
↑ :02/08/04 04:43 ID:Jx/opIDb
耳が公文のお方?
516 :
EV :02/08/07 16:15 ID:+0ctOOyU
PICの16F84AにフォトインタラプタをRA4につないで、
Bportに8つLEDを接続した形のタコメーターを作ろうと思ってますが、
MAPLABのシミュレーターで動きを検証してみると、
カウンタのTMR0をクリアした後に
意図しないところで動き出して、値が2で止まってます。
ブレッドボードで回路を組んでみるとその通りの結果です。
まだRA4に入力が無いときはTMR0の値は0のままであって欲しいのですが、
どうしてこうなるのかわかりますでしょうか?
プログラムは後閑さんの電子工作入門の周波数カウンタを参考にしました。
http://www.emcs.tv/tacom.asm
517 :
名無しさん@1周年 :02/08/07 22:40 ID:HEla08aA
>>516 T0CS(optionレジスタ.bit5)は正しく(1 = RA4/TOCKIに)設定されていますか?
518 :
517 :02/08/07 22:52 ID:HEla08aA
スマソ・・asmソースがあったのね。逝ってきます。 で、割り込み使っているようですが4番地の割り込み先がない?
19行目でTRISを0クリアしているのでRA4は出力になってます。 で、ソースでPORTAを弄っているのでそれが原因でしょう。
520 :
EV :02/08/08 08:03 ID:at3ehhnc
>>518 >>519 早速レスありがとうございます。
RA4を出力出力モードにしている件ですが、後閑さんのでそういう風にしてあるのです。
そこは、何度か修正が入っているのでちょっと疑問でもあります。
以下後閑さんのHPの正誤表からのコピペです。
「調査中に新しい方法が見つかりました、RA4がオープンドレインであることを利用すると、RB0によるゲート制御は不要で、RAだけで制御できることが分かりました。
つまり、RB0とRA4の接続は不要で、RA4を出力モードにして、0を出力すれば入力が強制的に押さえ込まれ、
1にすれば入力がそのままカウンタの入力となります。従ってRB0は不要という結果になります。」
ということだそうです。
自分にはなぜ、0、lowレベルで出力すれば
入力パルスが押さえこまれるのか仕組みがわからないのですが。
521 :
名無しさん@1周年 :02/08/08 11:10 ID:i8IQBpcH
>>520 オープンドレインだと'0'を出力している時はRA4ピンがGNDレベルになりますから
入力レベルがGNDに引っ張られる訳で。出力を'1'にすると、RA4ピンはオープン
(ハイインピーダンス)になるので本来の入力信号が得られる、という事だと思いま
す(間違ってたら詳しい方、フォロー願います♡)
うまく動作しない件については私もよくわからないです。ゴメソ
522 :
EV :02/08/08 22:30 ID:9PfU4Vo4
>>521 説明ありがとうございます。
すると、後閑さんのプログラムはそれはそれでいいみたいですね。
523 :
EV :02/08/09 12:12 ID:HViQMXDC
自己レスですが、 入力パルスの数を厳密に0からではなく3とか4ぐらいから かぞえるようにすれば、タコメータとして見掛け上は上手く動作しました。 なんとなく疑問符が残ってすっきりしませんが。
524 :
名無しさん@1周年 :02/08/10 22:41 ID:JX3VWkaO
PICを使用した作成したいのですが 電子回路シュミレータでPICをモジュール化したものってないのでしょうか あれば、実際に設計して製作する前に動作の検証が可能となりとても便利 なのですが。 シュミレータのCIRCUIT MAKERではかなりの中規模の集積回路のモジュールが あるのでこれを組み合わせてPICのようなCPUをモジュール化でき そうなんですが自分で作るのはちょっと無理みたい。
525 :
名無しさん@1周年 :02/08/11 00:17 ID:pdx1CeAT
uisp を使おうと思い,
http://home.overta.ru/users/denisc/ の `Scheme of AVR programmator through PC Parallel Port.' を見てビックリ.
AVR の `Signal name' と `Pin' 番号が合っていないようなんです.
どうしてなんでしょう.`Signal name' の方を信じれば良いのでしょうか?
526 :
名無しさん@1周年 :02/08/11 07:26 ID:ycwzeTut
>>525 AVRはチップによってSCK/MOSI/MISOの位置違うよ。
多分2313あたりと比べていると思うけど、あの結線図は8515とは一致します。
527 :
名無しさん@1周年 :02/08/14 07:27 ID:0yC2sCby
>>EV PIC辞めてAVRにしなはれ
528 :
名無しさん@1周年 :02/08/14 16:35 ID:OWctXCwk
>>512 >AVRはシンク・ソース共に相当に強化してあるようですが、
>PICとは反対にシンクの方がソースより許容電流が少ない作りになっています。
え、ほんとですか?
データシート(2313)では、絶対最大定格電流40mA/pin(向きは書いてない)となっていますが。
ソースだとHiのままGND直結しても40mA流れそうもないと言う意味ではないですよね。
>>511 シンクの場合は内部電圧低下0.6Vで20mA前後流れますが、
ソースの場合、内部電圧低下0.7Vで3mA程度しか流れないことになりそうです。
DC定格参照。
529 :
名無しさん@1周年 :02/08/14 19:27 ID:YzSvrX8T
初心者質問失礼します。 2つのAVRなどのUARTどうしをTxD-RxD直結するだけでデータ送信はできますか? 一度RS232Cレベルにした方がいいのでしょうか? 延長距離は2m程度の予定です。
直結で大丈夫だけどオーバーシュートアンダーシュートが怖いから バッファ付けるとか抵抗かませた方が安心 RS232Cレベルにするのは電力のムダなので相手に合わせる場合以外は却下
531 :
529 :02/08/14 21:57 ID:Ek2fJmtx
ありがとうございます。念のため抵抗入れときます。
532 :
名無しさん@1周年 :02/08/15 01:06 ID:WD1afZ3u
「わかるPICマイコン制御」という本に載っている通りに実験ボードを作りました。 早速PICプログラミングにチャレンジしようとしていますが、 本に載っているサンプルプログラムが動きません。 なぜか秋月のキットに付属しているサンプルプログラムは動きます。 その本には 16F84 を使うように書いてありますが、16F84A をつかっています。 無印とA付きの違いはクロックだけと書いてあるのを見かけたからなのですが、 それ以外にも、プログラムの動作に影響を与えるような違いがあるのでしょうか。
ここは本の尻拭い板ではない。自己責任でやれ。分からなかったら辞めてしまえ。
●PIC・AVR [本を見ない]初心者のためのスレッド●
535 :
名無しさん@1周年 :02/08/15 09:03 ID:LF69Ql9C
>>532 配線はきちんとチェックしたという前提で言えば、
その本を持ってない人には答えようのない質問、
その本を持っていてもどのサンプルなのかわからないような質問
は答えようがないと思う。どんな実験ボードで、秋月サンプルと
その本のサンプルがどんな奴かを書けば少しは助け船が出るかも。
無印とA付きの違いは他に動作電圧と消費電力があるらしいけど、
普通に?5Vでやってるならそれが原因で動かないことはないと思う。
537 :
536 :02/08/21 19:13 ID:x9g3wjGN
スミマセン、自己解決してしまいました… 結局IC-progのハードウェア設定のI/O遅延を一番大きくしたら照合も成功しました。 お騒がせしました…
プログラマを作るだけで,もう5石も壊しちゃったんです...
>>502 で1つ,
uisp がサポートする `AVR direct parallel dummy' と `STK200 parallel dummy' で2つ
(回路は
http://medo.fov.uni-mb.si/mapp/uTools/ )
再びChaNさんの「LPTでISP」で2つ逝きました.
おそらく私が AVR 始まって以来のDQNなんでしょうが,一体どんな原因が起こりうるのでしょう?
これらの回路は安全性に難? PCのポートが腐っている?(PICは成功しているのに)
ブレッドボードではこういうのに向かない? AT90S1200は壊れ易い?...うぅうぅ
>>507 の直後にChaNさん式で書ける回路をブレッドボードで作れたのですが,
ChaNさん式はいつでも作れるのだと思い解体してしまいました.
その後またChaNさん式を作ったところ,Writing は成功するのに Verify がエラー,
もう一度やってみると `This device is locked.' ガ━━(゚Д゚;)━━ソ! x2
普通こんなに壊せますか?私がこのスレの方々と同僚なら,もう私の前歯は無いでしょう.
539 :
名無しさん@1周年 :02/08/27 00:19 ID:O9WsIK5z
ネット上にある作例で秋月のPICライターを使用したものの中には JDMプログラマで焼けない場合がある。何故だ? 509が死屍累々。 対処法を模索中だがいまさら秋月のキット買う気になれん。
540 :
秋月一句 :02/08/27 02:34 ID:Q1BwI8Hj
ああ名月や名月や
541 :
名無しさん@1周年 :02/08/27 10:27 ID:bX6snkXJ
>>536 >素直に秋月のキット買えっちゅーことかなぁ…
素直に、Microchip純正のプログラマ買うのが吉。
(サードパーティー製なら秋月のLeapPstart(13,700円)買うという手もある。)
542 :
名無しさん@1周年 :02/08/28 00:21 ID:GKXUBDe5
壊れるって言うのが不思議。なんか根本的に配線間違えてない? AVRのソケットが逆向いてるとか(^^;) DSUB25のpinの数え方が逆だったとか (どれ作っても壊れるならこの部分が共通だから可能性はある) そんな馬鹿なことはしない失礼な! だったらスマソ。 共立のドングル基板キット買ってみては? 1000円で、ジャンパ1本でSTK200互換になるよ。 基板だけなら300円。これなら間違えようがない。
543 :
名無しさん@1周年 :02/08/28 00:30 ID:un8TU0n1
ちょっと関係ないですが、質問させてください。 フイルムコンデンサとマイラコンデンサは呼び方が違うだけで全く同じ物ですか? マイラコンデンサ=フイルムコンデンサと考えて間違いないですか?
544 :
名無しさん@1周年 :02/08/28 02:40 ID:kGql/mwP
Microchip純正のプログラマでのみ書きこみ可能で 秋月ライターでは書きこめない場合もあるようだ。 (逆もか。)プログラムごとにそれぞれライター買えってか?
545 :
名無しさん@1周年 :02/08/28 09:01 ID:LC2mt8Vu
>>542 DSUB25の3と11を短絡するってやつ?
>>542 お返事ありがとうございます.私が昨日成功したのをすぐ報告すれば良かったのですが,ごめんなさい.
昨日ユニヴァーサル基板で ChaNさんのを作ったらあっさり成功しちゃったんです.
それですぐにファームを書き,`Atmel Low ...' に載せたら Linux マシンでも簡単に書けました.
さらに, ChaNさんので壊したと思われていた石2つが生存していることも発覚.
また壊すと思ったので秋月で10コ¥2000を買った私って...ファームだけ¥250で売れよぅ.
> そんな馬鹿なことはしない失礼な! だったらスマソ。
していないはずとは思いながらも,
用に自分で用意したケーブル類はイビツな格好をしているので,
ブレッドボード変な間違え方をしていたのかも知れません.
ブレッドボード用に便利なアイテムを考案している web サイトはないものか...
> 共立のドングル基板キット買ってみては?
確実なプログラマが安ければ2週間も苦しまなくて済みますよね.
千葉県に住んでおりますので,通販で扱われていないものは入手できないんです.
秋月が高級なキットばかりでなく,書き込む為だけの安いやつも取り扱えばいいのに.
ところで,ブレッドボードは信号線が多い回路には不向きでしょうか? ヘタレ ニハ スベテ フムキw
547 :
名無しさん@1周年 :02/08/28 12:59 ID:XMfjxaCL
>>546 もう解決したみたいなので不要でしょうが、
秋月にしても共立にしても、店頭にあると分かっているものについては、
丁寧に頼み込めば通販してくれますよ。共立では何買ったか忘れたけど、
(ドングル基板は店頭で買った)秋月で通販メニューにないAVRを問い合わせて
買いました。
状況によって・受け付けた店員によって、その日のお天気によっては
うまくいかないこともあるかもしれません。
共立デジットのホームページに回路図もプリント基板パターンもPDFで提供
されています。
>>545 >>434 で紹介されてる奴。
うちのとこでも同じ問題がこれで解決できました。
548 :
502 :02/08/28 15:20 ID:bm2bABTh
>>547 なるほど...問い合わせてみるのも必要なんですね.
> 共立デジットのホームページに回路図もプリント基板パターンもPDFで提供
デジット?と思い見て回ったら,ありました.トップページに `AVR' の文字を踊らせる共立が.
今まで「エレショップ」というのしか知らなかったんです.
知らないうちに AVR の解説サイトが増えたような...?
549 :
名無しさん@1周年 :02/08/29 06:53 ID:wsXCWWSh
ちょっと質問です。 RS232Cなどで制御できる、安価で小さいビデオターミナルのような ものってないでしょうか?2行LCDのような手軽さでマイコン(AVR)から RS232C等で送信した文字をビデオ出力したいのです。 文字だけでいいです。漢字は要りません。カーソル位置制御と文字表示が あればいいです。できれば文字色指定なども欲しいですが、モノクロでも 構いません。 解像度は320x240もあればOKです。趣味工作用なのであまり高いもの (1万以上)は手が出ません。 キットや制作記事などでも構いませんので(私に手に負えるかどうか心配 ですが)、参考になるものがありましたら是非紹介願います。 マイコン+CPLDを使った記事は見つけましたが、CPLDには私の力では 今のところ手が出そうにありません。 昔のパソコンの中古を使った方が安上がりかもしれないのですが、 あれは大きすぎてちょっと躊躇しています。
551 :
名無しさん@1周年 :02/08/29 11:13 ID:wsXCWWSh
>>550 ここは何度も何度も見ながら唸っています(^^;)
これ作れる自信がないことと(頑張って勉強すればどうにか)、これ
作ったあとキャラクタージェネレータのようなものをまた別のマイコンで
作って…とまあ今の私にはハードルが高そうです。
そこで安直にも出来合いのキットか完成品がないかと思って探しはじめて
いるのですが…じっくり検討してみます。
>>543 マイラコンデンサはフィルムコンデンサの一種のポリエステルフィルムコンデンサのことだ。
マイラーつうのは、どこかの化学メーカーの商品名だったと思う。
他の化学組成の誘電体フィルムを使ったフィルムコンデンサもあるよ。
そういうのは当然、マイラコンデンサとは呼べない。
スレ違いなのでsage.
553 :
551 :02/08/29 18:09 ID:56I4egGt
大事なこと書き忘れてた。
>>550 さんありがとう。
GALは面白そうなのでいつか遊んでみようと思っています。
>>553 少しばかり投資する気があるなら、ISPタイプのGALとかも
あるのでそちらの方が、ライターを作るより安い気がするよ。
age
557 :
名無しさん@1周年 :02/09/04 20:55 ID:IT04wsOT
秋月のキットにはいってたPA.EXEがぜんぜん動きません WIN2000じゃ動かないんでしょうか?
558 :
名無しさん@1周年 :02/09/05 11:49 ID:TobA/KF7
>>557 どう動かないのか書かないとコメントしにくいと思われ。
エラーが出るのか、無反応なのか、ハングアップするのか
559 :
名無しさん@1周年 :02/09/05 16:29 ID:H9E1bfQi
>>588 すいません、そうすべきでした
しかしなぜだか動くようになりました
しかし今度は
インクルードしようとするとエラーが出てしまいます
インクルードするファイルはちゃんと同じフォルダに入れてあるのですが、、、
;***p4_2.asm***プログラムの名前
;プログラムのベースとして使われる
include 16f84.h
.oschs
.wdtoff
org0ch
冒頭の部分です
そしてこんなエラーが出ます
***** pass 1 *****
include 16f84.h
Error p4_2.asm 4: File '16f84.h'not found.
560 :
名無しさん@1周年 :02/09/05 16:33 ID:H9E1bfQi
あ!できるようになりました ソースのincludeのところの16f84.hのあとにスペースやタブが入ってたのが まずかったみたいです
>>560 なんだか懐かしい障害で(苦笑
スペース・タブ・全角スペースが原因とは(笑
昔、latticeのC(MSCの母体になった奴)で、その手の障害が色々と出たのを
懐かしく思いましたです。今の処理系にもあるんですね。
おかげさまで、今でも日本語FEPのスペースの設定は半角ですし、
エディタの設定でもタブや全角スペースが判読できるようにマクロを組んだり
しています。習い性ってヤツなんですかね(苦笑
picの環境、みなさんは秋月のキットが多いみたいですが、私は 無料pic環境で以下の組み合わせでつかっております。 以下にこれから始める方にも有効な情報を提供いたします。 総合ツール(アセンブラ、デバッガ、リンカ):MPLAB 無償 C言語:HI-TECH Cコンパイラ1kワード限定版 無償 Cライブラリ:HI-TECH Cコンパイラ 21日限定版:サンプルが使える 書き込みツール:PICWW 無償(セキュリティはシェアウエア) そして、コストパフォーマンスのよい16F628を使っています。 16F627は1Kワードなので、こちらの方が良さそうですが628の方が何故か 入手性、値段とも良いのでこちらを好んで使っています。 16F62xファミリは16F877のレジスタに非常に良く似た構成をしています。 16F84よりadconv,usart,comparator,timerが強化されて使いやすいです。 なによりも、内臓オシレータの4MHz/37KHzがあり、MCLRを内部で72ms取れるので、 この設定にすれば16ポートまるまる使える点です。 16F84ソースを移植する場合は、一つだけ注意が必要です。CMCONレジスタに0x07 をセットすることです。USART,ADCONVなどは16F877の解説本を読むと良く参考に なります。(ex,後閑さんの出版物、MALの出版物など)
563 :
名無しさん@1周年 :02/09/06 09:10 ID:Bv53tDEO
>>562 限定版で無料じゃちょっと悲しい.avr-gccみたいなプロジェクトはないの?
いっそそういうのに参加しちゃうとか.勇者って言われるよ.
565 :
名無しさん@1周年 :02/09/06 12:28 ID:gORbXmSc
PA.EXEではアセンブルできるのですがMPLABではエラーがでまくります なぜでしょうか?
566 :
名無しさん@1周年 :02/09/06 13:18 ID:F6w2XdJ9
>>565 どんなエラーか書いてくれないと何も言えない。
567 :
名無しさん@1周年 :02/09/06 16:03 ID:SwEYRbQt
>>563 ぐーぐるでpicww調べて電圧制御型の回路のってる。多分それだろ。
この回路は秋月のキット+2SB1462+若干の抵抗で出来るだろう。
568 :
名無しさん@1周年 :02/09/06 16:08 ID:SwEYRbQt
>>564 使ってもいないのにイキナリ非難するやつはお金出して買ってくれ。
俺は
>>562 じゃないが,ほぼこれらの環境使ってる。
1kでもでAD比較しながら232Cにレポート吐き出したり232cからコマンド
受けたり,リレー8つくらいを同時にすることなんて簡単に出来るわい。
569 :
名無しさん@1周年 :02/09/06 17:41 ID:gORbXmSc
570 :
名無しさん@1周年 :02/09/06 18:24 ID:wIBtv8Od
>>569 ps0 equ 1.0
mov !rb,#0
こんなのダメっす。
その他、とにかくMPASMの文法に全くあってないので、ダメダメっす。
571 :
名無しさん@1周年 :02/09/06 18:30 ID:gORbXmSc
>>570 え!アセンブラってソフトによって文法ちがうんですか!?
チップが同じなら共通かとおもってました、、、
572 :
名無しさん@1周年 :02/09/06 19:02 ID:gumyt2Ds
>>571 人はそれを「方言」と言います。
CPUが同じでも、結構あるよ。
マクロなんかを使っていると、泣きたくなる時もしばしば。
574 :
名無しさん@1周年 :02/09/06 19:23 ID:E9lXVEC6
>>573 そうそう。なんやかんや言いながら、Cの方が方言が少ないだよね。
575 :
名無しさん@1周年 :02/09/06 19:28 ID:gORbXmSc
そうでしたか、、、だからCなどの高級言語が尊ばれるわけですね、、、 では皆さんは同じCPUでも開発環境に合わせておぼえてるのですね
Cも、gccで書いたものを他のCに移そうとしたら、 //のコメントが全部エラーになって(藁 grep一括置換しようとしたら一部/* */と//が同じ行にあったりして もーぐちゃぐちゃ(^^;)
577 :
564 :02/09/06 23:20 ID:Acg6pr1J
>>568 私はフリーソフトウェア信者.相手にしてはいけません.
578 :
名無しさん@1周年 :02/09/07 00:26 ID:v5ZeAoX6
ん?全部フリーだよ。
579 :
564 :02/09/07 10:50 ID:xgtNklaC
>>578 GNUの言う「フリーソフトウェア」です...ロハはあまり要求しないの.
580 :
名無しさん@1周年 :02/09/07 17:13 ID:MyO4OgT5
>>569 のp4_2.asmがちゃんと動かないのですが、、どうもサブルーチンwaitのretにちゃんと
反応していないように見えます。
なぜでしょうか?
581 :
名無しさん@1周年 :02/09/07 18:51 ID:MyO4OgT5
直りましたretの後ろにEOFがあったのがマズかったようです EOFもダメなんですね!
いまどきEOF入れるエディタって・・・なんかなつかしひ(^^) 何をお使いですか?
583 :
名無しさん@1周年 :02/09/07 19:03 ID:MyO4OgT5
秀丸って奴です さっきはじめて使ってました でもメモ帳でつくったファイルでだめで最後の行を改行したものを アセンブルしたら直ったのでメモ帳も同じことかと思いました。 MPLABとかならEOFが命令の直後にくっついてても大丈夫なんですか?
>>571 PA.EXEはMPASMのインストラクション+拡張インストラクションという仕様なので
通常のasmソースのアセンブルはできたと思う。
その逆ではMPLABが拡張インストラクションを解釈しないので×。
585 :
582 :02/09/07 23:59 ID:x9Kxn2Dd
>>583 漏れも秀丸ですけど、EOFつけるかどうかは選択できるよ。
その他−ファイルタイプ別設定−保存・読み込み 参照。
586 :
名無しさん@1周年 :02/09/08 02:23 ID:++Pdjn9t
なるほど、でもこういうときの用心のためにつけておいたほうがいいですよね?>EOF
587 :
PPIICC :02/09/08 02:44 ID:tKctYLXq
I/Oポートにモーターの片方 モーターの片方をGND I/OポートをHレベルに・・・ モーター回りません;; なんでですか??電圧は適正です;;
588 :
名無しさん@1周年 :02/09/08 03:02 ID:URakoG9c
マイコンの端子なんてモータまわすほど電流流せないよ。 太陽電池でまわるモータならまわるかもしれないけど せいぜいLED光らすくらいでしょ。 トランジスタを外付けすればいいよ。
589 :
PPIICC :02/09/08 03:05 ID:tKctYLXq
トランジスタつけたけど動きません;; トランジスタは2SC1815です ちなみに16F84Aです 1つじゃ足りませんか?
モータの種類とメーカと型番は?
591 :
PPIICC :02/09/08 03:10 ID:tKctYLXq
マブチモーターRE140です
2SDシリーズのTrで図体が大きい奴にかえてみそ
593 :
PPIICC :02/09/08 03:57 ID:m4Y9/0jj
わかりました やってみます どうもありがとうございました_(._.)_
>>586 逆っす。こういう用心のためにEOFつけないようにしたほうがいいっす。
つけなくても、コマンドラインで標準入出力から読み書きするプログラムを
含めて、問題起こらないですよ。秀丸のヘルプにも通常はつけない方が
いいと書かれている。
>>594 そうそう、EOFは太古のCPM時代のなごり。
596 :
名無しさん@1周年 :02/09/08 11:47 ID:BnOrPU0P
そうでしたか、、、しらなかった、消しておきます
597 :
名無しさん@1周年 :02/09/08 11:52 ID:BnOrPU0P
でも今試したのですがEOF消しても最後の行で改行しなかったら 同じようになったのですが、、
598 :
謎のHP? :02/09/08 13:33 ID:WRmuYCEu
599 :
名無しさん@1周年 :02/09/08 15:12 ID:BnOrPU0P
tst
>>597 つまらないことに拘っているよりも、コンパイルが通る状態で
自分のプログラムのデバッグを進めたほうが吉。
602 :
名無しさん@1周年 :02/09/10 20:06 ID:k4UWLEmy
いっそFETにかえてみれば?
NとP間違えてるとかないよね?
>>592
佐川氏って、この場に及んでも日中はスミに出勤してるですか?
604 :
603 :02/09/11 12:33 ID:r5WAtppH
605 :
549 :02/09/11 21:30 ID:IYs4CYb8
PIC用のコンパイラやシミュレーターで、皆さんは何を使ってますか? フリーで便利なのってわからないので…
608 :
名無しさん@1周年 :02/09/16 11:53 ID:QOZ8Nxum
純正じゃだめなの?
609 :
名無しさん@1周年 :02/09/16 21:48 ID:xkIoDMFa
610 :
名無しさん@1周年 :02/09/17 22:19 ID:CgZ+I3Lk
12Vのパルスを5Vで動作中のマイコンやロジックICに入れる場合、 制限抵抗の後GNDにツェナーで落とすのと、GNDとVccにDiodeかませるのと どっちがいいですか? picのML見たら、DiodeでVccにつなぐのは5V側の消費電力によっては Vccが上がってしまう(下流からageられ分には三端子レギュレータは無力) のようなことが書かれていたので気になっています。 流入電流がマイコン側の消費電流を充分下回るようにしておけば大丈夫でしょうか?
611 :
名無しさん@1周年 :02/09/17 23:23 ID:XIdPeMcz
612 :
610 :02/09/18 00:24 ID:bgbn0A5K
>>597 そのこだわり、真の工学者の片鱗かな。
動けばいいやの先輩は自分を越えそうな次世代に嫉妬するのが世の常だ。
>>613 そうなんだ。。。なんかわからんけど、エディタのソースコードが必要のようね。
615 :
名無しさん@1周年 :02/09/18 18:08 ID:ScS8svU4
>>614 エディタじゃなくてアセンブラだろ。
テキスト処理するプログラム作ったことあればEOF入ったり
最後の改行がなかったりするのを考慮するのはうっとおしい!
という気持ちは分かる。分かるけど許さん(藁
616 :
名無しさん@1周年 :02/09/22 19:52 ID:MIJ0NpM3
そろそろ outp(0xFF, DDRB); outp(0xFF,PORTB); したい。
あぼーん
618 :
名無しさん@1周年。 :02/09/29 19:30 ID:Qud+mpSP
AKI-PICプログラムキット3を今日買ってきました。 さっそく作ってみます。
619 :
名無しさん@1周年 :02/10/01 02:48 ID:9UevMwlq
AVRって、外付けリセット回路はブラウンアウトを考慮するとき以外は必要ない (PowerOnResetには必要ない)んですよね? 今作っている奴でちょっと困っています。かなりの確率でPowerOnResetに 失敗して動作しないのです。ResetピンをGNDに落とすと100%動くので リセットがらみだと思うのですが・・・ 電源は9V電池→47uF/0.1uF→7805→0.1uF/47uF→AVR(2313)で、 ソケット裏でAVRのVcc-GND間に0.1uF積層セラコン入れています。 ヒューズビットは弄っていない(パラレルプログラマーないのでいじれない) ので、たぶん標準のままのFSTRT=1(長いリセット時間)だと思います。 他にチェックした方がいいポイントがありましたら教えてください。 動作はLEDとLCDで行っています。LCDはソフトウェアリセットかけてます。 あ、もしかしてLCDのPowerOn後待ち時間が短すぎるのかな(15ms)
620 :
A- :02/10/01 03:11 ID:dhbShv1+
AVRに限らずLCDコントローラもそうですが、 一般の内蔵リセット回路は、 一旦電源電圧が一定電圧以下にならないと正常に動作しません。 電解コンを外すと動作する可能性があります。 これで症状が改善されるようですと、この問題と思われます。
>>619 それはもろにリセットの問題だね。
立ち上がりの遅い電源でパワーオンリセットに失敗するとか、
電源OFF時にパスコンに溜まった電荷で動作してしまい電源が
完全に落ちるまでおかしな動作をするとか。
電源監視IC(所謂リセットIC)を使う以外解決の方法は無いかも。
時定数付きで且つTTLアウト(ODじゃ無い奴ね)の奴を一個付ける
だけだから対策は結構簡単。コンフィグレーション回路との共存を
考えると、リセットをANDする必要はあるけど。
622 :
名無しさん@1周年 :02/10/01 04:13 ID:DDLI7CDj
むぅー電解コンデンサあるとだめということもあるんですか。 電源を切ったつもり→でも5V側電解コンに電圧残る →電源ONにしてもリセットがかからない というわけですか。 でも実は最初は5V側には0.1uF発信止め積層セラコンだけだったのですが、 これでも同様だったのです。リセットICしかないですかねえ。 もう1つ確認ですけど、AVRのRESETは内部でプルアップされているから 外部からプルアップする必要はないんですよね? Web上のAVR工作例をいくつか見ていると、PullUpしているものも あるので気になってきました(^^;)。 「当然PullUpすべき」ということだったら・・・ごめんなさい・・・
623 :
名無しさん@1周年 :02/10/01 04:34 ID:Cpo9FLDw
>>619 俺も最初経験したよ。重複レスになるけど、それは3端子レギュに付けてる
電解コンに低い電圧が残っている。AVRは低い電圧になると動作停止するが
CMOSだから静止消費電流がほとんど0なのでコンデンサの電圧が減らない。
FSTRTビットは関係ないよ。
テスターで電圧測れば納得すると思う。
放電用に10kΩ程度のムダな抵抗を5Vとグランドの間に付ければ、時定数
47μ*10k=0.5secで放電できる。但し消費電流0.5mA増えるから電池の寿命
がそのぶん短い。
電池から3端子レギュの配線は十分短くないか?入力側の電解コンは不要だと
思う。普通セラだけで十分だぞ。
参考までに、俺は最近は3Vとか4.5Vで設計するので電池から直接。3端子レギュ
の消費電流が無くなって電池の持ちがいい。あれは5mA近く消費してる。
それからリセットのピンはオープンのままでは良くいないよ。100k以上の抵抗で
電源にプルアップしないと静電気でリセッツされるかも。俺は電源に直接続してるけどね。
AVRの低消費電力をなめてはいかんよ。(w 104位のコンデンサにチャージされてる電荷で悪さをするには 十分な時間動作しますから。EEPROMの内容を破壊する位の 事は出来てしまうかと。 一応仕様書で要確認だけど、内蔵UPはあったとしても、100K位 だろうから抵抗一本くらいケチらず10K位のをおごってあげれば 良いでしょう。(w これも、コンフィグレーション回路との共存目的ですから VCC直でも問題無いでしょう。
後半の文章はリセットの事ね。(w あと、623氏の言うとおり電池のみで動作させるのが得策かも 知れませんね。LSタイプだと更に動作電圧の範囲が大きいので かなり自由が効くし何よりリニアレギュレータでの損失が無くなる のは魅力かと。 こうすると電源は電池とパスコンと言う組み合わせになるんだけど 電源配線を極力短くしてパスコンを電池側に付けて電源SWより 向こう側(AVR側)にはコンデンサ無しという回路にしておけば 電源切断=パスコンの切り離しという事になるので現在の問題も 解決できるかもね。(w ただ、エンジニアの立場からは全くお勧め出来ない回路ですが。
626 :
ЯVА :02/10/01 07:54 ID:lZC08zuM
トグル形の電源スイッチはいかが?パスコン使い放題。 10kΩ抵抗は放電電流を押さえてスイッチ接点の焼け防止。 電池 │ ↓ \___ 回路へ ↑ 10kΩほど │ GND
627 :
622@宿直明け :02/10/01 08:39 ID:c0ix5im8
ほわー、こんな時間に山ほどのレスありがとうございます。 電解コンデンサはあちこちの回路例の猿まね(よく100uFが入って いる回路が紹介されている)なんですが、こういう問題は考えて いませんでした。LCDにバックライトLEDつけてるから、一瞬で電圧は 下がるのではと最初は思っていたのですが、よく考えてみるとLEDだけに 順方向電圧から下には下がりませんね(^^;)。 最後は12V電源を使う予定なので(車載)、電池のみは難しそうですが、 これを考慮してみます。まずはRESETしっかりプルアップ、放電のために Vcc-GND間に放電用抵抗、不要なケミコンの排除ですね。
628 :
A- :02/10/02 05:52 ID:IHmrVI+v
<追伸・補足> 623さんや624さんご指摘のように 内部プルアップの問題も過去に多く経験しました。 クラッシックAVRの場合、100K〜500KΩと上限値が高いので、 異常リセットの原因になる可能性があります。 この場合、RESETピンとGND間にコンデンサを接続して 内部プルアップと積分器を形成した外部リセットが 過去には有効でした。 もちろん、リセットIC使用などの方が確実ですが。
629 :
名無しさん@1周年 :02/10/02 07:53 ID:1kL0lsSp
誰かAVRのFSTRTビットをいらった経験あるひと居る? どんなライター使えばいいか教えて。 もちフリーソフトのやつね。
630 :
622 :02/10/02 23:36 ID:6LlSfI+c
>>628 >この場合、RESETピンとGND間にコンデンサを接続して
>内部プルアップと積分器を形成した外部リセットが
>過去には有効でした。
そのような回路どこかで見ました。やっと意味が分かりますた。
内部のプルアップ抵抗が当てにならないと思ったら、コンデンサと共に 数〜数十KΩのプルアップ抵抗を付けて時定数を設定すれば、リセット 専用ICなみの十分なリセット時間ができる。 ただし問題になってる低電圧の残留問題は別ね。
時定数付きTTL出力のリセットICが、数百円であるから それを直結で問題なしでしょ。 数百円と信頼性の天秤でしょうが、きちんと動作する事に 越した事は無いのでは?
633 :
A- :02/10/03 02:30 ID:FvkDBFK+
<追伸・参考> 619さんの問題の原因とは多分別だと思いますが、 XTAL使用の電源投入時のリセット異常を多く経験しました。 この原因は内部発振回路とXTALの組み合わせにあるようで、 AVR,PICとも、発振コンデンサ容量を推奨値より大きくした方が、 この手の問題解決に有効でした。 この問題の場合も残留電圧でのリセット異常と 一見、類似した症状になりますので、ご参考まで。
634 :
名無しさん@1周年 :02/10/03 04:18 ID:Q0CxhZy/
>>632 AVRやPICの小売値段知ってる?
リセット用ICと同等の回路が内蔵されてるんだけど。
635 :
名無しさん@1周年 :02/10/03 04:24 ID:rEfiG3+f
>>633 PICを始めた最初にその問題にぶつかって最初からセラ振動子にした。
今はAVRだが、どうしても周波数精度が必要なときは発振Qの検討をして
リセットのRCを外付けにして十分な時間を確保してる。
>>634 内蔵回路が誤動作しなければこんな議論は端からしていないよ。
637 :
619 :02/10/03 11:50 ID:BadatEMd
>>633 うちはセラロックだからその現象からは逃れていると思っていいですか?
>>628 ちなみにリセットにつなぐCですが、どれくらいの値でいいですか?
RESETの閾値が0.85Vccとあるから、完全放電状態からならRCの時定数の
2倍程度で0.85Vccに達すると考えていいのですよね。
そうすると、リセット遅延は
0.01uF*100〜500kΩ→ 2〜10ms
0.1uF*100〜500kΩ→ 20〜100ms
こんな感じで考えていいですか?
>>634 リセットICの場合はVcc=5Vの場合、電源電圧が4.5V程度でリセット掛かる
ようですが、内蔵PORの場合はこれが1.4Vですよね。この差は効いてこないの
でしょうか?
私も2313より高いリセットICはできれば使いたくない。これには同感。
考え方にもよるが、漏れは多少金はかかっても 正常動作してくれる方をとるよ。
あれこれ試して結局リセットICに行き着いたら、相当高い物になるね♪ 安上がりに完璧なものを追求するのは大変だ。 当面かかる費用は、全て勉強代と割り切ってがんばってくらさい。
640 :
619 :02/10/03 20:47 ID:VVJEQvXQ
>>639 はい・・まあ趣味ですから。勉強と思っていろいろやってみます。
金が惜しいのではなくてスマートなやり方があれば美しいなあと思ってしまうからです。
素人がナマ逝ってすみません。
>>640 まあがんばれ。
部品点数の「少なさ=スマート」と見るか、「回路の巧妙さ=スマート」
と見るかは人それぞれだからね。
趣味も突き詰めると奧が深いという事ですよ。決して奧が不快にならない
様にね。(w
642 :
名無しさん@1周年 :02/10/04 00:55 ID:9OzFEqvc
素人が通ぶって奇妙な主観を押しつけるんじゃないよ。 電源電圧が残る問題をリセットICが解決できるわけ無いだろ。 デジタリアンはこれだからねえ 640よ、変な色に染まるでない。
>>642 素人が無理しなくても。(w
誤動作の原因解ってて言ってますか?
君なりの説明をしてみろ。出来ないだろ?
>>642 619を読んで出直せ。正直格好悪すぎ。
ああこいつ634か。だったら納得だ。(w
>>643 から
>>645 は放置だな。
>>637 >うちはセラロックだからその現象からは逃れていると思っていいですか?
そう思っていい。根本原因が電源電圧が残る現象なのなら
リセットICは原因を治療しないで対症療法にすがる愚かな患者。
Cと時間の計算は良いと思う。それに内部でFSTRT時間が
足されたのが実際のリセット時間。
内部プルアップの幅が大きすぎて嫌なら、外部で20kとかでプルアップする。
軽い負荷の回路のようだから電源電圧の立ち上がりが遅くなる問題は
ないと思うが、電源スイッチがチャタが多ければ危険。
電源がMOSのスレッショルドに近いほど低いとまともな動作はしないので
外からリセットしても内部にくまなく伝わる保証などどこにも無い。
変な電圧はEEP化けのようなアナログ的で深刻なバグの原因になるだけだから
根本原因を退治せい。
ちゅーか、世界中のユーザーがリセットICなど使わないでやってるんだか
ら、それと自分の差は何なのかを考えた方がいいよ。
>>646 色々実験した結果、リセット時間保持の為の内部タイマーを使おうが
外部で時定数をもたそうが電源の立ち上がり(当然立ち下がり時も誤動作
します)時間の問題でAVR自体うんともすんとも言わなくなってしまう、
それどころか全くリセット不能になる事もあります。
ある程度は、リセット端子にCRを付けたで対処出来るけど結局これにも限界が
あります。
当たり前ですが、電源がゆっくり変化するブラウンアウト時にも同じ事が起きます。
外部負荷の変動と電源の切断のタイミングによっても・・・。
結局、時定数付きリセット回路以外まともに対処できる回路を見つけられなかった
と言うのが結論なんですが・・・。それは漏れが無能という事だな。
困り果ててアトメルのサイトを調べた時にAVR180と言うANを見つけたので参考に
なるかと思うよ。
648 :
A- :02/10/04 10:27 ID:IO29hJaJ
経緯から、0.4V(min)以上の残留電圧か 閾値付近で閾値をよぎる電圧変動が原因かと思われます。 別電源で動作する装置との信号接続などがなければ 623さん指摘のようにブリーダ抵抗で降下時間を短縮できます。 接続しているLCDユニット側も電解コンがあるはずですので ある程度低抵抗値にしないと短時間での放電ができないかもしれません。 希望する時間内に0.4〜0.8V以下にならないと2313のPORは利用できません。 完全放電時からの立ち上げ時も異常な場合、閾値付近の電圧変動も考えられます。 セラ振動子はXTALより始動時間が短いのですが、 周波数が低くなるほど始動時間が長くなり、 その最中の電圧変動で内部ロックというのを経験しました。
さーー今日は秋葉でも行くかーーーーーーーーーー え?
誰もリセットIC万能論を唱えているわけでないのに、妙に息巻いてる人がいるな(w 他の方々は質問主が経験を積みつつ、問題解決できるようカキコしてるだけだと思うが...
>>650 まあ放っておこう。
会話の流れや、空気を読めない人は何処にでも入るんだし
652 :
619 :02/10/10 08:31 ID:wy2bE55f
とりあえず報告 RESETに20kプルアップ、Vcc-GND間に20k(電解コンデンサ放電用?時定数1秒弱) を付けるだけでパワーオン時安定動作するようになりました。 どうやら今回に関してはリセットICのお世話にならずに済むようです。 当初、LCDの方がどうしても動かなかったですが、こちらは初期化ルーチンに間違いが見つかりました(^^;)
655 :
A- :02/10/11 09:16 ID:q4+oA1AU
>>652 おめでとうございます-粘り勝ちですね
当初の話で車載とのことでしたが、
もし常時ONで使用するなら、現状ではマズイ可能性があります。
エンジン始動時のバッテリ電圧がかなりすごいので...
この場合、別なリセット方法(リセットICのことではない)が
必要かもしれません。
過去のトラブルから、参考まで
656 :
名無しさん@1周年 :02/10/19 01:35 ID:niv+nlM0
AVRを使って、シリアル入力のPLL-ICを制御したいのですが、 18bitのバイナリ(たとえば、0x232C0)をシリアルで送出するにはどうすればいいのでしょうか? Clockや、Enableのことは放置OKです。
657 :
名無しさん@1周年 :02/10/19 01:49 ID:OdG/IlN4
データピン出力(H/L)して、clock出すのを18回やるんじゃだめなの?
658 :
656 :02/10/19 01:55 ID:niv+nlM0
>>657 それだとプログラムがでかくなるような気がして・・・
レジスタとか使えばいいのかな?でも使い方がわからない罠
659 :
名無しさん@1周年 :02/10/19 01:58 ID:HSZDEnwT
>>659 >>657 のは、
outp(1, PORTB);
wait(10);
outp(0, PORTB);
wait(10);
outp(0, PORTB);
wait(10);
・
・
・
という感じだと思ってたけど、違うのか・・・
661 :
656 :02/10/19 02:12 ID:niv+nlM0
(;゚Д゚)waitでかすぎた・・・
662 :
名無しさん@1周年 :02/10/19 10:24 ID:OdG/IlN4
>>660 Cだけどこんな感じね。
data : 送信データ
cnt : 送信bitカウンタ としたら
cnt = 0;
while( cnt < 8 ){
output_bit(tx_pin, L);
if( (bit_test(DATA, 0) == H){ output(tx_pin, H); }
output_bit(clock_pin, H);
output_bit(clock_pin, L);
DATA = DATA >> 1;
cnt = cnt + 1;
}
663 :
名無しさん@1周年 :02/10/19 14:43 ID:OGDjNrVA
>>660 18bitというのが半端ですね。えーと上位、下位どっちから送るのでしょうか?
とりあえず上位ということにしておきます。gccでの場合
union LIC_union {
unsigned long L;
unsigned int I;
unsigned char C;
};
void send_serial(unsigned char data , char cnt) {
/* send upper cnt bit of data. */
for ( ; (cnt) ; cnt--) {
if (data&0x80) {
sbi(port_name,tx_pin_name);
} else {
cbi(port_name,tx_pin_name);
}
/* insert wait routine if need */
sbi(port_name,clk_pin_name);
cbi(port_name,clk_pin_name);
data = data<<1;
/* insert wait routine if need */
}
}
664 :
名無しさん@1周年 :02/10/19 14:44 ID:OGDjNrVA
呼び出し元。与えるデータが決まっていないなら、 union LIC_union serial_data; serial_data.L=0x232C0; send_serial(serial_data.C[2]<<6, 2); /* send lower 2 bit of 3rd byte */ send_serial(serial_data.C[1] , 8); /* send 2nd byte */ send_serial(serial_data.C[0] , 8); /* send first byte */ こんなもんでどうでしょうか。18bitを8bitに分ける部分はいろいろ工夫。 与えるのが定数と決まっているならLIC_unionなんか介さずに send_serial(0x02<<6, 2); /* send lower 2 bit of 3rd byte */ send_serial(0x32 , 8); /* send 2nd byte */ send_serial(0xC0 , 8); /* send first byte */
665 :
名無しさん@1周年 :02/10/19 19:49 ID:G98qNfBF
8bitマイコンで上位bitから送る場合 ・2bit送出 ・8bit送出 ・8bit送出 の順序で分割して行うほかありません。 いずれにしろ、 ・bitのH/L評価 ・評価結果を送出ピンにセット ・clockパルス送出 ・データ(またはチェック位置)をシフト の操作がbit数分だけ必要になるかと。
666 :
名無しさん@1周年 :02/10/19 22:19 ID:0PXBF+b8
>>656 ところで使うPLL-ICはなんでしょうか。
それが判ればイメージしやすいかと。
667 :
656 :02/10/19 23:14 ID:niv+nlM0
668 :
663 :02/10/19 23:56 ID:prC2z5Gk
4bit+9bit+5bitの組み合わせなんですね。
データはMSBからなら
>>663 のような感じでいけますね。
これにEnableの操作を加える必要がありそうです.
9bitという半端なデータがありますが、これは1+8bitで送った方が
プログラム小さくなるようなきがします。
/*insert enable proc here */
send_serial(band<<4,4);
send_serial(main_data
>>8 ,1);
send_serial(main_data&255,8);
send_serial(sw_data<<3 ,5);
/*insert enable proc here */
669 :
656 :02/10/20 00:05 ID:nosy8Wmm
>>668 メイン9bitとスワロー5bitは一つとして扱うつもりです。
なぜ、別れているんだろうか・・・
しかもデータシートはステップの値が間違ってるし
670 :
663 :02/10/20 00:18 ID:CaUCMfkj
>>668 はまちがいあり send_serial((main_data&0x0100)
>>1 ,1)でした
でも
>>669 ということなら適当に理解し安いところで送った方がよさそうですね。
>>663 ちょっと改良
これでdataを予めシフトする必要なくなり、わかりやすくなる
void send_serial(unsigned char data , char cnt) {
/* send upper cnt bit of data. */
unsigned char mask;
mask=1<<cnt;
for ( ; (cnt) ; cnt--) {
if (data&mask) {
sbi(port_name,tx_pin_name);
} else {
cbi(port_name,tx_pin_name);
}
/* insert wait routine if need */
sbi(port_name,clk_pin_name);
cbi(port_name,clk_pin_name);
data = data<<1;
/* insert wait routine if need */
}
}
maskとdataを16bitにすれば14bitのメイン+スワローを一気に送れるので
わかりやすくなると思いますが、コード膨れ上がるかもしれません。
671 :
(■一■)アーロン(AUROn42k) :02/10/20 04:42 ID:OlKWJZvW
672 :
663@あかん :02/10/20 08:32 ID:CaUCMfkj
mask=1<<cnt; ↓ mask=1<<(cnt-1);
673 :
電子少年 :02/10/23 23:51 ID:5i+VRjG6
PICのプログラムをほかのパソコンで作るときのために、 簡易エディターを作っているのですが、アセンブラ⇒HEXフ ァイル変換DLLを探しています。誰か知っている人が居られ ましたら、教えてください。
674 :
名無しさん@1周年 :02/10/24 00:28 ID:hvXwx26R
>>673 あのーそれはコンパイラと言うものじゃないのでしょうか?
ちなみに、私が知っている限りではDLLはしらないです。
素直にmplabとか使ったらいいのでは?
メルアドが入っているメール欄、久しぶりに見た・・・
676 :
名無しさん@1周年 :02/10/26 13:20 ID:rseB2jZg
こんにちは!PIC16F877でちょっとしたPWMの回路のプログラムを
書くことになりました。MPLABをインストールしたところです。
それでちょっとうまくいかないのでgoogle検索なんかしてて、
このスレを発見しました! \(^o^)/
で、質問なんかできません。ログ読んだら俺ってば厨すぎ(ワラ
>>1-675 アンタラスゲーよ(ノД`)
>>676 PWMなら、H8/3664にしとけ。レジスタにセットするだけで、プログラム不要だ。
16F877単体なら秋月のh8/3664ボード(1600円)とそんなに値段変わらないだろ?
678 :
676 :02/10/26 14:03 ID:EwXGRhA4
>>677 レスありがと。しかしすでにPICを使ったハードが完成してるんだ。
先輩が作って、じゃ後は任せたから、と言って退社されますた。
たぶん開発環境に慣れさえすればすっげー簡単だろうな、くらいの。
たぶん、このスレで質問を書けるくらいの知識になれば
そのときは既に質問することなど何もないだろう。
それじゃ、おじゃましました\(^o^)/
>>678 このスレでの質問のしやすさを向上させてください。(漏れが助かる)
じゃ後は任せたから\(^o^)/
680 :
675 :02/10/26 21:26 ID:ijjzYuQ5
>>676 漏れまですごいのか。よくわからんがうれしい。(w
>>677 H8もPICもPWMについてはあまり変わらないのでは??
どちらもタイマ動かしてDutyCycleとPeriodを決めて
PWM動作するようにレジスタを設定するだけじゃないの?
他の機能についてはだいぶ違いますが。。。
681 :
名無しさん@1周年 :02/10/27 01:14 ID:QdDLurVd
>>680 そそそ、PICでもレジスタセットして、値を放り込むだけで動く。
PWMが出力できるピンは決まっているので注意。RC2だったかな。
偉大なるH8将軍様の手先が新顔を拉致する行為相変わらずだな 他スレにばっかり居るから本スレは不要ですって削除依頼したら?
>>677 は単にPICのPWM知らないだけじゃないの?
684 :
名無しさん@1周年 :02/10/28 15:32 ID:Eo102x+f
秋月の加速度計キット買ったんだが、PICのソースないのね オーバーフローしても継続して記録したいし、自前アプリで取り込みたいので 通信データのフォーマット知りたいし
685 :
684 :02/10/28 16:12 ID:Eo102x+f
686 :
名無しさん@1周年 :02/10/29 12:11 ID:d+ihQeNj
今日からPICをはじめてみようと思います. まずは新宿の紀伊国屋か秋葉に逝って本から読み始めようと思います. PICをはじめる上で何かアドバイス等ありましたらお願いします.
687 :
名無しさん@1周年 :02/10/29 12:55 ID:mtuHsK57
>>686 参考になるのは後閑さんのPIC本ですかねやっぱり。
私は結局PIC使わなかったけど(AVRとH8に流れた)、
あの本はワンチップマイコンとペリフェラルを理解するのに大いに役立った。
あとはWeb検索して引っかかるのを読みまくるとこでしょうか。
とくにあちこちのPageがLINK貼っているようなところは熟読
688 :
名無しさん@1周年 :02/10/29 19:37 ID:LmltBVz7
PICで、矩形波の周期を測定しようと考えているのですが、 いまいちよくわかりません。教えてくださいませ。 現在わかっていることは 1)inputキャプャーを使うとできそう 2)入力端子はエッジで動作するのでOK 3)タイマー1を使って、キャプチャ割り込み時に その値をゲットする。この値は水晶から割り出したものなので 時間に変換できそう。 ここで疑問なのです。割り込み毎にタイマー1をクリアする 必要があると思うのですが、ハード的にそのようになって いないようです。(コンペアモードならクリアするらしいが、 キャプチャモードなので) 割り込みルーチンの中でクリアしていては誤差になりそうだし。 もしクリアせずに、「今回値-前回値」という使い方となると 何周したかわからないと思うのです。 どのように実現するのでしょうか。宜しくお願います。
689 :
名無しさん@1周年 :02/10/29 21:40 ID:mtuHsK57
>>688 同じ様なことをやろうとしています。これまで考えついた方法は、
1.タイマオーバーフロー割り込みで周回数カウント変数を1つインクリメントする。
タイマと合わせて24〜32bitで時間計測できる
キャプチャ割り込みルーチンから周回数カウント変数を読めばその間は
タイマオーバーフローで数値がインクリメントすることはないと思う。
2.はじめっから16bitでオーバーフローしない程度のプリスケーラー設定をする
タイマ1の数分の1程度でかかる割り込みをタイマ0で作り、
前回キャプチャ値−現在のタイマ1値がunsignedである程度以下になったら
オーバーフロー扱いにする(最大計測幅は1周よりやや小さくなる)
3.インプットキャプチャ時クリア機能があるAVRを使う(藁
こっちはAVRでやってますので、PICで外してたらスマソ
690 :
名無しさん@1周年 :02/10/29 21:55 ID:FCg2LNRR
ありがとうございます。そっかそっか タイマ1のオーバーフローの回数を数えればいいんですね。 それもタイマ1オーバーフロー割り込みでやるんですね。納得。 でも2つの割り込みが同時、あるいは割り込み中に他方の割り込みが来たらどうしましょうね。 2の方法は、一つの方法ですが、ちょっともったいないですね。 インプットキャプチャ時クリア機能があるAVRは いいですね。考えていた通りのやり方ができそう。うらやましい。 でもこれが16bitマイコンだったら ラクなんだろうなぁと 考えてしまいます。 ありがとうございました。
691 :
689 :02/10/29 22:53 ID:mtuHsK57
>>690 >でも2つの割り込みが同時、あるいは割り込み中に他方の割り込みが来たらどうしましょうね。
割り込みには優先順位があります。
同時に2つの割り込みが起こったらどれが優先されるかは予め決められています。
そして割り込み処理中は他の割り込みは禁止状態になっています。
(割り込み許可命令を実行しない限り)
PICはうろ覚えですが、たぶん同じだったと思うけど・・データシートで確認してください。
>インプットキャプチャ時クリア機能があるAVRは いいですね。考えていた通りのやり方ができそう。うらやましい。
PICでもインプットキャプチャ時割り込みってできましたっけ?
もしできるならその割り込みルーチンの中でタイマ1クリアすれば同じようにできると思います。
最低でも、INT割り込みを使ってタイマ1読みとり→タイマ1クリアを割り込みで行い
その変数を割り込み外から読みとる手もあります。(2byteの場合は上位下位読み込みの
間に割り込みが入る可能性に注意)
>でもこれが16bitマイコンだったら ラクなんだろうなぁと
そうですね。8bitのパソコンと違ってメモリも厳しいからもー大変ですね(^^;)
692 :
名無しさん@1周年 :02/10/29 23:12 ID:7tVWt/T1
PICなんて馬鹿こいてないでAVRにしなさい。
>>692 まあそうだけど、SXを使いたい場合はこの限りでは無いよ。
694 :
名無しさん@1周年 :02/10/30 01:36 ID:EQeXy2F1
>>692 アプリケーションによって選択すればよろし。
ちなみにこちらはpicだ。
Cで書けばそんな大差なし。あとはプログラムの技量。
695 :
689 :02/10/30 08:29 ID:cY/F2aLc
やっぱりぼけてました。PICって割り込みの数だけジャンプベクタが並んでいる のではなく、ジャンプする先は0004番地固定なんですか。うーむ。 あとで考えてみましたが、1.はそのままではまずいな。 タイマって割り込み禁止しても動き続けますから、どうしてもタイマ1取得後 オーバーフローする可能性ってありますね。 ちょっと頭イタイ処理を要しそうです。できれば避けた方がいいかも。
696 :
676 :02/10/30 18:51 ID:QYNmcCdb
ICEが動いたヽ(´▽`)ノ ウワァァァイ スイッチ押してプログラム終了、だけだけど(プ
697 :
680 :02/10/30 21:53 ID:cY/F2aLc
698 :
名無しさん@1周年 :02/10/31 00:29 ID:66UaXQbs
699 :
名無しさん@1周年 :02/10/31 01:20 ID:i50m3Z5K
そもそも、何でPICとAVRを共存させているスレッドになってるんだろうと、疑問。 「初心者」という所で共通にしたわけか。 やっぱし分けて欲しい所。
700 :
700get :02/10/31 07:39 ID:Ibr1WBpr
>>699 そうですか?実際話題が混在していてもあまり困らないような。
#事情があってPIC/AVRを選ぶんだから、あまりごちゃごちゃ言い過ぎるのも
ナンだと思うのだが。"AVRなら○×ですむんだけどなー"とか、
"PICだと○×事例たくさんあるんだけどなー"程度がいいと思われ
PIC信者の賛美歌が煩いスレはこちらですか?
702 :
700get :02/11/01 04:40 ID:X83S1ws+
んなこといわれても・・・ちなみに漏れはAVR信者っす。
Cを使う分にはどっちでもあまり変わらない気がする。 アセンブラを使い出すと、PICはちと癖があるなって 思ったりもするのですが、2K程度のプログラムだしね。 情報量ではPICの方が上、AVRはシンプルすぎて 解りやすい分情報が少なくてもなんとかなる。 こんな感じ?
704 :
700get :02/11/01 08:44 ID:Q+eH5okM
AVR派ですけど、PICでの製作例を参考にするためPICの勉強もしています(^^)。 RB4:RB7の変化による割り込みなんかはいいなと思った。 過去レスに低周波数クリスタルでの動作はPICの方が有利というのもありましたね。 PICのいい点他にもあったら教えて
705 :
↑ :02/11/01 09:28 ID:Cob9w1UN
>過去レスに低周波数クリスタルでの動作はPICの方が有利というのもありましたね。 こいつ技術力ゼロのただの信者だ 駄レスを並べてでスレのレベルを落とさんでくれよ お仲間が多い自作板にでも行けば?
はぁ。。。
>>705 煽るだけなら厨房板逝っとけ。
おまえの仲間がゴロゴロ居るぞ(ワラ
708 :
電子少年 :02/11/02 12:31 ID:YNIh+Agd
PICのシリアル通信機能はどういうものですか?
710 :
名無しさん@1周年 :02/11/02 16:59 ID:2DRnS2s/
711 :
656 :02/11/03 23:59 ID:mlg9pCAa
あれからいろいろやってみましたが、いまいち理解できなかったので完全なプログラムが完成しませんでした。 どなたか↓に書いてあることをプログラムにしてもらえないでしょうか? まず、ポートD0〜7からパラレルで常時入力されているBCDコード(正論理)を10進数(2桁)に変換してそれをTに代入したとする。 (D0=1桁目重み1、D1=1桁目重み2、D2=1桁目重み4、D3=1桁目重み8、D4=2桁目重み1、D5=1桁目重み2、D6=1桁目重み4、D7=1桁目重み8) 計算後の先頭4ビットをB(2進数)と、残りの14ビットをC(10進数)と置く。 そして、 1≦T≦3ならB=0001、C=(T*6+144)/0.0625。 4≦T≦7ならB=0010、C=((T-3)*6+224)/0.0625。 8≦T≦12ならB=0010、C=((T-7)*6+246)/0.0625。 13≦T≦62ならB=1000、C=((T-12)*6+524)/0.0625。 63≦T≦99、T=00なら無視 計算が終了するとポートB2(信号名:Enable)を1にして、 その結果BとCを、シリアルでポートB1(信号名:Data)から送出する。 そのとき、同時にポートB0(信号名:Clock)からクロックを送出。 計18bit送り終わったらB2を0にして終了 これを繰り返す。 なお、2ループ目以降ポートD0〜D7から読んだ値が同じ場合、再びDATAを出力することはしない。 使用マイコンはAT90S4414-8 動作させるクロックは4MHzです。
712 :
名無しさん@1周年 :02/11/04 10:34 ID:e++LGFrx
>>711 どこがうまくいかないのか書いて欲しい。全部じゃないよな(^^;)
=((T-3)*6+224)/0.0625は、
=(T*3+103)*32=(T<<5)+(T<<6)+(103<<5)+3296
に置き換えた方がいいな。他の式も同様。
これなら最後の定数部分以外全ての式が共通になるので同じルーチンが使える。
713 :
名無しさん@1周年 :02/11/04 14:55 ID:R2sO8Wb1
=(T*3+103)*32 =(T<<5)+(T<<6)+(103<<5) =(T<<5)+(T<<6)+3296 です。
714 :
AVR :02/11/04 19:35 ID:7zRNsie3
>>711 >>周波数シンセに直列データを出したい。
シンセのデータシートを解釈するとこうなります。
(1)最初
↓過去の状態を精算するためLowにしてからTNL(2μs)以上時間保持する
EN ──┐ ┌───────────
──┴───┘ ↑HighにしてからTL(10μs)以上保持する
Data ──┐
──┴───── 過去の状態を精算するためとにかく Lowにする
CK ──┐ 同上
──┴─────
(2)データを18発
Data. ┬─────────┬─ 1.Dataを出しCKをLowにする
┴─────────┴─ 2.TS(2μs)を確保
←TS→:←TC→:←Th→ 3.CKをHighにしてTC(2μs)を確保
CK ┌──┐ 4.CKをLowにしてTh(2μs)を確保
──-─┘ └────
(3)最後
↓HighのままTSL(2μs)以上確保
EN ───┐
└───────────────── ここまでやっておけば
↑LowにしてからTNL(6μs)以上確保 このあと何が来ても安心。
715 :
AVR :02/11/04 19:36 ID:7zRNsie3
送信のサビの部分 ; 図の(1)の前半。 sbi DDRB,Enable ; Enabl用ピンを出力状態に。 cbi PORTB,Enable ; Lowを出力。 sbi DDRB,dData ; Data用ピンを出力状態に。 cbi PORTB,Data ; Lowを出力。 sbi DDRB,Clk ; Clock用ピンを出力状態に。 cbi PORTB,Clk ; Lowを出力。 ; 図の(1)の後半。 rcall t12 ; TNL(6μsec)。余裕とって2倍 sbi OPRTB,Enale ; EnaleをHighに。 rcall t10 ; TL(10μsec)。余裕とって2倍 rcall t10 ; ; 図の(2)の部分。 mov r8, B ; バンド選択データ R8は単なる一時作業用。 rcall Xmit4 ; しも4ビット送出 mov r8, Cの上位 ; メインカウンタ用データの上位 rcall Xmit6 ; しも6ビット送出 mov r8, Cの下位 ; メインカウンタ用下位とスワローカウンタ用データ rcall Xmit8 ; 全8ビット送出 ; 図の(3)後始末の部分。 rcall t4 ; TSL2μsec。余裕とって2倍 cbi PRTB,Enale ; EnaleをLowに。 rcall t12 ; TNL10μsec。余裕とって2倍 ; 終了 ; ループが無いプログラムはバグりも少ないので健康にいいですよ。
716 :
AVR :02/11/04 19:37 ID:7zRNsie3
Xmitt: ; Xmit8: bst r8,7 ; R8のビット7をTフラグに。 rcall bitX ; それ1個を送出 Xmit7: bst r8,6 : あとはひたすら‥ rcall bitX Xmit6: bst r8,5 rcall bitX Xmit5: bst r8,4 rcall bitX Xmit4: bst r8,3 rcall bitX Xmit3: bst r8,2 rcall bitX Xmit2: bst r8,1 rcall bitX Xmit1: bst r8,0 rcall bitX ret ; ループがないプログラムは速いし(略
717 :
AVR :02/11/04 19:38 ID:7zRNsie3
Data. ┬─────────┬─ 1.Dataを出しCKをLowにする ┴─────────┴─ 2.TS(2μs)を確保 ←TS→:←TC→:←Th→ 3.CKをHighにしてTC(2μs)を確保 CK ┌──┐ 4.CKをLowにしてTh(2μs)を確保 ──-─┘ └──── bitX: ; データはTフラグで渡される。 push r0 ; R0一時借用 in r0,PORTB ; 現在のポートBのデータを得て、 bld r0,Data ; Dataビットの所にTフラグから入れて、 out PORTB,r0 ; ポートに戻す。これで1ビット出まひた。 ; 上図の通りにクロックをひと振り。 rcall t4 ; TS(2μsec)。余裕つけて2倍 sbi PORTB,Clk ; ClockをHighに rcall t4 ; TC(2μsec) cbi PORTB,Clk ; Lowに戻し rcall t4 ; Th(2μsec)で終わり。 pop r0 ; 借りたR0を返す ret 無駄時間かせぎ t12: rcall t2 ; 12μsec t10: rcall t2 ; 10μsec t8: rcall t2 ; 8μsec t6: rcall t2 ; 6μsec t4: rcall t2 ; 4μsec t2: nop ; 2μsec ret (4MHzクロック用。4MHzは0.25μ秒。 rcall t2は3clk、nopは1、retは4、計8clk=2μ秒。)
718 :
AVR :02/11/04 19:39 ID:7zRNsie3
蛇足だと思いますが、アセンブラでの最初のところのサビ。 .cseg ; プログラム領域の0番地から。 .org 0 ; 割込みジャンプテーブル(全13項目) rjmp reset ; 最初はリセット時の行き先 reti ; 割込みは全く使わないようなので reti ; 12行 reti を並べる。 ‥‥ .org $20 ; 適当に切りの良いところから reset: ldi r0,RAMEND ; スタックポインタをRAMの末尾に設定。 out SPL,r0 cli ; 割込みを全く受付けなくする。(リセットのみ有効) アセンブラはこんな前準備で大体いけると思います。 以上、全くアセンブルもシミュレートもしてない思い付きをダラダラ書きました。 長文失礼。 p.s.最初のBCDデータは手動スイッチのようなものですか?設定してる途中の データをどんどん送ってしまうような気が。それとBCDを十進にするとかの意味が 今市分からなかったですが‥Cはスワロー値も一気に計算させたいんですか?
719 :
名無しさん@1周年 :02/11/04 20:36 ID:ZbKunpoc
Tの数値、これTVのチャンネルなのかな?
何かロータリーエンコーダーからBCD2桁を出すような物をつなぐのでしょうか?
>設定してる途中のデータをどんどん送ってしまうような気が。
チャタリング処理を数100ms単位にしたような処理が必要そうですね。
計算部分ですが、もしかしたら、16bit×62のテーブルを作って
lpmで読ませた方が手っ取り早いかもしれません(^^;)
>>716 うーむなるほど!と思った。
720 :
名無しさん@1周年 :02/11/04 20:37 ID:ZbKunpoc
>>719 テーブル作った方がいいというのは消したつもりで送ってしまった。
この2行取り消しね
721 :
656 :02/11/04 23:17 ID:QGxxxOcn
アセンブラ+解説入りとてもほうがわかりやすいです。
>>718 BCDはサムホイールスイッチ(サムロータリースイッチ)からですので、常時入力されることになります。
BCDを10進に直したのは計算式が書きやすそうだったからです。
スワロー値は一気に計算してますが、ダメでしょうか?(メモリー食うとか?)
>>719 はい。TVですよ。
なかの144とか言う数値は局部発振周波数-6です。(計算しやすいように先に-6引いておきました)
サムホイールスイッチは接点同士を滑らせているのでチャタリングは発生しにくいと思います。
なのでチャタリングのことは考えなくてもいいと・・・(もし発生しているようならコンデンサでもパラっておきます)
今日から、PICはじめようと秋月に行ったら、月曜で閉まってました。 連休でも閉めるのか…男らしい会社だが、悲しかったよ、漏れは。
>>714-718 n
ふぇー!Cより分かりやすいアセンブラって…
>>721 BCDを10進に?
BCDはすでに10進数でないのかい
>>723 それは神のおみちびきだぞ?
PICやめてAVRにせんかゴルァ!って
>>721 そういう用途でほかに仕事がないなら、周波数をめいっぱい下げて、
さらにスイッチ読みとり+送信をタイマオーバーフローで処理して(チャタリング処理もここで)、
処理の間はスリープさせるというのはどう?スリープはやらんでもいいけど
1MHzにしたらほとんどwaitが要らないか、nopちょっと挟むだけでいける(^^)
>>723 AVRのアセンブラって時にC並みに(書く人によってはC以上に)わかりやすいね
BCDを十進にじゃなくて2桁BCDをbinary(1-62)に、ということみたいね
725 :
656 :02/11/05 18:03 ID:D88/wqtY
>>712 ほぼ全部・・・
>>71 > =((T-3)*6+224)/0.0625は、
> =(T*3+103)*32=(T<<5)+(T<<6)+(103<<5)+3296
アセンブラのときはこの式はどう書いたらいいのですか?
掛け算命令がないみたいだから、足し算で一生懸命やると?
>>724 >BCDを十進にじゃなくて2桁BCDをbinary(1-62)に、ということみたいね
あ、そういうことです。
726 :
AVR :02/11/05 19:40 ID:K0nwzbUc
(続長文失礼) ldi work, 0x00 ; out DDRD, work ; ポートD 8ビット全部を入力に設定。 clir old_bcd ; BCDの過去値を仮にゼロとしますた。 getBCD: in bcd, PIND ; スイッチ入力を読む cp bcd, old_bcd ; 過去の値と比べて breq getBCD ; 同じなら却下。 rcall t50m ; 無駄時間50m秒のあと、 in work, PIND ; 再びスイッチを読んで cp work、bcd ; 今しがたの値と比べて brne getBCD ; 違うなら却下。 ; スヰッチが変わったと判断し、以下へ。 ; mov old_bcd, bcd ; 次回の比較用に保存しとく。 ; rcall DBconv2 ; bcd→自然二進 ; rcall CH_data ; シンセ用のデータを作る cpi data_is_varid, 0 ; T が範囲外だった? breq getBCD ; なら却下。 ; rcall Xmitt_to_synthe ; シンセに与える ; rjmp getBCD ; 一式終了、永久ループ
727 :
AVR :02/11/05 19:40 ID:K0nwzbUc
NB(自然二進)符号 │ * │ * グラフは y = x ですね。 │ * │ * │ * │ * *─────── 数値 BCD符号 * │ * │ | BCD符号 │ | 十の位の数値を a、一の位を b とすれば、 │ * y = 16a + b │ * というグラフです。 │ * aが1増すごとに16ずつジャンプ │ | するですね。 │ | │ * │ * *──────── 数値 DBconv2: ; 2桁限定版 mov T, bcd ; T はご要望にあった変数名です。 andi bcd, 0xF0 ; 十の位だけにしたので上記の16aです。 lsr bcd ; lsr bcd ; 右に2回シフトすれば16a→8a→4a sub T, bcd ; (16a+b)−4a をしました。結果は 12a+b すね。 lsr bcd ; で、もう見え見えですが 4a→2a を作って sub T, bcd ; (12a+b)−2a = 10a+b ret ; 結果は T にお持ち帰り
728 :
AVR :02/11/05 19:41 ID:K0nwzbUc
CH_data: ; 帯域分け周波数データ clr data_is_varid ; データ有効お知らせフラグを「駄目」に。 cpi T, 0 ; =0 なら却下(ですよね?) breq CH_exit ; cpi T, 63 ; ≧63 も却下 brsh CH_exit ; ( sh は same or high です) CH1_3: cpi T, 4 ; 1CH〜3CH? brsh CH4_7 ; 4以上ならジャンプ ldi B, 0b0001 ; ldi work1, 0 ; のちほど計算用 ldi work2, 144 ; rjmp CH_keisan ; CH4_7: 上と同じようなことをする。 CH8_12: 同上 CH_UHF 同上 CH_keisan sub T, work1 ; (T-work1) lsl T ; 2倍つまり 2(T-work1) mov work1, T ; work1 を作業用に使う lsl T ; = 4(T-work1) add T, work1 ; = 6(T-work1) add T, work2 ; = 6(T-work1)+work2 lsl T ; それを2倍 lsl T ; 4倍 lsl T ; 8倍 lsl T ; 16倍 =(6(T-work1)+work2)×16 ldi data_is_varid, 0xFF ; データ有効お知らせフラグをセット CH_exit: ret
729 :
AVR :02/11/05 19:42 ID:K0nwzbUc
>>スイッチの過渡状態 サムホィールでBCD19から21に変えるとき、まず十の桁を2に上げますね、 そのとき29を送っちゃいそうな、続いて1の桁をコチコチコチと下げる途中の 28,27,26‥も送るような気が。ま、動作確認実験段階でこんなこと気にする こともないすね。 (長文失礼しました)
>>725 >アセンブラのときはこの式はどう書いたらいいのですか?
>掛け算命令がないみたいだから、足し算で一生懸命やると?
だからシフトと足し算に置き換えたんじゃない(^^;)
;2バイト左シフト用ルーチン.スタックに注意
word_lsr4:
rcall word_lsr2
word_lsr2:
rcall word_lsr1
word_lsr1:
shl r0
rol r1
ret
つづく・・・・
;make_Cvalue:T値をr19に入れてcall.C値はr16:r17,B値はr18に返す ;ワークエリアとしてr0,r1を使う make_Cvalue: tst r19 breq Ch_err cmpi r19,63 brpl Ch_err Ch_01_03: cmpi r19,4 brpl Ch_04_07 ldi r16,low(144*16) ldi r17,high(144*16) ldi r18,1 rjmp make_Cvalue2 Ch_04_07: cmpi r19,8 brpl Ch_08_12 ldi r16,low((224-3*6)*16) ldi r17,high((224-3*6)*16) ldi r18,2 rjmp make_Cvalue2 Ch_08_12: cmpi r19,13 brpl Ch_13_62 ldi r16,low((246-7*6)*16) ldi r17,high((246-7*6)*16) ldi r18,2 rjmp make_Cvalue2
Ch_13_62: ldi r16,low((524-12*6)*16) ldi r17,high((524-12*6)*16) ldi r18,8 rjmp make_Cvalue2 Ch_err: ;r18(B)=0でエラーと言うことにしてある。これで困るなら他の処理を clr r18,8 ret またまた続く。。。retで終わっているけどまだルーチンの途中だよ make_Cvalue2: ;Tをr18に入れ、定数部分をr16:r17に入れてcall.r16:r17に結果を返す. ;定数項以外の部分を計算 clr r1 mov r0,r18 rcall word_lsr4 rcall word_lsr1 ;これでr0:r1=T<<5 add r16,r0 adc r17,r1 ;[r16:r17]=[r16:r17]+(T<<5) rcall word_lsr1 ;[r18:r19]=T<<6 add r16,r0 adc r17,r1 ;[r16:r17]=[r16:r17]+(T<<5)+(T<<6) ret
733 :
名無しさん@1周年 :02/11/05 20:47 ID:Yk7dUscx
clr r18,8→clr r18ね。 他にも間違いはたぶんあるだろうけどまあ雛形にしてチョ
734 :
656 :02/11/05 20:50 ID:D88/wqtY
>>715 あ、忘れてました。
それぞれのポートは、B0:Clock、B1:Data、B2:Enable です。
>>729 ホイール設定後に押しボタンを押す方法も考えたのですが、プログラムが面倒になりそうだったのでやめました。
だから設定途中でどんどん切り替わっていくのは放置で・・・
|-`)9→1にかえるならゴチゴチとageるので2回で済みます。
735 :
ЯVА :02/11/05 21:26 ID:7FKXu515
アップ直前に
>>725 を見て大急ぎで
>>728 を書いたですが今見直したら work1 の
ところが見通し悪くて ┐(´Д`)┌ でした。
CH_keisan ; (6(T-work1)+work2)/0.0625 の計算をする。なお、1/0.0625=16
sub T, work1 ; T-work1 の計算。
lsl T ; それを6倍するために、まず2倍する
mov work1, T ; 用済みの work1 にコピーして
lsl work1 ; さらに2倍するから合計4倍
add T, work1 ; 2倍に4倍を足して 6(T-work1)を得る。
add T, work2 ; それ+work2 = 6(T-work1)+work2
lsl T ; それ全体を2倍
lsl T ; 4倍
lsl T ; 8倍
lsl T ; 16倍 =(6(T-work1)+work2)×16
ldi data_is_varid, 0xFF ; データ有効お知らせフラグをセット
T に応じた数値を得るのは数表(テーブル)作るのが定石です、慣れたらいつか
そのワザもモノにしてください。
>>718 >>スワロー値も一気に計算させたいんですか?
これ、風邪の熱で脳が納豆になってました、スワローカウンタめったに使わ
ないんで商と剰余を別々にしないと駄目みたいに勘違いしてたような。
736 :
ЯVА :02/11/05 21:53 ID:VLNj3g7v
あーいけない、仕事と混同して16ビットマシンのつもりで書いてまひた、まだ脳が‥(笑
737 :
名無しさん@1周年 :02/11/05 22:32 ID:Yk7dUscx
>>735 たぶんそれだと9chあたりから結果は8bit越えますのであふれるかと。
UHFだとwork2からして524です。
>>731 よく考えてみると、C値は下位5ビットは0ですから、ここにBの値収容できるから
1チャンネルあたり2バイトに収まりますね。
ということは62chで62word/124bytesでテーブルできちゃう訳で。
EEPROMやFLASHにテーブルつくってこれを引っぱり出す力技もいけるかな。
FLASH 2048ワードの4414ですよね?
引っぱり出すルーチンも合わせて76ワード(Tの範囲チェック除く)ですが、どうでしょ?
738 :
名無しさん@1周年 :02/11/05 22:34 ID:Yk7dUscx
clr r0 ;後で使う ldi ZL,low(CH_TABLE*2-2) ;番地はワード単位なので2倍 ldi ZH,high(CH_TABLE*2-2) ;Ch1のデータが先頭に来るように-2しておく shl チャンネルナンバー入れたレジスタ ;1データは2バイトなのでx2 add ZL,チャンネルナンバー入れたレジスタ ;これで必要なチャンネルの adc ZH,r0 ;データ入れた番地が入る lpm ;r0←テーブルデータ下位 mov C値下位を入れるレジスタ,r0 andi C値下位を入れるレジスタ,0xF0 mov B値を入れるレジスタ,r0 andi B値を入れるレジスタ,0x0F adiw ZL,1 ;アドレスをinc lpm ;r0←テーブルデータ上位 mov C値上位を入れるレジスタ,r0 ret CH_TABLE: .DW チャンネル1のデータ(下位4bitがB,下位4bitを0にしたものがC) .DW チャンネル2のデータ .DW チャンネル3のデータ : .DW チャンネル62のデータ
>>736 フォローの前に突っ込んでしまいました。すんません。
優しすぎる…
__...__ ______
,. ' "´ ``ヽ、 /
;' ':.. |
>>740 レスの付きがいいワケは
;' ´ ` .| 656がシカーリ受け止めるからと思うだ
/ ● ● ∠
/ ⌒ ▼⌒':  ̄ ̄ ̄ ̄ ̄ ̄ ̄
__ / 彡 ∵人∵ノミ___
 ̄/ ___ ミ ノミ ̄ ̄ ̄
 ̄ ̄ ̄ ̄ ̄── ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄─── ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
742 :
名無しさん@1周年 :02/11/06 00:06 ID:Jt2tzr1q
>>735 >work1 のところが見通し悪くて ┐(´Д`)┌ でした。
確かに追いやすい(w
このルーチンは2バイト処理に書き換えるだけで
動くんじゃないかな。でも16bitのAVRがあったら欲しいね。
744 :
ЯVА :02/11/06 19:16 ID:fPgbfEX7
>>739 とんでもない、謝るのはアフォやった私のほうです。
>>734 >> |-`)9→1にかえるならゴチゴチとageるので2回で済みます。
お約束の突っ込みthx!
CH_data: ; 帯域別データ作成
clr data_is_varid ; データ有効お知らせフラグを「駄目」に。
cpi T, 0 ; =0 なら却下(ですよね?)
breq CH_exit ;
cpi T, 63 ; ≧63 も却下
brsh CH_exit ; ( sh は same or high です)
CH1_3:
cpi T, 4 ; 1CH〜3CH?
brsh CH4_7 ; 4以上ならジャンプ
ldi B, 0b0001 ;
ldi Tminus, 0 ; Tから引く数
ldi LFh, high( 144 ) ; 局発周波数(2バイトデータ)
ldi LFl, low( 144 ) ;
rjmp CH_keisan ; 計算へ。
CH4_7:
上と同じようなことをする。
CH8_12:
同上
CH_UHF:
同上
(続↓)
745 :
ЯVА :02/11/06 19:17 ID:fPgbfEX7
CH_keisan ; (6(T-Tminus)+LF)×16 を計算する。
sub T, Tminus ; (T-Tminus)の計算。
mov Cl, T ; Cに移す。下位バイト←(T-Tminus)
clr Ch ; 上位バイト←ゼロ
ldi work, 6 ;
rcall kake ; 6を掛ける
add Cl, LFl ; 局発値を足す。(下位バイトの足し算)
addc Ch,LFh ; 上位バイトの足し算(下位からのキャリも足す)
ldi work, 16 ;
rcall kake ; 16を掛ける。これで完成。
ldi data_is_varid, 0xFF ; データ有効お知らせフラグをセット
CH_exit:
ret ; BとChとClにお持ち帰り。
kake: ; 小さな掛け算。 C(2バイト)×work(小さな数)
push r1 ; r1とr2を一時借用
push r2
mov r1, Cl ; Cをコピー
mov r2, Ch
kake10:
add Cl, r1 ; C+r1,2 を繰り返すだけ。
addc Ch,r2;
dec work ; 繰り返す回数
brne kake10 ; ループ。
pop r2
pop r1 ; 借りたr1,r2を返却
ret ; Cにお持ち帰り。
>>743 どもです、2バイト化やマクロ使用かとも思いましたがやはり正攻法が良いかと‥
>>745 kake: に参った。
うーむ、処理時間余りまくっているのを見越してなら、
シンプルでコード小さく汎用性があっていいっすね。
ちょっと考えてみましたが、
((T-Tminus)*3+LF/2)*32とすれば、(T-Tminus)*3は最大でも150で8bitに収まります。
ここまでは1バイトのままいけるなあ、と思って書いた
CH_keisan:
Clr Ch
sub T,Tminus
mov Cl,T
add Cl,T
add Cl,T
add Cl,LF2l ;LF2はLF/2
adc Ch,LF2h
ldi T,5 ;Tはどうせ壊れてるし
shift_T:
shl Cl
rol Ch
dec T
brne shift_T
ret
こういうのは邪道なんでしょうね。
LFが奇数値になったり(T-Tminus)×7が必要になるだけで破綻するし(^^;)
747 :
名無しさん@1周年 :02/11/07 02:17 ID:uB8QKSgL
>>745 addc (W
僕もいつもやるんでマクロにしてます。
>>746 そうなんよね、工夫すると1バイトに収まる場合はあるけど
仕様変更でぶち壊しになるのが恐くて。
748 :
656 :02/11/07 17:12 ID:RHILUqee
あの・・・、addcってなんですか?
>>748 それ、漏れも気になってたけど、adcのことだろうと思って読み流してました。
もしかしてAVRのアセンブラに2種類あってそっちではaddcとなってるのかな?
brshというのも見慣れないと思ったら、こっちはちゃんとインストラクション
セットにありました。brccと同じなんですね。
750 :
656 :02/11/08 22:00 ID:KCFX0TLX
ちょっとプログラムageたいんですが、どこかウプロダないですかね?
751 :
名無しさん@1周年 :02/11/08 23:03 ID:/7Fdjb4q
752 :
656 :02/11/08 23:52 ID:KCFX0TLX
753 :
名無しさん@1周年 :02/11/09 00:32 ID:oLCbAnps
>>752 >やっぱかき集めただけでは動かない?
そりゃそうでしょう。AVR氏は必ず自分で考えないと駄目なように書く人だし。
最後の
>reset: ;こんなところに居ていいのかな?わかんねぇや
の部分は、最初の
>.org $20 ;適当に切りの良いところから
の次に置くんだよ。スタックを決めてから、その後にBCDスイッチを
読み込むループにつながる。
最初に
>.DEF TEMP = R16
と書いてる所に並べて
ほかの変数も全部定義してやらないと。work,T,Cl,Chなど全ての定義が必要。
.DEF work = R15
とか。
これをしっかりやればエラーの数は減ると思うが。
754 :
名無しさん@1周年 :02/11/09 00:44 ID:N9l4T5Yw
755 :
656 :02/11/09 01:01 ID:PWQlPM/Y
>>753 > ほかの変数も全部定義してやらないと。work,T,Cl,Chなど全ての定義が必要。
(;゚Д゚)は!そうじゃんか・・・
756 :
名無しさん@1周年 :02/11/09 01:27 ID:S3AUMzFu
つゆーか、一時的作業変数の名前はTEMPかWORKかなど 早い時期に自分の責任で統一をはかった方が良いと思うぞ。 不必要に色々な名前を使うとレジスタが不足したり デバッグの混乱のもとに。
757 :
656 :02/11/09 02:14 ID:PWQlPM/Y
758 :
656 :02/11/09 02:17 ID:PWQlPM/Y
759 :
名無しさん@1周年 :02/11/09 03:08 ID:Tevkln8X
.INCLUDEや.DEFを左端から書いてる。4414def.inファイルの書式に合わせると良い。 最初はTABだよ。 それから、4414def.inファイルの中で定義が済んでるものを2重定義してる。 スタックポインターやポートのアドレスはハードで決まってるアドレスだから.incファイル にすでにあるよ。それをレジスタにEQUするとわけ分からん。w それから最後の方のChのあとに全角スペースが2つあるみたい。 ガンガレ
760 :
名無しさん@1周年 :02/11/09 03:39 ID:iHwEn42X
AT90S4414-4だよね? 英語のデーターブックの7ページを見たのだがこのチップはRAMの最後が$15F番地 だからスタックポインタは2バイトだ。こうじゃないかな ldi temp,low(RAMEND) out SPL,temp ldi temp,high(RAMEND) out SPH,temp 俺がいつも使うAT90S2313はスタックがSPLしかないので初めてだよ。 .DEFや.EQUは左端でもいいと思うけど…。 しかし .DEF Enable = R17 .DEF data = R18 .DEF clk = R19 この3つはレジスタではなく出力ポートのビットの番号なんだろう? .EQU Enable = 2 と書くべきでは?
761 :
名無しさん@1周年 :02/11/09 03:51 ID:iHwEn42X
それから重要なことだけど workなど、ldi命令で直接数字を書くレジスタはR16以上にすること。
762 :
名無しさん@1周年 :02/11/09 04:14 ID:Dc1NmgtL
最初のスタックの所のLDI命令でR0を使ってたのか。 変数はR16以上にすればいい↓。これで多分えらー激減。 .DEF work = R17 .DEF work1 = R18 .DEF work2 = R19 .DEF bcd = R20 .DEF old_bcd = R21 .DEF cl = R22 .DEF ch = R23 .DEF LFl = R24 .DEF LFh = R25 .DEF data_is_varid = R26 .DEF T = R27 .DEF B = R28 .DEF Tminus = R29 .EQU Enable = 2 .EQU data = 1 .EQU clk = 0 えらーになる行のChとbrshの後ろに全角スペースがあるよ。
763 :
名無しさん@1周年 :02/11/09 04:19 ID:Dc1NmgtL
CH_data: ; 帯域別データ作成 ↑ CHが全角だぞ。
765 :
名無しさん@1周年 :02/11/09 12:51 ID:hHXsOlaQ
ソース読めなくなっちゃったので何もかけんけどとりあえず
>ldi LFh,high( 144 );局発周波数(2バイトデータ)
>ldi LFl,low( 144 );
>このhighとかlowはなんなんでしょうか?
2バイト数値の上位バイト・下位バイトを取り出す疑似命令だよ
この計算はコンパイラ+PCでなされ、AVRがやるわけじゃない。
例えば、
ldi r16,low(0x1234)
ldi r17,high(0x1234)
は、
ldi r16,0x34
ldi r17,0x12
に変換される。4414ならスタック設定にも出てくるね(
>>760 参照)
766 :
656 :02/11/09 16:35 ID:PWQlPM/Y
767 :
AVR :02/11/09 18:58 ID:Dc1NmgtL
え〜!すごいことに〜! ソースリストが見れません
768 :
名無しさん@1周年 :02/11/09 19:04 ID:N9l4T5Yw
769 :
656 :02/11/09 19:20 ID:PWQlPM/Y
770 :
AVR :02/11/09 19:48 ID:LmQry6a1
>>769 ども、不完全なプログラムでご免なさいです、早速エラー箇所が分かるファイルですが、
ソースファイルと同じフォルダに、拡張子が.LSTというファイルが出来てるはずです。
それがアセンブル結果のリスト(List)です。
メモ帳で十分ですよ、私も図を書かないレスはメモ帳で書いてますよ。
で、アセンブルリストのエラー場所を探すには検索で「error」の文字を捕まえましょう。
ここ↓ですね。
>>
>> .org $20 ; 適当に切りの良いところから
>>
>> reset:
>> 000020 ldi r0,RAMEND ; スタックポインタをRAMの末尾に設定.
>> error : Illegal argument type or count
>> 000021 be0d out SPL,r0
>> 000022 94f8 cli
errorと出た行の上の行間違ってる行になります。
今回は、
>>760 氏の指摘箇所がまだ直されてないようなんで、ldi r0,RAMEND を
>> ldi temp,low(RAMEND)
>> out SPL,temp
>> ldi temp,high(RAMEND)
>> out SPH,temp
に置き換えです。
あぼーん
あぼーん
773 :
656 :02/11/09 22:41 ID:PWQlPM/Y
アセンブルできました。ありがとです。 とりあえず書き込んでみましたが、動くかどうかはまだ不明です。
774 :
765 :02/11/10 10:04 ID:zsz+09mk
お、いつのまにか終わっている(^^) スイッチどういう作りにするわかからんけど、 PORTDに0xFFを出力してプルアップ有効にすれば プルアップ抵抗も省略できてウマーかも しかし4kBのうち332Bytes使用かぁ。なんかもったいない(藁
775 :
656 :02/11/10 11:32 ID:i3P5IiE3
>>774 もしプルアップにする場合だと、負論理になっちゃいますから、
BCD-BIN変換部のプログラムを変更しなければいけないのでは?
(;゚Д゚)332バイト!?もっと容量膨れ上がることを想定してたから、4414買ったのに・・・
(´・ω・`)AT90S1200に変えようかな・・・
まあ、何でもプルアップはTTL世代の特長かな。
>>656 よ。もしそうしたかったら
読み込んだ直後に反転する命令を1行入れてやれば済むことだ。
777 :
765 :02/11/10 13:18 ID:zsz+09mk
>>775 あ、そだね。でもこれはinしたあとにnot噛ませばいい。
1200だとスタック足りなくなることがあるからたいへんかも。
そのメモリの余裕を、C言語使う方向に持っていってはいかが?
gcc使えるのはAVRの強みだよ。サイズも意外と膨れない。
サンプルを
http://210.153.114.238/cgi-bin/upbbs2/imgboard.cgi にあげてみました。「すきもの」で検索してくだされ
コンパイルエラーが出ないと言うだけで動くかどうかはわからん(^^;)
これでも464バイトで2313でもまだ余裕。
waitルーチンはアセンブラ使いました。
778 :
名無しさん@1周年 :02/11/10 16:27 ID:1BoFxNRx
>>776 >まあ、何でもプルアップはTTL世代の特長かな。
何でプルアップもって・・・・どういう意味だろ???
普通のスイッチ読ませるにはプルアップ・プルダウン
どちらかしないとあかんでしょ???
779 :
名無しさん@1周年 :02/11/10 19:12 ID:T9vVt49i
780 :
AVR :02/11/10 19:31 ID:wXRsOp4M
>>773 うまくいってますか?昨夜のソースリスト今さっき見たら下記の所を発見しました。
CH4_7:
cpi T,8 仕分け判定値がぜんぶ4のままですね。
CH8_12:
cpi T,13
CH_UHF:
cpi T,63
bitX:ルーチンのデータを出すビット位置がEnableになってるので
bld r0, Data 又は r0, PB1 でしょ。
私は4414持ってないんで目で追っただけですが、他は行けそうな気がします。
どうしても困ってたら2313で実働チェックしてみますから現状のリストを見せてください。
781 :
名無しさん@1周年 :02/11/10 19:50 ID:1BoFxNRx
>>769 そうそう、
>.org$20;適当に切りの良いところから
これ多分要らない。そのまま続ければちゃんと最後の
割り込みベクタの後にメインが続いてくれます。
cliで割り込み完全禁止するならまずreset以外のベクタに飛びませんから、
極端な話
.org 0
の後いきなり
reset:
ldi r16,low(RAMEND) ; スタックポインタをRAMの末尾に設定.
ldi r17,high(RAMEND) ; スタックポインタをRAMの末尾に設定.
:
:
とつづけてもいいっすね。ATMELのapplication notesもそうなってます。
もし割り込みベクタ並べるなら後で利用しやすいように&間違えないように
それぞれのretiにコメントつけるのをおすすめします。
782 :
名無しさん@1周年 :02/11/10 20:19 ID:jUMA0kmH
…せっかく良スレに戻ったのにまたオッサンたちかの口臭かよ。ウザッ
言いたいことがあればはっきり言うか言わないかどちらかにする方が吉
と、50過ぎのCADオペが何かわめいておりますが、今後の彼の人生をどうしますか? [削除] [終了] [再起動]
785 :
784 :02/11/10 20:36 ID:n9r6OXV3
786 :
名無しさん@1周年 :02/11/10 20:40 ID:7zOYE6vq
>>782 お前が一番ウザイっての。(w
馬鹿晒し上げ。
787 :
777 :02/11/10 21:24 ID:7qbKGFSI
788 :
名無しさん@1周年 :02/11/10 21:43 ID:4CkkjpoT
789 :
656 :02/11/10 22:39 ID:i3P5IiE3
結果ですが・・・
確かにバラクタダイオードへの印加電圧も変わり動作はしています。
しかし計算がズレてるようです。1chを選局するのに約1.6Vなのですが、3Vに・・・。
IF:58.75MHzで計算したのですが、もしかして海外仕様なのか?(日本仕様のはずだが)
一度、45.75MHzその他でやってみるつもりですが・・・
>>781 これをやらないと動作に支障をきたしますか?
790 :
AVR :02/11/10 23:05 ID:Xrf+YzNQ
>>789 たった今レスを読んで本気になって見たら‥
小さな掛け算のルーチン、1回余計に回ってました。 (;´Д`)アフォヤッテマスタ
mov r1, Cl
mov r2, Ch
dec work ←これを1行追加。
kake10:
791 :
AVR :02/11/10 23:12 ID:Xrf+YzNQ
もうひとつ。 CH_keisan: ; (6(T-Tminus)+LF)×16 を計算する。 sub T, Tminus mov Cl, T clr Ch ldi work, 6 ←ここが work1 になってませんか?
792 :
656 :02/11/11 00:18 ID:KRehFENZ
793 :
AVR :02/11/11 00:29 ID:Fo9DlljD
おまたせ!これから見ます
794 :
656 :02/11/11 00:32 ID:KRehFENZ
症状としては、1〜3を選ぶと3Vになって、4〜12は正常に動きます。(UHFは未確認)
795 :
AVR :02/11/11 00:53 ID:qAun7JmD
11番ピンから出てるバンドスイッチのラインは働いてそうですか? プログラム上では変なところ無さげです、+144自体ってことはあり得ないし。。 プログラムの動作を追うと、 直列に出ていくCの値は BCD=1で2400(十進数) BCD=2で2496 BCD=3で2592 になってます。 もう少し考えて見ますが、VCOの回路側も見てくださいよ。バンドスイッチあたり
796 :
AVR :02/11/11 01:56 ID:Y/tPJIwc
怪しいところ見あたらず‥モウネマス
797 :
656 :02/11/11 08:30 ID:KRehFENZ
実は、VHF-Lo(バンドSWデータ:0b0001)とVHF-Hi(バンドSWデータ:0b0010)の出力は短絡されており、どちらが出てもOKなようになってます。 わざと計算をずらさないといけないのかな・・・
798 :
名無しさん@1周年 :02/11/11 09:18 ID:VMUk2A8C
>>797 ごめん、どういう意味?
シリアル接続なんですよね。
スレーブ側の内部で同じ扱いにされている(尻パラ変換のあとBandのbit0と1が
ORで結ばれているとか??)という意味でしょうか??
799 :
656 :02/11/11 15:53 ID:KRehFENZ
すいません、書き方が悪かったようですね! うちのはSZIPパッケージ(TD6380Z)なので、わかりやすいDIPパッケージのTD6380Pで説明します。 まず、ICのデータシートを見ると、バンドスイッチ出力が 11Pin(バンド1)、12Pin(バンド2)、13Pin(バンド3)、14Pin(バンド4) となっています。 そして一般的な割り振り方では、 11PinがVHFLo(/CATVミッドバンド)、12PinがVHFHi、13PinがCATVスーパーハイバンド、14PinがUHF になってることが多いです。 しかし、今使っているモジュールはICの11Pinと12Pinがつながって(論理回路で言うOR)おり、VHFLoとHiが一まとめにされていました。 なので、11PinをONにしても、12PinをONにしても同じ扱いになります。 ってことです。
800 :
名無しさん@1周年 :02/11/11 17:34 ID:imVT3Dz4
了解しました。 Band0001とBand0010はORされて(TD6380側はOC)チューナーに入っていて、 チューナーの側はVHFLo/VHFHiともに1つのバンド?で面倒見るんですね。
801 :
名無しさん@1周年 :02/11/11 17:36 ID:RJwb8Rn5
802 :
656 :02/11/11 17:45 ID:KRehFENZ
やっと解決しました。モジュール内部の設計がプアだったようです。 まず、データシート通りにツェナーダイオードのあとにくる抵抗を15kΩにしていたのですが、 それではモジュール内部のトランジスタと抵抗による電圧降下回路でうまく電圧を落とせなかったのが原因でした。 この15kΩを50kΩに交換したところ(というか、可変抵抗器に交換してうまくいくのが50kΩ付近だった)1〜3chも正常に チューニングできました。 (´・ω・`)AVRさん、どうもすいませんです。 あと、UHFが3chづつズレていましたが、よく見てみると、 CH_UHF:; cpiT,63; brshCH_exit; ldiB,0b1000; ldiTminus,15;Tから引く数 の15をミスってました。 正しくは、 ldiTminus,12;Tから引く数 です。
803 :
656 :02/11/11 18:22 ID:KRehFENZ
(;´Д`)全部くっついてる・・・ここではTAB使えないのね・・・
804 :
AVR :02/11/11 18:43 ID:H/OhcgF7
たった今拝見、おめでとーございました。
805 :
424 :02/11/11 19:45 ID:m9lzNQXZ
お久しぶりです。速度・加速度・開弁率計(LCD表示版)が2313+gccでなんとか 動作に成功しました。まずはテストのつもりで、速度・加速度(車速信号から)・ 回転数・インジェクタ開弁率/開弁時間が表示できるものを作りました。 車速信号はそのまま適当な抵抗を介して入力したら見事にノイズで誤動作 しましたが、5.1k-0.01uFのLPF入れたら正常動作できるようになりました。 助言してくれた方々ありがとうございました。
806 :
ЯVА :02/11/11 21:04 ID:H/OhcgF7
>>802 >>正しくは、
>> ldi Tminus, 12
>>です。
プログラム中の一項目が現実の何かと対応ついたとき手応えがありますね。
で、帰る途中なにげに気になったんで老婆心ながら‥。
>>バンド1出力とバンド2出力は短絡されてる
>>VCOモジュールへの電源電圧を下げたら動いた
ツェナー直列に50KΩでは電流はμAオーダーでしょうか、少なすぎの
ような気が‥(老婆心モードなんで気にしないでください)。
で、
データシート4ページにあるバンドスイッチ出力回路を見てください、
下Trがスイッチ本体で上Trは5V以下に下がらないようにする(クランプする)
役目で、3kΩの抵抗で決まる電流(1mAちょっと)を吸い込む回路ですね。
これを2回路パラレルということは電流を2倍引っ張っる、例えば
Midチャネルでは 0b0010 で片方だけ1mAほど引っ張る、
Lowチャネルは実は 0b0011 で両方で2mAほど引っ張る
とか‥。
p.s.
validをvaridと書いてました(^∀^)ヒハハ☆\(-_ー ;)
807 :
名無しさん@1周年 :02/11/11 21:22 ID:KRehFENZ
>>806 > >>VCOモジュールへの電源電圧を下げたら動いた
電源というのかな・・・
> ツェナー直列に50KΩでは電流はμAオーダーでしょうか、少なすぎの
> ような気が‥(老婆心モードなんで気にしないでください)。
まあ600μA程度でしょうかね・・・
> データシート4ページにあるバンドスイッチ出力回路を見てください、
あれ?
問題だったのは、バンドスイッチではなく、バラクタダイオード(商品名:バリキャップのほうが一般的?)への電圧制御の部分です。
データシート12ページのチャージポンプとVT端子がつながってることろです。
所詮、電圧制御なので電流はほとんどいりません。
なんてったって、実験中、ケースGNDと私の手との間は+20V程度(そのうちリップル1V程度)の電位差があって、
VT端子(バラクタダイオードの逆方向電圧入力端子)を触るだけで反応し、触り方をかえる(接触抵抗をagesage)だけで、
チューニングできてテレビが見えるくらいですから・・・。
( ゚∀゚)ちなみに乗っているリップルはその端子が容量性負荷(?)のせいで平滑され安定した受信ができました。
808 :
656 :02/11/11 21:23 ID:KRehFENZ
↑漏れ
809 :
ЯVА :02/11/11 23:06 ID:hlYJy1dC
>>808 なるほど読み違えてました(笑
で、本番用にもしチップを買い換えるなら 2313 が売れ筋のようです。
プログラムの方は、もしアセンブラで続けるなら一度書き直しをお薦め
します、変に r0 とか使ってるのを work に統一したり、サブルーチン
内で作業用に使うレジスタは必ず push pop するとか、ですね。
あとコメントはできるだけ豊富に。後日部分直しなどのとき頼りになります。
>>424 おめでとーございまし!
PICネタで申し訳ないんですが(w MPLAB-C18 Demo v2.00の制限って無いんでしょうか。 v1.xxの様に30日の試用期間云々って見当たらないので。
811 :
656 :02/11/12 17:42 ID:Pl13Op6N
>>809 すでに4414/8515用に基盤は出来上がってますから、同じことをやるときには2313でもチョイスしようと思います。
|-`)ブレットボードとかじゃなく、いきなり本番用基盤製作・・・
それで、これからアセンブラで逝くつもりなので、暇なときにちょくちょく修正を加えていくつもりです。
やっぱりコメントって重要ですね!あるのとないのとでは断然違いました。
そして、上からの指令でPICをやらされることに・・・(AVRは勝手にやってるだけ)
細かくて悪いが、 基盤では無くて基板ね。 どうも気になるから。
流れ乱して悪いが、AVRって外部メモリをサポートしてる お陰で、外部I/Oの拡張が非常に楽&重宝するんだけど PICってこの辺りどう? 8535にSRAM付けてひーひー言いながら制御した経験から 外部メモリマンセーなもんで。(w
>>813 いくつかぐぐって見たけど、PICだとシリアルSRAM使うとか、
周辺機器として手動で?制御することになるんでしょうか。
www.picfun.com見ましたがpic18でも外部SRAMサポートなさそうですね
大量のRAM使うのはデータストレージ時などだから外付けシリアルでもいいという
判断なんでしょうか。SRAMつけられるとしてもたくさん足(IO)取られちゃいますしね。
質問。ハードもソフトもあまり詳しくないんだけど スワローカウンターってどうなってるんですか。
817 :
AVR :02/11/15 13:04 ID:OiqrHDk3
>>811 おお、両方覚える良いチャンスですね。アセンブラとCの両方をモノに
しましょう。このスレが出来る前どこかに書いたと思いますが私の関係先も
いまだに両方使ってやってます。最近はAVRが多くなったようですが一頃は
試作AVRで試行錯誤して製品PICとかやってました。
部品供給の確実性などを考えると一種類に絞れないとか色々あって
ものによっては両方実装できるようにしてるのもあるようです。製品単価
は気になるほどの比率でもないようですね。
; 無駄時間かせぎ(4MHz用。4MHzは0.25μsec, rcall=3clk, nop=1, ret=4, 計2μsec) t100m: rcall t4m ; 100 =64+32+4 rcall t32m t64m: rcall t32m ; 倍々の方法。 t32m: rcall t16m t16m: rcall t8m t8m: rcall t4m t4m: rcall t2m t2m: rcall t1m t1m: rcall t1000u ret t1000u: rcall t200u t800u: rcall t200u t600u: rcall t200u t400u: rcall t200u t200u: rcall t100u rcall t100u ret t100u: rcall t20u t80u: rcall t20u t60u: rcall t20u t40u: rcall t20u ; 10μずつにしたかったらt10uをcall t20u: rcall t10u rcall t10u ret t10u: rcall t2u ; 10μsec t8u: rcall t2u ; 8μsec t6u: rcall t2u ; 6μsec t4u: rcall t2u ; 4μsec t2u: nop ; 2μsec ret
これ、t100mを呼んだらスタックすごく消費するのではないかと思ったが、 12段(24バイト)ですか。アセンブラならよほど変数領域使わない限りは大丈夫かな。 呼び出し元で引数のためにレジスタ1つつぶさなくてもいいのはいいですね。
820 :
ttt :02/11/15 18:28 ID:mkgXxt1/
PICで50W〜200WほどのDCブラシ付きモーターの制御をしたいのですが 詳しく説明のあるサイト知りませんか? それとPICでのモーター制御についてお勧めの本はありますか?
あぼーん
822 :
AVR :02/11/15 19:31 ID:MUk7EGLq
>>815 パルス・スワロー・カウンタ(パルスを隠すカウンタ)
swallow : 隠す、見えなくする、グッと飲み込む、ツバメ、等。
マイコン内蔵のタイマや周波数シンセPLL帰還路に用いられる計数回路は
与えられた数値 n でクロック周波数を 1/n にする n分周回路 です。動作は
数値 n を取り込み、1クロック毎にカウントダウンし、ゼロになったら又 n を
取り込んで回帰する‥これを繰り返してます。出力は普通 ゼロになって回帰
するときパルスを1発出します。それがマイコンの割り込みパルスや PLLの
位相比較信号として使われます。
必然的に同期式カウンタを使いますが、同期式は段数が長いほどキャリー
伝播が遅くなって最高動作周波数が落ちる‥という宿命があります。
で、
分周比可変の必要が無ければ非同期カウンタなどの高速回路を使えるので、
fc ──→ 固定分周比 p ───→ 可変分周比 m ──→ fout
小さな固定分周回路を前置して 後段を周波数的に楽にする方法を採ります。
(マイコンのタイマーのプリスケーラとは目的が異なり、これは高速が命です)
例えば(分かりやすいように十進数で)p=10とすれば
後段のカウンタに行くクロックは(fcで数えて)10個に1個になるから
m=3 なら(fcで数えて) 10+10+10=30個でfoutに1発出る、つまり 30分周。
m=6 なら(同じく)10+10+10+10+10+10=60個でfoutに1発、つまり 60分周。
このように
分周比は p きざみに粗くなって 61 とかが出来ないという欠点があります。
(ここまではお約束ですね)
823 :
AVR :02/11/15 19:31 ID:MUk7EGLq
そこで、 fc ─┬→ p=10 ─|1 ──→ 可変分周比 m ──→ fout ├→ p=11 ─|回 ├→ p=12 ─|だ : : .: け 例えば最初に選ぶとすれば ├→ p=18 ─|選 分周比=65 なら 15+10+10+10+10+10=65 └→ p=19 ─|択 分周比=69 なら 19+10+10+10+10+10=69 (概念説明だから 切替の不連続など細かな突っ込みは無しね) もしくは、 fc ─┬→ p=10 ─|切 ──→ 可変分周比 m ──→ fout └→ p=11 ─|替 必要な回数だけp=11を選ぶ 分周比=60なら 10+10+10+10+10+10=60 分周比=63なら 11+11+11+10+10+10=63 (分周比=67なら? そう、実は 十の位≧1の位 という制限があります) 実際は、 fc ──→ p=11/10 ─-┬─→ 可変分周比 m ─┬→ fout ↑ ↓ ↑ │ │ 可変分周比 s ←─--┴---┘ │ (ゼロで止まる) 回帰パルス │ │ └───┘ sカウンタ値≠0の間 p=11を選択 sカウンタはカウントダウンしてゼロになったら回帰せず止まるようになってます。 例えば分周比=63 なら 6を mカウンタ、3を sカウンタに与えるわけです。 以上、十進で説明しましたが二進ならpを2の整数乗にすれば 分周比は自然二進 のままで与えることができます。なお m≧sの制限は付いてまわります。 2択型プリスケーラに適する高速回路は自己起動型リングカウンタなど。
824 :
AVR :02/11/15 19:37 ID:yjaYOgZp
ウプ間隔が短いと直ぐ2重カキコ規制が。
>>819 あくまで遊びレベルですね、こればっかりではせっかくの割込みタイマーが勿体
ないです。こんなのを足掛かりに割込みタイマに進んでください‥‥と言いながら
つい使ってしまう悪い癖が。
>>824 でも、何かやってXXms待って,という処理は割り込みタイマではめんどいですよね。
割り込みじゃなしにタイマで時間を計るとなると、こんなのでいいかな
これだとインターバルタイマーは別の処理させながらも任意の時間待ちルーチンなどに使える。
.MACRO WAIT_TMR1
;WAIT_TMR1 16bit-wait (0<=wait<=0x7FFF)
;4MHz,Prescaler=1/256ならWAIT_TMR X でほぼ X msecウェイトになる
ldi wait_L,low(@0)
ldi wait_H,high(@0)
rcall wait_timer1
.ENDMACRO
wait_timer1:
;制限:wait_L/wait_Hは0x8000未満
push timeup_L
push timeup_H
in timeup_L,TCNT1L ;timeup=TCNT1
in timeup_H,TCNT1H
add timeup_L,wait_L ;
adc timeup_H,wait_H
wait_loop:
in wait_L,TCNT1L
in wait_H,TCNT1H
cmp timeup_L,wait_L
cpc timeup_H,wait_H
brcs wait_loop ;brneだとPrescalerと他の割り込みによっては×
pop timeup_L
pop timeup_H
ret
;4MHz,Prescaler=1/256ならWAIT_TMR X でほぼ X msecウェイトになる これまちがい、X/64msecだ
827 :
:02/11/15 21:30 ID:g5hs+wQc
msオーダーなら555のCMOS版が便利です。 CPUは寝かせて待ちましょう。
828 :
815 :02/11/15 22:21 ID:jSNyGcSn
>>816 ,
>>822 ありがとうございましたっ。サイトを参考にしてアホアホな頭で考えていたけど分数では
駄目だったのね。パルスの数の説明はホント分かりましたよ。
あとp=11/10はひとつのカウンターなのか教えてください。
829 :
名無しさん@1周年 :02/11/15 22:38 ID:2XfV7rCx
PIC,AVR,H8で、それぞれPWMの上限周波数はいくつでしょうか? (PWMは8ビットで構いません)
830 :
名無しさん@1周年 :02/11/15 23:53 ID:5/E1u375
>>829 ハードウェアのPWMということでいいんですか? 0-255の256段階でデューティ比決められるということなら
AVRはCK/1駆動でAT90S2313@10MHzを使えば1カウントクロック周期の100nsで、
255*2=510カウント周期(PWMの実現方法によりこうなるみたい)=19.6kHz
H8はとりあえず手元にあるH8/3664F@16MHzなら、1カウントはクロック*4=250nsで
255カウント周期=15.7kHz 20MHzなら19.6kHz?
PICはよくわからないけど20MHzなら1カウント=クロック*4で200ns。
255(256?)カウント周期=19.6kHz
PICコンパチ50MHzはわからんけどクロック以外同じなら49kHz?
↑そういうの他人に教えてもらってるうちは身に付かないと思う‥
832 :
829 :02/11/16 00:39 ID:NDi3FR6l
そうかもしれん。調子に乗った漏れ、反省・・・・
↑830です
この間、書き込んだ初心者です. LCDにカウント数が表示されるパルスカウンターを作ってみました. LCDのデータシートが読みにくくて4ビット通信と初期設定でつまずきましたけど、 うまく動いた時は感動しました.
835 :
829 :02/11/16 09:38 ID:j+1G+68/
>>830 お〜有難う。実はこの前までICのプロセス設計やってたんだが、
撤退して、こんどマイコン絡みの仕事をやることになったんで、
所謂ワンチップマイコンの動作周波数っていうか、その辺のカンどころが
わからなかったんよ。
結構、実用域で動作するんですね。
836 :
:02/11/16 11:39 ID:l6VOmIfu
お前、流しのプロセス屋では喰っていけるだけのスキルはないのか?
837 :
830 :02/11/16 12:15 ID:qhma4HfS
>>835 あ、あんたプロさんなのかよ・・・唖然
漏れと同じ素人趣味工作者か学生さんか新入社員だと思ったのに
838 :
829 :02/11/16 14:18 ID:atokymUP
>>836 流しのプロセス屋:カッコいいんだけどねぇ。妻子と老母と住宅ローン抱えている身としては、
この御時世では、会社の都合はハイハイと聞くしかないんですよ。
プロセス設計っていっても、どっちかというと物性屋なんでね。
早速秋月でとりあえずPICのキット買ってきて、LEDの点灯をやってみた。
なるほど、ICE無くても、この程度なら、誰でも出来そうですねぇ。
839 :
AVR :02/11/17 01:51 ID:Zyhxl0a/
>>828 分周比を 1/n と連想して、(ある割合)・1/(p+1)+(1−ある割合)・1/p みたいな
式を立ててしまいました? でも、(ある割合)・fc とは具体的に何でしょか?
例えば1kHzの20% ですか? まさか振幅の20%‥すでにお分かりと思いますが
周波数領域でなく 時間領域 でないと足し算が通用しない(線形性が無い)です。
よく 1/128分周 などと書いたのを見ますが、正しくは 128分周 です。
(私も新人の頃は「5分の1ぶんしゅう」とかつい喋って厳しく躾られました)。
スワローカウンタもカウンタから最終出力があるまでの 時間 と考えれば直ちに
(p+1)をs回+pを(m−s)回 = mp+s = 10m+s と求まってしまいます。
「このカウンタ回路の分周比は 10m+s である」と言いいます。それは実は
fcきざみで数えた「時間」を言ってるです。
「1/n分周」は語感が良いのかよく見かけますが染まらないように気をつけませう。
>>p=11/10は一つの回路?
です。例えば自己起動型リングカウンタを使うなら、
┌─→ s、mカウンタへのクロック
│
┌→ DFF ┴→ DFF→‥全10段‥→ DFF → DFF
│ ↑
└─全段出力のNOR 最終段をゼロに固定すれば周期10
しなければ周期11
外界に接するPLLに使われるカウンタは
ノイズなどでどう転んでもリセットなど期待せず自力で立ち直れること
転んだ事を機会に悪い道に入り込まないこと
が要求されるようです。
あぼーん
841 :
名無しさん@1周年 :02/11/18 08:12 ID:JZPpmsYI
保守age
842 :
656 :02/11/18 17:11 ID:uB58JroO
843 :
名無しさん@1周年 :02/11/19 06:05 ID:897dyL+S
初心者です.質問させて下さい. MPLABv5.7くらいをつかって作成していたソースのシミュレートを していたところ.ループの中で勝手にリセットがかかってしまうという ことが起きました.WDTはナシに設定しています. 想定される状況を教えてやってください?お願いします.
844 :
名無しさん@1周年 :02/11/19 12:32 ID:fgtGzNec
>>843 callとret、pushとpopが合っていないで、
スタックに変な値読み込んであらぬ方向へとんでいく
ってあたりでは?
>>839 ぅぅぅ…思いっきし1/n分周と覚えたのは戸裸疑の製作記事。ダメポじゃん…
846 :
843 :02/11/19 19:33 ID:897dyL+S
>>845 レスありがとうございます。
どうやらWDTがかかってたみたいなんです。
ループの中にCLRWDTをいれてみたらリセットがかからないで
一応ですがそのまま正常に動作していました。
オプション→ディベロップメントモードでWDTをNONEにして
さらに__CONFIG_WDT_OFFも書きこんでいたの2,5秒に一回
リセットがかかってしまう状況でした。
なんか設定で他に変更するとことかあるのでしょうか?
>>845 まあ、気にすることでもないけどね。
分周率1/nっていうのは、海外のデバイスメーカの資料にも
1/nとかで書いてあるから大きく外れているわけではないよ。
会議では1/n分周という言葉で通じてるし。
ゲームオーバーみたいなものか?(w
848 :
↑ :02/11/22 00:57 ID:yz0C/3kz
( ´,_ゝ`)プッ
849 :
名無しさん@1周年 :02/11/23 04:21 ID:uuu7GE6c
すごーい初心者です あのぉ回路を組んだはいいもののうまく発振してないようなんです しっかり接続してるはずなんですがどうすればいいんでしょうか? 電源しっかり確保して振動子しっかりつなぐ以外にコツみたいなのありますか? ドキュンな質問ですがうまくいかず悩んでます 助けてください
850 :
名無しさん@1周年 :02/11/23 05:02 ID:kUSTvpTY
いままで経験あるの?初めて? チップ名は? 電源電圧は? 振動子は何? 周波数は? 発振してない」とどうやって確認したの?
>>いままで経験あるの?初めて? ( ´,_ゝ`)プッ
>>いままで経験あるの?初めて? (*^^*)ポッ
>>852 7〜8年くらい前のパソコン通信のノリで、懐かしさを感じる。
n(^o^)/~ 僕の初めては1200bpsでした。
300bps・・・・・・・ゴニョリ
300ボーだったな。
そうそう、ボーとbpsは実は違うんだよね。
858 :
名無しさん@1周年 :02/11/23 19:10 ID:Gj86Ruuk
9600から違って来るんだっけ?>baudとbps ちなみに漏れも300bps カプラ神はいないか
tp://www.lightstone.co.jp/products/wedge/serial_commu02.htm
860 :
名無しさん@1周年 :02/11/23 19:18 ID:FnmoY3NK
75baud 黒電話カプラだけど何か?
861 :
名無しさん@1周年 :02/11/23 19:21 ID:FnmoY3NK
859の説明は舌足らずだな
>>860 音響カプラでも1200ボーっていうやつが、あったような気が。
300ボーは、300Hzの周波数でって意味。 300Bpsは転送速度が秒速300bit スタートビット1、ストップビット1、パリティ無しで 300ボーは、270Bps
訂正 300ボーは、240Bps
↑ん、ボーは変調速度であって、bps(bits per second)とは根本的に違うぞ 低いbpsのモデムは1変調で1ビット送っていたので、ボーレート=bpsだけど、 ある程度より速くなると1変調に数ビット割り当てるのでボーレート≠bpsになる。 詳しい数値は忘れたけど 漏れは・・・300bpsモデムに手が届く値段になり、PC-VANのCMが流れる前位かな。 今56kモデムとかが2000円で売られているのを見ると泣けてくる ってかスレ違いなのでsage
通信ポコって9600bpsの単体モデム(乾電池動作)が出てきたけど 幾らで買ってくれますか?
867 :
名無しさん@1周年 :02/11/24 01:15 ID:yAsFZUct
bpsってスタートストップビットに当たる物も含むんじゃなかったっけ?
868 :
名無しさん@1周年 :02/11/24 01:29 ID:NB7n4+Lq
849はどうした?
>>867 含むよ。
単純に1秒で何ビット流せるかだから。
870 :
名無しさん@1周年 :02/11/24 02:11 ID:N7kF3w2Y
>>861 ね。最近は綺麗に飾り立ててるが読んだらガックリ来るようなサイトが目に付く。
>>871 わらた。
単純に割っちゃまずいだろう。
873 :
名無しさん@1周年 :02/11/24 11:52 ID:yAsFZUct
>>871 雑誌記事なんだこれ・・・
他にもbps=データ転送速度(Bytes/sec)×8とかいてあるとこ、いくつかあるね。
UARTのスタートストップビットの他にもデータ訂正やらなにやらいっぱいあるとおもうのだが
メンテ。
876 :
名無しさん@1周年 :02/11/28 17:43 ID:z+SBydLF
PIC16F877なんですが。 (株)マイクロアプリケーションラボラトリーが出してる PICワンチップマイクロコントローラ 応用編という本を見てます。 ここのタイマ2の解説において(71ページ) >クロックが20MHzの場合、最大12.8msのタイマ割り込みになります。 と書いてるんですが、プリスケーラ、ポストスケーラをフルに使って 16ビットのカウンタになるはずだから、システムクロックが20MHzなら 1 / 20 000 000 * 65536 = 0.0033 秒にならないんですか?
877 :
名無しさん@1周年 :02/11/28 18:17 ID:sk5QEneT
PICのタイマに入るクロックはfosc/4ですので、プリスケーラーが1:1でも 5MHzです。よって、0.2μsec×65536=13.1072msecとなります。 あれ?なんで12.8msec??
878 :
名無しさん@1周年 :02/11/28 18:30 ID:sk5QEneT
>>877 何かいてるんだ(^^;)逝ってきます・・・
879 :
876 :02/11/28 18:40 ID:z+SBydLF
ああ、やっぱり 1/4になるんですか。 だとすると >877さんの書かれたような計算になりますよね。 そう、そこでまた疑問なのが、13.1072msになってしまうんですよね。 なんで12.8なのか・・・
880 :
876 :02/11/28 19:58 ID:z+SBydLF
しかも今、割り込み入るとカウンターをインクリメントして カウンター100で液晶に文字出すようにしてストップウォッチで 測ってみると、約3.35秒です・・・ すると約33msでオーバーフロー・・・?? もうダメッポ
881 :
877 :02/11/28 20:02 ID:sk5QEneT
帰ったらPICの資料さがしてみます。PICのプリスケーラ・ポストスケーラの仕組み忘れた すんません、最近はAVRなもんで ところで発振子に何使ってます? #やたー877ゲット(w
882 :
876 :02/11/28 20:28 ID:z+SBydLF
877さんすみません!
>>880 はなぜか間違いですた・・・。疲れてるかも。
カウンター値を直接表示させるようにしたら
0 から 1000までほぼ13秒強です。
>>877 の式で良いっぽいですね。
発振子・・・ううすみません厨房なんで名前までわかりません。
図面みても書いてないです。青くて丸い三本足のヤツ・・・
秋月のPIC-ICEキットに付いてるやつと同じなんだけど
取り説もないな・・・。
883 :
名無しさん@1周年 :02/11/28 20:53 ID:SUQoLSPX
>>882 青くて丸い三本足のヤツ・・・
たぶんセラミック発振子ですな。この名前でぐぐってみな。
884 :
877 :02/11/28 21:47 ID:EfqjAS0F
今後閑さんの本見ている。
プリスケーラー4bit,ポストスケーラー4bit、カウンタ8bitで
たしかに16bitですね。プリスケーラーに入るクロックもfosc/4でよさそう。
結局値は
>>877 でいいと思う。
セラミック発振子なら誤差0.5%ですから大きな狂いはなさそうですね。
>>882 結局13.1msでいいのね
885 :
876 :02/11/28 22:28 ID:6qZQCqN8
>>883 あぁ・・・そうそうそんな名前ですた
>>884 いろいろありがとう。これで安心して次へ進めます!
886 :
名無しさん@1周年 :02/11/30 08:09 ID:e2zqCk4z
保守
PICは知ってるんですけどAVRってなんですか?
どちらもワンチップマイコンです
>>887 AVRってのはアナル・ヴァギナ・レイプの略です。
890 :
AVRファンクラブ :02/12/01 09:12 ID:c2WjDDTu
891 :
名無しさん@1周年 :02/12/01 09:24 ID:zd/tdzyf
一年程前は、AVRで検索するとそんなのばっかしかでなくて ちょっと困った思い出がある。
892 :
ЯVА :02/12/01 11:27 ID:FCIxz23R
>>887 >
> Enhanced RISC Microcontrollers ← R
>
> Alf-Egil Bogen ← Aさん
> Vegard Wollan ← Vさん
> ATMEL Corporation
> ATMEL Development Center, Trondheim, Norway
>
> High level languages (HLLs) are rapidly becoming the standard
> programming methodology for embedded microcontrollers(MCUs),
> even for smaller 8-bit devices. The C language is probably the most
> widely used HLL in MCUs, but will in most applications give an increased
> code size compared to assembly programming.
> ATMEL identified the need of an architecture developed specially
> for the C language in order to reduce this overhead to a minimum.
> The result is the ATMEL AVR MCU, that in addition to the optimized
> code size, is a true single cycle RISC (Reduced Instruction Set Computer)
> machine with 32 general purpose registers (accumulators) running
> 4-12 times faster than currently used MCUs.
>
893 :
名無しさん@1周年 :02/12/01 20:55 ID:huyQqQn1
なーるほど、「AlfさんとVegardさんちのRISCプロセッサ」ですか。
894 :
名無しさん@1周年 :02/12/01 22:09 ID:R2n3MvQt
PIC16F873のSSOPパッケージの物を探してるんですが、 どこか置いてる店をご存知の方いらっしゃいませんか?
895 :
887 :02/12/01 23:14 ID:h4z1I4Sb
>>888 プログラミング言語の違いとかあるんですか?
PICはアセンブラ言語とC言語があるみたいですけど.
あとどっちが一般的に性能がいいんですか?
それに対するコストパフォーマスとかは何か違いとかありますか?
>>889 なるほど…そそる名前ですね.次からは是非AVRを使ってみようと思います.
その後のサービスとかよさそうですね.
896 :
887 :02/12/01 23:19 ID:h4z1I4Sb
>>892 なるほどAとVさんが作ったんですか.
言語は主にCですか.
897 :
名無しさん@1周年 :02/12/02 01:19 ID:uJHY7E0Z
10×20LEDをPICとデコーダで光らせようとしています。 そこで質問なんですが(というか確認ですが) 3-8デコーダと4-16デコーダひとつずつ使うことで 20のラインをカバーすることは可能ですよね? PICから出力 → 3to8 → 4端子は 4to16 残りはそのまま使う いかがでしょうか?
898 :
名無しさん@1周年 :02/12/02 01:57 ID:/HJab+83
899 :
名無しさん@1周年 :02/12/02 02:43 ID:/HJab+83
>>897 ?ちょっと意味が分からない〜以下的はずれな解釈ならごめんなさい。
3to8で8本の出力を得て、そのうち4本を4to16に通して16本にして使うと
いうならだめじゃないでしょうか。
この場合4to16に与えられるデータは0,1,2,4,8しかないので、5つのLED点灯
しか制御できません。結局点灯できるLEDは9個だけ、それも4to16にゼロが
与えられている時は3to8の他のbitが点灯していると思われますので、これは
重複点灯になり使えません。
結局3本3bitの線で20の情報は表現できないと言うことです。
4to16と3to8を用意して下位4bitを4to16に、下位2bitを3to8にそれぞれ入力して、
5bit目がONなら3to8をenable,4to16をdisableに、
5bit目がOFなら3to8をdisable,4to16をenableにすればいいことになりそうです。
74137/74154なら、137のG1に5bit目を入れ、74154のG1/G2に5bit目を入れればいける?
処理時間に余裕があるなら164を3つ並べて24bitシフトレジスタを
作るのが楽かも。シフトレジスタならPICからの線は2bitですみます。
シフト中のデータがダダ漏れするといかんと思うので ラッチが欲しい
901 :
名無しさん@1周年 :02/12/02 05:45 ID:eIE04VO8
>>900 ライン(10個のLED)単位の選択の部分みたいなので
ラッチなしでもいいかなと思うのだが
1→2→4→8→16・・・・しかしないし
ラインの10bitのLEDをシフトレジスタでやるならラッチいるね
漏スレに書いたネタなんだけど、PICとかAVRで、昔のGAMEインタプリタを稼動させる事の 意義と実現可能性についてなんですが、液晶は秋月の2行液晶(ケチ) キーボードはPS/2キーボードを接続、カセットインターフェース搭載 っていう感じで、どんなもんでしょうか?
903 :
AVR :02/12/02 10:36 ID:maD5enZQ
>>897 ←── 全32本(2本余り)──→
┃ ┃ ┃ ┃
┃ 3 ┃ 3 ┃ 3 ┃ 374など出力の強い
RB0〜7 ━┻━ 7 ━┻━ 7. ━┻━ 7. ━┛ ヤシで電流的仕事も
4 4 4 させれば大安。
↑ ↑ ↑
RA1本クロック ─┴────┴───┘
ラッチ付ラインデコーダ137など、テキサスの 捨てたすリスト(生存者名簿)
に無いICは国産品いつまで大丈夫なんでしょ。使いたいものがタイトだからと
言われることが多くなってきたような‥
904 :
名無しさん@1周年 :02/12/02 14:14 ID:3ccpZyK0
>>903 LED数は40個(20x10)では?これで全LEDつけるにはあと1つ374がいる
それにしてもこれは感動しちゃった。
4bitシフトレジスタ×8本のように動くのね
905 :
904 :02/12/02 14:46 ID:3ccpZyK0
あはははは・・ねぼけとる(夜勤明けと言い訳しておく)。20x10=200だ 20x10のマトリクスで動かすなら20+10=30のIOあればいいんだからこれでいいのか
>>903 部品の収束ね・・・ま、その為のCPLDでしょうね。
所で、10x20のLEDだとダイナミック点灯になるから
スキャン数xLEDの規定電流と言う計算が必要では
ないか?
それプラス、桁が全点灯してる時のドライブ電流も
考慮しないとならんからドライバ回路は別設計に
なるものと思われ。
PICとかAVRとかできると就職のときに好印象あたえられるものですか? てっか企業は製品にPICとかほんとに使ってるんですか?
なんか日本語変でした…
909 :
名無しさん@1周年 :02/12/02 20:43 ID:3ccpZyK0
>>907 そこらへんの家電あけてみたら?PIC,AVR以外にもいろんなマイコンがある
たぶん、どのマイコン使うことになってもすぐ把握できるような基礎としてなら
PICとかAVRが役立つんだろうと思う。PICやAVRだけできてもだめなんでは?
910 :
名無しさん@1周年 :02/12/02 23:04 ID:ux33eaXR
74HC595
>907 履歴書に嫁入り道具をいっぱい書くのが好きそうだのう。 ヲタの印象が強くなると逆効果なんだが。
912 :
ЯVА :02/12/03 07:56 ID:+QSKDzI4
>>906 スンマセンうっかり仕事でやった小さなアレイ(高輝度)で考えてました。秋葉原で昔
から売っている10×10のタイプなら電流ドライバ要りますね。
>>897 もし転送処理が何かの処理で手間取って 転送途中に無関係なドットが薄く見え
てしまう場合は RA出力のクロックを374のOEコントロールにも接続して表示中
はLow一定、転送中は細い負パルス(bcf portA,bitして直ぐにbsf portA,bit)とす
ればかなり軽減されます。(電流ドライバ次第ですが)
913 :
名無しさん@1周年 :02/12/03 20:39 ID:zgM/waMb
以前に電気の質問スレッドで質問した者です、今AT90S2313のアイドルモードで悩んでます。 アイドルモードの変わりにNOPで回せば完全に働くプログラムをアイドル モードに変えたいのです。EXTINTとターマー割り込み 両方を試しても結果は同じで10回中2,3回ハングアップします。電源は約4.6V 周波数は4MHz。 それから内部RAMを越えるデーターを記録するにはどうすればいいでしょう。 EEPの用途もよく分からないので教えてください。
>>913 一応聞いとくが、マニュアル類は熟読したか?
取り敢えず質問って言うのでは何も解決しない。
915 :
名無しさん@1周年 :02/12/03 23:49 ID:Il1hZdLf
>>913 とりあえず関係ありそうな部分だけでも提示しない?
現象だけ書いても誰も判らないと思う。
アイドルモードとパワーダウンモードを間違えたような話じゃない限り
現象だけ書いてもこれだけの情報では誰も判らないと思う。
割り込みによるタイマ割り込みやINT割り込みでLED点滅プログラムを
作って、メインルーチンでスリープ掛けるような小さなサンプル
プログラムを作って、それでもだめならそれをだしてみては。
916 :
名無しさん@1周年 :02/12/04 00:04 ID:eTGC/sYa
>>913 EEPROMについては・・・使い方はデータシート読めばいいとして、
存在意義を聞いているのでしょうか?普通は終了時変数を保存し次回
その値を使う必要がある場合その保存のためとか、時々変更する必要が
ある定数の記憶などに使うと思う。読み書きの面倒さ、書き込みの遅さ、
書き換え回数制限を考えるとSRAM変数領域の代わりには使いにくい。
917 :
名無しさん@1周年 :02/12/04 03:37 ID:4LEiiK5i
現在、PIC16F877でAD変換された結果を、 USART非同期シリアル通信でPCに転送するということに 挑戦してるのですが (AD変換処理) (シリアル送信可否をTRMTで確認) MOVF ADRESH,w MOVWF TXREG (AD変換処理に戻る) のようにして送信してるのですが、 変換結果が、上手く受信できません (バイナリの形でも不可解なデータばかりが受信されてます) なるべく、自然2進数0,1の形でデータが欲しいので そのまま送信する形にしているのですが どうすれば、良いかヒントだけでもいただけないでしょうか。。。 マイコン自体、10年前のZ80でいじったきりで 現在の様々な機能付加には驚かれます(^^;
SPBRGレジスタの値とか ADCONレジスタの設定とか AD変換のアクイジョンタイムの確保とか …どうでしょか
919 :
名無しさん@1周年 :02/12/04 04:42 ID:OtfbdFbL
>>917 一応聞いとくが、マニュアル類は熟読したか?
取り敢えず質問って言うのでは何も解決しない。
920 :
917 :02/12/04 05:23 ID:4LEiiK5i
お返事有難う御座います
PIC16F877で
20MHz駆動 9600bpsで送信したいので
SPBRG = 81h
ADCON0 は Fosc/32 ch0のみ
ADCON1 は RA0のみをAD変換のチャンネルにしています
AD変換、送信の後 1秒ほど
待機時間を持たせてるので十分だと思います
ソースは
http://210.153.114.238/img-box/img20021204051210.txt に置かせていただきました。
待機の時間と位置、転送速度、Bank、各設定を見直したのですが
八方塞状態で。。。。本当に申し訳ないです
921 :
v :02/12/04 05:29 ID:KiP6kvDg
922 :
917 :02/12/04 05:43 ID:4LEiiK5i
度々申し訳ありません 参考として PIC16F87xデータシート PIC ワンチップマイクロコントーラ誌 と 関連がありそうなホームページ 読ませていただきました さすがに熟読とまで自信を持っては言えませんが、 関連サンプルコードや、資料は読ませていただいたり 動作させていただきました あとはPIR1,PIE1、INTCONなどが関連項目として上がっているので そちらも初期化が必要なのかと疑って、試行錯誤しているのですが。。。
923 :
名無しさん@1周年 :02/12/04 08:57 ID:z9xeTwe+
>>917 AD変換自体は問題ないですか?
まずはAD変換値ではなくループ回して0〜255を送信テストしてみませう。
それでおかしければUARTだし、それがまともならAD変換。
924 :
ЯVА :02/12/04 12:57 ID:bSPxcyjB
>>922 ADconv1レジの設定でAD変換基準電圧=外部入力を設定してますが、
RA2(Vref+)とRA3(Vref−)には何を入れてますか?
アナログ入力RA0には何を入れてますか?何か直流ですか、何ボルトですか。
ポートBにADresultのHを出して観測してるようですが、そのデータとPCが
受信したデータは全くデタラメなんですか?
925 :
ЯVА :02/12/04 12:57 ID:bSPxcyjB
>>913 スリープさせないでプログラムがちゃんと動いてるそのとき割り込みは使っ
てるんですか。
スリープに入る前にウオッチドッグが邪魔しないような配慮はしてますか?
スリープの時間とかを知りたいですね。
あと、その障害を聞くと是非聞きたいのが、発振素子はひょっとして水晶振動子
か?です。水晶は同調Qが大きいので発振器を止めても振動エネルギがずーっ
と残って 次回の発振開始のとき回路が立ち上がる電圧スイングとケンカして
しばらく発振が安定しないです。
これ私がPICを始めた最初の頃ぶつかった現象でした。
ためしにアイドルモード(発振器が止まらない)にしてみたらいかがでしょう。
926 :
913 :02/12/07 01:38 ID:nTF64pUs
お騒がせして申しわけありませんでした。さきほど解決しました。原因はWDRの 実行回数が不十分でした。 最終的な目的はパワーダウンモードです。しかしパワーダウンでは全然動かず アイドルモードならかなり動いたのでこちらで調べました。これでアイドルモード が使えれば電流が減って一歩前進します。しかしパワーダウンに変えるとやはり 駄目です。これが水晶を使ってる事が原因ですか。オシロで見ても複雑な模様が チラチラしてるだけでよく分からない。明日セラロックが手に入るので交換してみます。
927 :
名無しさん@1周年 :02/12/07 06:51 ID:piJySaXt
パワーダウンモードでのINT割り込みはどんなモードでどんな外部信号で 行っていますか?充分長いレベル割り込みが使われているでしょうか。
928 :
AVR :02/12/07 07:40 ID:B/ptROmK
>>926 スンマソン、925はスリープやアイドルを他チップと間違えた文章になってました。
発振をオシロで見ると綺麗なんですか。単純な exponentで発振が育ってな
くて変に変調がかかっとようなうねりの波形なら容疑濃厚でしょ。スリープに
入る前にどこかのポートにパルスを一発出してオシロのトリガにすれば
チラチラせずに観測できると思います。たぶん発振振幅が完全に減衰する
前に次の周期が始まってるのではと。
試みに割り込み周期を減衰するまで長くしてみてエラーが消えれば確定的。
もし周波数精度にこだわらないなら水晶をやめた方が良いと思います。
>903 強いたって精々50mAくらいでそ?トランジスタ入れるのが吉
20Mhz/4でSPI通信やると、どのくらいで通信完了するんですか?
PIC応用ガイドブックをよみ始めたんですけど、 dsPICってもう発売してるんですか?
933 :
名無しさん@1周年 :02/12/08 03:45 ID:RAhX9TlH
質問なんですけど AVRを使ってるんですが、 発振子の外部につけるコンデンサの値ってどのくらいがいいんでしょうか? 計算方法とかあるんですか?
934 :
名無しさん@1周年 :02/12/08 11:17 ID:atk4OB00
>>933 じゃ、「コンデンサ内蔵の3本足のセラミック発振子使え」と、こうなる。
936 :
名無しさん@1周年 :02/12/09 18:48 ID:HtLFqXUh
質問させてください。 PICでアセンブラを使って掛け算したいのですが、いい方法ないですか? 実はバイクのトリップメーターを4桁カウンタで作ろうと思うのですが、 例えば、タイヤが6回転かしたら1カウントするというようにしたいのですが・・・。
937 :
ななし :02/12/09 19:05 ID:eLKQv0Gr
>>936 2進数の筆算をやってみてください。そして、その通りのコーディング
をすれば掛け算になります。
では頑張ってください。
938 :
名無しさん@1周年 :02/12/09 19:24 ID:Yk8+oGlB
>>937 おー、その説明に萌えてしまったよ。
わり算のアルゴリズムを理解するのにはやっぱり筆算が一番だったなあ。
ところで6回転で1カウントするだけならかけ算なんかせずに、
変数を1つincして6になったらトリップをカウントアップするだけで済まないか?
その前に、その処理をするのに何故掛け算が必要なのかが解せん。 割り算なら解るのだが。
940 :
936 :02/12/09 20:14 ID:HtLFqXUh
レスありがとうございます。 割り算でもいいと思うのですが、例えば、タイヤの週径が1.74mで、 6回転すると(6*1.74=10.56m)、1桁目(10m)が1カウントする ような感じで考えていたのです。
なるほど。でもそれじゃちょっと面倒では?アルゴリズムを練り直した方が・・・。 例えば、タイヤの円周を簡便に1.75mとしてしまい、 1周ごとにカウンタに1.75*4である7を加えて、 表示するとき4で割れば簡単にm表示にならんかな?
例えばABCD.EFGH(m)と固定少数にして1回転置きに進む距離を 足してくだけで良いのでは? 表示はABCDの桁だけ使えば良いし、誤差減らすなら少数以下を 増やせば良いし。1桁1バイトならソフトウェアも簡単w
943 :
938 :02/12/09 22:20 ID:k3+w2FFl
あとで微調整をすることを考えると
>>942 がいいな。
足し算もunpackedBCDでやっちゃうんだよね。
944 :
936 :02/12/09 22:53 ID:HtLFqXUh
だめだ〜。まだ、PIC初心者なので、理解をこえてます。 でなおしてきます。
945 :
名無しさん@1周年 :02/12/09 23:38 ID:k3+w2FFl
>>944 もう少しがんばれ、少なくともかけ算より簡単な話だよ。
ファイルレジスタ上に例えば7つのレジスタを確保する。
それぞれ、万千百十一の位及び1/10,1/100の位に割り当てる。
(仮に、それぞれ万千百十一割分と漢字の名前つけとく)
最初に万千百十一割分の各レジスタをゼロクリア
タイヤが一回転する毎に
[分]=[分]+5
[割]=[割]+7
[一]=[一]+1 (1.75をたしたことになる)
桁上がりのチェック
[分]≧10なら[分]=[分]-10、[割]=[割]+1
[割]≧10なら[割]=[割]-10、[一]=[一]+1
[一]≧10なら[一]=[一]-10、[十]=[十]+1
:
:
用意した桁数繰り返し
表示したいときは既に桁別の数値になっているから楽勝。
表示したい桁を7セグLEDのパターンに変更するなり7447を通すなりして
表示すればおしまい。
で、これをPICに乗せるのはPICのお勉強がいる。がんばってねー
946 :
936 :02/12/10 00:29 ID:stQCCulK
>>945 ご指導ありがとうございます。
分]=[分]+5
分]≧10なら[分]=[分]-10、[割]=[割]+1
[割]=[割]+7
[割]≧10なら[割]=[割]-10、[一]=[一]+1
[一]=[一]+1
[一]≧10なら[一]=[一]-10、[十]=[十]+1
という様に考えていたのですが、
まとめて桁チェックした方がよさそうですね。
頭がかたいなぁ・・・。すみませんデス。
アルゴリズムの話とは離れてしまうのでスマンけど トリップメーターにするなら、キーをOFFにしたりエンストしたりで ゼロクリアしちゃったら悲しくない?(w EEPROMをうまく使うとか、勉強しながらそのへんも考えていけると 楽しいね。
948 :
名無しさん@1周年 :02/12/10 19:25 ID:6TuC6LJr
>まとめて桁チェックした方がよさそうですね。
見ててきれいなのは
>>945 だが、プログラムがちいさくなるのは
>>946 だと思うよ。見やすい方がわかりやすいかと思って
まとめちぇっくにしてます。
速度はそれほど要求されないから、
足す数をmovlwでwレジスタに入れてコールすれば、
足される桁=足される桁+足す数(w)
足される桁=足される桁+前の桁からの桁上がり
足される桁≧10なら
足される桁=足される桁-10(足される桁+246)
前の桁からの繰り上がり(次の桁用)=1
足される桁<10なら
前の桁からの繰り上がり(次の桁用)=0
足される桁をwに入れて
Return
ようなルーチンを作って、
足される桁=[分]
movlw 5
call 足してけたあがり
[分]=w
足される桁=[割]
movlw 7
call 足してけたあがり
[割]=w
ってな感じでできるようにすればすっきりするかな。
試しに作ってみようとしたが、PICのアセンブラむずかしぃ・・・
949 :
936 :02/12/10 21:07 ID:stQCCulK
ためしに作ってみたのですが、初心者ということで変なところがあるかもしれません。 最初にCOUNT1〜8 (1桁〜8桁)、COUNT1K〜3K(タイヤ1回転で加算される3桁数字) 宣言してパルスが入ると、 COUNT_UP MOVF COUNT1,w ;COUNT1→w ADDWFCOUNT1K,f;COUNT1+COUNT1K→f MOVFCOUNT2,w;COUNT2→w ADDWFCOUNT2K,f;COUNT2+COUNT2K→f MOVFCOUNT3,w;COUNT3→w ADDWFCOUNT3K,f;COUNT3+COUNT3K→f MOVFCOUNT1,w;COUNT1→w SUBWFDEC10,f;DEC10-COUNT1→f BTFSCSTATUS,C;DEC<COUNT1? GOTOCOUNT_UP1;NO GOTO COUNT_UP1 MOVFDEC10,w;YES DEC10→w SUBWFCOUNT1,f;COUNT1-DEC10→f MOVLWD'1';1→w ADDWFCOUNT2,f;COUNT2+1→f
950 :
936 :02/12/10 21:08 ID:stQCCulK
COUNT_UP1 MOVFCOUNT2,w;COUNT2→w SUBWFDEC10,f;DEC10-COUNT2→f BTFSCSTATUS,C;DEC10<COUNT2? GOTOCOUNT_UP2;NO GOTO COUNT_UP2 MOVFDEC10,w;YES DEC10→w SUBWFCOUNT2,f;COUNT2-DEC10→f MOVLWD'1';1→w ADDWFCOUNT3,f;COUNT3+1→f ・ ・ で表示は、COUNT4〜8という感じで作ったのですが、普通のカウンタの動作になって しまってます。なんでだろ・・。
951 :
936 :02/12/10 23:27 ID:stQCCulK
タブのスペースがなくなって見づらくなってる〜。 ごめんなさい。
952 :
名無しさん@1周年 :02/12/10 23:51 ID:LCmWbruu
ん? MOVF COUNT1,w ; COUNT1→w ADDWF COUNT1K,f ; COUNT1+COUNT1K→f これって、COUNT1+COUNT1K→COUNT1kになってしまうのでは? MOVF COUNT1K,w ; COUNT1→w ADDWF COUNT,f ; COUNT1+COUNT1K→f これならいい? COUNT1k〜3kは定数なんだから、EQUで定数として宣言して MOVLF COUNT1K ; COUNT1(即値)→w ADDWF COUNT,f ; COUNT1+COUNT1K→f が変数減っていいと思う。 ここもうーむ・・・保存場所間違っておかしくなる MOVF COUNT1,w ; COUNT1→w SUBWF DEC10,f ;DEC10-COUNT1→DEC10 BTFSC STATUS,C ;DEC< COUNT1? GOTO COUNT_UP1 ;NO GOTO COUNT_UP1 MOVF DEC10,w ;YES DEC10(=DEC10-COUNT1)→w SUBWF COUNT1,f ; COUNT1-DEC10=COUNT1*2-DEC10→COUNT MOVLW D'1' ;1→w ADDWF COUNT2,f ; COUNT2+1→f ;DEC10-COUNT1→f さらに、8.25+1.75=10.00のように、桁上がりは複数場所で起こる この方法だと全ての桁上がりをチェックしていないよ。
953 :
名無しさん@1周年 :02/12/10 23:57 ID:LCmWbruu
COUNT1-10→COUNT1は、 movlw 246 addwf COUNT1,f でもいけるよ COUNT1≧10の判定は movlw 246 addwf COUNT1,w で、オーバーフローすれば10越えてる.
954 :
これでどうだろ :02/12/11 06:49 ID:wla5yn5Z
clrf ketaup ;桁上がりよう変数 movf C1,w ;1/100桁 movlw 5 call keta_add movwf C1 movf C2,w ;1/10桁 movwf ktmp movlw 7 call keta_add movwf C2 movf C3,w ;1の桁 movwf ktmp movlw 1 call keta_add movwf C3 movf C4,w ;10の桁 movwf ktmp call keta_add2 movwf C4 movf C5,w ;100の桁 movwf ktmp call keta_add2 movwf C5 :
955 :
これでどうだろ :02/12/11 06:49 ID:wla5yn5Z
keta_add2: ; 桁上がりだけチェックする場合はこちら clrw keta_add: addwf ketaup,w ; w=足す数(w)+ketaup(前の桁からの桁上がり) addwf ktmp,f ; ktmp=足される桁+(足す数(w)+前の桁からの桁上がり) clrf ketaup ; movlw 246 ; 256-10 addwf ktmp,w ; 足される桁≧10ならあふれる btfsc STATUS,C ; あふれたらこちら goto keta_under10 ; あふれなければこちら incf ketaup,f ; ketaup=1(次の桁用) movlw 246 addwf ktmp,f ; 今度は本当に-10する keta_under10: return
956 :
936 :02/12/11 22:53 ID:IspRLFyY
ありがとうございます。 しかし、これらを理解するのに時間がかかりそうです。 ふむ〜・・。アセンブラ難しいです。
957 :
間接参照版 :02/12/11 23:33 ID:wla5yn5Z
clrf ketaup ; 桁上がりよう変数クリア movlw p_keta ; 桁データの置かれたアドレスの先頭を movwf FSR ; 間接参照用レジスタにセット movlw 5 ; 1/100m処理 call keta_add ; INDFについて処理を行う。keta_add内でFSRはINCされる movlw 7 ; 1/10m処理 call keta_add ; movlw 1 ; 1m処理 call keta_add ; call keta_add2 ; 10m処理 call keta_add2 ; 100m処理 call keta_add2 ; 1km処理 call keta_add2 ; 10km処理 call keta_add2 ; 100km処理 : keta_add2: ; 桁上がりだけチェックする場合はこちら clrw keta_add: addwf ketaup,w ; w=足す数(w)+ketaup(前の桁からの桁上がり) addwf INDF,f ; INDF=足される桁+(足す数(w)+前の桁からの桁上がり) clrf ketaup ; movlw 246 ; 256-10 addwf INDF,w ; 足される桁≧10ならあふれる btfsc STATUS,C ; あふれたらこちら goto keta_under10 ; あふれなければこちら incf ketaup,f ; ketaup=1(次の桁用) movlw 246 addwf INDF,f ; 今度は本当に-10する incf FSR ; 次にコールされたときは次の桁 keta_under10: return
958 :
間接参照版2 :02/12/11 23:41 ID:wla5yn5Z
あ、ketaupも消せるな。 movlw p_keta ; 桁データの置かれたアドレスの先頭を movwf FSR ; 間接参照用レジスタにセット movlw 5 ; 1/100m処理 call keta_add ; INDFについて処理を行う。keta_add内でFSRはINCされる movlw 7 ; 1/10m処理 call keta_add ; movlw 1 ; 1m処理 call keta_add ; call keta_add2 ; 10m処理 call keta_add2 ; 100m処理 call keta_add2 ; 1km処理 : ; カウントする桁の1つ手前まで処理する(次の桁まで操作しているため) keta_add: addwf INDF,f ; INDF=足される桁+足す数(w) keta_add2: ; 桁上がりだけチェックする場合はこちら movlw 246 ; 256-10 addwf INDF,w ; 足される桁≧10ならあふれる btfsc STATUS,C ; あふれたらこちら goto keta_under10 ; あふれなければこちら movlw 246 addwf INDF,f ; 今度は本当に-10する incf FSR ; 次にコールされたときは次の桁 incf INDF ; オーバーフローがあったときは次の桁を+1 return keta_under10: incf FSR ; 次にコールされたときは次の桁 return
959 :
間接参照版2 :02/12/12 00:00 ID:j8jc7xJp
すんません、 ×btfsc STATUS,C ○btfss STATUS,C
CPLDもこのスレでつか?
962 :
名無しさん@1周年 :02/12/12 12:16 ID:P7ibo/x/
その前の > addwf INDF,w ; 足される桁≧10ならあふれる でwにINDF+246(INDF-10)が入っているから, > movlw 246 > addwf INDF,f ; 今度は本当に-10する は > movwf INDF,f ; wに入ったINDF-10をINDFに入れる だけでいいぞ
963 :
936 :02/12/13 14:51 ID:OPe1dzin
夜勤明けに来てみたらなにかすごい事になってます。 理解を超えてる〜。頭がパンクしそうです。 p_ketaって最初に定義しないとだめなのですか? あと、FSRはSTATUS,IRPて設定しないとだめなのですか?
964 :
名無しさん@1周年 :02/12/13 18:36 ID:boUB6+ot
>>963 p_ketaはコメントの通り、equで定数として桁カウンターに使う領域の
先頭の番地を書いて置いてください。例えば0x20hから6バイトを使いたければ20h
IRPは使うPICのデータアドレス100hより後に何もないPICなら最初に0にしてあとは触らない。
Address=IRP×100h+FSRですから
http://www.picfun.com/memory03.html この辺見て
MPLAB C18 demo v2,10になってタイムスタンプチェック入りやがった …CCS-PCH買うか
セラミック発振子が作動しないんですけどなんでですかね? ほかの回路ではオシロで動いてるのが分かったんですけど.
>>966 いつも思うが、そんな書き込みで解決方法が判るなら人生苦労しない。
ここはサポートセンターではない。まず必要と思われる状況説明は
できるだけ書き込むべきでしょう。
そんな気がないなら、こっちも答える気はないということで。
>>967 原因が分かりました…グランドつなげてなかった…
969 :
名無しさん@1周年 :02/12/22 22:58 ID:IQMHw+qG
お尋ねします。 古い実験機器にコントローラーを付けようと画策しているのですが、 漫然とやるとI/Oが100本近くなりそうなのです。 (ただし、出来ればパラレル入力したいのは16ビットのみです。あとは低速な入出力ばかり) AVRを使うとすると、どういう外部素子を使うとスマートにまとまりますか? それとも、最初から何か別のCPUにしておいた方がいいですか?
>>969 40ピンデバイスを3つ、ってのはだめか。
どのくらいの速度が欲しいの?
>>969 スピードとか必要ないならひたすらシリパラ変換するとか?
あとは今まだ多分売っている DesignWave Magazine のオマケ CPLD じゃ
ダメ?CPUじゃなくなってしまうけど。I/Oの数は多いよ。
高速処理したいのが16bitなら、その分は外部素子使うより8515か35でも使う方がスマートそうです。 残りはシフトレジスタICでシリパラ変換でどうでしょ。164で10個以上か・・・ 機器に取り込ませるための信号もいるの? コントローラの入力は何?PCなのかキーなのか? 先に書いたIO100本って、コントローラ入力部も含めての話なのか? このへんまで書けばいろいろ案が出そう。
相互に関連がない入力がたくさん データはPCじゃなくロータリーエンコーダーとかスイッチなど なら、1項目毎に1200とエンコーダをあてがう 簡単なブロック図きぼんぬ。
974 :
969 :02/12/23 07:38 ID:BOtf3rYA
>970-973 皆さん、早速ありがとうございます。 ほとんどがマンマシンI/Fとメカ制御なので、数十mSで応答すれば充分です。 ただ、ロータリーエンコーダー出力を16bでU/Dカウントする部分があって、 最高10kHzくらいを発生します。これはソフトで計数するのは 無理と思いましたので、74HC192でも使うつもりでした。 また、このデータを取りこむ速度は、速ければそれなりの メリットがあるので、ここだけがパラレル入力したい部分です。 CPLDですか。使ったことがないので、何とも・・・ ひたすらシリパラ変換するのは覚悟です。その場合、 AVRと相性がよく、I/O数の多い素子があればいいのですが。 40ピンデバイスを3つ? 1項目毎に1200とエンコーダをあてがう? なるほど、相互にシリアル通信して連携するわけですね。 うん、これが一番早道かも知れませんね。 多謝深謝
これAVR+マンマシンインタフェースと対象機器、どちらに エンコーダがあってどちらが読みとり側なんでしょうか? 勝手に機器側がエンコーダ出力を吐いてると考えます。 74HC192が使えると言うことはUp/Downそれぞれのパルスが 出ていて、チャタリングなどないと言うことですよね。でそれが最大10kHz。 その程度ならソフトウェアで楽勝ではないですか? INT0/INT1でキャッチしてそのまま割り込みで2バイトのカウントアップ・ カウントダウンすればいいだけだと思う。 INT0_INTERRUPT: ;割り込みcall ;信号変化から割り込み動作まで1クロック ;割り込みに4クロック ;割り込み先のRJMPに2クロック push r0 ;2 in r0,SREG ;1 push r30 ;2 push r31 ;2 lds r30,counter_mem ;2 lds r31,(counter_mem+1) ;2 ADIW Z,1 ;2 INT0にはUpを入力 sts r30,counter_mem ;2 sts r31,(counter_mem+1) ;2 pop r31 ;2 pop r30 ;2 out SREG,r0 ;1 pop r0 ;2 reti ;4 35クロック。8MHzなら4.4μsecですがどうでしょ? ポートも2つしかいりません。
なんか全体像が読めないのでどう考えていいか分かりませぬ。 対象機器にどんな入出力があってそれをどんなマンマシンインタフェイスに つなごうとしているのか、AVR内で制御する必要のある処理ってどんな処理なのか 支障ない範囲で説明キボンヌ。
問題は16bitカウントよりその16bitデータをどこでどう利用するか? AVR内部で何らかの制御に使うならAVRでカウントすればいいが 外部に送る必要があるなら、AVRなんか介さずに192で直接わたせばいい?訳で。
PIC,AVR以外の話になるので、ちょっとアレですが、IOの数が多いとなると、 H8とかSH/4とだとどうでしょか? CPLDを使うっていうのは興味あるので、解説希望。 (丁度デザインウェーブのアレは買いました。ダウンロードケーブルはヒューマンデータのキット購入予定)
実は足の数そんなに多くなくてもいい話じゃないだろうかと思う今日この頃
981 :
969 :02/12/23 15:09 ID:BOtf3rYA
うわ、またこんなにレスが・・・ 機器は元々数多くのリレーで駆動されていたものなので、 それを「漫然」と置きかえると、操作スイッチなどと合わせ 100本近くなりかねないのです。 勿論、外部でエンコード・デコードしたら少しは減りますが、 その分ハード的な手間はかかるわけですから、最初から足数が 稼げるならそちらの方が得策かと思ったもので・・・ あと、ロータリーエンコーダーは今回、対象機器に装備するものです。 データはAVRに取りこんだ後、いくらかの演算を行いますので、 ソフト的な読みこみは最初からあきらめていました。 でも4.4μsecか・・・何とかなるかも。 順序として、そのあたりを最初に考えるべきだったようです。 「ハード的な手間」を避けたいはずなのに矛盾してましたね。 H8とかSH/4についても検索などしなくては。 いろいろとありがとうございました。 皆様のコメントをもとに、もう少し自分なりに検討してみます。
982 :
名無しさん@1周年 :02/12/23 15:31 ID:d8fUVJOK
>>975 Up/Downカウントが同時に来ないと決め打ちできるなら、
両方をDiode-ORしてINT0に突っ込んで、どちらかを別の汎用ピンに入れとけば
1つのINTでいける。別の汎用ピン=HiならDown処理、LoならUp処理を行うように
組み込めばいい。INTが足りなければ考えてみて。
ところで、入れるのは普通の?ロータリーエンコーダ??
192に入力できるようなチャタリングのない単純なUp/Down信号を吐く
エンコーダなんてあったっけ?なにか付加回路ついてるの?
PICをI2Cで結んでやればI/O増やせるヤン、って自分はそこまでやったことないので、誰か解説してくれ。
984 :
名無しさん@1周年 :02/12/23 15:55 ID:0UqsJeGo
そもそも結ぶ必要あるのかな
985 :
>>982 :02/12/23 16:22 ID:BOtf3rYA
付加回路つきです。 てい倍とUp/Downの分離回路が組まれ、そこで波形整形もされています。 そんなわけで、Up/Downは同時には来ません。 いろんな工夫があるものですね。
986 :
971 :02/12/24 02:11 ID:XgF68yhl
>>978 ゴメン、思いつきで書いただけなんで、詳細はあんまり考えて
いませんでした。
なにをしなければならないのか良く分かってなかったので、
考えようが無かったというか。
ぜいたくにシリパラのためだけに使って、制御にはAVRを使
うとかするのもIO稼ぐのにはいいかなーとか。
ダウンロードケーブルは作るのが安上がりかもしれませんよ。
あと、alteraがあのキットを購入した人向けに安く販売してい
るみたいです。
って、激しくスレ違いですな。すまんです。
987 :
名無しさん@1周年 :02/12/24 03:06 ID:90QrCHQL
>986 俺も思いつきだが、中にシフトレジスタとラッチを仕込むと IOエキスパンダになりそうな予感がする。 で、あのCPLD最安値はどこでいくらだろ?
988 :
名無しさん@1周年 :02/12/24 04:48 ID:fsiPdCPp
>>987 この目的(IOエキスパンダ)ならシフトレジスタより
>>903 なんかがよさげ。
処理時間1/8、コードはそれ以上節減。(Disable→(outp-latch)n→Enable)
port3つですむシフトレジスタ+ラッチと違ってport10個(8bit+Latch+Enable)要するが
10個用意できるなら処理がとても簡単になりそう。
ロジックで作る場合配線が多いのがうっとおしいが、CPLDだとそのへんがいいんだろうなあ。
>>987 DesignWave Magazine を買うのが一番安いかも。
普通ではあの値段で変換基板込みでは買えないと思います。
そう思ったので私は5枚買いました(笑
AVRと組み合わせて使う予定です。TTLとかを組み合わせて
処理していたのをCPLDにやらせようかなと。
>>989 >普通ではあの値段で変換基板込みでは買えないと思います。
普通に(アマチュアが)買うと、どれくらいになりますか?
991 :
名無しさん@1周年 :02/12/24 13:49 ID:iTlxMmgm
>>988 マイコンの8bitportにシフトレジスタ(164や4015)をn個つないで、
共通のクロックでデータを送って最後に共通のEnableをかける。
これでn→4n or 8n拡張(マイコンポート自体も使うなら5n or 9n)
portの幅が8bitでなくても使える分374よりいい面もあるかも
>>990 個人で通販出来るところを探したんですが見つかりませんでした。
もっと小さいのとかXilinxの物だったら買えそうです。
同じ物ではありませんが、以前買った時の値段から判断して、付
録の物がもし買えるとするとCPLDが3〜4,000円ぐらいするかと思
います。変換基板が1〜2,000円ぐらいかな?