funabashiさん並の良キャラ
突っ込みどころあるがヒントになりそうだから言わないでおこうw
>>946 コードプロテクトされているような気がする。
941様がそんな初歩的なミスをするはずがないだろうw
書けてんなら読めなくてもいいじゃんw
つーか、きっとあそこがあれなんだろうなとは思う
RCDライタの構造からするとまあ推測はできるわな
>>946 注文通り推測したぜw
書けたプログラム通りに動作するなら読める必要なんてないよね
CDRに音楽データ焼いて再生してみてちゃんと聴けたらそれでいいわけで
CDRに記録されたデータをデータ列として確認するなんて無意味なのと同じだよ
書けるけど読めないなら、CTS線の配線間違いくらいじゃない?
おいおいw
そんな簡単なことは言うまでもないだろう
MPLAB X IDE(beta)使ってる人いる?
さっき使ってみたけど、まずまずじゃないかと個人的に思う
何よりもMacからも普通に書き込めたのがちょっと感動
秋月ライタで確認しただけで正常動作したとは書いていない
きっと屈折している者の一人です
秋月ライタも不安定
屈折していたCTSの配線は直ったのだろうか
10f222用にcvasm16でアセンブラしようとしてるんですが
"use of unknow symbol _INTRC_OSC_NOCLKOUT"と表示されてアセンブラできません
解決策ごさいませんか?
>>964 質問に答えが書いてあるじゃないか
"_INTRC_OSC_NOCLKOUTという未定義のシンボルを使っている"と表示されてアセンブラできません
1.使っちゃいけないシンボルを使ってるから使うのをやめる
2.使えるはずのシンボルが定義されていないバグがあるから、自分で定義する
3.その他イロイロ
アセンブラだからトラブルを回避するのに困るようなことはないでしょ
>>965 落ち着いて考えてみればそうですね
ありがとうございます そしてスレ汚し失礼しました
967 :
933:2011/11/30(水) 18:42:14.38 ID:T/750XDm
>>935 >>936 アドバイスありがとう!
なるほど、確かにMemory Programming Specificationっていう別資料に書いてますね。
とりあえず #rom 0x01E000={0x01} とやって試してみましたがまだダメでした。
もうちょっと調べてから報告します。(もしもコンパイラのバグだったら泣く;)
ライタが調子悪いので買おうと思って秋月のページを見ているのですが、
PicKitが無難かなと思って見ているのですが、ICのソケットはどうなっていますか?
秋月プログラマーにはソケットがありますが、PicKitはどうやってICをつなぎますか?
ハンダ付け
>>968 www.picfun.com/PICkit2/PICkit02.html
>>967 EEPROMのアドレスはコードメモリのワードアドレス単位で指定するから、
.hexファイルでのアドレス1E000hは、コードメモリでは1ビットずれた0xF000に対応するはず。
973 :
933:2011/11/30(水) 19:21:05.12 ID:T/750XDm
>>971 うわぁ!
#rom 0xF000={0x01} としたら16F1939のEEPROMに書き込めました!
ありがとうございました。もっと勉強します。
975 :
774ワット発電中さん:2011/11/30(水) 21:31:38.74 ID:PHXYty/l
>974
静電容量が絡んでなけりゃな。
PIC16F1xxx使いたくて
HI-TECH C Compiler for PIC10/12/16 MCUs (Lite Mode) V9.83
を877 887とかで試したら今まで俺が使っていたコンパイラ(Grich社製コンパイラ)より高性能じゃないか!
最適化省かれてるのに
ふざけるな!
>>976 HI-TECH Lite版は最適化省かれるどころか、差し障りのない命令が加わってるよ。重く大きくなる感じ。
そのLite版がGrich社製より高性能って、Grich社製が気になる
何気なく書いた割り算とかが、シフトやANDに置き換わってると、
おお、と思う
HI-TECH C の Lite 版はひどいぞ
分岐に無駄なGOTOを追加してサイクル数とプログラムメモリを無駄に消費しやがる
最適化がないだけならいいけど、無駄なコード入れられるのはちょっと…
CCS@16FやC18評価版だと逆アセンブルリスト見ながら人力で最適化して
ある程度タイミングクリティカルなプログラムもCで書けるけど、
Hi-Techじゃ無理だw
>>979 無料の意味分かるのか?
無償提供に文句を言ったって無駄。
購入すれば問題の無い事。
最適化されなくてもうまく使えばアセンブラより生産性高い。
無駄なGOTOをわざわざ入れてる訳じゃなくて、場合によってはその前に別の処理が入るんだよ
ループ処理を翻訳した直後ではそうなってる
で、不要な部分を削っていくのが最適化
すいませんが、大きな桁数同士の割り算をPICでやりたいのですが、良い方法はありませんでしょうか。
たとえば 60000000/1176472 とかです。
何をやりたいかというと、エアモーターの回転数を細かく測りたいので、
基準の時間をつくり、一回転中に何回パルスが入るかをカウントして回転数を求めたいのです。
(よくある0.6秒間のカウント数を表示する方法では低回転の誤差が大きいので)
別アプローチとして割り算を使わない方法を考えるというのもある
0.6秒間のカウント数の表示ではrpmが100単位になってしまうということでしょ?
単純な加算やシフト演算で済むような計算式で加算平均を取って誤差をならしていけばいいと思う
具体的には2進数で計算しやすいように60/128秒単位で回転数を数えるようにする
a = 60/128秒間の回転数
b = (b + a*128)/2
rpmの表示 = b
のような処理はどうでしょ?
>>982 その程度ならそのまま割り算したってたいしたことないよ。
64ビットの型を知らないだけだったり
32ビット/32ビットを計算すればいいじゃん
ttp://orange.zero.jp/electronics/pic/pic.html 最大12000rpm、1パルス/回転なら200パルス/秒で5msec/パルス
32ビット/32ビットはHFINTOSCの8MHzで2msecかからないというところか、
1回転毎に計算しても間に合いそう
それより重要なのは時間分解能の設定だな
最大12000rpmで1rpm分解能を狙うなら、カウントクロック8MHz、
被除数は0x1C9C3800x2の0x39387000を俺なら選ぶ
加えて、精度がそこそこの外部クロックを使用するか、
またはHFINTOSCなら被除数をチューニングして校正するね
アドバイスじゃなく押し付けよくない
64ビット変数はいらない気がするが
かえって計算時間の増加を招く逆アドバイスになったりして
200rpm以上は従来の方法、それ以下のときは延々と引き算繰り返す、でどう?
回転数低い(=更新も少ない)んだし、高々200回の引き算なら十分なんとかなるんじゃね?
パルス入力から数値更新までに高いレスポンスが求められる仕様ならお勧めしにくいな
うわぁ・・・ (;゚д゚)…
いっぱいレスが付いて驚きますた。
Cみたいにlongだのfloatだのがあれば良いのですが、
コンパイラも知識も無く、やっとこさ先日からMPASMで始めてまして、
>>987さんのサイト見て感心している次第です。
>>990さんの方法も考えてみましたが、果たして自分で出来るのか・・・と。
>>983さんの方法、理解しようと奮闘中です・・・。
>>984のは重み付け平均だな
定時間t0毎のサンプリングなら時定数2xt0の一次遅れフィルタとみなせるが、
パルス毎の計算だとどう見ればよいものか・・・
精度が数桁でいいのなら、分母・分子が共に16bit(unsigned short)に
収まるまで両方右シフトしてから割り算でどうかね。
桁が多いまま、というのは精度が高いという意味だけど、
そんな精度が得られてるとも思えないから、
意味のない精度を大事に保存して計算するのは無駄だな
回転数は時間で計測するから、意外に精度は高く得られる
仕様的に意味がないほどの高精度は不要だが
ああ、シフトしてしまうと肝心の低回転での精度が得られないのか
精度とか有効数字という浮動小数点的なものを整数でやろうとするから
最大桁に合わせる必要が出るんだな
一定時間毎のカウントじゃなくて、一定カウントに要する時間を測定すれば、
精度一定になると思う
>>992 >>984の式は精度は出ないよ
0.6秒単位で測るより少しだけ精度が上がるのと(100rpmを下回るといきなりゼロになったりはしない)
その方式のプログラムをちょっと変えるだけで済むというのがメリット
数値は実際の回転変化より少し遅れた値になるけれど
そのぶん滑らかに変化する
数値表示だったらそういう処理を入れた方が見やすい場合もある
例では、直近までの平均値1/2+今のカウント値1/2で加算しているけれど
3/4+1/4とか7/8+1/8とかいう計算もできて、より滑らかな変化になる
でも今からゼロからプログラムを組むんであったらどの方法でもいいかな
作成前に詳細な仕様を決められる経験があるわけでもないので
細かいところはプログラムが動いてから考えればいいと思う
1000!!!
>>982 引き算してけばいいだろJK
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。