●PIC・AVR 初心者のためのスレッド-3サイクル目●
3 :
前スレの1:03/10/25 23:57 ID:FNO4bNoS
ガイシュツって奴はテメエでもスレ立てるくせに他人様が立てたスレの削除依頼をするような下衆だったんだな。
このスレが糞スレになる理由が判ったョ
6 :
名無しさん@3周年:03/10/26 16:41 ID:/2Isc2C+
7 :
名無しさん@3周年:03/10/26 18:13 ID:39Fx7lqd
ポートの出力波形が観測できるシミュレータってないすかね
MPLABのデバッガだとわかりにくい
一々書き込んでロジアナで見てるんだが・・
どーにかしてくれ〜
>7
オシロでも見えるだろ?
10 :
7:03/10/27 00:46 ID:mGHsYnpV
>>9 シリアルデータだとむり
トリガ掛からん ディジタル使えといわれればそれまでだが。
ってか、漏れが言っているのは一々書き込むのがやだなと。
波形観測できるシミュレータが欲しい
12 :
名無しさん@3周年:03/10/28 19:45 ID:l1yd+7gx
____
<_葱看>
/ i レノノ)) ヽ
人il.゚ - ゚ノ、 みるまらー
fヽ{:::::::::::}ノ
(ヽ::::: ::::::|/)
|::|:: ::::::|::ヽ
ヽ::ヽ:::::::| |:::|
___|::|:::::::| ヽ:ヽ
/:::::||.:::::::| ||
ノ´:::::::::::N):::::::| /|
/:::::O::::::::ヽ|::::::::| |ノ
ノ::::::::::::::::@::::::::::::ノ
|:::::::::::O:/ ̄ ̄
ヽ::::::::::/
` ̄´
14 :
名無しさん@3周年:03/10/28 21:03 ID:PRWRuYXd
>>12 こまーしゃる
いんだすとりー
これで未だ解らないならもう一回マニュアルを熟読すべし。
ああ信頼性かな。秋月とかで売ってるのはCommercialかな?
16 :
名無しさん@3周年:03/11/03 00:33 ID:pXaABIKp
秋月のキットには専用のアセンブラがあるから、ソースを改造するときはそれを使えって事
HEXファイルを直接書き込むのならば問題ないかと思われ
18 :
16:03/11/03 02:24 ID:pXaABIKp
>>17 ありがとうございます。
その後色々と試してみました。
Excelのマクロ(VBA)を使ってパラレルポートからPSのパッド操作をしよう、という目的なのですが
PCがWinXPだとパラレルポートを扱えない(?)らしいので、
現在VirtualPC上WinMEより実行しております。
totalio.sys、giveio.sysなどを使えばXPから通信できるのかもしれませんが、どうもうまくいきませんでした。
書き込みには IC-Prog 1.05C を使ってhexそのまま書き込み、
Excelでマクロを実行したところ、ポートにアクセスできない旨のダイアログが出て通信できませんでした。
そこで、書き込む際にオシレータの設定を RC から HS もしくは XT に変えたところ、
デタラメで正しい動作はしませんでしたが、ボタンに反応して動くようになりました。
これ以上何をどうすればよいのか解らなくなり、
このことに関して何か知っておられる方がおられましたら、再度ご教授願いたいと思います。
>>18 オシレータの設定はPICのクロック生成の方法にあわせてやらないとダメだがや。
10MHzのセラロック使うならコンフィグはHSでいいでしょう。他の設定も確認してみそ
20 :
名無しさん@3周年:03/11/03 12:42 ID:1leMicsh
PIC書き込み時のFuse設定で教えて下さい。
書き込みソフトに、次のような設定項目が出るのですが、
これはいったい何なのでしょうか?
・BG0, BG1 (何の略でしょう?)
・Flash Program Write
(16Fxxxに設定しても出るんですが、
Flashに決まってるだろう?と思っています)
・Low Voltage Program
(これをチェックすると5V書き込みになるのでしょうか?
16Fxxxでは、チェックしてもしなくても書き込めるんですが)
>>20 書き込みに使ってるソフトぐらい書かんと・・・。
22 :
名無しさん@3周年:03/11/03 14:43 ID:pHANQSs/
AVRの勉強をはじめました。
AVRはいわゆるISPが可能ですが、
プログラマとターゲットは6ピンのケーブルで接続します。
あのケーブルやコネクタを買いたいのですが、
なんせド田舎に住んでるので、通販で買いたいと思っています。
どこに売ってますでしょうか?
よくトラ技をみると基板同士を虹色のきれいなケーブルでつないでますが、
あんなやつでいいと思うのですが。
AVRを買ったところじゃ売ってなかったんかいな?
取りあえず、秋月や共立の通販使えばよかろ。
24 :
名無しさん@3周年:03/11/03 14:59 ID:pHANQSs/
>>23 秋月のプログラマをインターネット通販で買ったんですが、
ホームページのどこをみてもピンヘッダはあるのですが、
かんじんのケーブルがないんです。
25 :
名無しさん@3周年:03/11/03 15:28 ID:1leMicsh
20です。
言葉足らず、すみませんでした。
BG0, BG1はRobinAbbottのPIC Programmerです。
Flash Program WriteとLow Voltage Program は、
MicroengeneeringのEPIC Winです。
宜しくお願いします。
26 :
名無しさん@3周年:03/11/03 17:12 ID:Gqyul0tc
>BG0, BG1
わかんね。消去法で行くとこれのことか?
CP1:CP0: フラッシュプログラムメモリコードプロテク
ションビット
>Flash Program Write
4.6 フラッシュプログラムメモリへのライト
フラッシュプログラムメモリのワードは、そのワード
がコードプロテクトされていないセグメントのメモリ
で、WRT コンフィグレーションビットがセットされて
いる場合に限ってライト可能です。
>Low Voltage Program
12.18 低電圧プログラミング
コンフィグレーションワードのLVP ビットは、低電圧
プログラミングを動作させます。このモードにより、マ
イクロコントローラは、動作電圧範囲内のVDDソースを
使用してICSP 経由でプログラムできます。このモード
はMCLR ピンに置かれるVIHH の要求を削除します。LVP
ビットは、デフォルトでは低電圧プログラミングをイ
ネーブルする「1 」になっています。このモードでは、
RB3/PGMピンはプログラミング機能専用となっており、
汎用I/O ピンとしての機能はありません
28 :
名無しさん@3周年:03/11/03 21:17 ID:Eg9RMRug
てか、ケーブル作るのもお勉強だろうが。
>>28 しまった、PC自作板の電子工作スレと間違えたスマソ
AVR初心者です、と言うか電子工作の初心者です。ELM氏のシリアルライターを使って書込みを行っているのですが、
勝手にロックビットがかかってしまうことがたまにあるようで、書き込もうとすると
D:\電子工作\AVR\ELM>avrss 100yen.hex
AVRSS - AVR serial downloading tool for COM port. R0.26 (C)ChaN,2003.
Support:
http://elm-chan.org/ This device is locked.
となってしまい、書込みが出来なくなってしまいます。
氏の説明文では、ロックがかかってしまったときは avrss /e で全消去するように書いてあるのですが、やってみても状況は変わりませんでした。
そもそも、一度ロックが掛かってしまったら解除することは出来ないのではないかとも思えますが・・・、
このチップはご臨終でしょうか? それともロック解除の方法が有るのでしょうか?
32 :
30:03/11/03 23:47 ID:VJWZNtGf
>>31 パラレルライターならヒューズビットの書換が可能だと知っていたのですが、
ロックビットの書換(解除)が出来るかどうかは、データーシートとかを見てもチョット確信が持てなかったので質問してみました。
上の方のリンク先のものが解かりやすそうなのでトライしてみます。 助かりました!
33 :
名無しさん@3周年:03/11/04 15:01 ID:jaV8HDDg
PICには、ロータリーエンコーダ等の2相エンコーダの信号を取り込んで計数する機能があるのでしょうか?
H8など他のマイコンにはあると聞いて調べてみたのですが、みつかりません。。
34 :
名無しさん@3周年:03/11/04 15:39 ID:V8oTa8gL
>>33 電子初心者ですがH8には位相計数モードってアップ/ダウン カウンタ
が有ると思うんですが これ使えないんですか
PICは無いと思うんですけどPGするしかないと思いますけど・・・
H8SやShの方がCH数あると思うけど・・・
機械屋ですけど昔、うちの電子屋にちょっと聞いた事があるもんで・・・
間違えてたらご免なさい。
>>34 位相係数モードってロータリーエンコーダを読みとるのに便利なあれですか?
それならPICには無かったと思う。最新の18XXXとかはわかんない。
36 :
名無しさん@3周年:03/11/04 18:31 ID:V8oTa8gL
>>35 PICには無いですよね。
>>33 31さんの紹介しているELMさんのページにロータリーエンコーダー
の読み取り方が記載されていると思いますが(AVRだけど)参考に
なりませんかね
38 :
33:03/11/04 21:21 ID:jaV8HDDg
PICにはありませんでした。
PIC18F452を使っているのですが、やはりありませんでしたね。
ELMさんのページのロータリエンコーダの読み取り方見てみましたが、英語のページのところですよね?
ちょっと難しいかな・・
37さんのリンクはなんとか分かりそうなので、頑張ってみます。
ありがとうございました。
40 :
33:03/11/04 23:10 ID:Oqhr0+RB
>>38 勉強に励み給え。
これは簡単な部類だしさ。
42 :
33:03/11/04 23:47 ID:Oqhr0+RB
PIC18F452を使って、モータの速度を徐々に変化させていくプログラムを作っているのですが、どうもうまくいきません。
PICのRC1からPWM波を出力させ、そのPWM波を変化させることでモータの速度を変化させようとしています。
#include <18F452.h>
#fuses HS, NOWDT, PUT, NOPROTECT, BROWNOUT, NOLVP
#use delay(CLOCK=40000000)
#use fast_io(c)
main()
{
long duty;
set_tris_c(0xfd);
setup_ccp1(CCP_PWM);
setup_timer_2(T2_DIV_BY_1,0xFF,1);
set_pwm1_duty(duty);
while(1)
{
output_c(duty=0x3FF);
delay_ms(1000);
output_c(duty=0x200);
delay_ms(1000);
}
}
このプログラムでモータはデューティ比100、50での回転を繰り返すと思うのですが。
なにせプログラム初心者なもので・・
おかしい点がありましたら、教えてください。
43 :
名無しさん@3周年:03/11/05 00:15 ID:XumjliqY
どのようにうまくいかないのかわからないですが、
オシロスコープで、PICの出力波形を見てみたらどうでしょうか。
もしオシロが無ければ、「1Kオームの抵抗を直列に入れた赤色LED」を
出力とGND間につないげば、DUTY野%によってLEDの明るさが変わるので
だいたいの目安になるよ。
モーターは、DUTYに対して直線的に応答せず、
ある程度のDUTYまでは止まっていて、突然動き出したりするので
モーターの特徴もつかんでおかないと、いかんね。
44 :
33:03/11/05 00:32 ID:B6zjxJRP
えっと、最初DUTY100で回転、数秒後DUTY 50で回転、100、50・・・
と繰り返す予定なのですが、ずーっと100で回転したり、ずーっと50で回転したりしてしまうのです。
オシロで波形を確認したところ、それぞれ単独で出力させるとちゃんと100、50の波形が確認できました。
上のようなプログラムで確認すると、常に一定の波形を出しており、100、50を繰り返して出力してないように思われます。
プログラム的には間違ってはないと思うのですが・・・
>>44 output_c(duty=0x3FF);
これが変なんじゃないの?
set_pwm1_duty(duty);
デューティーをセットするのはこっちの命令だよね?
46 :
33:03/11/05 10:01 ID:B6zjxJRP
>>45 なるほどぉ。
今から、ちょっとプログラム書き換えて、やってみます。
>>44 これだと1秒ごとに回転数変化するから、モーターによっては変化が分からないんじゃないの?
変数dutyが初期化されないままset_pwm1_duty()に突っ込まれているね。
動かすたび回転状況が異なると思われ。while loop内でdutyが変化しているけど
output_c()はportCに出力する関数だよね?すくなくてもPWMのduty比には関係なさそう。
こんなかんじならどう?
#define min_duty=xxxx; /*適当な数値*/
#define max_duty=xxxx; /*適当な数値*/
#define duty_step=xx; /*適当な数値*/
/*初期設定いろいろ*/
unsigned int duty;
while(1) {
for (duty=min_duty ; duty<=max_duty ; duty+=duty_step) {
set_pwm1_duty(duty);
delay_ms(1000);
}
for (duty=max_duty ; duty>=min_duty ; duty-=duty_step) {
set_pwm1_duty(duty);
delay_ms(1000);
}
}
訂正
#define min_duty (xxxx) /*適当な数値*/
#define max_duty (xxxx) /*適当な数値*/
#define duty_step (xx) /*適当な数値*/
49 :
33:03/11/05 19:56 ID:B6zjxJRP
output_c(set_pwm1_duty(0x3FF));
delay_ms(1000);
output_c(set_pwm1_duty(0x200));
delay_ms(1000);
output_c(set_pwm1_duty(0x100));
という具合にしてやってみたところ、徐々にモータは減速していきました。
動きがぎこちないですが・・・^^;
>>47 わざわざ、ありがとうございます。
さっそく質問で申し訳ないのですが・・・
そのプログラムだと、PWM信号はどこから出力されているのでしょうか?
outputを使わないと出力されない・・とは私の間違いなのでしょうか?
>>49 すんません、私はAVRな人でPICは以前触ったことがある程度なので間違いがあったら訂正よろしく。
set_pwm1_duty()って、CCPR1LレジスタとCCP1CONレジスタのbit4:5にduty比を入れる関数だよね?
でもって、setup_timer_2()は、第一引数でPreScaler、第二引数でPR2値、第三引数=postscaler(PWMでは関係なし)
なら、duty比変更はset_pwm1_duty()だけでいいんじゃない?
portCに出力してもなんの意味もないと思うんですけど。
出力データに応じてPWM出力ピンの状態を乱しちゃうだけ。
こんな手順でいいのではないでしょうか。
1.TRISCレジスタでCCP1レジスタを出力モードにセット
set_tris_c(0x00);
2.CCP1CONレジスタ下位4bitに11xxを入れて、PMWモードに
setup_ccp1(CCP_PWM);
3.CCP1CONレジスタのbit4-bit5と、CCPR1Lレジスタにduty比をセット
(多分これをやるのがset_pwm1_duty()関数)
4.PR2レジスタにPWM周期を入れる(8bit)、T2CONレジスタでTMR2の設定(プリスケーラ設定+Timer2のスタート)
setup_timer_2(T2_DIV_BY_1,0xFF,1); で、PS=1、postscaler=1?、PWM=0xFF*4=0x3FC周期
これでduty比 = duty/(PR2*4)で出力される
5.以後、duty比を変えたければCCP1CON-bit4:5とCCPR1Lレジスタを変更すればよし
set_pwm1_duty(duty)だけでいい
参考HP:
http://www.picfun.com/pic18.html http://www.picfun.com/c12.html
>>49 output_c()はいらない。set_pwm1_duty()だけでいい。
PWMのモジュールが動作すると勝手に該当のポートに
出力される。
あう
>そのプログラムだと、PWM信号はどこから出力されているのでしょうか?
PWM出力はPICの種類によって異なると思うけど、石毎に出力されるピンが決まっています。
該当する石のデータシートよーく読んでね。
output_c()関数でやるならプログラムで特定のピンをON/OFFすることでPWMを作ることになります・・・。
>>50 × 1.TRISCレジスタでCCP1レジスタを出力モードにセット
○ 1.TRISCレジスタでポートCを出力モードにセット
長ったらしく書いたけど
>>49の誤解は
>>51に尽きるかな。
PICのPWMはそもそもレジスタにPWMの条件を書いて適切なタイマー設定をしたら、
「PICが勝手に特定のピンに」指定したPWM信号を出力する機能。
ポートCを触る必要はないし、そんなところにduty比を書いてもなんの意味もない。
ただbitimageに従ってportCがON/OFFするだけだじょ。
55 :
33:03/11/05 22:30 ID:B6zjxJRP
丁寧な説明を皆さんどうもありがとうございますm(_ _)m
説明を元に明日また実験をやり直してみます^^;
どうもありがとうございました。
PICマイコン PIC16F819−I/P
■PIC16F84Aに10ビットのADコンバータがついた高機能品です。
■ナノワットテクノロジにより2Vからの動作が可能
■最大動作クロック20MHz(5V時)
■内蔵オシレータが31kHz〜8MHzの範囲で選べます。
■PWM SSP SPI I2Cインターフェース内蔵
■ピン配置はPIC16F84Aと同等
◆パッケージ:18ピンDIP
◆フラッシュ:2Kワード
◆RAM:256バイト
◆EEPROM:256バイト
◆クロック:DC〜20MHz
※PICプログラマキットVer.4(K-00200)で書き込みに対応しております。
※大量在庫:1000個以上でも即納します。
1 個 350円
--------------------------------------------
要は16F84に16ビットカウンタとADコンバータが付いたって事ですね?
57 :
名無しさん@3周年:03/11/06 03:07 ID:57YA1xgK
PIC16F648A
■最新最強18ピンPICマイコン!
■PIC16F84Aと同じ18ピンですが下記がパワーアップしています。
・4096ワードプログラムメモリ
・256バイトRAM
・256バイトEEPROM
・電源ピン以外16本をI/Oに使用可能
・3チャンネルのタイマー(16ビットx1,8ビットx2)
・2チャンネルのコンパレータ(Vrefモジュール内蔵)
・USART・SCI内蔵
・CCP(PWM)モジュール内蔵
・内蔵4MHzオシレータ
しかもPIC16F84Aより安い!
1 個 280円
おれはこっちのほうに興味があります。
PICは進化してますね。すごい!
ピン数は84Aと同じなのにIOポートが16本だし
メモリも増えてるし
これに8bitA/Dコン内臓きぼう
>>56-57 へぇ〜、けっこうパワーアップしてますね。
これならC言語使っても大概のことはできそうだし(アセンブラならもっと大きなことできそうだし)
>>58 256バイトRAMでいいんだけど、連続していて欲しいよなー
>>59 それはPICだけに無理なんでしょうねえ。
16シリーズならレジスタやI/O込みでメモリ空間128bytesしかないんでしょ?
18シリーズはデータメモリだけで128bytes/bankあるみたいね
AVRなんかは16bitアドレスで素直だけど、その代償で小さい領域でも間接アドレッシングすると
ステップ数増えまくり(16bitアドレスだから)
メモリ領域狭いのも場合によってはメリットになるのかも。
Cコンパイラによると思うが、16F877で何も考えずに組んだら、
RAMアクセスと、コールの前に全部ページ切り替えが入るんだな。
コードの半分以上が切り替えで使われてる様な気がする・・・なんだかなぁ
62 :
名無しさん@3周年:03/11/06 20:31 ID:b59qJ+FQ
PICのRAMを 希望の位置から配列を取るようにするにはどうしたらよいでしょう。
3bankの先頭から128byte連続して配列をとりたいとか。
Cだとプリプロコマンドでやるのでしょうか。
>62
FED-Cだと、これで出来ますた。が、ソフト的スタック領域と重なるとバグります。
extern unsigned char Xx[128];
#pragma locate Xx 0x120
64 :
名無しさん@3周年:03/11/07 02:59 ID:9MFW/lnw
>>63 なるほと、FED-Cですか。私はCCS-Cですが、同じようなことが
できるかもしれませんね。調べてみます。
しかし、もう少しRAMが欲しいですよね。
charならまだしも、intで配列取ると、あっちゅう間に
なくなりますよね。さびしい。
1Kとか2Kとかあると、ちょっとしたロギングもできて
いいんだけどなぁ。見てる? マイクロチップぅ。
>>64 過去に誰かが書いていたように、「そういう石ではない」ということなのかもね。
あ、途中だった。
そういう用途ならAVRとかH8とか他のマイコンがあると考えるべきかも。
>64 ロギング
16F877+256KSRAMで作った事も有った。
CQ出版のECBの第4集のPIC特集でしこしこと勉強しているド・シロートです。
タイマとウォッチドックタイマ
と出てきたのですが、ウォッチドックタイマとは何ですか?
70 :
名無しさん@3周年:03/11/07 17:31 ID:FZVBn7FY
>>67 頑張りましたね。まじめにRAMつなぐと、address15本、data8本、RD,WRで2本
たぶんRS232Cも使ってるだろうから2本、で計27本。残り6本か。大変!
71 :
名無しさん@3周年:03/11/07 17:37 ID:oDS2viC1
>>67 サンプリングレートが遅いなら外付けシリアルEPROMという手もあるのだが
けっこうのろいよなあ。
>69
WatchDog Timer
ウォッチドッグタイマは、暴走などによりプログラムを、正常に実行できなくなった場合に、
PICを、リセット状態にし、再起動させるためのものである。番犬という意味。
PICでは、一定時間内に専用命令でDogタイマをクリアしないとリセットが掛かるようになる仕組み。
>70
実際には、1usサンプリングが必要だったでCPLDと組み合わせて、
アドレス&データ分割で16本位PICから配線になった。
74 :
名無しさん@3周年:03/11/07 23:04 ID:NKuTD/pB
症状 定期的に動作が不安定になる。
原因 ウォッチドックタイマーが有効になっており、時折割り込みが発生するため。
対処 ウォッチドックタイマーとはプログラムが暴走していないか定期的に 自己診断
するための機能。ウォッチドックタイマーを無効にすること。
コンフィグレーションを書き忘れているか、設定誤り。
あるサイトにこんなことが書いてありました。
普段は使わないほうがいいですか?
75 :
名無しさん@3周年:03/11/07 23:08 ID:NKuTD/pB
↑失礼しました。73さんの書き込みに答えが書いてありますね。
>PICでは、一定時間内に専用命令でDogタイマをクリアしないとリセットが掛かるようになる仕組み。
そういう意味だったんですか。理解でしました。WDT
>>74 WatchDog Timer機能が不要と思うなら、そりゃ無効にした方がいい、というか無効にすべき。
必要だと思うなら使えばいい。不測の事態で暴走しても、再起動すれば問題ないケースなら
自動再起動として使う。出番がないのが理想だけど、暴走されると困るなら使った方が無難?
77 :
名無しさん@3周年:03/11/07 23:31 ID:cxXV20et
ウォッチドッグ使ってても、試しにCPU飛ばして見ると飛びっぱなしだったりするからね。
どこにクリア命令もってくるか検討して使わないと気休めににもならない。
ウォッチドッグのクリア命令を、タイマー割り込み中に置くとメインルーチン暴走してもそのまんま。(w
割り込みプログラムが正常なら、ウォッチドッグのクリアは有効に働くので
メインプログラムの生死(暴走)に関わらず、リセットは実行されない。<番犬にならず(w
釣られてしまつた。
やっぱり番犬よりエージェントだよな
遅くなりましたが、71さん、73さんありがとうございました。
83 :
名無しさん@3周年:03/11/09 17:01 ID:K36ZTXZk
どこで聞くか迷ったんですが、PIC使ってますのでこちらで宜しくお願いします。
ライントレースロボットについてです。
フォトマイクロセンサ(EE-SF5)での反応をPICのI/Oポートに戻す際、
その間にICゲートを挟んでるんですが(TC4049B)、これの意味が良く分かりません。
NOT-NOTとしてて、入力がHighなら、出力もHighになるので、なぜ???と…
PICに入力する前にICゲートで何をしたいのでしょうか?
安定した、HighもしくはLowが得られるんでしょうか?
これでは何言ってるか分かりませんかね…すみません。
シュミット付きインバータ(4584 or 74HC14)なら波形成形の
意味があるんだけど。よく知らないで作ったとか?
それかセンサの方が電源電圧が高いとか?
88 :
名無しさん@3周年:03/11/09 19:40 ID:K36ZTXZk
>>84-87 レス大変感謝します。
ちょっとそれらについて考えてみます。
>よく知らないで作ったとか?
製作実験でして、回路与えられて作ったんです。
現在、レポート中でして、回路を細かく考察してました。
とりあえずバッファを入れればなだらかな電圧変化が急峻になると思う。
ノイズ除去はできないけど、ソフトでなんとかするんじゃないかな。
シュミットトリガ使うと、H→LとL→Hでスレッショルドが違うから、
それが問題になる用途だとマズイのかな。
(ラインを見ていて、白→黒になる点と、黒→白になる点が同じじゃ
ないとマズイとか)
90 :
名無しさん@3周年:03/11/09 20:26 ID:K36ZTXZk
とりあえず、なんとなく分かったような…
しかし分からないのが、Not-Notとしてることです。
なぜ非反転一つにしないのでしょうか???
あー、やっぱ良く分からない…
1.バッファ
2.センサからのアナログ電圧をディジタルに
が主な理由なんですね。2.は分かりました。
しかし、1.についてが良く分かりません。
手持ちのアナログ、ディジタルの教科書を見てみましたが。
ネットで探してみます。シュミットトリガ…
やばい、知らないことだらけだ。
>>83 具体的な回路の概略をさらしてみませんか?
単に
Vcc(PICと共通)
|
抵抗
|
+−−−−4049B----->PIC
|
受光器
|
GND(PICと共通)
なんですか?これだとすると理由がわかんないですね。
92 :
名無しさん@3周年:03/11/09 21:25 ID:K36ZTXZk
Vcc----可変抵抗 Vcc
| |
抵抗 |
| |
発光部 → 受光部 +-----抵抗---+
| | | |
GND +--------NOT--NOT-------→PICへ
|
GND
ずれたらすみません。↑こんな感じです。
Vcc----可変抵抗 Vcc
| |
抵抗 |
| |
発光部 → 受光部 +-----抵抗---+
| | | |
GND +--------NOT--NOT-------→PICへ
|
GND
あうあー…スレ汚し本当にすみません。
ずれててよくわからないのだが
1段目のNOTの入力と2段目のNOTの出力の間に
抵抗があるのか?
それならそれがヒステリシスを付ける役目をしているんだよ。
(シュミットインバータと同じ働き)
Vcc──可変抵抗 Vcc
│ │
抵抗 │
| |
発光部 受光部 ┌----抵抗---┐
| | | |
GND ├───NOT--NOT───→PICへ
│
GND
これでどうだ!
>>95 そうです。シュミットインバータですか。
明日、図書館で今まで出てきたこと調べてきます。
>>96 あーそれなら納得。
安易にシュミットトリガの石を使わず勉強させる親心でしょうか?
って、あれ?受光側抵抗1本抜けてない?書き忘れだよね。
受光部の負荷抵抗で兼用していると予想
あ、負荷抵抗も抜けてるか
>>98 焼ける焼けないの問題じゃなくて、
この回路じゃいつでもLoを吐き出す予感がするんですが。
>>97 すみません。右のGNDと出力の間に抵抗忘れました…
いや、ちょっと
>>97の指摘を勘違いしただけ。
ヒステリシスはNOT-NOTの入出力間の抵抗と
NOTの入力の抵抗の比で作るんだけど、
>>97が
その抵抗のことを言っているのかと思ったので。
>>102 そうですか…
とりあえず、明日は
・バッファ
・シュミットトリガ
・ヒステリシス
辺りをヒントに図書館を漁って来ます。
PICにあんまり関係ない話題に付き合って頂いて、本当に感謝します。
NHK、嘉数氏に当確
すんません、誤爆・・・・
昨日、ICゲートでお世話になったものです。
なんとかレポートにまとめられそうです。本当に有難うございました。
|ω・`).。oO(PICのポート(PORT Bだけ?)って、シュミット入力じゃなかったっけ・・・)
話は変わりますがPIC16F84AでPORTBが出力の時
なんでRB4はオープンドレインなんでしょうか?
1をセットしたらLOW
0をセットしたら何にもならない
シンク電流が25mAより増えるわけでもなさそうだし
なんか利点でもあるのでしょうか?
>>109 出力のままポートが読めると便利なこともある
出力を並列につなげられると便利なこともある
>108
シュミット入力は、RA4になるはず。なお且つ、オープンドレイン出力でもある。
上手に使うと、入出力モードの変更無しに、双方向ポートになります。
双方向ポートは、複数のPICを接続して使う時にリクエストラインとして使えます。
マザーボードのIRQシェアリングのイメージが意味的に近いです。
>111 間違えた。
シュミット入力は、RA4,RB0,RB6,RB7の4ポートでした。お詫びして訂正いたします。
RA4:常時入力はシュミットトリガ入力
RB0:外部割り込み入力にすると、シュミットトリガ入力。
RB6:シリアルプログラミングモードにすると、シュミットトリガ入力(クロック)
RB7:シリアルプログラミングモードにすると、シュミットトリガ入力(データ)
114 :
名無しさん@3周年:03/11/11 19:25 ID:vZyd6ymf
1軸で回転する模型にジャイロを搭載し、ジャイロからの角度データをPICに取り込んで、
模型に搭載されたモータを制御し、モータの反動を利用して模型を目標角度に収束させる。
このようなことをPICでしたいのですが、可能でしょうか?
現在、基盤を作ろうとしているのですが、1から作成するのは初めてなもので・・
何が必要なのかよろしければ教えてください。
>>110 >>111 あまり理解できませんでしたがとりあえず理由があるのですね。初心者には難しい。。。
入力にも出力にもなるというのは便利そうなので調べてみます。
ありがとうございます。
シュミット入力とは5Vを抵抗なしで直接入力できる端子っていう意味で合ってます?
>>116 あってません
詳細はぐーぐる先生にて。
シュミット入力っていうのは、入力にコンパレータをヒステリシス付きで繋がなくても
スルーレートの低い信号をそのまま入力できる入力端子の事です
>116
下記のページ、デジタル回路のシュミットトリガ入力の概要を参照しましょう。
ttp://plaza12.mbn.or.jp/~audio/fbeep/frob_01.htm >シュミット入力とは5Vを抵抗なしで直接入力できる端子っていう意味で合ってます?
最初のPICの端子の話を、混線して理解しようとしています。
今一度、PIC16F84のデータシートの「5.0 I/O ポート」の説明を100回ほど音読しましょう。
ttp://www.microchip.co.jp/30430c-j2.pdf 「5.2 PORTB とTRISB レジスタ」の所に、
「PORTB の各ピンには内部で弱プルアップの設定を行うことができます。」
これが、「5Vを抵抗なしで直接入力できる端子」の誤解のポイント。
正しく言い直すと、「GNDに接地する事で、抵抗なしで直接入力できる端子」です。
で、説明の部分は肝心の「シュミット入力」とは全然関係ない所を示しています。
シュミット入力の所は、「5.1 PORTA とTRISA レジスタ」の
「RA4 はシュミットトリガ入力およびオープンドレイン出力です。」が、説明文です。
google先生に
TTLシュミット入力 [Schmitt trigger TTL input]
TTLレベル信号(DC+5V)を直接入力でき、また高速入力ができる。
と教えてもらい勘違いしてしまいました。
120さんに教えてもらったサイトが大変参考になり、
118さんの解説の意味がやっとわかりました。
回路の授業を受けた事が無いので知らない単語が多すぎて
いつも苦労しています。今回TTLレベルの意味もわかりました(恥)
ありがとうございました。
初歩のラジオとかラジオの制作が無くなった功罪だろう。
勉強するにも敷居が高くなってしまった・・・。
>>122 その代わりググると一杯参考になる初心者向け解説サイトがあるじゃないですか。
>>123 少なくともここでうざがられる奴は検索とか出来ないらしい。
>124 なかなかの、2chスレ宇宙の真理を突いている見解で、良いです。
基礎的な用語をぐーぐるで調べるのは結構大変です。
ためしに[シュミット入力]+[用語][解説][とは]などで検索してみてください
みなさん常識的にこの言葉を使っているのでその意味を知るには
ほねがおれます。
初心者スレなのでやさしく教えてやって下さい
>>126 初心者って言ってもマイコンやるような香具師なんだから、マイコン使わないレベルの電子工作の初歩くらい走ってないと駄目だろ。
さすがに。
確かにいきなりググると混乱するな。やっぱり入門書。
初ラはなくても電子工作入門書はたくさんあるよ。
私は2年ほど前再入門した初心者だけど、ある程度までは入門書に困ることはなかった。
入門書でそこそこ理解したらあとはぐーぐる先生でもどうにかなる。
例えば・・・「調査してこうだと思うんだが意見聞かせろゴルァ」だったら
「おまえうざー」にはなりにくいんだが、調べもせずクレクレとか、あまりに
基礎知識がなさすぎると、やっぱり「うざー」になりやすいだろうね。
質問してるやつも質問の仕方がわからないやつが多い
命令を勉強中の超初心者です。
1、論理演算命令で、ANDがANDWF、XORがXORWFは分かるんですが、
なぜORはIORWF、IORLWで、頭にIが付いているんですか?このIは何ですか?
2、MOVEは、d=0の時fレジスタの値をWに入れるのは分かるんですが、
d=1の時、レジスタに入れる、が分からないんですが、
読み出したものをすぐそこに入れてどうなるんですか?何の意味があるんですか?
>>131 1、データシートとかの命令表を見ればわかる。
2、MOVF?、フラグを変化させたいときとか。
133 :
名無しさん@3周年:03/11/14 12:59 ID:j7dOdoNV
>>131 PICのMOVFは132が言っているように
フラグを変化させる意味があるわけだけど
Z80のLD A,Aのように完全に無意味な命令があるCPUもある。
命令デコードの関係でそういう無意味な命令が
できちゃうこともあるんだよね。
「すべての命令には何かしら意味があるはず」
なんて考えなくてもいいんじゃない?
自分が使う必要ない命令だと思ったら
使わなきゃいいんだし。
どんな命令でもNOP以上の意味はあると
フラグ操作って大きな意味を持ってるんだが。(w
>131
IORLW = Inclusive OR Literal with W
IORWF = Inclusive OR W with f
[Inclusive] = [包括的な、すべてを含む]
PICは組み込み用途のCPUですから、
計算する数値をビット「bit」で扱うのか、バイト「byte」で扱うのか区別が出来ないと
不便ですから、1バイト分全ての8ビットを同時に演算すると言う意味あいを込めてそう呼ぶのです。
人間様のように臨機応変に、ORする事は出来ないって事です。(w
命令実行数の節約も兼ねているのです。
レジスタにロードしてからフラグをチェックしたのでは遅いし手間が掛かりすぎます。
>f レジスタから f レジスタに移動することは無意味に思えますが、フラッグを設定する目的で使用します。
ttp://www.hobby-elec.org/pic3_7.htm#movf 重箱の隅をつつくような純日本風の質問ですが、命令全体を見回して実際にプログラミング
していれば分かる内容ですね。命令語の意味を覚えるだけで時間が掛かり、実際の生きた
勉強になっていない、机上の空論的学習方法で無いかな?
>>137 Inclusive OR(包括的論理和)って、eXclusive OR(排他的論理和、XOR)に対するものとして使っているのではないのですか?
>命令実行数の節約も兼ねているのです。
>レジスタにロードしてからフラグをチェックしたのでは遅いし手間が掛かりすぎます。
movfでも実行後にフラグをチェックして各種動作をしなければならないですよ。
レジスタにロードして比較演算や論理演算してフラグを立てて、では遅いし手間が掛かる、ですね。
フラグチェックを同時に行えるお得な命令はINCFSZ,DECFSZなどだと思いますが。
しかし考えてみると演算でもないMOV命令でフラグが立つのも妙な感じがします。
MOVWFやMOVLWではフラグ変化しないようですし、統一もとれてない。
こういうMPUってたくさんあるのでしょうか?
140 :
名無しさん@3周年:03/11/15 01:23 ID:9tajkDx2
↑ 現実逃避
>>139 だから、PICの割り込み時のステータスを退避させるのに
PUSH:
MOVWF W_TEMP
SWAPF STATUS, W
MOVWF STATUS_TEMP
POP:
SWAPF STATUS_TEMP, W
MOVWF STATUS
SWAPF W_TEMP, F
SWAPF W_TEMP, W
って、アホみたいな記述になるんだよな。
PUSH,POPくらい普通に搭載しておけ、といいたい
#秋月で PIC18F452が買える様になりましたな。
しかも800円で安いし。18F252はないのかなー
16C84だって、当初は800円くらいしなかったっけ?
だって、所詮PICだしぃ。そんなもんでしょ。
>>142 まあ、だから惜しいナ、ということ。悪いとは言わないし改善すべきだとも言わないよ。
命令デコード関係でなにかどうしようもない理由があるのかも知れないし。
マクロ書いておけば手間はワカランとおもう
>144 ぜひ参考までに、マクロ文例集を見せてくださいませ。
ちょっと高機能なPIC16F819を買いました。
試しにLEDを点滅させてみたのですがどうもおかしいんです。
同じプログラム(入力出力設定の後コピペ)を84Aと819の両方に書き込んで
84Aを10MHz、819を内部オシレータ8MHzで動かしたら
16F819の方が8倍くらい早く点滅しています。
まさか1命令1クロックで動いてます?そんなわけ無いですよね。計算合わないし
どういった原因が考えられるでしょうか?
132−137皆様ありがとうございました。
150 :
147:03/11/16 01:47 ID:qKcy3Rso
もっと詳しく調べてから書き込むべきでした。
タイマーのサブルーチン内の様子を見ていたら、
MOVLW D'248'
MOVWF CNT1
の命令を実行するとCNT1の値が10進数で72になりました。
よく見ると CNT1 EQU 0C となっていました。
149さんごめんなさい
スレ汚してすみませんでした。
151 :
名無しさん@3周年:03/11/16 04:53 ID:OFoxiwFJ
なんか、安いCコンパイラを見つけたんですけど、使っている人いるんでしょうか?
http://www.picant.com/c2c/c.html とりあえず2週間は無料で使えるみたいですが
HITECH-C demoが16F819をサポートしてくれないかなーという妄想。
とりあえずは16F877のターゲットデバイスにして、
OSCCONをアセンブラで書けばなんとか16F819でも1Kワード限定で
吐き出してくれるのでなんとかなってますが。
おれベーシックしか出来ないんだよ
153 :
名無しさん@3周年:03/11/16 11:15 ID:YmRA2Rlp
目的の機能が実装できれば言語は何でもイイんじゃないの?
そうそう
目的の行為が出来るんならハングルでもタガログでも何でもイイよね
弘法筆を選ばずって言うしね(w
工房筆おろしで立たずって言うかな?
そういえば日本語mindなんてあったなあ
>>157 立たないのと、入れる前に出ちゃうのと、どっちがマシですか?
(´・ω・`)
俺なんて、どうやっても入らなかったよ・・・(´・ω・`)
年寄りが初体験の失敗談を語るスレは此方ですか?
思い起こせば特殊浴場がトルコと言われていた頃、西川口の(以下略
重症?
秋月のPICプログラマVer.3を組み立てたのですが、
通電中、RS232CドライバのSP202が長時間手で触れないほどに熱くなります。
これで正常なのでしょうか?
>>165 異常に決まってる
配線と部品をよく見直すんだ
>>166 レスthx!
やっぱ異常ですか。
回路図が300km彼方で確認できん。_| ̄|○
PICといっしょに回路図集CD-Rでも買うか。
PCBを裏返してSP202周りの半田付けを目視で確認せよ
足の間で半田がブリッジしてないか?
ICを逆差ししてないか?
その程度の確認なら回路図なんか要らんぞ
169 :
165:03/11/19 21:27 ID:AEFQRPFU
テスターで調べてみると7805から10Vほど出てました。
一度317とつけ間違えて結構無理して外したから、
熱で死んだのかも。
今度代わりのを買ってきて付け替えてみます。
てか、10Vも出てたら、SP202もPICも逝っちゃってるんじゃないか?
171 :
165:03/11/19 22:28 ID:AEFQRPFU
>>170 不思議なことに、これで書けたり読めたりしました。
PICってずいぶん丈夫ですな。(w
まぁ、ICは総取り替えしないとダメだろうな。
PICはVer4のと交換か。
PICでPOWER MOS FETを駆動させるときに、PICのピント、FETのゲートの間に
抵抗って入れたほうが良いのでしょうか?
ネットでいろんな回路や、説明を見たところ、10〜100Ωの抵抗を入れたほうが良いと
書いてあるところや、1Kの抵抗をいれてある回路、抵抗の入ってない回路などが
ありました。どっちでもいい・・・のかなあ?
ところで2SK2232って安すぎませんか?
VDSS:60V VGSS±20V ID:25A IDP:100A PD:35W RDS(ON):36mΩ
共立エレショップで100円です。FETの高いのは16F877くらいに高いのに
一杯作ったんだろうさ。>FET
しかしゲート電圧20[V]じゃロジックでは使いにくいな。
>>172 明確に必要と言えるのはソース接地でかつ複数個のMOS FETを
パラにするときだけ。
それ以外で入れてるとしたら…なんだろう。気休め?
まちがった
×ソース接地
○ソースフォロワ
>174
PIC側のCMOS出力の過渡電流制限…かなあ
>172
寄生振動の防止と、スイッチング速度を抑制するのが大きな目的。
>172
>177 さんのいうとおり
MOSFETの駆動は、甘く見ない方がいいよ、
FMラジヲ聞いていると、猛烈な雑音が出たりしている。
オシロスコープは必須だよ。
波形を見ると、ゲート抵抗によって、出力波形の変化が見える。
遅延と損失の許す範囲で、なるべく大きな抵抗を入れるのが重要。
179 :
165:03/11/21 14:31 ID:bYqrryKl
7805を交換したら普通に読み書きできるようになりました。
PICって丈夫なんですなぁ。
CMOSだからな
181 :
名無しさん@3周年:03/11/21 22:12 ID:lmc2QERn
>>175 なぜソースフォロワだと抵抗が要るんですか?
おしえてくださいまし。
単純に考えてみよう。
ゲートは容量負荷、つまり突入電流は無限大ってことだ。
んで5V50mAくらいに制限したきゃ100Ω1/4Wってことか
184 :
名無しさん@3周年:03/11/21 23:06 ID:jJCAb3XO
>>182 でもそれなら、オープンドレイン(≒ソース接地)でも
言えることではないでしょうか。
ソース接地からあえてソースフォロワに修正した訳が
知りたいですぅ。
秋月のPICライター動作チェックに成功しました。
明日は実験回路を作ってみます。
一気にやってみたい気持ちを抑えてw
PIC16F873 に誤って 12V 掛けたんだけど無事でした。
周辺の温度センサや表示器は壊れたんだけどね。
PICかH8の良し悪しを教えてもらえますか?
オイラの足りない脳で知っている所では、PICはコントロール特化で扱いにくい。
H8はオールラウンダーというところとか・・・
PICはRISCで電気用品に多く使われていて、H8はCISC?でロボコンとかに使われてたりするとか・・・
もう少し、勉強するつもりですが、みなさん教えて!
例えば、周波数や命令の違いなどはどうなのでしょうか?
PICだと20MHzぐらい。命令はRISCの35命令程度。
どっちが、どんなの時に使えるのか知りたいのです。
あと、命令の速さ、プログラムのスピード、同じLEDに点滅させるならH8とPICのどちらが速いのか。
そして使いやすさもです。だいたいの感じで。
>>188 PICを使い始めて数日で、H8は使ったことが無いのですが、
LEDでナイトライダー作るぐらいの回路ならPICが適任。H8には役不足。
自立型の相撲ロボット作るなら、PICでは力不足でH8が適任。
っつー感じではなかろうか。
>>190 ひょっとして同志?
俺も、PICを本読んで自作ライタを制作しようとしてるところです。
まだ、全部部品そろえてないけど。
近ごろ方々で「ハーバードアーキテクチャ」という言葉を目にするんだが、
どこかで取り上げられたのかな?
最新技術であると勘違いしているのが結構いるような感じなんで、
どこぞの雑誌で偉そうに書いているのかと思ったりしたんだが。
>>191 同士かな。
俺はライタは秋月のを使ってます。
今日は秋月のシリアル制御32x16ドットマトリクスLEDを点灯させてみました。
ドットマトリクス相手だと、PICだと微妙に力不足かな。
RAMが足りなくてスクロールできん。
AVRの方が向いているかも。
>>193 どうかな?しかしこの言葉の意味を真っ当に理解している人が
どのくらい居るんだろう?
アドレスバスとデータバスがマルチプレクスされていない事を
ハーバード・アーキテクチャだと言ってる奴が居るくらいだし。
196 :
ネタ心者:03/11/23 09:58 ID:UJAAB2ni
ITRONとかの組み込みOSって、PICやH8・AVRのようなマイクロコンピュータICと思っていいんでしょうか?
あと、BIOSのROMもそんな感じですか?
↑ ずいぶん程度の低いネタだな
199 :
名無しさん@3周年:03/11/23 16:17 ID:zUvSrJts
>>196 そそそ、それでいいんじゃない。違うかも知んないけど。
200 :
名無しさん@3周年:03/11/23 18:14 ID:iCbRCsiG
>>200 サイトのトップから入って探せば概ね解るのでは?
一応サイトに行ってみてざっと見た感じでは、SHのようだったが。
>>196 釣りかも知れないが
OSとハードウェアとしてのマイコンとファームウェア納めるROMとごっちゃにするなよ。
日本語が足りないだけかもしれないが
ちなみに"BIOSのROM"ってのがPCの話なら、これはPCのCPUで動いてる。
確認したければCPU抜いたPCでBIOS画面が出るかどうか試してミロ>
>>195 たぶん、「コードとデータ」というのを「アドレスとデータだろう」と読み違った
んだろうな。
>>196 ひねりが足りないなぁ。
BIOS-ROMに組み込み用のOSを仕込むっていうのはやったことがあるよ。
拡張BIOS-ROM領域にリアルタイムOSを仕込んでおいて、ボード上につけ
ておいたジャンパピンの状態を見てOSモードだったらPCとして起動させな
いで、組込用OSが走る。
メンテとかするときには組み込み用OSじゃ面倒だから、ジャンパ切り替えて
DOSのフロッピー入れてDOSで動くテストプロを立ち上げるとかね。
(CTTY COM1:とかやると、COM1経由でコマンド一式使えるし)
PICのA/Dコンバータの使い方教えてください。
外部からのアナログデータをRA0(A/Dch0)に取り込み、デジタルデータにして出力させたいのですが。
プログラムだと
setup_adc(ADC_CLOCK_DIV_2);
setup_adc_ports(RA0_RA1_RA3_ANALOG);
set_adc_channel(0);
などを使うようですが、プログラムの組み方がわかりません・・・
AD変換された結果のデジタル値はどこを読めばいいのでしょうか?
できれば簡単なプログラムを書いて、教えてくださるとありがたいです。
read_adc() で読めるぞ
206 :
名無しさん@3周年:03/11/24 20:28 ID:VpkvCSM8
CCSコンパイラーの取り説とCDの中にサンプルソースが載っているので
それを見れば一目瞭然だよ。
基本的には、
setup_adc(ADC_CLOCK_DIV_2);
setup_adc_ports(RA0_RA1_RA3_ANALOG); ADCの設定、
set_adc_channel(0); どのchを変換したいかの入力切替え、
a = read_adc(); 変換スタートと変換値の格納。
207 :
名無しさん@3周年:03/11/24 21:50 ID:+NhWdIUd
CTTY COM1からDEBUGで、COM1につないだ機器に対してREMOTEDOSアセンブラすることってできるの?
CTTY COM1:
すれば、DOSコマンドはCOM1につないだターミナルからできる。
(COMポートのボーレート設定などはお忘れなく)
COM1を別用途で使いたいならCOM2へどーぞ
209 :
204:03/11/25 17:07 ID:LeAW1dnj
プログラムは組んだのですが、変換されたデータを、コントロールデスクなどで見たい場合
どのPINを読めばいいのでしょう?
>>200 マイクロマウスはだいたいH8かSH2
まぁH8で十分だけど
211 :
名無しさん@3周年:03/11/26 01:29 ID:Vj/KlgP5
213 :
204:03/11/26 11:06 ID:4g8gklyF
>>213 これって、モジュラーハードウェアとかの専用周辺機器とのやりとりしかできないんでないの?
でもって入力が可能なのは入出力ボードなどADC持ってるものみたいなんだけど・・・
PICを入れる理由がわかんない
Microchip Application Maestroってイイ感じ
古典制御理論のスタンダードPID制御についてお聞きしたいのですが
操作量=Kp×偏差+ki×偏差の累計+Kd×前回偏差との差
と電子工作の実験室に書いてありました。
比例項と微分項については問題ないのですが、
積分項の偏差の累計というのがわかりません。
偏差を累計していくと操作開始から偏差が積み上げられていきます。
やがて偏差が0になった時にも今まで積み上げてきた偏差のせいで
操作量は必ず+になります。やがてマイナスの偏差の累計で
積分項も0になるのですが、その時にはすでに目標値を大きく
超えています。
大学の教授にも意見を求めましたが、有用な解決法は得られませんでした。
コンピュータやマイコンを用いたサンプリング方式のPID制御を
ご存知の方がいらっしゃいましたらご教授の程
よろしくお願いします。
積分時間が無限という事でしょうか?
確かにそのとおりでした。
しかし積分項を過去5回分の偏差の累計とした場合
比例制御の補正(残留偏差カット)の役割のはずの積分成分が
比例項のKp=5のような大きな働きをしてしまうように思えます。
かといってKdを小さくした場合、残留偏差を取り除くには
不十分な量の操作量しか得られない気がします。
積分時間とKdを調整したらいいのでしょうか
偏差があるにもかかわらず、偏差が減らない場合のみ
操作量を増やしてやることができれば良いと思うのですが。
>>216 そのとおりで、積分項を入れたら、必ずオーバーシュートする。
で、そのうち今度はアンダーシュートする。
そして、そのうちピッタリになる。
というように、積分項を入れると応答が振動します。
じゃ、なぜ積分項をわざわざ入れるかというと、比例項だけだと
定常偏差が残るからです。
定常偏差 をキーワードにして調べてみてください。
それでもわかんなかったらまた書いて下さい。
>>218 あ、残留偏差 っていう言葉が書いてあった。ごめん。
で、マイコン制御的にはどうするかというと
「観測された速度が目標速度の±X%以内に入っている時のみ積分項を加える」
とかすると、静定が早くなります。
位相引き込みみたいなものです。
Xは5%だったり50%だったりします。
あと、積分値の初期値を0にしておくのはなく、
プラスの値やマイナスの値を適当に入れておく
っていう手もあります。
で、PICやAVRと何の関係が???
レスありがとうございました。
dcモータをpicを使ってサーボにしようと思い
MVn = MVn-1 + ΔMVn
ΔMVn = Kp(en-en-1) + Ki en + Kd((en-en-1) - (en-1-en-2))
この式を使ったのですが振動が大きく収束する気配もありませんでした。
エクセルに式を入れてみると明らかにおかしな操作量が出ていました。
パラメーター調整でどうにもならなければ、積分項の初期値をマイナスに
しておくテクニックを使ってみたいと思います。
>>224 積分器にアンチワインドアップを入れておけばいいと思うが。
>>225 オーバーシュートは積分器の宿命であって、
飽和によるワインドアップは関係ないと思うが?
>>226 オーバーシュートを防げるなんて言ってないよ。
オマケに入れといたら?って意味。
>>224は「z変換領域での安定判別」をベンキョしろ
230 :
名無しさん@3周年:03/12/07 00:54 ID:ugSMQnv1
PICで、教えてください。
PICに内蔵のブラウンアウトリセット機能は、
一般に言う「リセットIC」の置き換えができるかどうか、ということです。
現在、外付けでリセットICを置いています。このリセットICの機能は、
・減電圧を見て例えば4.2Vで出力をLにし、
・起動時も含めて電圧が上昇後、決まった時間たとえば50mS後に
Hを出力する
という機能をもったリセットICです。ミツミのPST591Dとかです。
データシートを見ると、PICのBROWNOUTも4.2V程度の検出電圧、
72mS+1024clock?程度の保持時間があるようなので
置き換えが出来るようであれば、外付けICが1個減るので嬉しいんです。
何か問題があるでしょうか?
結論からいうと、ブラウンアウトリセット機能は「リセットIC」の置き換えにはならない。
PIC内臓のPOT+ブラウンリセット回路とリセットICを対比させたら、
立ち上がりが遅い電源使用時はりせっとICに軍配が上がりそうだ。
↑にあるように、外付けで簡単なリセット回路を付加すれば
なんとかなるようだけど
234 :
名無しさん@3周年:03/12/07 09:23 ID:eMufTWdI
タケイムセンが引っ越しして 広くなったね
カ○デンの前とは 勝負に出たなあ
そのせいで カ○デンの客も増えたみたい
誤爆?
236 :
230:03/12/09 22:28 ID:1kMMj+sV
>>231 コメントありがとうございます。
はい、電源電圧は5Vなので大丈夫だと思います。
現在もPST591Dは4.2V検出50mSなので、PIC内のBrownOutResetが
使えそうな気がしますね。
>>232 コメントありがとうございます。
どうして置き換えが出来ないのでしょう? よろしければ、
教えて下さいませんか? 電源電圧の上昇下降時間の速度が
問題なのでしょうか?
>>233 コメントありがとうございます。
電源電圧の立ち上がりが遅い場合でも、ブラウンアウト(BOR)機能が
働いて、4VになるまでデバイスをRESETし続け、その後BORを越えて
初めて72mS間のPOR、その後1024clockのOSTが働くので、
問題ないように思うのですが、どうでしょうか?
>>236 立ち上がりがゆるやかな場合、
4Vを超える瞬間に何度もリセットパルスが発生して
正常にスタートできない場合ってのがあるのだよ
データシートには書かれないがな。
238 :
230:03/12/09 23:08 ID:1kMMj+sV
>>237 コメントありがとうございます。
えっ、ブラウンアウトリセットの入力は、
シュミット入力ではないのでしょうか? ちょっとビックリです。
シュミット回路の動きをアナログ的に考えてごらんよ
データシートに書いてあるぞ
241 :
名無しさん@3周年:03/12/10 10:20 ID:sJbv7hsB
230です
BOR入力がシュミットではない理由は
シュミットだと下限電圧が低いので
瞬断しても感じないことがあるからでしょうか
>>241 電源電圧自体の変動をキャッチするんだから、シュミット回路なんか使えない。
リセットICのスレッショルドって、ヒステリシス月じゃない?普通。。。
たしか、AVRのBORは100mV位あったような気がするが。スレッショルドも
電源電圧に応じて選べるし。。。
>>244 AVRにBORなんてあったっけ?megaは知らないが。
AVRのPORにはヒステリシスあるね。でも2313で1.4V/0.6VでBORには使えない
リセット端子については0.85Vcc/0.3Vccのヒステリシスがありそう。
リセットICには小さなヒステリシス(PST600で50mV)あるみたい
PICについてはMCLRはシュミットトリガみたいだが、Vbodについては
ヒステリシスがあるかどうかの記載はないね。
246 :
名無しさん@3周年:03/12/11 01:50 ID:iqtIZmgx
>>242 230です。
そうなんですか。
でも、リセットICにしろPICのBORにしろ、内部で1.2Vとかの基準電圧を作り
電源電圧を分圧したものと基準電圧を比較しているのではないでしょうか? (未確認)
そうすれば、シュミットをかけられそうな気がするんですが、どうでしょう?
>>246 本来のシュミット回路はコンパレータ的機能がないからね。
コンパレータにヒステリシスを与える方法はあるんじゃないかと思うが。
シュミット回路にツェナーの定電圧を食わせて論理を反転させてもいけるかもしれない
248 :
名無しさん@3周年:03/12/11 12:53 ID:0jWJ0Z45
>>246 「電圧の降下」を検出するものであって、
「規定の電圧に上昇」したことを検出するものではない。
よってシュミットつけるのはナンセンス
>>246 こちらPST600の等価回路がある。その通りの回路のようですね。
http://www.madlabo.com/mad/gid/pdf/pst600.pdf まあBORなどは電圧上昇感知後一定時間はリセットかけつづけるわけで、
この時間の間に閾値付近より充分上昇してくれることを期待しているんでしょう。
PST600で言えば5V電源に対して4.5Vとか4.2Vとかなり近いところに閾値を設定し、
しかも製品のバラツキがあるわけで(PST600Cで±0.2V)、ここに大きなヒステリシス
なんかつけたら電圧下降・電圧復帰を感知できなくなるおそれがあると思う。
>>249 の図でPFB掛けてるのはOP1のOPampの+入力のみでしょ。
(ここが、ヒステリシスループの安定性に関わる)
だから、OP1の出力後のTr2個の特性とヒステリシスループの周波数や電圧で変わってくるのでは?
>>250 左側のopampの中にヒステリシスがついているというマークがあります。(シュミットトリガについてるのと同じマーク)
__
//
 ̄~
↑こんなの。
なるほど、立ち上がりと立下りのスレッシホールド違うヒステリシスを入力側にもつけて、
結局ダブルにすると、スレッシホールドがぶつかって、リンギングの可能性があるってことか。
>>250 右のPFBは出力Trのベース電流節約のため。
ヒステリシスループは左のコンパレータで完結している。
255 :
名無しさん@3周年:03/12/15 15:58 ID:tUWAvnRT
PICのA/Dコンバータで負電圧を読み取るにはどうしたらいいのでしょうか?
256 :
名無しさん@3周年:03/12/15 16:03 ID:WpBaW0pZ
>>255 今月号のトラ技114ページを見るよろし
259 :
名無しさん@3周年:03/12/18 07:29 ID:9A2QlVTP
完全なるAVR素人です。
電子回路作ったことないです。
アセンブラ?はぁ?何それ?
という漏れがあと一ヶ月でどうにか
ひとつ簡単な作品を作れるようになるには
どこから勉強をすればいいんでしょうか?
(´Д`;)、 オナガイシマス. コノトオリデス
ノノZ乙
260 :
名無しさん@3周年:03/12/18 07:36 ID:Zp4kMxpl
>>259 まず、人に聞く前にWEBで検索するか、本屋へ行くという事を覚える。
>>260 調べるぞ!!読むぞ!!
>>261 2、3番目の奴がすごく参考になりますた。
Cで頑張って書いてみようと思います。
あと超基礎的な質問で申し訳ないんですが、
割り込みハンドラ内で変数とか読み書きする時って、
割り込み前に使っていたレジスタの値を上書きすることはないんですよね?
割り込みハンドラ専用のレジスタとかあるんですか?
>>262 AVRは必死に勉強しなくても使えるくらい中身が素直。
>>263 だな。PUSH/POPあるし。辺にRAMアドレスが分断してないし
ページ操作要らないし、
非破壊比較命令あるあし。
なんでPICより先にAVRが出てこなかったか、非常に悔やまれる。
>>264 ま、AVRが無くなるわけで無しAVRを知ってる人が少しだけ得をするって感じで良いんじゃないかな。
代理店から収束の噂は、一分の古い品種が保守になるかもって話みたいです。
収束話の真相はこんなとこでしょう。多分
>>259 逃げることを勧める
モノ作りの感動を知らない人間にはムリ
俺は正直電子工作全くやったこと無くてPICを触れるようになるまで半年かかった_| ̄|○
1ヶ月でだとマイコン触れるところまでいけるかなぁ
>>267 うん、正直ロジックICからいじった方がいいかもしれない。
PCと違って結果を得るのにも簡単な電子工作の技術と論理回路の知識いるから。
プログラム言語だけではだめだし。
>>262 >割り込みハンドラ専用のレジスタとかあるんですか?
そんなのはありません。割り込み内外で使用するレジスタ・SRAMは共通です。
アセンブラなら、当然全部自分で使用レジスタ・SRAM etc.を管理しなければならない。
C言語なら変数のスコープを意識すれば管理はC言語がやってくれる。かなり楽になる。
ただし乏しいメモリなので、スタックとグローバル変数領域の衝突には注意。
メモリがたくさんあるPC上のプログラミングとは違う悩みがある。
269 :
名無しさん@3周年:03/12/18 14:12 ID:LRxpYAfc
>>230 動作を始めた後、電源が落ちた際の復帰手段が、最初のリセットの変わりになるわけないだろが。
>>269 パワーオンリセットとブラウンアウトリセットって、リセットかかる電圧閾値とリセット時間が違うくらいで
根本的には同じ物だと思うが。
>>273 あ、すまん、パワーオンリセットは電源電圧上昇でリセット掛けるが、ブラウンアウトリセットにはそれはない。
でもまあBODのリセット電圧はパワーオンリセット電圧よりだいぶ高いところにあるから、
同じことになるとは思うが。
>>265 AVRを使ったボードを売ってるとこのHPには"8535はなくなるのでmega8535かmega163使って"とあった。
megaとTinyだけになるのかな。手頃な2313だけは残って欲しいが。
>>275 価格交渉の突破口にしてるんだけど。(w
オマエんとこの都合でこっちの設計が変わると。
オルゴールを作るならAVRの方が高性能でいいと思うな。
2313でも8重和音くらいは出せるし。
PWMと1命令100nsの性能を使って。
20KHzでの再生なら500命令程実行できるからね
tiny26はもっとおすすめ
>>281 実際に組んだことはないので妄想だが、波形計算して必要ch数だけ
足し算するだけじゃないの? 出力はPWMでもなんでもいい。
あるいは8本のout portに各chの矩形波出して外部回路でアナログ
加算してもよさげ。
メモリが足りるかな? という心配はあるけど。
284 :
281:03/12/21 02:55 ID:uD6lpDLg
難しく考えすぎてるのかな。
8重和音はかなりつらいんぢゃないかと
おもった。
>>280 素朴に便利そうだと思うんでやり方を教えて欲しい。
ch数分だけレジスタを用意して加算ループを組む
最上位ビットを出力すれば和音になってる
287 :
286:03/12/21 03:59 ID:kGZIyeuR
AVRなら200KHzくらいのクロックでも4和音がそれなりに聞こえる
289 :
280:03/12/21 15:27 ID:lCGGg+k2
>>285 timer1(16bit)を適当な周期で走らせて(10MHzでPS=1/64くらいでいいかな)、
8和音に対応して変数を8つ用意。
始点で各変数に現在のTimer値+周期/2を入れる
その後ループで、
現在のTimer値−各変数を計算、
値が2以下なら(通り過ぎてしまう可能性も考えて一致ではなくこれで)
該当するポートを反転する
繰り返し
ハード的には各ポートからオペアンプで作った加算回路につなげばいいんじゃなかろうか。
最後に出力前に適当なローパスフィルタにつないで出力。
音量調整なんかは無理ですけど。4和音にして1周波数に2ポートわりつけ、
各ポートにつなぐ抵抗を変えて重み付けすれば3段階の音量調整はできそう。
ただ、単純にプログラムした音を出すだけならこれでできるけど、
オルゴールみたいに指定した音を指定した時間順序よく出すなんていうと
結構大変な予感。
291 :
名無しさん@3周年:03/12/21 16:58 ID:1w/duE1R
波形が矩形はは呑めるが、エンベロープが矩形はは拒絶する!
そんなのオルゴールとは呼べない
>>291 だねえ。まあBEEP音よりはましなオルゴールのようなもの、ということで。
せめてFM音源かなあ。
3段階じゃエンベロープは当然無理でしょう。音の途中で音量変更は止めた方がよさげ。
295 :
名無しさん@3周年:03/12/22 00:15 ID:ymhim6Ko
>>290 へー面白い事が出来るんだな。感心したよ。
297 :
名無しさん@3周年:03/12/22 01:18 ID:iSWGHhn2
昔のアナログシンセサイザーみたいな感じで
VCOとVCF、VCAをSIN波発生ICを音源使うってことでPICで
できないかな?
>>297 それならFPGAの方が楽に出来そうな気がする。
>>290 自己レス
ループ内に 変数に現在のTimer値+周期/2を入れる が抜けてる〜
通り過ぎたかどうかの判定については、こっちがいいかな
最も低い音の周期がタイマ1周にかかる時間より短いならOK
ループで、
各変数について
この音が現在OFFなら、skip
tmp=(変数−現在のTimer値)
tmpが負でないなら(最上位ビットチェックで判定できる。16bit比較より楽)
該当するポートを反転する
変数に現在のTimer値+周期/2を入れる
loop 各変数について
ループ繰り返し
単純に変数とTimerのcompareではおかしくなる場面があるので注意。
音のON/OFFはタイマオーバーフロー割り込みでも使えばいいかなあ。
PICやAVRじゃないけど、Cypressの8ビットマイコンのM8コアと乗算機
が入ったやつで10音ポリフォニックピアノのデモやってた。
鍵盤つないで、エンベロープなんかもちゃんとやっていたし、なかなか
ピアノな音になってたよ。
P/ECEも4音ポリ出してたっけ?
302 :
名無しさん@3周年:03/12/23 14:40 ID:WeIPNEKU
CCSのCコンパイラーで悩んでいます。ご存じの方がみえましたら、教えて下さい。
CCSのVer3.174で、optionレジスタに値を書き込む命令を書いてコンパイルしたとき、
生成されたHEXコードが違うんです。しかし、両者とも結果として動作は同じに
なるのです。どうなっているんでしょ?
コード1
#byte option_reg = 0x81
option = 0xD7;
生成されるHEXコード1
D730 8100
コード2
#asm
movlw D7
option
#endasm
生成されるHEXコード2
D730 6200
いずれもD730(MOVLW 30)までは一緒なんですが、次のコードが
1では、8100(MOVWF 0x81)となり納得出来るんですが、
2では、6200(インストラクション表に無い)となります。
CLRWDTのインストラクションが 6400であることから、
内部のハードウェアにアクセスしているように見えます。
0x62番地はoptionレジスタ(0x81)に配線がつながって
いるのでしょうか? よくわかりません。
同様にTRISA命令も、0x05ではなく0x65にアドレスされます。
これも同じ現象でしょうか。
変な質問ですみません。宜しくお願いします。(あっ、地震だ....)
303 :
名無しさん@3周年:03/12/23 14:42 ID:WeIPNEKU
あっ、間違えました。
コード1
option = 0xD7 → option_reg = 0xD7 です。
304 :
名無しさん@3周年:03/12/23 15:46 ID:JXwCSw2b
>>302-303 option regのアドレスはちょっとわからないけど、
多分それは、バンク状態がコンパイラでそう決められたのかと。
statusレジスターのRP1,RP0調べて現在のバンクを調べて、アクセスする
アドレスがバンク外ならバンクをセットしてやったり、元に戻したりする必要が
あると思う。
バンクが変化しないところでasm使わないと思わぬトラブルが。特にレジスタ入出力は
アセンブラ神経使う。とりあえずそれで調べて。
305 :
名無しさん@3周年:03/12/23 16:54 ID:JXwCSw2b
>>306 ツール自体は無料でダウンロードできる。
ライターはUSB経由のライターを自作したよん。
(書き込み方はアプリケーションノートで公開されている)
>>302 0x062に対応するニーモニックがoption、それだけのことです。
16F84あたりのデータシートには載っていたけど最近は削除されてる。
ってゆうかTRISとoptionは16C5x時代の遺物だから使うな!とmicrochipが
言ってるんだから大人しく
#asm
movlw 0xD7
movwf option_reg
#endasm
とすれば良いのでは?
>>307 では、早速調査して試してみます。
アリガd
310 :
302:03/12/24 03:07 ID:sOkUUBkk
>>304 ありがとうございます。
確かにバンク切り替えには注意を要しますが、
CCSコンパイラが、それはちゃんとやってくれているようで、
バンク0内では バンクを1に切り替えてから movwf 0x01とか
やってくれています。
どちらのやり方でもできてしまうのが不思議なんです。
はてー???
311 :
302:03/12/24 03:19 ID:sOkUUBkk
>>308 コメントありがとうございます。
そうですね、trisとoption命令は、16C5X時代の名残なことは
了解しています。また、microchipが「使わないでね」と
アナウンスしているのも知っています。
が、CCSの最新バージョンのコンパイル結果に2種類生成されて
そのどちらでも正しく動いてしまうのが不思議なんです。
CCSのCの関数には、set_tris_a(0x00)とかがあり、
普通多くの場合は、この関数を使ってI/Oの方向を決めているのですが
(購入者の多くはそうしています)その命令のコンパイル結果が
アセンブラコードでtrisになっているのがわからないのです。
(CCSに聞けばよいことかも)
今ではもう使えない命令であるならば、バンク切り替え後に、
movwfでTRISレジスタに書き込んで、再びバンクを戻すようなコードを
吐けば良いと思うのですが、trisを使っています。
それでちゃんとPICも動作してしまうんです。
こうなると、PICの内部でtrisレジスタと0x64番地とがつながっている?
と考えてしまうのですが。どうでしょうか?
PICのアドレス表の0x64がtrisになってたら、そのレジスタそのものがトライステートバッファになってる入出力ポート。
>>312に追加。
入出力方向はPICアセンブラならTrisコマンドで決めるが、
0か1しかない(入力か出力)、すなはち、Z=0すなはち外部配線と切断されてる状態がなく、常に外部と晒されているってことになる。
この辺を充分考えて、外部からの入力とPIC内部でのtrisレジスタへの入力がぶつからないように、入出力方向を頻繁に切り替えたり、ハード面のIFや、同期を採らなければならない。
314 :
名無しさん@3周年:03/12/25 01:42 ID:D4aM9Gj8
>>312,313
なるほど、わかったような気がします。
ありがとうございました。
315 :
名無しさん@3周年:03/12/25 14:16 ID:LeAW1dnj
PICのPWM1とPWM2から同時に違う周期のパルスを出力させることってできないのでしょうか?
とりあえず、
while(1)
{
set_pwm1_duty(0x3FF);
delay_ma(500);
set_pwm2_duty(0x200);
delay_ms(500);
}
でやってみたところ、PWM1のパルスしか確認できませんでした。
316 :
名無しさん@3周年:03/12/25 14:26 ID:T6nN5ARz
>>315 googleでset_pwm1_dutyで検索してみ。
318 :
名無しさん@3周年:03/12/29 23:27 ID:IKGgXp9t
PIC16F84Aなんですけど
参考書によると
水晶発振子10MHz使っているときの
命令サイクルタイムがT=4/fで400nsになるのですが
4/fの4はどこからでてきているかわかりますか?
普通は1/fじゃないのですか?
>>318 16F84Aは1命令で4クロック必要だから
1命令で(1/f)*4=4/fってことじゃないかな?
320 :
318:03/12/30 00:42 ID:7k4iNQgh
321 :
名無しさん@3周年:04/01/03 02:36 ID:DTPRa9eV
たのしくできるPICロボット工作
212p 21cm(A5)
東京電機大学出版局 (2003-10-30出版)
の本をお持ちの方いっらしゃいませんか?
お聞きしたいことがあるのですが。
322 :
名無しさん@3周年:04/01/03 02:50 ID:B6DoN4jX
後関さんに聞いたら?
323 :
名無しさん@3周年:04/01/03 04:00 ID:DTPRa9eV
>>322 メールで聞いてもちゃんと教えてくださるのでしょうか?
>>323 聞き方が悪いと返事もくれないでしょう。
質問にあたって、失礼のないようにきちんと書くこと。
折れも電子工作の端くれページを公開しているけど、実になってない質問メールが多い。
・自分を名乗らない
・いきなり友達口調
・お願いに始まりお願いに終わる
・内容がまったく理解できない(折れの頭が悪すぎるのか)
少なくとも要点がはっきりしていて失礼がないメールならこちらも出来る限り丁寧に
答えるように心がけているが。
でも、本を買わないで本の内容に関わる質問(?)をしても
失礼にはならないのだろうか・・・
本や雑誌に関する質問はまず出版社経由というのが基本。
327 :
323:04/01/04 01:07 ID:AevwIvHh
後関さんは著者じゃないとのでまずいと
思います。青木さんとおっしゃる方なのですが
メールアドレスがわからないため、
是非もっていらっしゃる方いましたら
レスください。
恐らく僕の理解不足だとは思うのですが。
よろしくお願いします。
>324
胴囲、胴囲
厨房には直接指摘せずに大人の解答で流すようにしている
329 :
323:04/01/04 09:09 ID:AevwIvHh
恐らくレスポンスはつかないと考えられるので
少々長くなりますが、答えていただければ幸いです。
タイマサブルーチンのプログラムで
0.4mS ────────────
TIM4M MOVLW D'249' ; ループカウント249回
MOVWF CNT1 ; 1+1=2
TIMLP1 NOP ; 何もしない
DECFSZ CNT1,F ; CNT1←CNT1−1 ゼロで次をスキップ
GOTO TIMLP1 ; (1+1+2)×249−1=995
RETURN ; 2+995+2=999 999×0.4μS≒0.4mS
; 100mS ────────────
TIM100 MOVLW D'249' ; ループカウント249回
MOVWF CNT2 ; 1+1=2
TIMLP2 CALL TIM4M ; (2+1+2)×249−1=1244
DECFSZ CNT2,F ; 999×249=248751
GOTO TIMLP2 ; 2+248751+1244+2≒250000
RETURN ; 250000×0.4μS=100mS
; 0.5S─────────────
TIM05S MOVLW D'5' ; ループカウント5回
MOVWF CNT3 ; 1+1=2
TIMLP3 CALL TIM100 ; (2+1+2)×5−1=24
DECFSZ CNT3,F ; 250000×5=1250000
GOTO TIMLP3 ; 2+24+1250000=1250026
RETURN ; 1250026×0.4μS≒0.5S
330 :
323:04/01/04 09:10 ID:AevwIvHh
続き
疑問部
2+995+2=999 999×0.4μS≒0.4mSの2+2の部分はRETURNと
MOVLW D'249'
MOVWF CNT1
の部分を言っている要するに(1+1+2)なのは想像できるのですが
(2+1+2)×249−1=1244や(2+1+2)×5−1=24の2+1+2は
どこの部分を言っているのかよくわかりません。前者はnopがあるのに
対して後者はないのに同じ2+1+2なのです。何故でしょうか?
それと最後の2+24+1250000=1250026は+2をし忘れてる気がするのですが
どうでしょうか?単にRETURN部分のサイクルを抜いているだけなのでしょうか?
読みにくくて申し訳ないです。
>>329 実際にCPUの動きを追いながらクロック数を勘定するか、
あるいは実測してみれば良いだけのこと。
それで正しいなら本にミスがあったというだけのこと。
わざわざメールして聞くようなことじゃない。
0.4mS ────────────
TIM4M MOVLW D'249'・・・・・・・・・・・・・・1
MOVWF CNT1 ; ・・・・・・・・・・・・・・・・・・1
TIMLP1 NOP ;・・・・・・・・・・・・・・・・・・・・・1
DECFSZ CNT1,F ・・・・・・・・・・・・・・・・・・1(2)
GOTO TIMLP1 ・・・・・・・・・・・・・・・・・・・2
RETURN ・・・・・・・・・・・・・・・・・・・・・・・・2
1+1+((1+1+2)×248+(1+2))+2=999
; 100mS ────────────
TIM100 MOVLW D'249'・・・・・・・・・・・・・1
MOVWF CNT2・・・・・・・・・・・・・・・・・・・・1
TIMLP2 CALL TIM4M・・・・・・・・・・・・・・2
DECFSZ CNT2,F ・・・・・・・・・・・・・・・・・1(2)
GOTO TIMLP2 ・・・・・・・・・・・・・・・・・・・2
RETURN ・・・・・・・・・・・・・・・・・・・・・・・・2
1+1+((2+1+2)×248+(2+2)+999×249)+2=249999
; 0.5S─────────────
TIM05S MOVLW D'5'・・・・・・・・・・・・・・1
MOVWF CNT3 ・・・・・・・・・・・・・・・・・・1
TIMLP3 CALL TIM100・・・・・・・・・・・・・2
DECFSZ CNT3,F ・・・・・・・・・・・・・・・・1(2)
GOTO TIMLP3 ・・・・・・・・・・・・・・・・・・2
RETURN ・・・・・・・・・・・・・・・・・・・・・・・2
1+1+((2+1+2)×4+(2+2)+249999×5)+2=1250023
333 :
名無しさん@3周年:04/01/04 14:11 ID:nepwUjHn
>>311 遅レスだが
PICの入出力ポートは例えばPORTAなら次のようになっている。
TRISAの1bit目を0
↓
PORTA_____|\_____
の1bit目| |/ |
| |
|__/|___|
\|
↑
TRISAの1ビット目を1
すなはち、TRISAレジスタはPORTAの入出力方向を決めてるレジスタ。
PORTAの8bitに対して、それぞれのTRISAの8bitが対応していて、図を見て分かるように、TRISAのbitで0を立てればPORTAが出力に、1を立てれば入力になる。
334 :
322:04/01/04 15:26 ID:lFGw1faN
|
_|\_
|/
の様に、脇からの0/1入力で、通か遮断かを決めるバッファをトライステートバッファ(TriState)と呼ぶ。
そういや、トライステートってどっかの商標になってなかったっけかな。
NSだっけ?
337 :
DQN ◆POoODQNNNQ :04/01/07 20:59 ID:e4DolRcl
すみません、非常に単純な事なんですが、調べられませんでした_| ̄|○
どなたかお教え頂けると嬉しいです。
12V の電源を 15V くらいにしたいのですが、そういう部品てなんて呼ぶのでしょうか?(昇圧?)
そして簡単に入手できるものなのでしょうか?
出力の電流としては 5A くらいあると安心です。
よろしくお願い致します。
>>337 出力5Aは無かったと思うが、近いところなら千石に売っているステップ
アップのスイッチングレギュレータでできる。
回路はデータシートのリファレンスでいいだろ。
340 :
DQN ◆POoODQNNNQ :04/01/07 22:06 ID:e4DolRcl
お二人様、ありがとうございます。
今からもう一度、調べてみます。
お世話になりますです・・・・。
>>340 12V DC → 車のシガーソケット用インバーター → 15V ACアダプタ(スイッチング電源)
342 :
名無しさん@3周年:04/01/19 06:35 ID:U/1PA5yR
超素人な質問ですみません。
テンプレの中のサイトのGCCで書いた割り込みのコード↓
http://ww2.tiki.ne.jp/~maro/AVR/programing/timer/inttimer.c これをコンパイルしてAVRStudioのシミュレータで動かしてたんですが、
どうも動作がおかしいです。
PortInit()という関数が呼ばれて、RETした後のProgram Counterが0になってます。
で、開始してPortInit呼んでまた最初から、というループにはまってます。
で、スタックを見てみよう、と思ったんですが、メモリは全てFFになってる状態です。
何かコンパイルの仕方とか間違えてますでしょうか?
343 :
342:04/01/19 06:41 ID:U/1PA5yR
たぶん解決したっぽい。
-minit-stackでスタックアドレスを0xD0にしてみたらうまく動いた。
指定しなしのデフォルトは0xffだったからだめだったってことでOKなのかなぁ?
344 :
342:04/01/19 07:31 ID:U/1PA5yR
シミュレータのSRAMのアドレスって0x60-0xDFになってるんだけど、
avr-gccが吐き出してるコードだと0x00からロード・ストアしようとしてます。
どっちが正しいんですか?
datasheet嫁。
>>344 ソースに対してgccのバージョンが新しすぎて互換性とれてないとか。
使っているgccのバージョンなんですか?
io2313.hを直接指定するのは変だと思うし(最近のはMakefileで指定だよね)、
ディレクトリも<avr/io2313.h>に変わっているはず。
io2313.hさえ正しく読み込まれていればスタックはきちんとするはず。
/* Constants */
#define RAMEND 0xDF
#define XRAMEND 0xDF
↑これで決まる
347 :
342:04/01/21 02:12 ID:rvSaFzgr
>>346 3.3.1みたいです。
io〜とかはavr/interrupt.hに書き換えてコンパイルとしてました。
#アドレスはおかしかったですが。
>>342のコードを元に割り込みハンドラを動かそうとしてるんですが、
何故かうまくいきません。
#include <avr/io.h>
#include <avr/interrupt.h>
unsigned char global = 0;
int main(void){
outp(0,TCNT0); /* clear CNT0 */
outp(5,TCCR0); /* set prescaler CK/1024 */
outp(inp(TIMSK)|BV(TOIE0),TIMSK); /* enable TMR0 interrupt */
sei();
while(1){
}
}
SIGNAL(SIG_OVERFLOW0){
*((char *)0x80)+=1;
}
ってな感じで、0x80のアドレスを監視してるんですが、ずっと0のままです。
タイマーが0になるとPCが0x0007になります。
0x0007は別に特に何かあるわけでもなく、0x0007にnopがくるようにしても
0x0007が実行されます。
どうやったら割り込みハンドラが実行されるようになるんでしょうか?
348 :
346:04/01/21 14:53 ID:gbUNd6Yr
>>347 うちも3.3.1(winavrのSep/2003版)だけど、一部手直しでavrstudio 4.08であっさり動いたよ。
ちゃんと割り込み内にブレークポイント設定すればそこに飛びます。
makefileが間違ってない?
手直し部:
=====inttimer.c======
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
以下同じ・・・
====makefile============
PRG = inttimer
OBJ = inttimer.o
MCU_TARGET = at90s2313
以下は同じ・・・
ちなみに、PCが0x0007になるのは・・・データシートを読みましょう。
ところで、だれか
LがついてないTiny26を通信販売しているところ知らない?
>>349 何で?
アマチュアレベルの工作だったらL付きのを16MHzで駆動してもかまわんと思うけど。
>>350 へぇ〜、26Lでも16M可能なんですか。
既に手元にあるのでやってみよう。
10Mでは動かすつもりでしたが(w
>>351 私もあとでここみつけました。ありがトン
5000円未満で送料手数料3000円、
5000円以上で送料2000円ですか。
他にないものをうまく買うなら悪くないですね。
>>352 分かってると思うが自己責任で。
データシートみると『3Vで12MHz、5Vで20MHzまで動くけど保証しない』みたいな書き方だな。
26L,26,どちらが選別品なのかは知らんが。
>>353 >分かってると思うが自己責任で。
らじゃ。
>データシートみると
データシートのクロックー消費電力グラフのことですね。
データシートではL付きとLなしで区別して書いていないですね。
355 :
名無しさん@3周年:04/01/24 21:17 ID:svfdOwRy
おおおおおおおおおおおおおおおおっ!!
PICスレって、機械・工学板だったのか。
356 :
名無しさん@3周年:04/01/25 22:32 ID:+3IHQrSM
358 :
名無しさん@3周年:04/02/03 19:39 ID:P5MlXyE4
359 :
PIC始めました:04/02/08 02:17 ID:xteijC1C
皆様教えてください。
本業はPCのプログラマです、昔は8086のアセンブラやC言語やったことあります。
ハード系は真空管アンプ程度の知識と、PCのRS232Cの制御線RS・CSを使い赤外線リモコンの解析・学習・送信などして遊んだぐらいです。
で、PICなんですが、数冊本を読み、秋月のキットで遊び一応入り口にいますが
最初に感じた疑問がいまだに解けず、NETで調べてもあまりにも基本的な疑問なので載っていないようです。疑問というのは
1.PIC入門書には、
「PICはプログラムを何度も書き込めるタイプと一回だけのが有る」とあって、次のページには
「PICの種類・ベースラインシリーズ・ミドルレンジシリーズ・・・」といろいろなPIC型番と機能概要が載っているのだが
いったい複数回書込みOKなのと、1回だけなのはどうやって見分けるのでしょうか?、ついでに一回書込みのは、プログラムにバグがあったら使い捨てということですか?、プロテクトもできるならば一回書込みのPICの存在理由は何?
2.IOピンの使い方で
入力ピン、例えばSW入力の時、SWがONで0、OFFで1
出力ピン、LED点灯の時、0で点灯、1で消灯
なぜわざわざプログラムの記述性が悪く逆論理にしているのでしょうか?、ノイズ対策でピンがフロートにならないようにという意味はわかるのですが、正論理にしてもちゃんと動作しました。
3.SW入力で
チャタリング対応の説明ですが、単にコンデンサの放電時間を利用すれば問題なしと思い、作ってみたらOKでした。
なぜわざわざソフト側に対応させるのでしょうか?
そんなこと気にしなくてどんどん進めば、と言われそうですが、私の頭の「その件は置いといて」のスタック段数が少ないものでオーバフローします。
なお英語はわかりませんし、田舎なのでPICの師匠もいません。よろしくお願いします。
>>359 全部、PICと関係ないよ
1.ROMの見分け方と一緒。
2.3.電子工作のサイトを見るべし。
田舎でも都会でもネット上に隔たりは無い。
便利な時代だ。
>>359 1.見分け方はmicrochipのデータシートまたはホームページにある一覧表などで
一度ほぼバグのないプログラムができたら書き直す必要はないわけで、
同じ物をたくさん作るなら1回だけ書き込み可でも充分。そっちのほうが安いなら
そっちを選ぶ意味はある
2.LEDに関してはポートの仕様をデータシートで見てみましょう。多くのマイコンやICのポートで
シンク(外部電源→負荷→ポートでスイッチング→マイコン内部のGND)の方が
ソース(マイコン内部電源→ポートでスイッチング→負荷→外部のGND)より
多くの電流を流せることが多いため慣例的にそうなっていることが多いようです。
SWについてはわかんない。空きピンをGNDじゃなくVccにプルアップする理由と共通でしょうけど
3.ソフトウェアで解決できるならその分部品を減らせるから、でしょうか・・・
その問題がないならRCで解決してもいいと思いますよ。
おまけ。英語はがんばった方がいいです。得られる情報が段違いです。
>>361 オープンコレクタでトランジスタを使う場合負論理になるので、
その置き換えでそのままになったのかもしれない
>>359 PICの場合シンク電流と同じくらいソース電流がとれるみたいなので、
LEDの向きを逆にして1で点灯でも大丈夫でしょう。単に使い方の問題かと。
364 :
PIC始めました:04/02/08 17:57 ID:xteijC1C
レスありがとうございます。
>>360 PC屋にはROMとRAMしか解りません。
フラッシュROM、EPROM、スタティクRAMと来られては、いったい何種類あるの、で、どれが電源OFFでも維持してるの、書込みはプログラムでてきるものと、専用のライタが必要なのと有りそうだけど
訳わからんというところです、良いサイトがあったら教えてくださいね。
>>361 丁寧なレスありがとうございます。
1回書込みの存在理由は価格でしたか、了解しました。
出力も入力も慣例のようですね。
私はPCのプログラム屋ですが、たまに講習会などするととんでもない勘違いにブチ当たりますし、こちらが用意したテキストははっきり言って役に立ちません。
つくづく思うのは「プロが素人の引っかかりそうなところを先回りして解説するのは無理」だということです。
なぜならプロ自身がいわゆる常識を意識していないので、暗黙の了解事項を飛ばして解説しようとしても、まったく受け入れられません。
例)Windowsの講習会で、起動するまで待ってくださいというと「なぜこの機械はどうぞお使いください、というサインが出ないのか、いつまで待てばよいのか解らん」と言われ
ゲッとなったものです。確かにそんな事はどの本にもどのサイトにも書いてありません。
私が今PICの入り口でデジタルIC界の常識に悪戦苦闘しているところです。
365 :
名無しさん@3周年:04/02/08 23:38 ID:lP28BE1h
オレはプルダウンプルアップなんかで悩まない。
近いほうにつなぐ
367 :
名無しさん@3周年:04/02/17 09:38 ID:ElpFuna2
>>359 >>いったい複数回書込みOKなのと、1回だけなのはどうやって見分けるのでしょうか?、
品番の PICXXCXXX の部分 Cならば 一回だけ(ワンタイム)
Fなら電気的消去型で何回もいける(限度はあるが)
Cでも 最後にJWの文字があれば 紫外線消去が出来て 何回も出来ます。
369 :
名無しさん@3周年:04/02/22 23:22 ID:jqhJZg4l
>>368 16C84 ???
そりゃ〜 16F84じゃないのかな??
>>369 昔々に16C84というワンタイムじゃなくてフラッシュのがあったんだよ。
16C84→16F84→16F84A
371 :
名無しさん@3周年:04/02/23 14:17 ID:jNlrIbE3
>>370 ふにゃ〜・・・
私の知識不足でしたぁ
もっと歴史を含めて勉強致します。
今でもPIC入門と言えば、チップ単体+ライターが王道なんだろうけど、
自分もそうだったんだが、MPLAB-ICD互換品(秋月の877ICEというヤツ)を
使ってみたら結構使えたんで、初心者〜中級者にはオススメかも。
昔、ソース修正しては書き換えて、LED表示一個(空きピンないので)でデバッグ
してかなり苦労したんで、こういうのが正直もっと早く欲しかった。
まぁ最初に苦労していろいろと悟るわけだが。
ピンとメモリが少し減るとか制約もあるけど、高価なICEと同じ事ができるので
使わない手はないと思う。ブレークしてポートやらレジスタ値が読めるのは
盲目デバッグとは雲泥の差。\9kくらいしたので秋月のキットとしては高価な
ほうになるけど、F87xならコレでそのまま焼けるのでこんなもんかなと。
サポートしてるVer.のMPLABから普通にICEとして動く。
最近のMPLABではICD2(後継機)のみサポートでちと残念。
SRAMベースのホンモノのICEに比べるとダウンロード時間はかなりかかるけど、
ICEPIC(昔の公式ICE)では不可の高クロック(10MHz以上)で使えるので( ・∀・)イイ!
去年やった仕事(16F877使用)では、ボードにコレ用の専用コネクタつけておいたので
現場の調整/デバッグ作業ではICEPICより活躍。
あまり使ってるという話を聞いたことないので書いてみますた。
373 :
名無しさん@3周年:04/03/11 16:40 ID:CzQsELqx
>>373 それのことでつ。
今、16F84の変わりに差して使うためのソケットアダプター工作してまつ。
とりあえずICEで開発して、最後にF84で動かして楽する予定。
>>370 そうそう、16C84なつかしい。
Configビットのアサインが一部違うのと、レジスタファイルの容量がF84より少なかった気がする。
他の部分は変わらない気がするけど。
>>372 遅くてたまらんので、1回使ってヤメました。
ステップ動作はやめたほうがいい。
ブレークポイント決めて、そこまで流す、、っていう場合はいいんだけど、
問題の切り分けになると、結局ステップになって、トタンにストレスがー
>>372 ハッキリ言うと、16F87Xなんてハイスペックなチップ趣味では使わない。
16F84用が出たら欲しいけど…
378 :
名無しさん@3周年:04/04/14 04:01 ID:FH/gJnrv
初心者です。おそらくものすごく基本的な思い違いかと思いますが、ご教示
いただければありがたいです。勉強を始めたばかりでまだLEDの発光させようと
言うレベルです。
MPLABver6.50 でアセンブルしたところ、エラーの山が。hexファイルはできず、
listファイルに
Warning[215]: Processor superseded by command line. Verify processor
symbol.
00006 LIST P=PIC16F84A
と表示されました。見ると、デバイス一覧には確かに16F84Aは見あたらないで
す。しかし16F84Aを認識しないことはあるのでしょうか。
MPASMで直接アセンブルすると、上のことはミスしないようなのですが、
00034 init bsf STATUS,RP0 ;Change to Bank1
00035 movlw b'00000100'
Message[302]: Register in operand not in bank 0. Ensure that bank bits are
correct.
00036 movwf TRISA
Message[302]: Register in operand not in bank 0. Ensure that bank bits are
correct.
バンク1に変わらないって事でしょうか。
MPASMの5.11だど、ちゃんとHEXファイルができていて、一応LEDは思うように
光ってくれるのですが。一体、何故上のようなメッセージが出るのか教えてい
ただけないでしょうか。長文すみませんでした。
ちゃんとエラー内容読めよ…。
要するに「バンクが0じゃないけどそれでいいのか?」と聞いてるだけ。
うっとしかったら設定で消せ。
というか、エラーが意外はあんまり真に受けないほうがいい。
なんか日本語変だったw
「エラー意外は」ね。
381 :
378:04/04/14 20:14 ID:FH/gJnrv
>>379,380 様
ありがとうございます。Message は無視して良いのですね。
Ensureが確実にする。なので、間違いなのかと思っていました。
もしよろしかったら、上の
Processor superseded by command line. Verify processor symbol.
プロセッサーは廃止された。シンボルを確かめろ。では何故hexファ
イルが出来ないのか教えていただけないでしょうか。
厨房ではないのですが、厨房レベルの英語レベルです。
エラーさえでてなければ、作成される筈だけど…
エラーを見落として無いか?
アセンブルした時にでるウィンドウの所のエラーの数は0かちゃんと確かめた?
(確かめたとは思うけど。)
>>380 まだ日本語変?
「エラー以外は」だと思われます。
warning は無視しても良いですが、気になるなら潰した方がいいかも。
error が出ていない限り hex ファイル作成されているはずだけど。
384 :
378:04/04/15 00:26 ID:On5GXX2g
>>381.382
ありがとうございます。これからもう一度挑戦してみます.
errorですね。Warning に埋もれていたのかも。
取り急ぎお礼まで。
>>381 自分が使っているのは MPLAB IDE v6.42 だが、
LIST P=PIC16F84A
↓
LIST P=16f84a
なのでは?
386 :
名無しさん@3周年:04/04/15 13:32 ID:cyaF9K31
>>378は落ち着け
お前のような性格ではBUG山積だろうからな
387 :
380:04/04/15 18:18 ID:3E3ojJus
388 :
名無しさん@3周年:04/04/16 01:58 ID:wufB3R9s
PICのプロテクトって解除できないんですか?
390 :
名無しさん@3周年:04/04/16 02:46 ID:wufB3R9s
有料でいいので誰か解除して下さい
391 :
378:04/04/16 06:41 ID:7OzDItnD
>>386様 お見通しでございます。
>>385様 それは挑戦してみました。(全角半角、大文字小文字)違うようです。
テキストエディターで作ったasmファイルをMPLABで読み込み、Project→Quickbuildするとだめ
なようです。hexファイルは出来ません。
MPASMで直接作るとwarningはでますが、hexファイルは出来ます。(動きます)
ただ、Configure→SelectDeviceを見ると16F84Aのあたりは
PIC18F6720 PIC18F8410 PIC18F8490しかなくて、18F84Aは選べないのかな。何故?
LIST P=16f84a
INCLUDE P16F84A.INC
ここでProcessor-header file mismatch. Argument out of range (must be greater than or equal to 255)
が出ます。根本的にMPLABが分かっていないようです。
入出力に16本使える16F628が使いたいのですが、参考書にある18F84Aでこんなに苦労していては
628を使えるのはいつになる事やら。(英文しかマニュアルないし)
MPASMで何とか作りながら、MPLABをじっくり勉強していきます。
392 :
名無しさん@3周年:04/04/16 10:38 ID:Gvf40prV
↑MICROCHIPのホームページ行ってクイックスタートとって来きてそのとおりやってみろ。
自分の作ったプログラムをアセンブルするのはその後だ。
>>388 7950万出したら
解除してやってもいいぞ
396 :
388:04/04/17 13:48 ID:0qfdfLi0
当方まったくの素人なので仕様書とか詳しい事はわからないんですが、
PICの現物があるだけじゃ無理なんでしょうか?
有料で請け負ってくれる業者とかあるんでしょうかね。
空気読めよ。
解除できるプロテクトに意味があるとでも?
方法があったとしてもお前にだけは絶対教えない。
>>396 397の言うとおり。
仕様書を書き起こせるんだったら、わざわざプロテクト解除しなくてもオリジナルと
同じ動作をするプログラムを作ってやるよ(有料で)、ってことで。
399 :
名無しさん@3周年:04/04/17 23:47 ID:ia5nsui1
>>396 >当方まったくの素人なので仕様書とか詳しい事はわからないんですが、
と言う事は、自分で作った訳じゃないでしょ?
違法コピーになるかもしれないのに、誰かが手助けするとお思い?
400 :
名無しさん@3周年:04/04/18 19:15 ID:O8ks0Ua8
やっとこさ6.40を探しだしインストール出来ました。
これで何とかやってみます。
>>388,396
あれか?所謂、画像安定器コピーしたいけどPICのプログラムが読めないよ〜って・・・
403 :
名無しさん@3周年:04/04/20 07:42 ID:DrXqb+9P
>>402 画像安定器ってコピーしたいほど効果あるの?
そりゃコピープロテクトの信号を吹っ飛ばすんだから違った意味の効果は
あるわな。(w
ちなみに、同期信号付近にゴミがのせるタイプのプロテクトはデッキによっては
誤動作してしてまうためこれがないと困る事もある。
405 :
402:04/04/20 13:45 ID:jnW/FoZ/
>403
\10K〜20K以上のご禁制の品が、千円ちょっと程度の部品で作れたら・・・
PIC(or AVR)、18xx、2xx6、CR少々、電源、端子、ケース類
>>400 リンク切れてないよ。
リンク先の英語サイトから、必要な手順に従ってDLするようになってるだけだよ。
日本語サイトでクリック1発で落とせるようにはなってないけど、それを指して「リン
クが切れてる」って事じゃないよね?
407 :
名無しさん@3周年:04/04/21 04:27 ID:+/HiZjh+
どなたかPSのコントローラの信号をPICで変換する回路をご存じないですかね?
検索したら腐るほど出てくる。
見つけられない程度の知識なら止めとけ。
409 :
名無しさん@3周年:04/04/21 09:46 ID:Wa07FvvW
>>406 今さっき同じトコ押したらリンク復活してますた…
410 :
名無しさん@3周年:04/04/23 04:19 ID:Zo2i99tW
こんにちは。
AVR 90S2313でちょっとしたプログラミングを行っているのですが、
プログラムのコピーを抑制するほうほうってあるんでしょうか?
とか、ライターではなく、「リーダー」と言う機械があって、それを
使うと簡単にプログラムしたチップをコピーできてしまうものなのですか?
最近ようやく覚えてきました。 まだまだ判らないことだらけです。
教えてください。
>>410 わからないことだらけと、わかっているなら、
人に聞く前に自分で調べる、これ鉄則。
教えてクン、これ最悪。
データシート嫁
りーだー=らいたー
ようやく覚えた程度のコードなんて誰も欲しがらないから安心支那。
>>412 そうばかりでもない。
コーディングが稚拙でも、アプリケーションが良くできていれば、
当然横取りしたくなる人は出てくる・・・。
ま、どうでもいいけど。
馬鹿じゃないの?
能力のある奴は動作見ただけで別のコードで実現するわ。
初心者が書いた糞コードよりは経験者が動作を見て書いた
コードの方が数段上だろうな。(w
動けば正義
416 :
412:04/04/24 20:32 ID:fUJaihxO
414の言う通り。
ターゲトの動作見れば、コードだけじゃなく回路も製作可能。
分解して回路を調べるなんて素人でふ。
PIC16F819で7セグメントLEDを駆動する温度計を作りました。
AD変換が上手くいきません。10%位の誤差が出ます。
Vrefは電源の5V(実測で4.96V)を使ってます。
アナログ側はLM35DZの出力を10kΩのトリマで分圧してPICに突っ込んでます。
コンデンサチャージ時間が20usギリギリだったので増やしたけどダメです。
ADRES→7seg変換部は大丈夫だと思います。
AD変換の誤差要因としては何が考えられるでしょうか?
そんなの誤差だろ。10度で1度の差だろ。
それ以上の性能を求めるほうが酷だとおもうが。
と、いうかどんな用途に使うんだ?
レスありがとう。室温計です。
ADRESLの値の1ビットが1℃です。LM35DZの出力電圧は10mV/Kです。
VDD=Vref=4.95V
LM35DZ出力=0.264V=26.4℃
RA0(AD変換入力)=4.95*0.264/1.023=1.27V ←トリマで調整した
7segに表示される出力=24
とりあえずトリマで合わせればいい気もするけど、スッキリしないですね。
室温計にはDS1820+PICでやってます。
DS1820は0.5℃単位をデジタルで取得できるので便利ですよ。
でも、既にディスコンかな?
今回はPICでのAD変換にチャレンジしたかったんだけど、そそりますね。
「CPUの創りかた」を読んで勉強してきます。
PIC16F819のAD変換について。
417さんの書き込みにもありましたが、当方もPIC16F819のAD変換で苦悩中です。
現象はMPLAB IDE v6.50 でMakeした場合 ADRESLレジスタのアドレスが
0x1e になていることです。本来 0x1eは ADRESHのアドレスなのですが。
という現象で、ADFMを指定しても10ビットの下位2ビットが読めない
(ADRESH の値しか取り込めない)状態です。
何か対策がありましたらお願いします。
>>422 根本解決ではないですがADRESLとADRESHを別名で(EQU)定義しなおして使うというのは・・?
PIC16F819のAD変換について ---- 解決しました。
ADRESLを読み込むには、バンク1に切り替えて読み込む。
ここの巻頭でも紹介してあります"PICな日曜日"さんのプログラムサンプル例にありました。
そのスジ゙では常識かも知れませんが、 解決するまで 丸二日でした。
>>424 それは良かった!精度はどんなもんですか?
俺は、誤差の問題と、温度が切り替わる瞬間の表示バタツキの処理に苦労しました。
>>425 >AD変換が上手くいきません。10%位の誤差が出ます。
>AD変換の誤差要因としては何が考えられるでしょうか?
ADCと変換対象のフルスケール値を近づけるのは基本かと。
フルスケール値
AD変換→0〜5V(Vrefを外部より入力可)
LM35DZ→0〜1.5V(単電源のみ)
この場合、
1.AD変換のVrefに1.024Vを用意して、10カウント/℃,
測定範囲は0〜102.4℃
2.AD変換のVrefに2.048Vを用意して、5カウント/℃,
カウント結果を2倍(左へ1bitシフト)すれば、直読み出来る。
測定範囲は0〜150.0℃。 但し、0.2℃ステップになる。
3.AD変換のVref=VDD(5V)として、LM35DZの出力を
OPアンプで 5000/1024 に増幅し入力,10カウント/℃
測定範囲は0〜102.4℃
4.AD変換のVref=VDD(5V)として、LM35DZの出力を
OPアンプで 5000/2048 に増幅し入力,5カウント/℃
カウント結果を2倍(左へ1bitシフト)すれば、直読み出来る
測定範囲は0〜150.0℃。 但し、0.2℃ステップになる。
以前、自分がやった方法は 3 だが、実験段階で、特に誤差は
測定してないので、この方法が1番だとは言わない。
>俺は、誤差の問題と、温度が切り替わる瞬間の表示バタツキの処理に苦労しました。
バタツキは、大体がADのスレッショルド付近をノイズで行ったり
来たりが原因だと思うので、以下の方法を試して味噌。
・ノイズが乗らないようにシールド線を用いたり、LM35DZの出力に
RCフィルタを追加する。(データシートに載ってる)
・ハムノイズをキャンセルするように50/秒,60/秒の倍数でサンプリングする。
・何回かサンプリングして結果を平均化する。
例えば、4回サンプリングして結果を足しこみ、4で割る(2ビット右シフトする)。
>>426 アドバイスTNXです。
次回からはフルスケを意識してやってみます。
バタツキ対策ですが、以下のような平均化で解決しますた。
128回サンプリングして、除算の余りが64以上だったら切り上げ。
何とか上手く動いてます!
428 :
名無しさん@3周年:04/05/05 11:46 ID:e9OEsEgc
DigiKeyから注文しようと思っているのですが、
ATTINY15L-1PC-NDとATTINY15L-1PI-NDの違いってなんでしょうか?
既出ならすみません。
>>428 digi-keyからリンクされてるデータシートに目を通しましたか?
C=commercial use, I=industrial useってことで動作温度が違う。
意地悪いので、具体的な値は示しません(w 自分で調べるように。
430 :
名無しさん@3周年:04/05/05 20:09 ID:e9OEsEgc
>>429 どうもです。
そこまで教えていただければ十分です!
ありがとうございました。
431 :
名無しさん@3周年:04/05/10 07:15 ID:0o2+HaBs
avrでuartを使ったプログラムをGCCで書こうと思って資料調べたのですが、
自信がない部分があるので自分の認識が正しいか教えていただけないでしょうか?
・送る時はUDREフラグが立っていればoutp(char,UDR)で送る。
立っていなかったら立つのを待つまでポーリングするか、SIG_UART0_TRANSを待つ。
・SIG_UART0_TRANSは1バイト送信が完了する度に発生、
SIG_UART0_DATAはバッファ内のデータが
全て送信された時に発生。
・受け取る時はRXCフラグが立っていればinp(UDR)で読める。
立っていなかったらポーリングか、SIG_UART0_RECVを待つ。
・送受信の両方にバッファがあるので、一回目のSIG_UART0_RECVは無視して、
二回目の割り込みで2byte分のデータが読む、ということなどができる?
(バッファってどのくらい長いんでしょうか?)
よろしくお願いします。
432 :
名無しさん@3周年:04/05/10 19:41 ID:vqDeY8Pb
a
PIC16F873 20MHzで
200個のスリットが付いたロータリーエンコーダーを三相同期モーターを使って速度計っています。
加速させて回転数が5rpsぐらいになると大抵メインプログラム(3相インバーター信号)
が停止して割り込みだけが動作している状態になります。
たまに面プログラム動作してtimer1が停止して30秒ぐらいして動き出したりした事もありました。
timr1にH'FFFF'を入れてカウンターオーバーフローによる割り込みです。
モーターの回転が5rpsの時、割り込み間隔は1ms、割り込み時間最長10us
timer2はクロックカウントを使用して割り込み間隔13ms、割り込み時間最長500us
データーシートに乗ってるWやstatusレジスターの避難や復帰はしています。
timer1がクサイと思っているのですが解決策が分かりません。
引っ越した後の残骸では誰も回答しないだろう。
436 :
名無しさん@3周年:04/09/15 23:31:48 ID:E9t3g7e+
>>436 ●を買えと指摘されてるじゃないか。
お前馬鹿か?
438 :
名無しさん@3周年:04/09/15 23:42:30 ID:E9t3g7e+
リンクが無いのをどうしろと?
320 名前:774ワット発電中さん sage New! 投稿日:04/09/15 01:13:59 ID:NwZf+Br3
●を買うとは
http://2ch.tora3.net/ 2chのログを読むのも常に只というわけではない。
嫌なら探すか、公開されるまで待て。
リンクちゃんと貼ってくれてるじゃん。
やっぱり馬鹿?
ディスククラッシュしたとかで2chにはもう無いって話は聞いて知ってるよ。
441 :
R776:04/11/08 21:53:54 ID:qvdFyQa8
>>433 1.割り込み信号がなまりすぎか回路がおかしい?
2.TIMER2の処理とTIMER1の関係?
3.ひょっとしてウオッチドックか?
4.その他不明
>>436 うぷろーだを出せば親切な香具師が貼り付けてくれるかもしれん。
443 :
名無しさん@3周年:04/12/05 23:31:31 ID:YhNWI0kB
Delphiのコンパイラーって無いね。
当たり前か・・・・・・・・・。
せめてパスカルと言え。
秋月のPIC ProgrammerってICSPで書き込みって出来るん?
446 :
名無しさん@3周年:04/12/14 03:35:13 ID:WuqjD+gQ
格安AVRライター知りませんか?金ないです。
447 :
名無しさん@3周年:04/12/14 04:11:24 ID:9wDPCLDB
448 :
れおな:05/01/22 12:59:09 ID:TdGUb295
C言語でPICを制御したいのですが、ちょうどいいコンパイラが見つかりません。
誰か教えてください!!お願いします!!
>>448 CCSCは資料豊富でお安いぞ。
ただ、アセンブラソースはちゃんと見直せよ。
System.outがリンク切れなのだが、詳細知ってる人いる?
452 :
名無しさん@3周年:05/02/09 17:31:16 ID:hJg0Hayn
電子工作初めて半年ほどの素人です。
今までアナログでLEDいじりばかりしてきましたが
あるところで「デジタルから始めるのも最近は有りだよ」
といわれMCUにチャレンジしてみたいのですが
いきなりAVRは無理でしょうか?
>>452 はじめたいと思ったものにシロ。
お前が興味もたんと続くわけなかろう?
ちなみにあっしはPICだったが、これからFPGA
っていうやつをいじってみようと思う。
454 :
名無しさん@3周年:05/02/15 18:18:30 ID:g51tbun2
PIC初心者です。
とりあえずライタ作ってLEDをチカチカ点滅させる事が出来ました。
次はデジタル時計かテレビ用のリモコンでも作ってみようかと思うのですが、
初心者にはどっちがお勧めですか?
>>454 時計。
リモコンはどういうコードを出すかってことを考えないと駄目でしょ。
手持ちのリモコンから拾う(記録する)にせよ。
456 :
名無しさん@3周年:05/02/15 19:45:17 ID:ZNyKytVy
457 :
名無しさん@3周年:05/03/15 00:22:20 ID:+7UyD6en
はい!、そこのあなた!、教えてください!。
PICにシリアルEEPROMの93C46をつなげたいのですが、シリアルEEPROMは
初めてなのでハンドアセンブラで書き込み練習しているのですが、いっこう
に成功しません。EWEN→WRITE→READで問題ないですよね?。
機械式のスイッチでパコパコしてるから成功しないのでしょうか?。
立ち上がり時にDIを読み込むとデーターシートに書いてあったので、ひょっと
してチャッタリングが原因なのでしょうか(SKがチャッタリング駆動)?。
>457
メカニカルスイッチそのままじゃダメでしょう
>>457 I2CのEEPROMなら、クロックがいくら遅かろうが動作するから手操作も可能かもしらん。
シリアルEEPROMは、ごめ、使ったこと無い。
しかし、手操作とはエンジニア長い方ですか?
>458
メカニカルスイッチはやっぱりダメですか。よくよく考えたら当たり前のことだった。
なんせ5年ぶりにマイコン弄ってるんで。
>459
デジタルエンジニア歴3ヶ月っす。で、本採用される前に逃亡しました。
だって、できないって言ってるのに1ヶ月でCでH8組み込んでPLDでシリパラして製品作れって言うんだもん。
パターン設計も機構設計も全部一人。ま、人材不足のSE界では普通なんでしょうが・・・。
とりあえずPICが精一杯な俺には無理でした。ていうか、他の人も全員ダウンでした。
461 :
名無しさん@3周年:05/03/20 14:48:40 ID:gn1JwexB
使っている方いないかもしれませんが、秋月のキットAKI-AVRの
プログラマソフト(PC側)について教えてもらえませんか。
秋月のHPよりAVR Programmaerの1.40.25をダウンロードしてインストールして
みたところ、チップに書き込みを開始しようとすると「ライタと通信中」という
ダイアログと同時に「実行時エラー’9’:インデックスが有効範囲にありません」と
エラーをはいて停止します。
読み込みでも同様です。
COM選択時には「ライタを検出しました」「AVR ISP SW:3.9 HW:3.1」と出ています。
なお、AVR_PGMの1.1.7では正常に書き込みができます。
どなたか対処方法をご存知の方はいらっしゃいませんか?
463 :
名無しさん@3周年:05/03/20 16:24:54 ID:gn1JwexB
>>462 御指摘ありがとうございます。そうしてみます。
実は悩んだのですがあちらだとツールを自作されている方しか
いない(AKI-AVRユーザがいない)かと思い、こちらに投げさせて
頂きました。せっかくなので、向こうでも聞いてみます。
I2C EEPROMの24C1024について教えてください。
データーシートを見ると、アドレスは8ビットでMSBとLSBに分けて合計16ビット
で指定しますが、これだと最高65535×8のアドレスまでしかアクセスできません。
24C1024は131072×8までアドレスがあるのですが、どうすればそこまでアクセス
出来るのでしょうか????。もしかしてデバイスアドレスとくっつけて考えるの
でしょうか(デバイスアドレスのA1とPo)????。
ついでにもう一つお聞きしますがデバイスアドレスの”Po”ってなんでしょうか?。
どこにも説明が書かれていませんです。
データーシート
http://akizukidenshi.com/pdf/atmel/at24c1024.pdf
>>464 > どこにも説明が書かれていませんです。
データシートの8ページのDeviceAddressingに書いてあるけど
467 :
名無しさん@3周年:2005/03/23(水) 06:26:06 ID:oKDz0Smo
>464 データシートを読まないお前は回線切って首吊って死ね!
しねしねしねしねしんじまえー!しねしねしねしねしんじまえー!しねしねしねしねしんじまえー!しねしねしねしねしんじまえー!
しねしねしねしねしんじまえー!しねしねしねしねしんじまえー!しねしねしねしねしんじまえー!しねしねしねしねしんじまえー!
>>464 466です
>データシートの8ページ
は2005年版のデータシートです。
>>464 のデータシートでは9ページ目
>>465 俺も少し探したんだけど、しっくりくる板がなかった。
PICでやってるから許して。
>>4667 今日鼻血がでたから勘弁してな。
>>468 すんません、でかでかと書いてありました・・・。頭の中で他のシートとごちゃ混ぜ
になってますた。
一部のAVRチップは外部メモリを使用できると聞いたんだけど、
どのチップで可能なの?
EEPROMを外部に持つことは可能?
厨房な質問でスマソ
>>470 AT90S8515/ATmega162/ATmega64/ATmega128等で外部メモリが使用可能です。(主なものだけ)
EEPROMのバスタイプはこれらのCPUでも接続可能です。
通常はシリアルタイプ(I2C/SPI)のEEPROMを外付けすることが多いです。
シリアルタイプの場合は上記以外の普通のAVR/PICでも使用できます。
>>471 ありがとうございます。
I2C等をキーワードにちょと調べて勉強してきます。
ド素人なのでまた質問することもあると思いますが、
よろしくおながいします。
473 :
名無しさん@3周年:2005/05/23(月) 21:08:51 ID:MniBwLX/
877にオペアンプのLM358N(Vcc=5V)の出力を付けたいのですが
PORTBの内部プルアップで出力をプルアップしても大丈夫なのでしょうか?。
とりあえず、今はそうして使っているのですが、なんとなく877が壊れ
そうな気がして。。。LM358Nは出力がプッシュプルですが問題ないですよね?。
LM358Nがオープンコレクタなら安心ですが、プッシュプルはまだ使ったことが
ないんで、ちょっいと不安です。
>>473 言っていることがよくわからんので、回路図晒してみてちゃぶだい。
>>473 ポートBを入力にして、プルアップをONにした状態で、
オペアンプの出力を接続するってことでしょ。
別に問題ないんじゃない。
心配ならプルアップをOFFにすればいいだけだし。
476 :
名無しさん@3周年:2005/06/04(土) 11:37:09 ID:L75f88cg
>>474 おれのニホンゴすこしおかしかったか。要は、LM358の出力を、内部プルアップ
しているPORTBに直結してもよいものかと。
>>475 うむ、その通りです。けど内部プルアップって結構ゆれるんです(俺だけ?)。
>>476 877とLM358の電源電圧が同じならプルアップが特に問題になることはない。
それよりもLVPモードのこととかLM358のクロスオーバー歪のこととかは
気にしなくてもだいじょーぶ?
478 :
名無しさん@3周年:2005/07/10(日) 10:15:00 ID:Ue2umG8H
ICSPについて教えてください。
PICSTART PlusでPIC16F630にICSPで書き込もうとしているのですが
正常に書き込めません。ICSPで書き込むにはチップのVDDをライタから
供給するんでしょうか?現在ターゲット側から供給していますが、
ターゲット側の電源をONにするとチップのプログラムが開始されてしまう
と思うのですが大丈夫なんですか?
479 :
478:2005/07/10(日) 19:24:47 ID:Ue2umG8H
自己解決しました。RA3をリセット端子に定義しないとICSPできないんですね。
いつもリセットを使っていなかったので判りませんでした。
480 :
478:2005/07/16(土) 07:40:11 ID:wfIV+miJ
その後、内部プルアップを有効にするとICSPできなくなる症状に悩まされていました。
結局PICSTART Plusのドライブ能力不足が原因で、AKIZUKIのライタならなんの問題
もなくICSPできました。先のRA3もリセット端子に定義しなくてもOKです。
WIZ-C+PIC16F88を使った時のメモ
・インラインアセンブラで org を入れても効かない
#pragma asm
module "ROM_DATA1" absolute forced 0F00h
dw -810 & 03fFFh ;
dw -792 & 03fFFh ;
・・・
endmodule
#pragma asmend
のように、cソースの先頭に入れて解決した。
・WatchDogを使う場合、ApplicationDesignderのタイマー右端の犬のアイコン
これをしないで自動作成されるXXX_Auto.hに書こうとしたら、コンパイル毎にこれは
再作成されるようで消されちゃった。
シミュレータのControlの□EnableWatchDogのチェックを入れておく事
・CONFIGの設定は
const int cf1=_CP_OFF & _CPD_OFF・・・ 他
#__config cf1
のようにCソースに入れておく。 PIC16F88はCONFIGが2つあるけど2つ目の設定方法は判らなかった
・シミュレータは良く出来ていてデバッグ環境はいいけど、PushButtonを設定しても
なぜかPB0だけ効かなかった。 何か他のデバイスを設定したままになってたのかもしれないが・・・
全体的にコストパフォーマンスを考えると非常に良い。
MPLABだけで作るのに比べて半分以下の時間ですむ。
ただ、Cから入った人にとっては、えらく重いコードを吐くので使えないだろう。
負数かどうかの比較も if(A <0)なんて書いたら重い。 if(A&(1<<7)) が等価で早い
WIZ-Cの問題は日本語。 Ver11.05の場合外部エディタでもunicodeで保存すれば
それを XXchr.c とアスキーに変換してコンパイルしてくれるし、
GUI内のエディタでは変換前のコード=日本語の入ったコードでデバッグ出来る。
これで殆ど問題ないけど、
// コメントに日本語が入っているとタマに途中が改行コードになってコンパイルエラーが出たりする
そういう時はさらに/* */でコメントアウトすればエラーは回避出来るけど 行ズレは残ってしまう。
483 :
sage:2005/08/27(土) 11:51:02 ID:R2wlXbgS
ATMELの書き込み環境のSTK-500なんですけどファームウェアアップデートがうまく行ってません。
何かポインタ等あったら教えてほしいです。
確認したのは、AVR WikiのFAQ内の"AVRStudio4.11でのSTK500/AVRISPのファームウェア更新方法"に従ってです。
ステップとしては
1.AVR Studio 4.11起動
2.ConnectしてVer 1.0Eのファームを確認。アップデートしてくるか聞いてくる
3.一旦電源を押して、PROGRAMボタンを押しながら電源ON
4.upgrade.exeを起動
5.Error: No programmer found が出てしまう
2番でAVRを見つけることができているので接続自体は大丈夫なように思えます。
そのため、この接続で3から手動でupgrade.exeでのupdateを試みてもみてるのですが
うまく行ってません。
AVRfreaksのDN019というドキュメントを見ると、firmware programmerモードではLEDが消える
みたいなのですが、うまく行ってる方このあたりの状態を教えてもらませんか?
現在、当方の環境だとPROGRAMボタンを押した状態で電源投入してもLED(STATUS)は点滅後緑点灯になってしまいます。
うーん、どこが悪いんだろ。
>>483 AVRStudio4.11(build410)SP3の場合AVRStudioの自動認識でもちゃんとアップデートできました。
SP3をいれてからAVRStudioでアップしてみて?
FED社のUSBプログラマのPIC-Keyを使用して、
秋月のPIC18F8720モジュール基板へ書き込みたいのですが
コントロールソフトのPIC Programmer(Ver5.14)で
メニューのPIC>Select Device>PIC18F8720を選択すると
暴走するのですが対策をご存知の方いらっしゃいますか?
486 :
483:2005/09/01(木) 12:31:15 ID:Bzq6MeDq
>>484 返信どもです。実はすでにSP3で確認してこのような結果になっています。
でも、一度SP3入れて試してみます。
>>486 AVRStudioから更新する時は更新するかのダイアログでそのままボタンを押してOKでした。
(STK500ボードには触らずそのまま継続した)
再度、手動での更新もしてみましたLEDはドキュメント通りの動きでした。
AVRStudioは終了させておく。
PROGRAMボタンを押した状態で電源ONするとLEDは消灯。
この状態でUpgrade.exeを起動すると[Start Upgrade]のボタンが押せる状態になっている。
[Start Upgrade]で更新終了。
当方での確認結果です。ご参考までに。
>>487 わざわざどうもです。
どうやらPROGRAMボタンを押した状態で電源を入れてもLEDがつきっぱなしのようでしたので、
どうもここの状態がおかしいようです。
回路図を簡単に見てみるとシフトレジスタを通してPIOで受けてるようなので、
該当PIOピンをPROGRAMを押した状態=Low に強制的に落としてみましたが
だめでした。
AVR Studioから1.0Eというバージョンで見えているので動いてはいるよう
なんですけどね。このプログラムモードに切り替えないといけないようです。
現状、ちょっとお手上げですね。
489 :
名無しさん@3周年:2005/09/04(日) 04:20:12 ID:MRXH/12j
プログラム モードへはAT90S1200が制御します。
PB1でPROGRAMボタンのONを受け、
PB4=LowでAT90S8535をリセット状態にします。
AT90S8535がリセット状態になるのでLEDが消えます。
ファームウェアの更新はAT90S1200が行います。
AT90S1200関係の動作は如何でしょうか?
490 :
名無しさん@3周年:2005/10/01(土) 08:12:45 ID:1IiMS8pg
PICで読み込むファイル形式はPBなんですか?
491 :
名無しさん@3周年:2005/11/02(水) 07:10:01 ID:sCfE8lTR
初心者の本でタイマーのページで01EHなら
16+14=30で、3Sのタイマーと書いてあるのですが
01EHとはどういう意味ですか?
>491
カウントの回数を指しています。
01Eh[16進]は、30[10進]でしょう。
タイマーの周期=0.1秒で、30カウントすると3秒。
493 :
名無しさん@3周年:2005/11/05(土) 06:31:33 ID:mcz1rt15
>>492 ありがとうございます!
ウインドウズ付属の電卓で変換しますと
16進1E→10進30になるのですが
01Eh[16進]の最後のHはどういう意味なのでしょうか?
Hexadecimal (Hex)
MPASMでは01Ehのような表記も可能だが、
User'sGuide(またはHELP)ではH'1E'または0x1Eのような表記が推奨されている。
DCモーターで角度45度毎回転させたいのですが、
Cやアセンブラではどういったプログラムなのでしょうか?
498 :
名無しさん@3周年:2006/03/08(水) 13:04:10 ID:WSahJPJa
hosh
499 :
fusianasun:2006/03/25(土) 16:59:37 ID:zxF61zKf
タイマー0だと256までしかカウントできないですよね。
それを4つのレジスタに1つのレジスタと見立てて2進数で記録する方法教えてください。
500 :
名無しさん@3周年:2006/03/25(土) 21:41:11 ID:T/iC0RLM
500
501 :
名無しさん@3周年:2006/03/26(日) 02:01:19 ID:RtunvXTK
マイコンってさ、ハードがわかってからやるもんだと思ってた。
4つのレジスタに1つのレジスタと見立てて って32bit!?
記録ってなにさ
ついでにバイナリじゃなきゃなんで記録するの?(BCDって死語か…)
桁数増やしたいだけならキャリーを上位レジスタに波及させていくだけ
具体的にはステータスレジスタのキャリーフラグがたっていたら上位レジスタ
を+1
足し算の筆算と同じ原理
502 :
名無しさん@3周年:2006/03/26(日) 02:08:27 ID:RtunvXTK
501
追記 インクリメントだけだったらPICの意味不明なのに
無性に便利な命令incfszが使えるぞい
>>493 0x1Eが10進数30であることくらい電卓使わずにわかってください。
電子工作趣味の人の将来が心配だYO!
503 :
名無しさん@3周年:2006/06/17(土) 01:04:08 ID:YEQYqEFS
お願いします。わかったら教えてください。。。
PIC16F877でINT_RDA割り込みを使ったシリアル通信プログラムを作っているのですが(コンパイラーはCCS)
putc() と enable_interrupts(INT_RDA)の相性なのかどちらかを書くと下記*の点滅ができません。以下に
抜粋したソースを書きます。。
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
while(true){
if(sw1 == 1){
if(frg == 1){
disable_interrupts(GLOBAL); << 割り込み中止
putc('#'); << 下のenable_interrupts(GLOBAL)を書かなければ一回は実行され
putc('T'); その後も*の点滅はされる。しかし割り込み処理はできない。
putc('X'); <<書けば下の割り込み再開の所で処理がとまってしまう。。
putc(0x0D);
delay_ms(5);
putc('A');
lcd_cmd(0x80);
printf(lcd_data,"*");
delay_ms(500);
lcd_cmd(0x80);
printf(lcd_data," ");
delay_ms(500);
enable_interrupts(GLOBAL); << 割り込み再開:これを書くとこれ以降の処理に進まない
} 書かないと割り込みが出来ない。。
}
}
}
あんぽんたんな質問なのかも知れないのは重々承知です。皆様のお力をお借りできれば
とても助かります。よろしくお願いします。。皆様に幸がありますように。。
割り込みをイネーブルすると止まってしまうということは、他の割り込みに
行ってしまってる(又は変なアドレスに飛んでる)か、割り込み関数内での
処理が適切じゃなくてまってるとか、暴走してるとか。RCREGリードでRCIFが
クリアされてないとか。そういうことはないでしょうかね。
使えるテストピンやLEDがあるのなら、受信割り込み関数がきちんと呼び出
されているかを確認してはいかがでしょうか。
私もPICは初心者ですし、上記書き込み以外の情報は全くわからないので検討
違いなこと書いてるかもしれませんがご容赦を。
505 :
Mr.S.S:2006/07/13(木) 22:32:35 ID:y8g70hTB
卒研でpicとC言語で電卓作ろうと思っているのですが、その例が載っているような参考書知ってるひといますか?
超ど素人です。
AVRISP MkU(USBのやつ)で書き込むですが。
35分かかります。こんなもんですか?
ATmega128に書いてます。ソフトはAVRのスタジオです。
HEXファイルのサイズは165Kです。
因みに、デジットのパラレルの奴で書くとすぐ出来てます。
くぐっても何がなんだか…。助けて下さい。
>506
ISPのFrequencyはいくつに設定してます?
ターゲットCPUが12MHz以上ならその1/6程度、12MHz未満なら1/4程度まで設定できます。
16MHzならISP-Freq.は2MHzにすると速く書き込めるはずです。
508 :
506:2006/07/25(火) 22:41:59 ID:6YSemcbY
>507さん
ありがとうございます。
が、Frequencyがわかりません…。
ソフトの項目を色々見て回りましたが、何処を触ったら良いのやら。
適当に触り書き込むと30分でした。
素直にPC買い換えた方が良いのですかね?
>508
AVRStudioをお使いですよね
1)AVRISPmkの書込み用ダイアログを表示します
2)[Board]タブを選択します
3)[Oscillator and ISP Clock]の[ISP Freq:]でISP周波数を指定します
4)その右の[Write]ボタンで設定を書き込みます
STK500.EXEを使う場合は
stk500.exe -cUSB -I1MHz ・・・
の様にオプションスイッチで指定します
ATmega128の場合出荷時は内蔵1MHzの設定となっていますので
この状態で書き込むには ISP Freq.は250KHz以下とします。
又、一旦外部XTAL-16MHZ等でヒューズを書き込んだ後は ISP Freq.は2MHzが指定できます
(ISP-1MHzでも充分速いです)
>508
失礼ですが書き込むヒューズの値とかは分かっていますよね?
ヒューズは注意して指定しないと動作しなくなる場合があります。
ヒューズの値はターゲットのボード(ハード)によっても異なります
自作のボードかな?
また、ヒューズは一旦書き込めばその後はチップ消去しても残っていますのでプログラムだけの更新で構いません。
ビットレート変換装置を作りたいんだけどうまくいかない。
FED PIC C コンパイラの限界?
514 :
506:2006/07/28(金) 01:27:29 ID:Zb07yYZI
>509
丁寧にありがとうございます。
が、当方は夏季休暇で触れないので
休暇明けに試してみます。
>510
ヒューズの値解っていません。
当方、普段はビル管理の仕事ですが、
気が付けば自社製品の設置担当になっていて
自社製品にファームウェアの書き込みも行わなくてはならなくなりました。
製品の設計などは外注なのですが。
基本設計と最終が別の業者で最終の業者が高額で対応してもらえす、
基本設計の業者に聞いても解らないで突っ返されています。
自分の専門外の分野に日々振り回されてる状態です。
515 :
510:2006/07/28(金) 21:55:43 ID:8Csvnz6y
>514
そうですか、それは大変ですね・・・
そういうことならかえってこのスレの方が出入りが少なくていいかも・・・
なんらかの手段で連絡が取れる方法があれば直接やり取りした方が手っ取り早いですが
いい方法が思い浮かばない
516 :
506:2006/07/29(土) 00:09:41 ID:YbQBKAVK
510さん
ありがとうございます。
その言葉だけで涙もんです。
週明けに509で記載頂いた方法試してみます。
(今、改めてIDみて同じ人と気付いた)
設置先(全国)で不具合がありファームを書き直す事を考えると
35分と言う時間が長すぎると言うだけでここに書き込みました。
が、やはり基本を理解出来ていないと厳しいと実感しています。
PCはX24(私物)ですが、X31(パラ装備)購入の稟議はおりましたが、
この先同じ事繰り返しそうなのでAVRISPmk2で頑張ってみます。
設置担当になったのはnyでポート開放出来ただけなのですが…。
今から、色々貼られているHPで勉強してきます。
それでもダメな場合、棄てアドでも入れますので宜しくお願いします。
517 :
506:2006/08/01(火) 00:54:08 ID:F6QGHbCZ
510さん
509で記載頂いた方法で書き込みしました。
なんと、1Mの設定で8秒で書けました。(感激)
その後、調子に乗り設定を上げて行き最高で4Mで6秒でした。
(相変わらずよくわかってません)
でも怖いの1Mで使って行きます。
色々とお世話になりました。ありがとうございます。
518 :
510:2006/08/01(火) 02:14:04 ID:+ylqhkcx
>517
ひとまずOKですか、良かったです。
まさか、506 って、シンド(ry
520 :
506:2006/08/03(木) 23:27:56 ID:H+jymSYi
>519
シンド(ry ってなんですか?
あれってZ80系だったのかな。
そして
>>506がAVRにリプレースする予定なんだろうな。
と妄想
523 :
MM:2006/08/12(土) 18:56:48 ID:80BiQ8GU
SDCC を用いてPICのプログラムを書いています。pic16f88.h を参考に
typedef union {
struct {
unsigned char RA0:1;
(省略)
};
} __PORTA_bits_t;
volatile __PORTA_bits_t __at(PORTA_ADDR) PORTA_bits;
#define RA0 PORTA_bits.RA0
のような設定をし、C で 「 RA0=1; 」によりPORTA の所定の端子を変化させようとしています。
ところが、"BCF STATUS,5" のようなBANK を切替えるコードを吐かないため、所定のデータに
アクセスできません。BANK 切替えコードを出すようにするにはどうすればよいのでしょうか。
16f873Aのフラットパッケージを売ってる
お店を知っていたらどなたか教えてください・・・
525 :
名無しさん@3周年:2006/10/05(木) 12:58:11 ID:YuSZxT52
526 :
名無しさん@3周年:2006/11/01(水) 11:31:00 ID:+Je24nZx
527 :
526:2006/11/01(水) 12:22:39 ID:+Je24nZx
質問は、電気・電子板のほうなんですね。
移動します、スミマセン。。
528 :
名無しさん@3周年:2006/11/17(金) 00:24:56 ID:usFFqkAv
AVRのプログラムをPIC用に変更してくれるソフトって無いですかね?
ちょっと変更しないといけないのがあって、自分でやっていたんですが・・・・
何か知っている方がいれば、教えてください。
よろしくお願いいたします
529 :
名無しさん@3周年:2006/12/13(水) 01:06:33 ID:L7lAbRmB
質問です。現在avrを勉強中なのですが、思ったように動きません。
attiny2313のPORTDにパルスを発生させるだけの単純なプログラムなのですが、
パルスが発生するどころかピンが出力にすらなっていないようです。
WinAVR-20060421でmakeし、ライタはChaNさんのシリアルライタを使用しています。
ソースファイルはtest.cのみで、makefileはmfileで作成したものを修正して使っています。
修正点は以下のとおりです。
MCU = attiny2313
TARGET = test
OBJDIR = obj
SRC = $(TARGET).c
CPPSRC =
なにか問題があるのでしょうか?
わかる方お願いします。
530 :
名無しさん@3周年:2006/12/26(火) 10:47:54 ID:pvg4EMQb
>>529さん
WinAVR-20060421は「mfile/makefile_templateの不具合が修正されていません
ので注意してください」については対応されているのでしょうか。
CCS−CとFED WIZ-Cってどっちがおすすめなの?
エロい人教えて(´・ω・`)
532 :
名無しさん@3周年:2007/03/21(水) 16:25:53 ID:k6yl8ttz
533 :
名無しさん@3周年:2007/03/24(土) 15:09:58 ID:E0jHZ4Fg
16F873AでPORTB,0につないだLEDにBSFで出力すると0.5秒周期くらいで
点滅してしまうのですが、考えられる原因があれば教えてください。
MCLRとVSS,VDDは正常なことは確認しています。
535 :
名無しさん@3周年:2007/05/06(日) 10:29:25 ID:Av8QDkPG
536 :
名無しさん@3周年:2007/05/06(日) 11:32:06 ID:Av8QDkPG
AVRで簡単にUSBが出来るようやけど、C#でパソコン側のプログラム作れるの?
シリアル通信をUSBに置き換えたいんやけと。
最近はシリアルポート着いてないPC多いからね
540 :
名無しさん@3周年:2007/05/17(木) 06:27:56 ID:ZmNESdBV
541 :
名無しさん@3周年:2007/09/12(水) 16:13:05 ID:Opj4n5cl
PIC二つ使ってシリアル通信したいんですけど全くわからなくて・・・
どなたかソースなど教えてほしいです。
ちなみにPIC C lite使ってます。
542 :
名無しさん@3周年:2007/09/12(水) 23:49:26 ID:16ekziRO
PIC同士だけでいいのか?
SPIでばっちぐーだ
543 :
名無しさん@3周年:2007/09/17(月) 13:28:06 ID:p3spr9YP
PICを使ってシリアル通信したいんですけど・・・
まったくわからないど素人です。
何か簡単なプログラムでも教えてほしいんですけど
お願いします!
544 :
名無しさん@3周年:2007/10/11(木) 16:59:56 ID:NKmE4b1o
すみません、質問なのですがAVR168で送信をフラグを使って割り込みをしろといわれたのですが、
宣言がわからないのですが教えてもらえませんでしょうか?
545 :
544:2007/10/11(木) 17:02:26 ID:NKmE4b1o
書き込みミスりました。正しくは
AVR168である単語をフラグを使って割り込みをして送信しろといわれたのですが、
宣言がわからないのですが教えてもらえませんでしょうか?
です。
数年前にsignal catでPICライター買ったんだけど
これってWiiで使うチップに使えるかな?
出来ないなら改造でもして使えるようにしたいけど
ハンダ付けはできても基板起こすことなんてできない・・・
>>544 UARTの割り込み利用送信プログラムは書ける?
あれとほぼ同じ ^ ^
Z80PIOからPIC16F877Aに8ビットで入力して、
16F877A側で8セグ(7セグ+ドット)を8個、ダイナミック表示しています。
16F877AのVDDとVSSは2つありますが、両方とも結線した方が良いのでしょうか。
それと、パスコンは両方に入れた方が良いのでしょうか。
特にオシレータ側が狭くなってしまい、ちょっと気になりました。
入れなくとも動いている模様ですが、誤動作する可能性が高いのでしたら入れたいと思います。
104でokでしょうか?
以前、PIC16F648Aを使った時は内蔵オシレータを使ったので配線に余裕がありましたので、
パスコンを付けて安定しましたが、AVRのAT90S1200を使ったとき、
パスコンを付けずに使ったら誤動作しまくりでしたので、質問させていただきました。
すいません、質問させてください。
MPLAB v7.60を使って、dsPIC30F6014のプログラミングをしています。
MPLAB ICD2で書き込みを行おうとしたのですが、programを実行したときに
ICD0161: Verify failed (MemType = Test, Address = 0x800000, Expected Val = 0x40080, Val Read = 0xFFFFFF)
ICD0275: Programming failed.
という表示が出て書き込みがうまくいきません。
また、Program Memoryをみたところ、最初のほう(00000から000FEまで)のアドレスの値がFFFFFFになっていました。
原因等わかる方、よろしければ解決方法などご教授ください。
551 :
名無しさん@3周年:2007/12/18(火) 22:36:13 ID:suxjXOhR
552 :
名無しさん@3周年:2007/12/18(火) 22:38:47 ID:suxjXOhR
ICDといえば、ICD2 がヤフオクに出てるんだが、一緒に出ているdsPICは
秋月で手に入るやつかな?
秋月が、dsPICの安いライターを作ってくれれば解決なんだが。
ヤフオクのICD2、キャンペーンで買ったにしては他の付属品がないね。
(単品で買ておいたやつかな?)
俺も50%OFFで買ったけど、ありがたみが少なくて一度も使ってない。
あまり高くなるようだとMicrochip Directで買った方が安くなっちゃうね。
いまだに100均にPICもAVRもおいて無いのが我慢ならん。
555 :
名無しさん@3周年:2008/02/16(土) 12:26:34 ID:ZRtojZWV
PIC18F8722のコンフィグレーションビットの
設定につきまして
CONFIG1Hのクロック設定部分がビルトエラーに
なってしまいます。
MPLABのV7.5〜8.01まで試してみましたが
かわりません。2週間悩んでます。
わかるかたいませんか?
__CONFIG _CONFIG1H, _IESO_OFF_1H & _FSCM_OFF_1H & _HSPLL_OSC_1H
__CONFIG _CONFIG2L, _BOR_ON_2L & _PWRT_ON_2L & _BORV_42_2L
__CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_32_2H
__CONFIG _CONFIG3H, _CCP2MX_ON_3H
__CONFIG _CONFIG4L, _STVR_OFF_4L & _LVP_OFF_4L & _DEBUG_OFF_4L
__CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L
__CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
__CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
__CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H
__CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L
__CONFIG _CONFIG7H, _EBTRB_OFF_7H
558 :
名無しさん@3周年:2008/03/06(木) 14:37:54 ID:S57xeEkM
1000円以下だったら買うかな
>555
>556
ヘッダーファイル(P18F8722.INC)のラベル名と違っているのがあるけど、これが原因じゃないのかな
563 :
名無しさん@3周年:2008/03/11(火) 15:52:08 ID:QfbYMnI7
こんどはソフト付きか
ハンダ付け汚いって言われて、写真消したな
565 :
555:2008/03/20(木) 17:35:55 ID:sEq2iD1y
>560
有難うございます、助かりました。
ご指摘の通りインクルードファイル通りに修正
したところビルト出来ました。
とりあえず第一関門突破です。
でもCONFIG3L設定の内容が理解出来て
いないので心配ですが、後は動かしな
がら勉強します。
566 :
PIC勉強1日目:2008/03/22(土) 11:05:54 ID:TBa0jx2J
A・Bという2本の信号線があるとします。
電源ON時に最初はAをCへ繋ぎます。10秒後にAとBを切り替え、BをCへ繋ぎます。
大雑把で素人的説明文で申し訳ないんですが、上記のようなことをPIC1個だけで
実行することは可能なんでしょうか?
例えばPIC12F683を使うとして、GP0ピンにA、GP1ピンにB、GP2ピンにCを繋いで
プログラムでA-C/B-Cと切り替えるようなことです。
>>566 その「信号線」っていうのがアナログ信号なのかデジタル信号なのか知らないが、
そーいう「繋ぐ」っていう作業はリレーに任せるのがいいかもしれない。
で、リレーの切り替えをPICでやる。
>>567 PIC1個でできると夢見てた自分が恥ずかすぃw
リレーについても勉強してきまつ。どうもありがとうございました〜
>>568 いや、入力がTTLレベルならできるよ。
電源ON
10秒未満なら
GP0を読んで、その1,0の値をそのままGP2に出す。
10秒以上になったら
GP1を読んで、その1,0の値をそのままGP2に出す。
ただ、文章からは 信号のレベル(大きさ)がわからないし、
そもそも信号を A→C に伝えるのか C→Aに伝えるのかがわからなかったので、
だったらリレーでやれば? って書いたわけで。
リレーでやればコントロール線は1本でいいよね。
http://aikofan.dee.cc/aikoup1/src/f0596.png
>>569 「TTLレベル」「信号のレベル(大きさ)」という意味すら理解できてない素人で申し訳m(_ _)m
A→C/B→Cの方向です。
2個のI2C-EEPROMのSDA線を切り替えてデータを受信側に渡したい、という物なのです。
>>570 なんでSDAが片方向(A→C)と決め付けているのかがワカラン
2個のEEPROMを制御するならアドレスA0-A1を指定すりゃいいじゃん。
>>571 >なんでSDAが片方向(A→C)と決め付けているのかがワカラン
EEPROM内のデータを受信機へ・・・という流れからの発言でした。間違ってたならスマソorz
>2個のEEPROMを制御するならアドレスA0-A1を指定すりゃいいじゃん。
訳あってそれができないんで切り替え機構が必要なんでつ。
仕事でNAND使うことになりそうなんですが、自宅で勉強がてら入手したいんですが、簡単に手に入らないでしょうか?(必要なボードなども)
検索しても売っているところではなく記事ばかり出てくるのですが。
コマンドや特性等を実際に使って覚えたいです。
初歩的な質問ですみませんがOSがWindowsXPx64でもPICやAVRの市販のライター使えますか?
それともライタ使うにはドライバが必要でXPx64対応と明記されているライターで
ないと使えなかったりします?
PICに挑戦してみたいと思ってるんですがライターどれ買ったらいいか分かりません
PICよりAVRマジオススメ。
AVRなら部品数個からライタ作れるし普通にCで開発できるよ。
全然速いし。
>>576 ありがとうございます
書籍や使っている人の多さからPICにしようと思ったけどやっぱりAVRにしようかな
もうAVR秋月で100円から買えるし。
書籍もCQで出てる。
今からあえて変態PICを選ぶ理由が無い。
PIC18f2550のUSARTって何度も初期化できますか?
受信と送信でレートが違うので初期化しなおさないといけないんですが
確かに十数年前に無料のアクセスポイントからCompuServeにつないで落としてたころは
PICもまぁ面白いんじゃね?なんて思っていたが,もう完全に時代が違う。
既にアセンブラに手軽さなどないし,いびつな貧弱さばかりが前面に出てきてしまう。
すみません。BASCOMなのですが。avrの2313で簡易A/Dの仕方
(アナログコンパレーターを使って)のサンプルプログラムってございませんか?
(昔MCSのホームページでANに載っていたような気がするのですが、現在は見あたりませんでした)
ご存じの方いらっしゃいましたら是非、お願いします。
ちょっとは自分で考えたら?っていう希ガス
584 :
はじめてAVR:2008/07/13(日) 13:35:28 ID:F2LnhRrh
はじめまして、「AVRマイコン活用ブック」を購入して初めてAVRに挑戦しているのですが、しょっぱなから困っています。
LCDに文字を表示するサンプルプログラムを書いて、書き込みは正常にできたようですが、変な表示になったり表示されなかったりで、
上手く動いてくれません。
色々調べていたところ、そのサンプルプログラムが出版社のHPにあったので、そこからダウンロードしたHEXファイルを書き込んでみたら
ちゃんと動きました。
プログラムの打ち間違いかと思い、ダウンロードしたソースファイル(.c)をコピペしてビルドしてみたの
ですが、生成されるHEXファイルがダウンロードしたHEXファイルと一致しません。(ダウンロードしたファイルのほうが大きい)
AVRStudioのバージョンが違うとかそういうことなのでしょうか?バージョンは4.14 (build 589)です。
何が原因なのか分かる方いらっしゃいましたらご教示願います。
生成したHEXファイルが一致しないのはわかったがそれは動くのか?
生成したHEXファイルと自分で打ち込んで生成したHEXファイルとは一致するのか?
586 :
はじめてAVR:2008/07/13(日) 16:26:45 ID:F2LnhRrh
ダウンロードしたソースをコピペして生成したHEXファイルも症状としては
自分で書いたのと同じ(変な表示になったり表示されなかったり)です。
HEXファイルが一致するかというのは検証してません。ファイルサイズは同様
に小さいです。
588 :
はじめてAVR:2008/07/15(火) 08:08:07 ID:pwstRoyZ
ダメ元でAVR Studio4とWinAVRをダウンロードし直して(ちょっとバージョン古いのにしてみた)
インストールしなおしたら上手くいきました。
589 :
名無しさん@3周年:2008/09/14(日) 02:15:46 ID:rY+kCya+
ラジコン受信機のPWMをtiny2313のPD6に繋ぎ
20ms周期のパルスのHが1.7ms以上ならPB0=1
1.3ms以下ならPB1=1というようなプログラムを
作りたいんですがさっぱり上手くいきません
誰か助けてください
___ ━┓ ___ ━┓
/ ― \ ┏┛/ ―\ ┏┛
/ (●) \ヽ ・. /ノ (●)\ ・
/ (⌒ (●) /. | (●) ⌒)\
/  ̄ヽ__) / | (__ノ ̄ |
/´ ___/ \ /
| \ \ _ノ
| | /´ `\
--------------------------------------
JO_Oさんの回答は役にたちましたか?
○役に立った。
○少し役に立った。
○普通
○あまり役に立たなかった。
●間違っていて迷惑になった。
592 :
名無しさん@3周年:2008/11/10(月) 00:47:23 ID:DPMBxgNq
WIZ-Cで割り込みを禁止/許可させる命令を
誰か教えてください。
AVRのISPで使うピンって、SPIでも使うけど、
プログラムを書き込むときに、SPIの回路に影響しないのですか?
>>593 「SPIの回路」…外部回路の意味だとしてレス
影響しないように配慮した回路を組む必要がある
これはPIC等でのインサーキット書き込みでも同じこと
595 :
593:2008/11/23(日) 23:49:43 ID:xXi8IPQ2
>>594 レスどうも。
SPIの回路=外部回路です。
やはり影響アリですか。
影響しないように配慮した回路を組めそうにないので、
プログラム書き込み用に基板用意したほうが吉かな。
これからマイコン工作しようとしたらPICとAVRどっちがいんでしょう。
はじめに作ってみたいのは、
部屋の天井付近と床付近の温度を均すサーキュレータON-OFF用温度スイッチ。
二つのLM35DZをA/D変換して任意の温度差になったら
リレーを働かせてAC100Vの市販の扇風機なりを動作させたいと思っています。
このとき温度表示機能は不要と考えています。
マイコン使わなくてもいいんじゃね
SSRとコンパレータとセンサで良いんじゃね。
599 :
名無しさん@3周年:2008/11/24(月) 12:30:23 ID:ilfWSTK5
マイコンでやりたいんだよ
じゃあコンパレータ内蔵のMCU使えば良いんじゃね。
>>596 個人的には命令体系が素直で、コンパイラも制限なく使えるAVRだ。
というわけで、dsPICかPIC18にしておけ。
602 :
名無しさん@3周年:2008/11/24(月) 14:37:44 ID:2j6a/r1Z
いみふ
なんでもいいってことだろ
PICに食われる所だったAVRを応援しようぜ
605 :
名無しさん@3周年:2008/11/24(月) 19:31:12 ID:vywFk5wh
ところで、これからPIC始める人に「これだけは揃えろ」ってモノ教えて。
ライターとか種類がいっぱいあってよくわかんないよ。
どのサイト見ても混沌としてるし。
秋月のライターってダメなの?
定番はないの?
607 :
名無しさん@3周年:2008/11/25(火) 00:45:54 ID:K1accjIL
混沌スレを紹介されても・・・
プルアップ抵抗って、何オームがおすすめですか?
今度、パーツ屋でまとめ買いしようと思っています。
好きに白って
教えてください
現在、PIC24FJ64GA002 というマイコンで
MPLABに評価版のStudent Editionを
30日のお試しで使っていて、
参考書などのプログラムを参考にしてプログラミングを
してみたところ、参考にした部分の
#fuses HS,NOWDT,NOPROTECT
#use delay(clock=10000000)
#byte port_a=5
#INT_RTCC
というのがどこにあるのかわかりませんでした
これらはもしかして自分で作成するものなのですか?
よろしくお願いします。
612 :
611:2008/11/27(木) 23:42:18 ID:KV8UAU8P
>>611 説明不足で申し訳ないですが
C言語のプログラムの質問です
PICはよく知らんけどヒューズの書き込みはライタでやる。
オブジェクトの一部にそのへんのハラメータを乗っけて、ライタに渡す仕組みになってると思うよ。
PCのモニターに直接るタイプのペンタブレットを自作したいと思っています。
そこでペンの位置を検出する方法としてにモニタの端に取り付けた各種センサーから見て
距離&距離で検出
距離&角度で検出
角度&角度で検出
などの方法を考えているのですが距離のセンサーや角度のセンサーはどれくらいの精度があるのでしょうか?
ATmega168 + AVR Studio(4.15) + WinAVR(20080610)で、プログラムを書いているのですが、
皆さんはプログラム中にウェイトを入れる場合どうしてますか?
自分は当初、単純にforループで書いてみたのですが、
どうもコンパイラが最適化するようで、
思ったようにウェイトが入れられませんでした。
代替としてTCNTを使って(↓)ウェイトは実現できたのですが、なんか不自然な気がしまして・・・
unsigned int start = 0;
TCCR1A = 0x00;
TCCR1B = 0x00;
TCNT1H = (char)(start
>>8);
TCNT1L = (char)start;
TCCR1B = 0x05;
while((TCNT1L | ((int)TCNT1H << 8)) < w){
}
TCCR1B = 0x00;
他にはインラインアセンブラでループを書く方法もあるようですが、
定番というか定石みたいな方法はありますか?
618 :
名無しさん@3周年:2008/12/24(水) 17:59:41 ID:vNWVzPZe
619 :
617:2008/12/27(土) 00:10:29 ID:nGMn7qwJ
>>618 ありがとうございます。
wikiに色々と情報がありますね。参考にします。
620 :
名無しさん@3周年:2009/01/03(土) 01:09:58 ID:71sx99cs
16F88でRA5から出力させることってできますか?
>>620 PIC使ったことがない俺が回答するのもなんだが
データーシート見ると入力だけだな。
それにリセットピンと共用してるからド壷にハマル危険な罠に見える。
>>622 カキコミするときに圧電ブザーとか外してますか?
625 :
名無しさん@3周年:2009/01/14(水) 03:26:06 ID:YRivwF+R
すみません初心者です。
pic16F877を使っているんですがpwm制御でCCPR1Lを徐々に増やしていく
and 減らすプログラムでCCPR1Lが0または100になった後に0→100 100→0
になってしまいます。
CCPR1Lレジスタはこういった仕様なんでしょうか?
なにぶん ちぐはぐだらけの質問で申し訳ございません。
名古屋で10F200の小売をしているところご存知の方いらっしゃいます?
すみません。ほんと初心者です。
タイマカウンタって何でしょうか?
また、それは何に使うのでしょうか?
よろしくお願いします。
すみません。ほんと初心者です。
タイマカウンタって何でしょうか?
また、それは何に使うのでしょうか?
よろしくお願いします。
数えるもの
大麻を数える便利な道具
カウンタックのラップタイムを計るのに必須
タイマーは外部または内部クロックを基準(単位)として時間を計る機能。
カウンタは外部からの信号を受けてそのパルス数を数える機能。
たとえば、タイマーで1秒を測定し、その1秒間にカウンタを使って
外部信号のパルス数を数えれば「周波数カウンタ」ができる。
ttp://akizukidenshi.com/catalog/g/gK-02018 ttp://akizukidenshi.com/catalog/g/gK-01061/ PIC16F648Aで工作しようと思い、この二つを先日買ったのですが、
ver.4のモジュールを付けて、PCに接続し(USBで)たのですが「ライターを検出できませんでした」
になり、何もできない状況です。
comポート設定で1~20まで試したところ「オープンに失敗しました」と出てつながりませんでした。
この時基板上のBUSY LEDはまったく反応していません。
また、つながらないためフォームウェアのアップデートを実行しようとしても
「*** フォームウエアアップデート コミュニケーション失敗。 ***」と出てしまいます。
ライター検出するためにはどのようにすればいいのでしょうか?
PICの工作は初めてなものでまったくわからないのでご教授おねがいします。
PICGMはver.6.71.3です。
SERIAL_USB_DRIVERは秋月のHPの物です。
あばばばばばばっばばばb
できました
誰かに回答される前に自己解決できてよかった
スレ汚しすいませーん
Picprog4UでPIC12F629に書き込もうとすると、デバイスIDが一致しませんと表示され書き込みできなくて困っています。
どうすれば書き込めるでしょうか。
初心者です
PIC16F84Aを使用してアセンブラで記述しているのですが
MPLABでデバッグした時、スタックオーバーフローを起こして止まってしまいます
この場合スタックの開放を行えばいいのでしょうか?
どうやればわからず立ち止まっています・・・アドバイスいただけたらうれしいです。
アハーン首相(アイルランド)
アベ大蔵大臣(ソロモン諸島)
ウンコビッチ元駐中国大使(ユーゴスラビア)
オナル経済担当国務大臣(トルコ)
カリモフ大統領(ウズベキスタン)
ガンバリ国連事務次長(ナイジェリア)
クマ大統領(スリランカ)
コカン外相(スロバキア)
コーマン元首相(バヌアツ)
ダッコ大統領(中央アフリカ共和国)
タノム首相(タイ)
タラバニ大統領(イラク)
ダリィ環境大臣(グアテマラ)
チッチャイ副首相(タイ)
ニャン外務大臣(タイ)
パンティ外相(ネパール)
ヒッキー大佐(アメリカ)
フリン環境相(アイルランド)
ペポー環境相(ハンガリー)
マラ大統領(フィジー)
マンゴウ大佐(コートジボワール)
メガチンポ保険衛生相(プリンシペ共和国)
ユンケル首相(ルクセンブルク)
ローション環境相(スウェーデン)
638 :
636:2009/02/05(木) 22:12:28 ID:iJJa4Sw+
事故解決しました
どうやらテーブル内の数が多すぎたようです
639 :
名無しさん@3周年:2009/03/12(木) 20:08:48 ID:r/h8IH3W
>>633と同じような状況です。
秋月PICライターver.4を購入したのですが、PICプログラマーで正しく認識されません。
USB・シリアル変換ケーブルを使用していますが、PC上では認識されています。
COMポート(COM4)を合わせても「オープンに失敗しました」と出て、
なぜかCOM3のみライターを探した後に「ライターを検出できませんでした」と出ます。
完成品なのでハンダ不良はないと考えています。
ライターのみの動作チェックはできました。
どなたか助けてください。お願いします。
回答じゃなくてスマソ。
たまたま昨日、PICライタ(PICSTART Plus)の為にUSBtoシリアルケーブル(エレコム、UC-SGT)買って来たので…
WinXP SP3で正常に動いてます。
今まで、PICライタのためだけに(以下自粛
641 :
壱:2009/03/14(土) 16:47:54 ID:OC4cBWpj
突然の書き込み失礼致します。
早速ですが車のエンジンの健康状態を
> 観測できるようにバキューム計を作ろうとしています。
>
> そこで皆様にお力添え頂けないかと思い書き込みしています。
>
> バキュームセンサーは車に標準装備されてる物を使います。
>
http://www.jaspa-oita.or.jp/jissen/2002/j_1407.html > ノンターボです。
> この特性図を参考に作れるのではと思うのですがチンプンカンプンです。
>
> この出力電圧をLCDの上の段に数字で−○○○mmHgと表示させ
> 下の段にバキューム圧をバーグラフ表示させる様な物を作りたいです。
>
> LCDはこれを使います。
http://akizukidenshi.com/catalog/g/gP-00038/ >
> この様な工作物をC言語のプログラムソースと回路図作りたいです。
>ちなみにパソコンはウインドーズXPを使用してます。
> コンパイラはmikroc_8200をライターはRCDライタ(バージョン2.5)を使っています。
そこで、センサーの出力電圧をPICに取り込んでLCDに数字で−○○○mmHg表示させるまでの
C言語プログラムをどの様に書いたら宜しいのか教えて頂けると
非常に助かります皆様の御協力宜しく御願い申し上げます。
>>642 金になるときに売っといたほうがいいよ。
俺が持ってるとある技術書は以前は一万越えてたけど
今は売る気にもならん値段だ。
>641
機器の選択は大変良いなと感じました。吸気系にパイピングを施すなどの変更でも大きく調子が変わり
エンジン本体に、重大な損傷を引き起こす原因につながりますが、普通に使用しているなら安心です。
まずはA/D変換で測定上限を割った10進数を表示させるを目的となされるのはいかがでしょうか
>>641 いきなりLCDより7セグで電圧表示するところからやった方が挫折しにくいかと。
すいません、おしえてください。
ccs-pcbでつくったプログラムのlstファイルをもらったのですが、mplabでlstファイルをつかってasmファイルやhexってつくれるのでしょうか?
ccs-pcbはゲットしました。
ezusbなどを使わずUSB通信したいんですが、何を勉強するべきですか?
p16f84aで2つの入力が両方LOWになるとLEDが30秒点くというプログラムを
誰か丸投げで書いてくれる人はいないでしょうか
初めてなのでぜんぜんわかりません
サンプルを見つけて点滅するようにはできたのですがどう書けばいいのかさっぱりなのです。
649 :
名無しさん@3周年:2009/04/08(水) 18:50:09 ID:rl/3FM6k
>>648 NANDゲートICを間に入れてLOWチェックすれば、プログラムはループを書くだけで簡単になるよ。
普通にロジック回路+555とかじゃダメなのだろうか
もう見てないと思うけど、こういうのはシステム全体の仕様を晒すのがいいよ
もし2つの入力が単なるスイッチなら、単に直列につなげばいいし
PICkit3ってのを買ったんだけど、これってどうなの?
まだ国内に出回ってないからお買い得だよって言われて買っちゃったんだけど。
初心者なんでまだよくわからん。だれか教えて。
653 :
648:2009/04/09(木) 23:08:35 ID:dcyOBgjz
レスくれた方ありがりがとうございます
入力をNAND化しました(直列)。
ロジックとタイマーでというレスを頂いたのですがメインのルーチンは
自分でやろうと思っていたのでそれを省いて質問しておりました。
なのでロジック回路の組み合わせだとややこしくなってしまいます。
NANDになったのでスイッチを押すと一つの動作をするだけというものになりましたので
色々ためしてみることにします。ありがとうございました。
ファンのPWM制御をしようとしているのですがMCUはパソコンのUSBから、ファンは
ACアダプタから電源を取っている為か、余りうまくパワー電流MOSの制御とファンの
パルスセンサを拾う事ができません。
今はMCUとACアダプタのグラウンドを抵抗を介して繋げているのですが短絡して
大丈夫でしょうか?……電気関係の経験全然ありません…
655 :
名無しさん@3周年:2009/04/12(日) 09:29:02 ID:P6nfjxLl
>>654 PWM制御はステッピングモーター使わないと。
PWMに対応っていうか反応できるファンじゃないとダメじゃないかなぁ。
電圧制御に変えてうまくいくならOKじゃないかとは思うけど。
GNDは共通にするのがデフォ、ノイズ関係でどうしても浮かさなきゃいけない場合も
あるけど抵抗はないよ。
657 :
654:2009/04/12(日) 22:41:36 ID:BkcBqpVP
GNDを共通にしました。PWM出力のデューティ比を0から50%程度に上げるとファンの
回転数も上がるのですが(0%で止まる様になった)、50-100%だと余り変らない様な…
50%だと回転数は電力の3乗根だそうですので、100%の8割位の回転数で、耳で聞き
分けられると思うのですが。
パルスセンサのラインはファンの回転数0の時+6V位印加されます(回転数が上がると
0に近づく)
オープンドレインの出力はプルアップしないと電圧を出さないと解釈したのですが
違うのでしょうか… PWM制御用のファンのGND側に付けたMOS-FETを外して代わりに
ファンに元々付いていた可変抵抗らしきコントローラを使うとパルスセンサから
予想通りの回転数のクロックが取れます、何故なんだろう…
ちなみにPWMの周波数を80kHzから1.2kHzに変えてみても余り変らない様でした。
挙動から推測すると、パルス出力がPWM制御の電源ラインでばたついて正常な
出力をしてない&6Vが出てきてる時点でおかしい。
6Vの根拠はわからんが、たぶんACアダプタがトランス丸出しの奴で解放時に
10Vくらい出てたりしてFANに繋がってる分で回り込んでる予感はする。
いずれにしてもエスパーしてもこれくらいしか言えんが、回路とかパーツの選定に
色々問題があると思う。
>>657 普通のモーターは回転が上がると、慣性がつくので簡単には減速できないよ。
モーターの選定に問題があるのは明らか。
660 :
654:2009/04/13(月) 22:58:59 ID:YpCbX/UR
MOS-FETのゲートに繋ぐ線上の抵抗を1kΩ -> 51Ω+4.7nF並列に変えたらデューティ比
50%でファンの電流111.1->82.6mAに改善しました(ACアダプタ直付けで116.4mA、
デューティ比100%で116.2mA)、MOS-FETは2SK2232、PWMの周波数は1.2kHz、MCUは
AVR mega88を5Vで動かしています。
パルスセンサのラインは47kΩの抵抗で5Vのラインにプルアップだけした状態でACアダプタの
GND側も繋ぐと、ファンの回転数0の時11V強、ファン回転数が上がると0Vに近づくようです。
20kHz以上のノイズが乗ってるみたいなのでそれなんでしょうか…
余り関係ないですけどMCUのカウンタの入力のラインて浮かしてるだけでカウントするんですね
49.9Hz程ですので多分ACラインからなんでしょうけどどんな経路で来るんだろう…
661 :
654:2009/04/13(月) 23:11:06 ID:YpCbX/UR
失礼しました
>ファン回転数が上がると0Vに近づくようです。
0ではなくて(テスタで)2.5Vに近づくでした。
662 :
名無しさん@3周年:2009/04/14(火) 13:35:10 ID:5w7GJ5OL
PICで携帯電話の外部接続の端子へ信号を送ってダイヤルなどの操作をしたいのですが、
プロトコルはどんなものが使われているでしょうか
PC−モデム−携帯電話
の接続でPCからATコマンドで操作できるのは確認できたのですが
モデム−携帯電話にどんな信号が流れているのか不明なのでご存知でしたら教えて頂きたいです。
俺も質問させてください
秋月の二軸ジャイロキット使って
ラジコン飛行機の姿勢制御をしようと思ってます。
なるべく工作したくないので、マイコンキットを流用しようと思ってるんだけど
オススメなAVRマイコンキットはありませんか?
とにかく、安く、軽く、低消費電流で作りたいのです
A/D変換2本、入力3本、PWM出力3本
以上あると問題無いです
BestTechnologyのBTC067がいいのかなぁと思ってるんですが
いかがでしょうか?
>>662 良い資料をお示し頂きありがとうございます。
とりあえずは旧機種で動かしたいのでこれで大丈夫かと思います。
ありがとうございました。
666 :
名無しさん@3周年:2009/04/29(水) 12:00:34 ID:Lbw3iBPk
PICマイコンを使って直流電圧を得たいのですが
電源が15Vで出力範囲が0〜15Vということは可能でしょうか?
もしできるようでしたら主な流れを教えていただけると助かります
>>666 特殊品で12V対応品あった気がするけど、基本電源電圧5V。
シリーズによっては3.3Vも。
PWM出力->CRフィルタ->OPアンプで増幅->OUT
出力電流極少でよいなら、
PWM出力->3(or 4)倍昇圧回路->OUT
669 :
名無しさん@3周年:2009/05/02(土) 14:29:36 ID:sYZ3jvPj
現在、フルカラーLED(RGB3色)をA/D変換でコントロールしたいと思っているのですが
このようなことは可能でしょうか?
1.RGBを調光(R,G,Bそれぞれに1つずつ可変抵抗を入れて青だけ、青と赤のような感じです)
2.RGBで作った色の調光(例:白をRGBで作りそれを調光)
3.「2で作った色をフラッシュ(点滅)の間隔を可変抵抗で調整(速遅)」
PIC12F675でA/Dができそうですが、1.2の方法がよく分かりません。
そして、2を3でフラッシュさせる方法も検討が付きません。
仮に2.のLEDを点滅させようとして2.のPICを点滅させようとすると電源が安定しなくて壊れそうな気がします。
別な方法や1.2.3についてアドバイス頂ければ幸いです。
>>669 フルカラーLEDは単に3色のLEDが3個入っているだけ。
ピンにアナログで電圧を入れれば調光も混色も出来る。
デジタルでPWM駆動する場合は暗くすると点滅が目立つので、やめといた方がいい。
>>671 いろいろつまみ食いするのは初心者の悪い癖。
まず最初の課題をクリアすれば次が理解し易くなる、わかったつもりになって次へ行くのは良くない。
673 :
名無しさん@3周年:2009/05/05(火) 15:28:54 ID:eoRawcLl
AVRstudioでプログラムをコンパイルすると,hexファイルができずにmakefileとoファイルができてしまいます
原因がわからなくて途方にくれています
何かアドバイスをお願いします
674 :
名無しさん@3周年:2009/05/05(火) 17:05:18 ID:4mBrgdBn
コンパイルだとそうなる。
メニューから[BUILD]を選んで実行すればコンパイル+リンクを実行してくれるよ。
675 :
名無しさん@3周年:2009/05/05(火) 20:54:41 ID:OjQyTQEW
AVRStudioのシミュレータで、RCALL→RETしたら呼出し元の次ではなく
プログラムの最初に戻ってしまう
実機では問題無く動いているのに・・・と思ってたら
>>342さんの問題と
同じでスタックポインタの初期化をすれば正常に動くようになった
;tiny2313のスタックポインタの初期化
.def ACC = R16
LDI ACC,0xDF
OUT SPL,ACC
実機でスタックポインタの初期化無しで大丈夫なら
AVRStudioもデフォルトで設定してくれていたらいいのに
PICライターについて
@PICkit2
AAKI−PIC2プログラマボード(PICkit2互換)
BAKI−PICプログラマー Ver.4(完成品)
他を知らなかったので最近Bを買ってしまいました。
書込み用ソケットくらいなら自作するから、純正品の@を買えば良かった。
今のABの存在価値って何があるんでしょうか?
pickit3が出たから、全部等価値だよ。
電波時計の電波を受信して日時や時間ごとの動作をさせたいのですが
良い方法とか半キットみたいなのがあったら教えてください。
>>471 俺も買っただけで満足して火入れしてないwww
tiny2313のタイマ1でPWM出力に挑戦してるんですが,上手くいきません・・・
何か指摘をお願いします
#include <avr/io.h>
int main(void){
DDRB = 0xFF;
PORTB = 0x00;
TCCR1A = _BV(COM1A1)|_BV(COM1B1)|_BV(WGM11)|_BV(WGM10);
TCCR1B = _BV(WGM13)|_BV(CS12)|_BV(CS10);
while(1){
TCNT1 = 0x00;
OCR1A = 65535;
OCR1B = 40000;
}
}
>>682 情報小出し君にはレス付かないと思うぞ。
>>680 ありがとうございます。ちょっと高いですが興味深いですね。
すみませんこちらのつわものの方々に丸投げでCでコーディングの指南をお願いします。
やりたいのは、
(1)PINB3がONのときPINB0またはPINB1がONでPIND0がON
※PIND0のOFFする条件
(1)PINB3がOFFするとPIND0もOFF または、
(2)PIND0がONのとき、PIND2を1.5秒以上ONするとPIND0がOFFまたは、
(3)60秒以上PIND0またはPIND1に入力が無い場合
以上です。
686 :
685:2009/06/02(火) 11:17:12 ID:dJ2aum2X
すみませんちなみにAVRです。
PIND0のOFFする条件の(3)は
PIND0、PIND1のいずれにも60秒以上入力が無かった場合という意味です。
1週間に1回の動作をさせたいのですが、サイクル数でぴったり168時間後(24時間×7日)にしておけば
誤差は1年で何秒という範囲に収まるでしょうか?
688 :
名無しさん@3周年:2009/06/07(日) 19:25:34 ID:wOW4Z6Qg
リアルタイムクロック
ソフトで色々誤差修正とかやってみたことあるけど、高精度Xtal使おうが(温度やソフトで)補正使おうが
人間が思ってるほど正確じゃないんだよね。
GPS受信でもしてた方がマシかもしれん。
>>688.689.690
ありがとうございます。
色々方法があるのですね。
クオーツの時計並の精度で良いのですが、これは
>>689のオシレータで実現可能なレベルでしょうか?
腕時計を分解して液晶を直接読み取るとかダメかな?
>691
普通のクオーツ腕時計で月差±15秒の誤差
>>690 OCXO使えばそれなりの精度でるけどなぁ・・・値段もそれなりであることは仕方ないとして。
694 :
690:2009/06/12(金) 11:54:55 ID:PcGoXpWW
短い周期で見れば精度いいんだけどね、日単位とか月単位だと累積したものが出るのよ。
温度とかのドリフトは実質無視できるけど。
最終的にはGPSか、ある程度長い周期で見るだけなら電源同期が案外便利で安定した精度が
出る気がする。
色々あるけど、コストと手間と目的によるって事ね。
趣味で作る範囲なら、一品生産で特定のパーツのみで頑張るという手でもいいんだろうけど。
先日の授業でPICについてどんなところで使われているか調べて来いといわれたのですが、テレビのチャンネル切り替え・電子レンジのタイマーなどでよろしいのでしょうか?
他にもあれば教えてください。
>>695 クルマのキーレスエントリとか。
しかし、実際にどれこれに使われてるってはっきりとしたことは言えないな・・・
ああ!Pickit2/3に代表されるように、PIC開発環境にも使われてるよ!
携帯から失礼します
PICの名称peripheral interface controller は、○○○インターフェース コントローラーと読むんですか?
どんなところで使われてるかとかアレな質問の気がするよ、ネットで調べてこいっていう
だけならいくらでも例はでてくるけどメーカーが公表する訳ではないし。
自分で様々な製品を分解してPICを見つけろっていうなら、凄い授業だがw
PIC等の組み込み向けコントローラーマイコンがどのような応用で使われているか、
という定義ならどうにかかな。
ちなみに○○○はペリフェラル。(=周辺機器などの意味)
朝鮮球入れ裏ハーネス
初心者の俺が無い頭で回路考えて回路図を書き、それをもとに実態配線図を書いて
実際のユニバーサル基板に部品と電線を半田付けし、ようやく完成した。
喜び勇んで、ろくに短絡や回路の確認もせずにテストしようと電源を入れたとたんに、
Attiny2313はシューっという白い煙となんともいえない匂いともに一瞬で終わった。
懲りずに部品を発注したが、次は気をつけよう。
701 :
名無しさん@3周年:2009/06/18(木) 20:42:42 ID:hfdQUlXM
ブレッドボードで簡単なやつからやってみることをすすめる
702 :
名無しさん@3周年:2009/06/25(木) 00:48:00 ID:3XMfMF0h
突然すみません.PICを勉強し始めて1週間位になります.
今,PIC18F8720を用いて,RB0に接続されているLEDを点滅させる回路を作っています.
#include <p18f8720.h>
void Delay(void)
{
unsigned char i,j;
for(i=0;i<255;i++){
for(j=0;j<255;j++){
}
}
}
void main(void)
{
TRISB=0;
while(1) {
PORTB=0x01;
Delay();
PORTB=0x00;
Delay();
}
}
上記のプログラムを実装したところ,
5Vが立ち上がった後,0Vにならず,ずっと5Vのパルスが出たままになって点滅しません.
HPを見たところWDTをOFFにする必要があるとあったのですが,
C言語でWDTをOFFにするにはどうしたら良いのでしょうか?
(#fuses NOWDT と書いたのですがダメでした)
なにかアドバイスやヒントを頂ければ幸いです.
703 :
名無しさん@3周年:2009/06/25(木) 02:22:34 ID:LrNuNSgv
失礼ながら、PIC、AVR、H8の違いって何ですか?
PICよりAVRの方が規格が安定しているような事はわかりました。
AVRには、AD変換以外にどんな機能に対応していますか?
目に見えない速さで点滅してるだけじゃないのか?>702
ループを外側にもう1つくらいつけてみそ>Delay()の
PIC,AVRは8bitだがプログラム領域とデータ領域が別になってるCPU
H8はどちらも同一領域なCPU。
>>703 それ以外はレジスタ数の違いやら色々あるし、それぞれにラインナップがあるので
優劣や違いを述べるより応用対象が選択の基準になると思う。
Cだけでプログラムを書くなら、最近のモデルを採用すればどのCPUでもそれなりじゃ
ないかとは思うがアセンブラ(Cで作るつもりでも)をやるなら見通しの良いCPUで
慣れてから他に手を出すとかであったほうがいいと思う。
ここでドレがそれに該当するとか言うと荒れるので、他の人が作ったソース眺めたり
いくつもCPUを使ったことのある人の評価(ブログやら制作記事やら)見て自分に
合うのを見つけるとかで。
705 :
名無しさん@3周年:2009/06/25(木) 17:13:42 ID:3pjwb7q2
>>704さん
レスありがとうございます.
オシロで測ったのですが,5V出力のままでした…
早速Delay()をつけて試してみたいと思います.
あ、よく見たら初期設定がTRISB=0だけど確か1じゃないと出力じゃないんじゃなかったっけ?
最近PIC使ってないのでうろ覚えだが。
ぐぐってみたらTRISB=0で出力でいいっぽいね、失礼。
0=Out 1=In と覚えるとIIO
709 :
名無しさん@3周年:2009/06/25(木) 20:50:25 ID:3pjwb7q2
>>707さん
Delay()をつけてみてもだめでした…
>>708さん
そんな覚え方があるんですね!目からウロコでした
あー勘違いかもしれないけど
i++とかのループをもう1段増やしてみそって意味だったんだけど
>>709 ただ単にDelay()を追記しただけだと、遅延が倍になっただけだから
意味はないかと。
711 :
名無しさん@3周年:2009/06/26(金) 19:39:27 ID:4TH5fCOj
>>710さん
やっぱりダメでした…
今日,新しくライタの方でWDTをOFFにするやり方があるのに気づき,
OFFにしたんですが,ダメでした
どうやらWDTは関係ないみたいです
>>710さん,アドバイスありがとうございました.
Delayの使い方などとても参考になりました!
それとぐぐったらPIC18F8720で#fuses NOWDTは使えるそうなんですが,
私のMPLAB IDE v7.50では#fuseは使えませんでした.
質問ばかりで申し訳ありませんがなぜなんでしょうか?
HIDaspxを作り,書き込もうと思ったのですが,コマンドプロンプトに
Locked device or Synchronization failed.
という表示がされて全く書き込みができません.
何か対処法はあるでしょうか?
至急、国府津からもっとも近い電子部品店を教えてください。
LED、可変抵抗器、ブレッドボードなどの基本商品があればいいのですが!
秋月とマルツ、なんだか偶然だろうけど不自然にパーツのすみわけがされてて
非常に頼みづらい・・・
値段で言えば秋月ですべてそろえたいけどそろわない、また妥協してもマルツ
でもすべてがそろわない・・・
送料だけの問題だけどつらいなあ。
みなさん、どこで買われてるのかな?
モーターを使って遊ぼうとしているけどPICがノイズに強過ぎてワロタ
ノイズ対策全く無しでも問題なく動く
AVRは誤動作しまくりなのに
PICを何だと思ってる
ComputerじゃなくてControllerだぞ
それぐらい余裕だ
>>716 その説明だとAVRはComputerってことにるけど、違う?
PICの入力のHとLのしきい値というのはどこを見れば書いてあるのでしょうか?
それとも測定によって求めるしかないのでしょうか。ご教授ください。
アキバの本屋に行ってみた
相変わらずPIC優勢は変わらないな
ネットではAVRを褒める人はいるが
参考書の数ではいつまでたってもPIC優位だな
スレッショルド電圧前後で何かやろうと考えてるなら、デジタル回路の基本から
考え直した方がいいと思う。
ヒステリシスもあるので電圧云々だけじゃHかLかとか言えない世界でもあるので。
>>720 ありがとうございます。本や解説サイトでそのあたりのこと調べてみます。
スレッショルド電圧付近でバタバタやったりするなら
汎用ロジックICでそれをやってから、PICにはきれいな信号を入れてやるのがいいね
仕様もロジックICなら結構な特性がデータシートに載ってるし
723 :
名無しさん@3周年:2009/07/21(火) 23:40:07 ID:gACQLb6K
それをやってから
2313のPWMについてです。
まだライタが到着しないので実機じゃなくてシミュレータつかってます。
とりあえず1MHzで動かすことにしてプログラムは次のように書いています。
ICR1 = 0x2710; //100Hz
OCR1A = 5; //Aの比較値
OCR1B = 10; //Bの比較値
TCCR1A = _BV(COM1A1)|_BV(COM1B1)|_BV(WGM11); //PWMモードの設定
TCCR1B = _BV(CS10)|_BV(WGM13); //位相基準PWM,TOP:ICR1,分周なし
TCNT1がICR1の値と一致したらTCNT1はカウントダウンしていってほしいんですけど
TCNT1が0x1FFになるとカウントダウンしてしまいます。
これは9ビット位相基準PWM動作と同じ動作です。
9ビット位相基準PWM動作でなく、位相基準PWM動作のTOPがICR1となるようにWGMを設定してあるのですが
何か大きな勘違いでしょうか。
725 :
名無しさん@3周年:2009/08/06(木) 17:49:56 ID:6Qqom0Mf
はじめまして。
ATmega88または644を使用してPWM動作を行いたいのですが、
周波数及びデューティーが可変できるようにするにはどうすればいいでしょうか。
周波数5MHzから100KHz、デューティー1%から99%の範囲でボリュームを使用して調整したいです。
外付け部品多くなっても構いません。
周波数が変わる場合のはなかなか見かけないため、よくわかりません。
よろしくお願いします。
ニコ動みて始めてみたんですが、
配線して電源を入れてみても正常に動作しません。
AVRISP MK2ですが、初期不良などあるのでしょうか?
728 :
名無しさん@3周年:2009/08/11(火) 09:54:11 ID:a2o+tpJR
久しぶりに酷い書き込みを見た
配線間違えも無いかな?
730 :
1:2009/08/23(日) 01:02:15 ID:8b0Efmty
age
731 :
名無しさん@3周年:2009/08/23(日) 12:08:34 ID:r0iRLe0g
はじめまして
CCS-CからHI-TECH Cへのプログラムの書き換えについて質問です
いま本を見ながらC言語で赤外線リモコンの送受信プログラムを作っています
CCS-Cでoutput_a()と表記されているのをHI-TECH Cで書くとなるとどのように書けばいいでしょうか?
その他は書きかえれたのですがこれだけはどうしてもわかりません
PICは16F84Aです
よろしくお願いします
>>731 output_a(0x00) なら PORATA=0x00でいいけど、引数無しの場合は知らん。
× PORATA=0x00
○ PORTA=0x00
734 :
@ちょう初心者@:2009/08/24(月) 20:25:40 ID:jvV2eSGn
突然すみません.PICを勉強し始めたばかりです.
今,PIC16F877Aのキャプチャモードを用いて,脈拍を測る回路を作っています.
MPLABのPIC-LITEコンパイラを使っています。ビルドは成功したが、ハイパーターミナル
を使って確認すると、変な値しか出てこないんです。プログラムに問題あるのではないかと
思います。ソースを添付しますので、ご存じの方いらっしゃたら、是非教えていただきたいです。
ソースは読みづらいと思いますが、どうかよろしくお願いします。
void main(void){
TRISC0=1; //タイマ1の入力ピン TRISC6=0; //RS232C送信ピン TRISC7=1; //RS232C受信ピン TRISC2=1; //キャプチャ信号入力 PORTC=0x00;
init_comms(); // set up the USART - settings defined in usart.h
RCIE = 1; //USART 受信割り込みを使用可能にする TXIE = 1; //USART 送信割り込みを使用可能にする
CMCON = 0b00000111; // コンパレータは使用しない。 ADCON1 = 0b00000000; // A/D変換は使用しない。
TMR1CS = 0; //内部クロック使用する T1CKPS0 = 1; T1CKPS1 = 1; //プリスケーラ値は8
TMR1ON = 0; //タイマ1オフ T1OSCEN = 0; //タイマ1 オシレータoff T1SYNC = 0; //同期タイマを使用
CCP1M3 = 0; CCP1M2 = 1; CCP1M1 = 0; CCP1M0 = 1; //キャプチャーモードの立ち上がりエッジ
CCPR1H = 0; CCPR1L = 0; CCP1IE = 0; CCP1IF = 0;
while (1) {
if(RC2 == 1){
CCP1IF = 0; //キャプチャフラグ初期化 TMR1H = 0; TMR1L = 0; TMR1ON = 1;
while(CCP1IF == 1) ; TMR1ON = 0; // タイマーオフ
data0 = CCPR1H << 8; data1 = data0 | CCPR1L; data2 = data1 * 0.0016; //キャプチャの最小単位
data3 = 60000000 / data2; // 脈拍数変換(1分間)
printf("\r myaku is %lu \n",data3);
} } }
735 :
名無しさん@3周年:2009/08/24(月) 22:18:07 ID:q+mdPbe0
>>732 ありがとうございます
読んでる本にはport_aとoutput_aの2種類あって何が違うのか迷ってたんです
AVRISP mkIIを繋いで配線もしたんですが電源を入れてもLEDがずっと赤色のままです
attiny2313やatmega88pを使ってみたんですけどどっちもダメでした
ライターが壊れているのでしょうか?
737 :
名無しさん@3周年:2009/09/11(金) 07:58:46 ID:P8SacoJd
「 韓国で行方不明になった日本人女性6500人 」 被害者家族が訴え
http://bl★og.liv★edoor.jp/new★s2chplus/archives/5★066★322★4.html
☆☆☆☆☆☆
李鵬が言ってた、20年後に日本なんてなくなるって、こういう事か。
1000 :名無しさん@十周年:2009/09/10(木) 21:55:04 ID:IsvYN1LJ0
1000なら
鳩山:「譲歩を引き出しました。ソースコード開示しなくてもいいそうです。やったー!」
でもEAL3並みの要求を飲まされる。日本の適合性評価機関は承認されない。
結局技術はばっちり漏洩する。終わり
↑ ↑ ↑
中国 「IT製品、ソースコード開示せよ。情報漏洩はないから」…日本側が撤回求めるも、予定通り実施へ
http://s03.megalodon.jp/2009-0911-0412-34/pc11.2ch.net/test/read.cgi/prog/1204019152/34-35 ☆☆☆☆☆☆☆☆☆☆☆
鳩山首相の夫人、鳩山幸さんの旧姓や出自が不明だそうですよ。
鳩山幸さんはサイエントロジーというカルトと関係があるという噂があります。
http://an★tikimchi.see★saa.net/art★icle/127578850.html (日本アンチキムチ団)
764 名前:可愛い奥様[] 投稿日:2009/09/06(日) 01:04:07 ID:/WrcABwtO
幸夫人のごお父様は中国人ではなく、キム・ジョンウォン(漢字不明)という朝鮮北部出身の貿易商だったようです。
戦後は日本に渡り、幸さんが渡米するまでは神戸の商社に勤めていたようです。 キムさんは幸さんが渡米した直後、
北海道室蘭に引っ越し、貿易商を営みながら総連支部の設立に尽力されたと話しておりました。
【ファーストレディー】鳩山幸をウォッチするスレ 2
http://hideyoshi.2ch.net/test/read.cgi/ms/1252279762/
>>737 イチから作るというなら、難易度は高いだろうね。
ブレイクアウトなんかはソース含めて作例があったような。
740 :
名無しさん@3周年:2009/09/19(土) 16:46:53 ID:g5a86piJ
最近16F84Aのプログラムを16F88に移行しようとしているのですがうまくいきません。
EEPROMの読み書きの部分なんですが
MOVLW 00h
MOVWF EEADR
BSF STATUS,RP0
BSF EECON1,RD
BCF STATUS,RP0
MOVF EEDATA,W
MOVWF mode
MOVLW 00h
MOVWF EEADR
MOVF mode,W
MOVWF EEDATA
BSF STATUS,RP0
BSF EECON1,WREN
MOVLW 55H
MOVWF EECON2
MOVLW 0AAH
MOVWF EECON2
BSF EECON1,WR
pbs0_LP
BTFSC EECON1,WR
GOTO pbs0_LP
BCF STATUS,RP0
GOTO MAIN
これを16F88用にするにはどうしたらいいのでしょうか?
741 :
名無しさん@3周年:2009/09/22(火) 15:21:55 ID:Bq2MBt64
>>740 ; DATA EEPROM READ
MOVLW 00h
BSF STATUS,RP1
BCF STATUS,RP0 ;BANK 2
MOVWF EEADR
BSF STATUS,RP0 ;BANK 3
BCF EECON1,EEPGD ;Data Memory
BSF EECON1,RD
BCF STATUS,RP0 ;BANK 2
MOVF EEDADATA,W
BCF STATUS,RP1 ;BANK 0
MOVWF mode
742 :
名無しさん@3周年:2009/09/22(火) 15:23:01 ID:Bq2MBt64
>>740 ; DATA EEPROM WRITE
BSF STATUS,RP1
BSF STATUS,RP0 ;BANK 3
BTFSC EECON1,WR
GOTO $-1 ;Wait
BCF STATUS,RP0 ;BANK 2
MOVLW 00h
MOVWF EEADR
BCF STATUS,RP1 ;BANK 0
MOVF mode,W
BSF STATUS,RP1 ;BANK 2
MOVWF EEDATA
BSF STATUS,RP0 ;BANK 3
BCF EECON1,EEPGD ;Data Memory
BSF EECON1,WREN
BCF INTCON,GIE
MOVLW 55h
MOVWF EECON2
MOVLW AAh
MOVWF EECON2
BSF EECON1,WR
BSF INTCON,GIE
BCF EECON1,WREN
BCF STATUS,RP1
BCF STATUS,RP0 ;BANK 0
GOTO MAIN
>>702 いまさらだけど、、、
AVR(マイコン)を始めて2週間くらい
先日、その現象に半日はまった。
それってCコンパイラの最適化レベルの設定じゃない?
AVRStudioならプロジェクト−オプションのOPTIZATION
初期値は−Os→−O0に変更で解決できた。
Hi-Tech Cにはset_pwm1_duty(duty)のような
PWMを制御するための関数は入っていないのでしょうか?
>>744 なかったら自分でライブラリ作って公開するとよかですよ
746 :
名無しさん@3周年:2009/09/26(土) 09:25:57 ID:ILVkxjtQ
PIC16F873でAピンをデジタル入出力として使いたいんですが、うまく動作してくれません。
下に書いてある処理は入れてるんですが、output_highやoutput_lowをやってもうまく反応しません。
一部のピンは反応しているっぽいのですが。。。
setup_port_a(NO_ANALOGS);
setup_adc(ADC_OFF);
よろしくお願いします。
747 :
名無しさん@3周年:2009/09/28(月) 02:04:41 ID:3f6hV4ZX
秋月で売ってる赤外線センサ(GP2Y0A)をAD変換などをせずに,
対物センサとして使おうと思っています.
この場合,センサのVoピンをマイコンに直接接続すればよいのでしょうか?
使用マイコンはAVRtiny2313です.
マイクロテクニカで買える音声録音再生LSI
ISD1700をPICでSPI制御したいんだけど全然上手くいかない
誰か使ってる人いないかな?
お知恵を拝借。
PIC18F4550をつかってSPI通信(PlayStation2のコントローラと本体)を横から読み取ろうと考えてます。
PIN設定ではAnalogInputとDigitalI/Oにできますが
デジタルデータであっても、AD変換することで0/1を読み取るのでしょうか
直接PICでロジアナの設計を説明しているHPは無かったのですが
色々調べてみると、どうもアナログデータのAD変換は時間がかかるのに対し
/*
(サンプリング100Hz?)
http://www.picfun.com/usb20frame.html 10.製作例 : 汎用入出力ユニット(ハード編)汎用入出力ユニット(ソフト編)
を用いた、データロガーの性能より。
*/
下記のロジアナでは相当早くてもデータを読み取れているようです。
ex. PICでロジアナ
http://hp.vector.co.jp/authors/VA037406/html/logana.htm これはPINをアナログInputとしてADCON0でAD変換するのか
PINをデジタルI/OとしてADCON0でAD変換するかの違いなのでしょうか?
具体的な制作例(主にPICプログラム)の参考ページや
そもそも根本的な間違いをしている可能性もあるので
ご助言、お気づきの点など指摘して頂けると助かります。
ロジアナとオシロが頭の中で混ざっている?
目的とする機能の違いを整理した方が良いかも。
データシートのピン構造の処も要チェック。
追記スマン:
極論ではデジタル入力の場合はAD変換を経由せず、プログラムから見て
ポートのリードで即状態が取得できる。源発振4MHzなら1usの変化
を読み取れるわけだけど、実際には保存する作業があるから、読み取り周
期は数usになる。はず。源発振が早ければ短周期で状態を保存できるけ
ど、諸般事情(PICの外の世界)で変化する側が追従しない場合もある
から、早くしたからと言って…まぁ、その変化具合がわかるかな。けど、
過渡期(電圧の昇降状態)はデジタル入力の場合はHLのどっちかに決め
られてしまうので、そのあたり、変化具合を見たければオシロの出番。。
んと、シュミットトリガが入っている場合は、違った結果になるか。な。
説明下手ですまん。。
>>752様
お返事どうもありがとうございます
私のつたない説明にもかかわらず、丁寧なアドバイス感謝です。
>>極論ではデジタル入力の場合はAD変換を経由せず、プログラムから見て
>>ポートのリードで即状態が取得できる。
ご明察の通り、この点が伺いたかった点でした。
そうなると、次の疑問は、
・そのデータがどこに保存されているか、またどうやって読み出すか
・連続して流れてくるデータの開始bitはどのように決めるのか
・A/D変換時に設定するAcquisition Timeや変換クロックの設定などがあるのか
(4MHzなら1usec、ということは48Mhz動作時にFosc/12・・・?)
です。
最初の疑問はPICのSPIモードを使用しているコードを参考に
while(!SSPSTATbits.BF);*write_buf_p = SSPBUF;
このあたりのレジスタに着目して調べてみます
問題は最後の読み込みの設定なのですが、
ご助言頂いたシュミットトリガやコンパレータなどを
もう少しよく調べてみたいとおもいます
755 :
752:2009/10/07(水) 08:14:49 ID:hvO4kRLc
いきなり18F4550を使い始めるに荷が重い気がする(もしかして釣り?)。
PICの解説本が多数出版されてるから、それを熟読した方が良いかと。
HPだけで集めるなら後閑さんのところが参考になるかと。あとは経験積む。
で、プレステだが…既に通信手法は色々なHPで掲載されているので、
それを参考にするのも有りだと思う。GoogleにGo
ざっと見た感じでは、通信はデジタルのみ。アナログの箇所はボタンと同様、
数値に換算されて通信される。PICのアナログ入力で読み取る必要はない。
もし、未知の通信を解析するための練習としてプレステコントローラを
選んだのであれば、おれなら、まずは電圧と時間を客観的に観測する。
高速にサンプリングしないとサンプリングタイミングの間で変化している
場合に変換を見逃す。と、なるとPICでは間に合わないからオシロの出番。
大まかな動きを把握してPICでいけそうならPICで、駄目ならより高速
なCPUを選択。って感じ。
4MHzの1usは1命令の実行時間ね(1/4)。ADはまた別の算出式あったかと。
4550の場合は…データシート確認してくださいな。
756 :
751:2009/10/08(木) 08:49:53 ID:yysnLtAG
>>752様
不快な思いをさせてしまったようでしたら申し訳御座いませんでした。
最初にこのPICを選んだのは下記アドレスの一番下の記事を見て
通信データをキャプチャしようと考えていたためです
http://www.curiousinventor.com/guides/ps2 ですが、ソースをごらんになるとご理解頂けると思うのですが
SPIモードという状態で通信をするということは
PICをマスター、コントローラをスレイブとして扱うため
「ゲームを操作しつつ入力状態を読み取る」という当方の目的にはそぐわないものでした。
※なお最初は電気電子工作板の電子工作初心者スレッドで相談させて頂きました。
多くのアドバイス重ね重ねどうもありがとうございます。
757 :
752:2009/10/08(木) 10:12:57 ID:eNFEOQ3x
>>751 別にかまわんよ。。指定のHPは「コントローラvsマイコン」の図式になるのかな?
対して目標、やりたいことは「コントローラvsPS」の流れを覗くんだよね。
べつにSPIにこだわらず、クロックのエッジ(立ち上がり?)を外部割り込み要因。
割り込み発生したらポートから1ビットを読み出す。1ビットをシフト&蓄積して
って感じで良いと思うよ(なんという力技)。
覗くだけで喋っちゃだめ。は基本。信号の電圧レベル、方式には注意しないと駄目。
また、処理時間も注意しないとビットの変化を見逃してしまう。
ルールが分かっているならシフトレジスタを組み合わせれば楽だけど。もしかしたら
マイコン内蔵の同期通信で横取りもできるかもしれない。何れにせよ観測対象の動作、
振る舞いの「あたり」をつけてからでないと悩むよ。要、おしろ。
信号、Ackは良いとして、Commandの発生タイミングは何だろう?
758 :
名無しさん@3周年:2009/10/08(木) 17:12:42 ID:gdTL/q0o
>>751 参考事項ですが単にデータを読み出すだけでしたら
PICをSPIのスレーブモードにして SSPCON=B'00100101'
CKP=1 CKE=0 に設定すれば SSPBUF に格納されると思うのですが
それを割り込み又はポーリングで取り出せば良いのでは
ないでしょうか
最近AVRを触り始めたのですが、
AVRStudioでコードを書き、AVRISPmkUをISP接続して書き込みをしています。
メイン関数が、
DDRB = 0b011111;
PORTB = 0b011111;(要は各ポートにつないだLEDを光らせたい)
というコードをattiny13aに書き込んだのですが、
LEDでチェックしたところ、リセットのところが暗く光る以外どこのポートのLEDも点きません。
同じ内容のコードをポートDに変えてatmega88pに書き込んだ場合は期待通りの出力をしています。
シリーズによって何か変えなければならない部分があるのでしょうか?
よろしくお願いします。
760 :
751:2009/10/11(日) 19:44:06 ID:/2dXT4KS
>>752様、
>>758様
お返事が遅れてしまい大変申し訳御座いませんでした
ようやく休日になったので、まとめて試してみようと思います
取り急ぎご連絡まで。
PLD回して、SRAMかPROMにぶっこみ、
あとでまったり観察。
762 :
名無しさん@3周年:2009/10/17(土) 21:40:28 ID:3lTZRcLT
TINY2313の入力電圧のHIGH,LOWについての質問です
TINY2313の電源電圧が5.0Vの時と4.7Vの時があり、5.0Vなのか4.7V
なのかをTINY2313の入力ポートのHIGH,LOWで判別したいと考えています
TINY2313のHIGH,LOWの大体のしきい値が、
・電源電圧が5.0Vの時 H← 2.54V →L
・電源電圧が4.7Vの時 H← 2.38V →L
だったので、2.45V程度を入力し、LOWなら電源電圧は5.0V、
HIGHなら電源電圧は4.7Vと判別できると思ったのですが、
正確には判別できませんでした(時々、HIGH,LOWがぶれる
プルアップの有り無しの両方で試しても駄目)
5.0V or 4.7V
 ̄ ̄| ̄ ̄ ̄ (↓ここの電圧は2.45Vで一定)
| −−−−[TINY2313の入力ポート]
| |
| | −−−[GND]
| | |
−−−□□■−−−+−−−VVVVVV
定電流ダイオード 可変抵抗
0.1mA (入力電圧が2.45Vになるように調整)
コンパレータやAD変換機能を利用すれば電源電圧の違いを判別できると
思いますが、コンパレータのポートは使用していて、AD変換は
TINY2313にはありませんコンパレータICを使ったり、AD変換機能付の
マイコン以外で電源電圧の0.2〜0.3V程度の違いを明確に判別する
方法があれば教えて下さい
できれば部品数が少なく、スペースを取らない方法が嬉しいです(わがまま?)
電源電圧がその2種になる原因そのものを入力したほうが?
764 :
762:2009/10/18(日) 20:55:30 ID:qzuyKsc7
>>763 それができれば良いのですが、元々の電源電圧が異なるためできません
ただ、クロック数を落とせば762の方法でHIGH,LOWがぶれることが
格段に減ったので、とりあえずこの方法でやってみます
ありがとうございました
おいおい・・・
766 :
名無しさん@3周年:2009/10/20(火) 16:09:29 ID:she2wr7+
8Vを出力する回路があるのですが、これをトリガに使って
PICの入力を変化させたいので入力端子のプルアップ抵抗5.6kオームを+5Vにつないであって
トランジスタC1815のコレクタを入力端子に、エミッタをGNDにつないであるのですが、
このトランジスタのベースに8Vの線をつなぐにはベース抵抗は何オームを入れれば良いでしょうか?
あと、8Vの出力がないときでも微妙に電圧が出てたりするのですが
トランジスタが不安定な動作をしないようにしたいのですが、
ベース抵抗の手前か後かにGNDに落とす抵抗を入れれば良いのではないかと思いますが
これの場所と抵抗値を教えて頂きたいです。
767 :
名無しさん@3周年:2009/10/20(火) 19:09:31 ID:AmhscxMY
>>766 +8v--スイッチ--47kΩ---C1815のベース
C1815のベース--10kΩ---グランド
こんな感じで試してみては
逆に+8vを接続した状態の時に若干の電圧が
PICの入力に発生すると思いますが、PICの
スレッショルド電圧以下なので大丈夫だと
思います
768 :
名無しさん@3周年:2009/10/20(火) 22:16:42 ID:upHwxCDq
PICについてではないのですが
大学でH8S、カウンタIC、を使用していてモータを回転させるために
カウンタICの動作速度を知る必要があるらしいのです。
H8Sの動作速度からカウンタICの動作速度をだす計算式ってどんなんですか?
それともカウンタICのデータシートに書いてある応答速度が
動作速度になるのですか?
わかりにくくてすみません・・・
君の息子の大学のレポートの手伝いをする気はないな
770 :
766:2009/10/20(火) 22:53:12 ID:+dPFwRnN
>>767 ありがとうございます。
この方法でせっかく教えて頂いたのに申し訳ないのですが、
HIとLOのプログラムの動作を反対にしようと思うのですが、
その場合は8Vを分圧抵抗でPICに直接入力すれば良いでしょうか?
抵抗の接続としては8V-抵抗20k-PIC入力-抵抗20k-GND
で良いでしょうか?
>>768 いいえ、言いたい事はわかります。
計算そのものは中学レベルです。
推測ですが、回路・マイコンなど始めてみたのですが・・・では?
(言葉も混乱しているようで)
そうなると、レスが続くと「はじめてのマイコンで遊ぼう」みたいな
本になってくるので、ここで解決までは行かないでしょう。
H8入門書は豊富にありますし、モーター制御も大抵載ってます。
「マイコン」と「ロジックIC」との関係性、そして知りたい事に繋がります。
(そうなると、「カウンタICの動作速度を知る必要」とは、本質的には
逆を知りたい事になるのですが。)
理論の前に、なんでもいいので動かしてみる事をお勧めますが・・・。
772 :
767:2009/10/21(水) 08:49:30 ID:YvN9AGKI
>>770 その回路で実際に動くかどうか試してみる事を薦めます。
只グランド側の20kΩが断線するとPICが破損する危険が有ります
ので注意を要します。
773 :
名無しさん@3周年:2009/10/21(水) 23:00:20 ID:hmFit+0/
>>771 今日、本を読み返し何とか次の段階に行くことが出来ました。
とりあえずいろいろ動かしてみます。
ありがとうございました。
774 :
772:2009/10/22(木) 12:07:35 ID:1tZa1LYO
レスありがとうございます。
先ほど試してみたのですが、8Vの電流が微小のようで
100kオームの負荷でも電圧が1V以下になってしまうので
抵抗値を上げて接続したらプルダウン抵抗が機能しないようで
8Vの出力がない時でもPICがHIの認識のままになっていました。
別の方法を考えてみたいと思います。
775 :
767:2009/10/22(木) 17:58:54 ID:kqxqJ7e/
>>774 入力電流が微小ならば、最初のトランジスターを使用した
回路にして、PICの入力端子の検出プログラムで
反転させたらどうですか。
BTFSC PORT*,n 又は BTFSS PORT*,n で出来るのでは。
776 :
772:2009/10/23(金) 11:52:16 ID:5UGB7tkL
レスありがとうございます。
元のトランジスタの回路に戻しました。
8Vはベースに直結してしまいましたが大丈夫なようです。
元々トランジスタ用の出力なのかも知れませんね。
プログラムもBTFSCとBTFSSを変えて現在問題なく動作しているようです。
色々勉強になりました。ありがとうございます。
うちのあるPICは「4」が嫌いなようです。
「4」と「4」でXORを取るとフラグが立たないんです。
この子にとっての「4」はなんなのか、調べてます。
AM3:00くらいになると、ひょっとして「4」って特別な数字なのかな?
と数学系のサイトを調べていて、朝日で我に返るという日々です。
今日で3日目です。
7が好きなようだね
>>778 ああっ・・・そうだったのか。
だから「オレ」からの送信だと、なんらかのフラグが
立って、振る舞いが変わるんだな。
年内には仲直りしようと思っていたが
この子とは縁がなかったという事でお別れします。
16F88Xをアセンブルしたとき、
>Message[302] C:\PIC\TEST.ASM 26 : Register in operand not in bank 0. Ensure that bank bits are correct.
のようなメッセージが出ます。これは何が問題なのでしょうか?
BANKSEL TRISC
CLRF TRISC
のようにBANKSELを行ってるのですが、「CLRF TRISC」のようなその次の行で上記のメッセージが出ます
宜しくお願いします。
>>780 「バンク切替を正しくしてね」と「お知らせ(注意喚起)」なだけ
>>781 ありがとうございます。
bankselしただけでは正しく切り替わってないのでしょうか?
すみません。どうやら問題無さそうですね。
782の質問は無視してください。
ありがとうございました。
教えて下さい。PICで100Aを越す電流を制御、分析するには
どうしたら良いでしょうか?
自動車を運転できるようになりたくて、自動車整備士になるための学校に来たような。
ピックアップコイルで… って制御も含むのか。
アプリケーションノートに数Aぐらいのはあったと思うのでその辺参照。
その電流を計測・制御する術が分かってれば
その術をPICでどう動かすかだけでいいから話は早いのだけれど
分からないとなるとどういう電流なのかを良く聞く必要があるね
1チップマイコンの入力ポートで、内部的にプルアップがかけられているか
そうでないかを確認したいのですが、どうしたらよいでしょうか。
VCCよりほんの少し電圧が低ければ(0.3〜0.5Vくらい)、内部でプルアップされてると思って
間違いないものでしょうか。
>>788 入力ポートとGND間に抵抗をつないで、抵抗の両端の電圧を測る
例えば、プルアップ抵抗と同じ値の抵抗なら、
1/2VDDになってればプルアップされてる
ほぼ0Vになってればプルアップされてない
と判断できる
なるほど!!
普通に頭いいですね!!
いや俺が(ry_no
ありがとうこざいます。
プログラムの書き換えは1000回とかになってるけど、
データの読み書きというか処理回数自体にはどのくらいの耐久性があるんですか?
また書き換えとは違うロジックでデータの読み出しやキャッシュが行われているのなら
良いのですが、解説されているところがありましたらお願いいたします。
>>792 なるほど!処理が違うんですね、安心しました。
794 :
名無しさん@3周年:2009/11/26(木) 04:25:01 ID:GqW4SOyj
Atmega644P-20PUでPSGぽいサウンドを8ch出すのは理論的に可能?
デュアルCPU構成でもOKですけど。MMLを鳴らしたいです。
理論的にという書き方は、理論的なコメントに対して理論的にプログラミングできるのかと、考えてしまう。
ためしにプログラミングして処理時間他を計算してみたら?というコメントが多そうな気がする。
理論のカケラも無いコメントで申し訳ないが「がんばれ」と。経験することが大事。
素直にPSG付けたらええやん
797 :
794:2009/11/27(金) 11:08:52 ID:OzSZHynR
ありがと!
まずはとにかく作ってみることにした。
PSG付けるのも考えたけど(秋月で売ってるYMZxxxx?だっけ_)
仕様がしょぼい。
798 :
名無しさん@3周年:2009/11/29(日) 22:12:17 ID:D1WK+OGg
寿命よりも、静電気で飛ぶ方が早い
静電気で飛ぶ前に足が折れるぜ。
800 :
名無しさん@3周年:2010/01/18(月) 21:48:56 ID:fv4Gr3gG
dsPICの書込の為にCCSから発売されているICD-U64を購入しました。
コンパイラにCCSのPCWHDを使っているので相性が良いかなと思って
いましたがCCS Device Programmerで書込を試していますが書込が
出来ません。書込以前にtarget Testの段階でtarget Failedと表示
されエラーになっています。
target Failedとしか表示されないので対処のしようが有りません。
ICD-U64とpic間の配線は何度もチェックしたので間違え有りません。
picの電源もICD-U64からと外部からも加えて見ましたが同じです。
picも16f88とか数種類試してみましたが全て同じエラーです。
ICD-U64を使用した方で何か原因が分かる方がいたら教えて下さい。
PICkit2でもdsPICの書込が出来るようですが秋月ではホビー用とか
書いて有るのでPICkit2を買うのを止めてICD-U64にしましたが
PICkit2にすれば良かったのでしょうか。
801 :
名無しさん@3周年:2010/01/19(火) 21:33:01 ID:C2dYaDcG
CCSのICD-U64解決しました。
ICDソケットの5番ピンはターゲット基板の+5Vに必ず接続して
置かなければだめでした。
普通のライターの考えで使っていたので外部電源の場合は
接続なしで書込していました。
ICDから+5Vをターゲット基板に供給する場合はICDボックス内部
のジャンパーピンをショートする必要が有りました。
お騒がせしました。
PICでサーボモータHSR-5980SGの制御を行っているのですが、メーカーから指定された電圧(7.4V)をかけても
仕様通りの速度が出ず、その1/5くらいの速度でゆっくりしか動いてくれません。
しかし、ためしに指定よりかなり上の電圧である9Vをかけてみると、
かなり不安定ですが、仕様通りにビュンビュン激しく動いてくれます。
どうすれば安定して高速な仕様通りの速度を出せるか教えてください。
コンパイラはCCS-Cで、サーボの電源は7.4V、PICの電源電圧は5Vです
>>802 電源容量足りてなくて電圧降下してんじゃね?
>>803 調べてみたところ
コンデンサを入れれば電圧降下を防げるらしいのですが、どんな規格のコンデンサを使えばいいんですかね?
>>804 そのサーボ7.2vのときは拘束電流5.2Aだって、スゲーな
停止状態からフルスピードで動き出そうとした瞬間は
その電流が流れると思っておいたほうがいい
通常はそこまで流れないのでちょっと弱めの電源と
コンデンサという組み合わせでいけるかもしれないけど
元電源をっちゃんと確保しといたほうが良いと思いますよ
バッテリーなら楽勝なレベルだけど、実験でACアダプター
とか使ってるなら容量たりてないでしょうね
コンデンサでやってみるなら耐圧は16Vで必要な容量は
負荷の状態によっても変わるから実験的にきめるしかないんじゃないかな
>>805 >実験でACアダプター
まさにこれでした・・・
ショップ行って、耐圧16Vのをいろいろ探してみます。
ありがとうございました!
>>806 とりあえずはコンデンサでごまかすとしても
本番でどうせバッテリー使うんでしょ?
最終的にはそのバッテリーで動かしたほうがいいと思うよ
動作速度が変わったら制御のパラメーターも変わってくるでしょうから
>>807 だめでした・・・
16Vがなかったので25V6800μFのコンデンサを着けてみたのですが、全く変わらずゆっくり動いてしまいます・・・
また、バッテリー、AC電源両方試してみたのですが、両方同じ結果でした。
他に原因があるんでしょうか?
>>808 なんだろうねえ
オシロとか持ってない?
サーボへのパルスタイミングとHI,lowのレベルなんかを見てみたい気がする
あ、サーボ自体が壊れてないのは確認済み?
>>809 同じサーボ二台買ったんですが、変わらなかったですね〜
オシロは持ってないです・・
自分の手におえなそうなのでメーカーにメールしてみました
何かあったらまた相談させていただきますありがとうございました
PICkitの本体のみ(マイコンボードが付属している高いものではなく)がほしいのですが、
秋月、マルツ共に売り切れでした。共立と若松には本体のみというものがありませんでした。
どこかで本体のみを売っているところってないでしょうか?通販だけでなく、大阪日本橋であれば直接買いにいけます
よろしくおねがいします。
RSオンラインの通販利用してみては? 個人でも代引きであれば取引できます。
秋月さんより安いですよ。あっ。Pickit2でしたが。
私はソケットつきがライターにもなるかな、と、ソケットタイプをRSオンラインで購入しました。
もちろん、単体もありますよ。
>>812 ありがとうございます。調べてみたらすごく安くてびっくりしました!
でもここも在庫切れのようですね…^^;
あっ。すまん。在庫切れだったのね。すぐに補充されると思うけど。時々チェックしてみては?
時々バーゲンで掘り出し物とかあるし。
おれは starter kit にしたよ。ソケット基板ついてるし。+2000で基板が手に入るならと。
写真が時々間違っていることあるから名前でメーカHPで情報を探したほうがいいよ。
815 :
名無しさん@3周年:2010/06/16(水) 00:19:16 ID:ckYFwQio
AVRで、スイッチ1をONにするとLED1が点灯し、LED1が点いたまま隣のスイッチ2をONにするとLED2が
点灯するプログラムを教えてください。
つまり同時に押すということです。
お願いします。
?
818 :
名無しさん@3周年:2010/06/16(水) 10:21:22 ID:5jcjz7Ao
マルチ巡回乙w
こっちだけにしとけばよかったのにね
というか、そもそも前提条件が提示されてないのでエスパー組以外は回答権が
ないような。
そして回答を理解するのもエスパースキルが必要。
820 :
名無しさん@3周年:2010/06/17(木) 03:38:36 ID:wh28O9Hd
PICでのサーボ制御で少し困っているのでアドバイスお願いします。
PICは16F690(PICkit2のデモボード)、サーボはGWSservoのmicro 2BBMG、
コンパイラはCCSを使用しています。
パルス幅制御で指定した角度まで動かそうとしているのですが、目的の位置に落ち着くまでにサーボ角が大きくふらつきます。
とても小さな角度変化なら大丈夫なのですが、大きく動かそうとすると首ふりのように行ったり来たりした後、10秒ほどかけてやっと目的の角度に落ち着きます。
出力信号を発光ダイオード(デモボード上で並列に接続されています)で様子を見たところ、サーボが止まっているときは発光ダイオードの明るさが一定で、サーボが動き出すと発光ダイオードが明るくなったり暗くなったりしました。
つまり、サーボが動いている間は何故かPICからの出力が安定していません。
プログラムはTimer0,1を使ったり単純にDelayを入れたりと色々試したのですが変わりません。
恐らく回路がいけないのだと思うのですが良くわかりません……
サーボとPICの電源は別々で、PICはデモボードにUSB接続からの電源供給、
サーボは三端子レギュレータで9Vの角電池から5Vに変換しています。
PICからの出力信号を直接サーボの信号端子に入れて、サーボのGNDから電池とPICのGNDへそれぞれ繋げています。
よろしくお願いします。
このサーボって指定したパルス幅に対応する位置に勝手に動くよね。
サーボ側で目標位置をふらふら行ったり来たりしているんじゃないだろか。
LEDに関してはパルス制御のちらつきと思われ。オシロつかってみ。
フィードバックがあればPID制御とかになりそうだけど無い場合は、
現在位置と目標位置に対して移動時間を予測して、移動時間内に
手前、手前、けどだんだん奥へ止まるようなPWM制御をすれば落ち着きは
はやくなろかもしれない。 要実験。
あれこれと試しているうちに電池が無くなったので新しいものにかえたところ、上手く動くようになりました……
オシロで信号をみてみたら、電池が弱い時にサーボにブレーキがかかるタイミングで信号の電圧が一瞬大きく下がって、
パルス幅ゼロを認識されてその位置までまたサーボが動いてry
の繰り返しをしてたようです。
自己解決で申し訳ありません。
ありがとうございました。
PIC18F2320のエラッタにSPIスレーブモード時にSSピンがうまく機能しなことあり、下降時間を遅くすること
で回避できるため、直列に抵抗を挿入すれば良いと書いてあるんだが、この抵抗値はどのくらいが適切?
あとPIC18F2431にも同じエラッタがあるっぽい、抵抗無しで動かすとSSPBUFレジスタの内容がSSPSRレジスタに
転送されないことがある。