146426

UP掲示板


[トップに戻る] [スレッド表示] [トピック表示] [アルバム] [留意事項] [ワード検索] [管理用]
おなまえ
Eメール
タイトル
コメント
参照URL
添付File
暗証キー (英数字で8文字以内)
画像認証 (右画像の数字を入力) 投稿キー
文字色
< 12345678910>
紹介 投稿者:yas 投稿日:2007/12/06(Thu) 00:46 No.713

知り合いの人をここに招いても良いですか?
私よりかは遙かにマイコンを知っている方です。
ただ Z80の時代の人ですが・・・・

Re: 紹介 - yamasan   2007/12/06(Thu) 01:25 No.715
千客万来ですね。当然OKです。
Re: 紹介 - yas   2007/12/07(Fri) 21:53 No.716
yamasanありがとうございます
早々にメールを書き送りました ^^
千客万来の字が違うような・・・ ^^;
Re: 紹介 - yamasan   2007/12/08(Sat) 03:29 No.718
漢字まちがい、こっそり修正!。
すみません 投稿者:yas 投稿日:2007/12/04(Tue) 00:20 No.706

なんか初心者のマイコンQ&Aみたいになっていますね〜
やっとTIMR0の割り込みソフト見つけました ^^;
いろんな人が説明してくれているのですがどれも解らなくて
今日、わりと初心者に解りやすく書かれているサイトをみつけました
近日中にタイマーを使ったLED点滅が出来そうです^^

Re: すみません - yamasan   2007/12/05(Wed) 02:55 No.707
ソフトの作成環境が違うので直接は答えられませんが、内容が判ればいつでもOKです。
なんとか出来ました - yas   2007/12/05(Wed) 10:09 No.708
何とか出来たのですが例のごとく切り貼りなので
内容がすべて理解したわけではありません
周期的な割り込みはどうすればいいのかな?
添付ファイルって テキストも添付できます?

やはり テキストは無理ですね
テキストファイルの添付 - yamasan   2007/12/05(Wed) 13:47 No.709
 ファイルの拡張子を ".txt"に変更してから添付するとOKでした。

[添付]: 204 bytes

ほんとだ! - yas   2007/12/05(Wed) 16:23 No.710
ちゃんと添付できますね ^^
今現状のソフト添付します
オシロで見ると250μsごとに割り込みが入っているのが見えます

[添付]: 3599 bytes

Re: すみません - yamasan   2007/12/05(Wed) 19:40 No.711
OPTION レジスタの設定で TMR0 の前に 1/2 のプリスケーが入っているので
このくらいの定数になるのですね。

なお、割込みの中で TMR0に加算する部分は少しいい方法があるので添付しておきます。

[添付]: 800 bytes

Re: すみません - yas   2007/12/06(Thu) 00:41 No.712
ホントだ! 2命令でいけますね。
もう少し勉強すると基本的な部分でも色々改善できそうですね。

今度割り込み内でパルス幅を計測したいのですが、カウンターを使って計るしかないですよね〜
Re: すみません - yamasan   2007/12/06(Thu) 01:22 No.714
 測定するパルス幅の分解能が割込み周期間隔でOKなら
入力ポートがオンの期間のみメモリをインクリメント(+1)
していけばOK。
 この場合、8ビットの演算で済ませる場合で割込み周期を
100[uS] に設定したとすると
 ・測定最大パルス幅: 100[uS] * 255 = 25.5[mS]
 ・測定分解能   : 100[uS]

となります。16ビット演算をするなら
 ・測定最大パルス幅: 100[uS] * 65535 = 6.5535[S]
 ・測定分解能   : 100[uS]

16ビットのインクリメントはそんなに面倒ではないですが、
後で実際に使用する場合、16ビットの比較ルーチンなども
必要になると思われます。
寒くなりました 投稿者:yas 投稿日:2007/12/02(Sun) 01:12 No.700

yamasanお元気ですか? 
先日はpicの件で色々教えていただきありがとうございました
掲示板の借りて初歩的な質問ですみませんが教えてください

以前にテーブルの話が出ましたが
どうしても理解できません
何がどうなるのだか?
例えば・・・

movlw B'00010010' ;
movwf GPIO ; 点灯
movfw ADRESH ; 結果を読み込む(上位バイト)
call convert ; 結果の変換
call delayns ; ADRESH×2[ms]待ち

このconvertの部分でテーブルを参照しています
これが変わることで何が変わるんでしょうか?
すみません適切な質問かどうかも理解していません
よろしくです〜〜

Re: 寒くなりました - yas   2007/12/02(Sun) 01:15 No.701
すみません テーブルの先頭です

;; y=256−32*log_2(256−x) の変換を行うサブルーチン
convert:
clrf PCLATH
bcf PCLATH, 0
bsf PCLATH, 1

movwf PCL
org 0x200
retlw D'0' ; ADRES=0
retlw D'0' ; ADRES=1

これを書かないと何かわかんないですね ^^;
Re: 寒くなりました - yamasan   2007/12/02(Sun) 02:47 No.702
先の最終行の
call delayns ; ADRESH×2[ms]待ち

の delaynsというサブルーチンは、呼ばれたときの wレジスタの値
によって決まる長さのウェイト・ルーチン(時間待ちをしてから帰る)
だと思われます。

------------------------------------------------------------------
なので ADRESH(A/D 変換値の上位 8ビット?)より 256個の表を引いて
その表に書かれている時間待ちをする動作と思われます。
------------------------------------------------------------------

で、以下はその表を引くサブルーチン。PICなので超トリッキー。

;; y=256−32*log_2(256−x) の変換を行うサブルーチン
convert:
clrf PCLATH ; PCLATH b0-b7 = 0 以下の 3行で W を壊さずに PCLATHに 0x02 を入れる
bcf PCLATH, 0 ; PCLATH b0 = 0 不要 ?
bsf PCLATH, 1 ; PCLATH b1 = 1 これで PCLATH = 0x02 (以下の org 0x200 の 上位の0x2xx)

movwf PCL ; これで PCH = 0x02, PCL = w (呼ばれたときの wレジスタの値)の以下へジャンプ
org 0x200 ; 以下は プログラムメモリの 0x0200 から配置される
retlw D'0' ; ADRES = 0 ; w = 0x00 の場合に movwf PCL でここへ ┐
retlw D'0' ; ADRES = 1 ; w = 0x01 の場合に movwf PCL でここへ │256個の表
retlw ??? ; ADRES=255 ; w = 0xff の場合に movwf PCL でここへ ┘
ありがとうございます - yas   2007/12/02(Sun) 11:02 No.703
MPLABのシミュレーターでステップ実行してみました
yamasanの言われるようにちゃんと表を引いてWレジスタに返していました。
もう一つ質問なんですが、テーブルは必ず255個作らないといけないのでしょうか?
それとも1,2,4,8,16,の単位で作れるのでしょうか?
多分 10,20,30と言う単位は無理なんですよね〜
Re: 寒くなりました - yamasan   2007/12/02(Sun) 11:59 No.704
表を引くサブルーチンを呼ぶ側で wの値を制限すれば
1,2,4,8,16,〜 の単位なら簡単に作れます。
たとえば呼ぶ側で

andlw B'00001111' ; w を下位 4ビットに制限
call convert ; 結果の変換

とすればテーブルは 16個でOKです。
先の ADRESHの場合でも以下のようにすれば ADRESHの上位 4ビットによる
16個の表引きで済ませることもできます。

swapf ADRESH, 0 ; ADRESH の上位 4ビットと下位 4ビットを入れ替えて wへ
andlw B'00001111' ; w を下位 4ビットに制限
call convert ; 結果の変換

10,20,30と言う単位はできないことはないのですが、
合理的に wの範囲を制限するのに掛算、割算が必要となると思われます。
あぁ なるほど - yas   2007/12/04(Tue) 00:16 No.705
マスクしたの見たことがあります
そういう意味だったんですね〜 へぇ〜〜
少しずつですが見えてきています
相変わらず基本命令は完全に覚えてないですが・・・
周波数カウンタ 投稿者:葛原 投稿日:2007/09/08(Sat) 15:12 No.693

yasさん、こんにちはです。
>***の葛原さん?
***は、ひらがな 3文字ですか?
御菓子屋です。

EEPROMは、文化の森にいい本があったので、
理解できた気がします。

周波数カウンタに挑戦中です。
マイコンボードに、水晶発振子 32.768kHzを追加しました。
タイマAを時計ベースにして 1secをつくり、その間の
入力割込みを数える案にトライしています。
yamasanの (1)ゲート時間案と同じと思います。
1 Hz 〜 6kHz までは見事に発振器とあっているのですが、
6kHz越えた時、値がゼロになってしまう現象の原因を追究しています。変数もlong型にしているし、
入力部の波形の状態を見なきゃと思っているところです。
とりあえず 目標は 100kHz かな。

ようやく、暑さも控えめになってきましたね。

Re: 周波数カウンタ - yas   2007/10/03(Wed) 13:27 No.694
葛原さん おひさしぶり〜
先日yamasanに電話して確認しました
その後カウンターは動作しました?
良い物が出来たらまた公開して下さいね〜
近日私もyamasanの所に遊びに行きます♪
暑中御見舞い 投稿者:葛原 投稿日:2007/08/16(Thu) 19:21 No.690

暑中御見舞い申し上げます。
猛暑ですね。
H8/3694 マイコンを教わってから、
コツコツと勉強しています。
この間、I2CのEEPROMが使えました。
参考にルネサスのドキュメントを見ました。
さすがに、きっちり書いていますね。
勉強になりました。
現在は、周波数カウンタに挑戦しています。
クロックは20MHzを利用しているのですが、
1secピッタリに分周できないか、思案中です。
タイマA、V、W って奥が深いですね。。。

Re: 暑中御見舞い - yas   2007/08/19(Sun) 00:05 No.691
間違ってたらごめんなさい
葛原さんって***の葛原さん?
もしそうだったらお久しぶりなんですが・・・・・・
Re: 暑中御見舞い - yamasan   2007/08/20(Mon) 02:52 No.692
 EEPROM はけっこう大変だったのでは?。確かにルネサスのドキュメントは
しっかりしてますね。ひとつづつ自分で動かしていくと実力がついてきます。

周波数カウンタには2つの方式があります。
 (1) ゲート時間(レンジによって 10[Sec], 1[Sec], 100[mS], 10[mS]...
   の間に入力パルスが何発通過したかを計測する基本的な方式。
   高い周波数で高精度。
 (2) 入力パルスの1周期(エッジから次のエッジまで)の間に基準クロックが
   何発通過したかを計測し、逆算で周波数を求める周期逆算型。
   低い周波数でも多桁表示可能。

 市販の周波数カウンタではレンジによってこの2つを自動的に切り替えている
ものが多いです。

 (1) の方式では正確なゲート時間用のカウンタと入力パルスをカウントする
2つのカウンタが必要ですね。Tinyでは16bitカウンタならWしかないので
外付け回路を追加しないと無理かも。

 (2) の方式ならWカウンタをインプットキャプチャ・モードで使用すると
出来そうな気がします(あんまり深く考えていませんが...)。
 涼しくなったらまた来てくださいね。
< 12345678910>
処理 記事No 暗証キー

- Joyful Note -