初めてのPIC 0x0A [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
.
_ _ PICをさわるのは今日が初めて、という超初心者のためのスレです。
(O>――<O) PIC選び、PICを使った回路は、誰でも最初は不安なものです。
/ (・) (・) ヽ 恥ずかしがらずに何でも聞いてください。速攻で教えてくれますよ。
○ /▼\ ○ 質問のしかたは、初心者質問スレの発言1を見てくださいね。
|(ヽ二フ ) |
/  ̄ ̄ ̄ ヽ
f ヽ / | PIC関係のスレは、レベルに合わせて以下のスレもありますので、活用しましょう。
ヽ \ / ノ ・PIC専用のスレ
| \_ )(_/ ! 本家本元のPICスレです。口の悪い人もいますが、楽しくやってるみたい。
| | ここの話がわかるようになれば、あなたはもう一人前のPICerです。
| | ・マイコンソフト 悩み事相談室
| | ̄ ̄| | マイコンソフトやツールの質問は、こちらでどうぞ。的確な回答があります。
(_ノ ヽ_)
質問する時のコツ
・性格の悪い回答者はスルーしよう(相手すると逆効果)
・素人玄人などと 上から目線の回答者は、無視してください。相手してはいけません。
・そこそこ良い回答が出るまでしばらく再発言しないのもあり(良回答は後に出やすい)
・回答者のアドバイスで後日解決したら、結果報告しよう(とても喜ばれる)
・回答者は、僕たち初心者に優しくしてください。あなたも通ってきた道のはずです。
さ、質問どうぞ〜っ
0x09 2016/09/07〜 http://rio2016.2ch.net/test/read.cgi/denki/1473238791/
0x08 2016/04/30〜 ttp://rio2016.2ch.net/test/read.cgi/denki/1461994030/
0x07 2016/02/05〜 ttp://wc2014.2ch.net/test/read.cgi/denki/1454648249/
0x06 2015/07/18〜 ttp://wc2014.2ch.net/test/read.cgi/denki/1437151298/
0x05 2015/04/07〜 ttp://wc2014.2ch.net/test/read.cgi/denki/1428391368
0x04 2015/01/02〜 ttp://wc2014.2ch.net/test/read.cgi/denki/1420205108
0x03 2014/09/22〜 ttp://wc2014.2ch.net/test/read.cgi/denki/1411314715
0x02 2014/05/20〜 ttp://wc2014.2ch.net/test/read.cgi/denki/1400522979
0x01 2013/11/17〜 ttp://ai.2ch.net/test/read.cgi/denki/1384626558 ))())()()(())(())))(())))(()((())))(((())()())((()(()())(())()()()((((()()()
((())())((()))()()))()(()()))(()))()((())((()()()(()(()()(())((())())((())))
))())(()()(()()((((((())(()))(())()())(()())((()()))))((((()()(())(()))))())
()))))(()()))))((((()()))(())()(()))())()))(((((((()))(())((()(()))())(((()(
)))())))((())((()())())((())()()()()(())()(()()()(()(((((())()))((()())()())
)()((()((())())())()))((((()())())))())))((((((((())))))(())))())(()((((())(
)))(()(()))))))(()((()()((((()(())))()()))(()))))))(()(()((()(((())((()()()(
(())(()(()))()(()()(()(()()(()(()()))(()()()())))))()()()))((())()((())(())(
(())()(()())(())))(())))()((((())())((()(()()()))))()()()(()(()((())())())((
)(()))((()))((()(()((()()()()(())()))())))))))((())((()(()()(()((((()))(()))
(())(()))((())())())()(()()))())))((())(()))()((()))()))(((((()((((())))(()(
((()))))())))))((()))())(()(())()))((())(())((()(()(())(())))(())(()(((((()(
)()((((()(((()))(((()(())()()))))()(()()()()())))))(()((()((()))))()()()()()
))()))()))((())(())()((()())((((()())((()))))())()())))()((((((()))((())()((
(())(()()()((()(()())((()()()()()))())))()((())()()())()))()(()))((()((())()
))())))()(())((())))()((()((())(((())())())((((()()())))((()(()(()(())())())
)()((()))())(()()))()((())()())(((())((()())((()())())))())))()(()()(()()(((
)(()()())()()(((())((()))(()()()))()()()((()))(((()()))()()(((((())())))()))
((()(())((())))()(())))()()()()((((())()()())(())()()()())()))(((((()))()())
)))(()))(()())((()(((()))((()()((((()(())))()()(()))()(()()))(((()())())()))
)))()()))))(((()()(()()()()((()))(()()(((((())))()(((()()))())((((())))()())
()))()((()))()()((()())())()((())(())))))()))))()()()())(((()()((()()(()((((
))())())(((((())()))((()))))))))()(())((()((()()())(((()))()()))))(((((((()(
))())(()())()))()))()(())(()())()))()()(((()(())()))(((()()(()()((()(()(())(
))()(()()(((()((())(((()()()))))()()))())))())())()(((())()))()())((()(()(((
)(())()())))()())))(()(()()())((()((()()))(()()()))((())))(()(())((()()()(((
((()(()()()()())()()()(()()((())((((())()())()())))()))()))()(()())((()()())
)())))((()()())()((())()()))()))(((()))()))((((()(()(()))((((()))))(())(()((
))())()((())(()))(((())()())()(()()(()())(())))())()))()())((()((()()()(()((
)))))())()))()))(()))()()())(()(()((()((())()((()(((((()((()))(((()()()))())
))())())())())(()()()))))())(()(()()(((()(((((()))))((()((())(())())()(()(()
)()))()())(()()()))()))(((()()(())((()))))(())())((()))()(()(())((())()(((((
((((()(()())())()()()((()))(()))()((((((()))(()()(()(()))()))((())))()))))()
))())((()())()((())(((())((()(())()))()()))))((((()((())()))))(()(()()()()()
()))))()(((((()((())(()()(())())()((()()))(())())()((()()))(())))()((()(()))
)))((((()))())))())())))())((((()()))))((())))))()(()((((((()(())(((()())(((
()))))())))))(((((((((((()((()(())()(()))))())()))((()(())(()))()((()))(()()
))))()((()()()))(()()()()(()))())(())()()()())))())((()(()((()))(()(()()((((
)))))))(()))((()()((()))())(()))(()))())()()()(((((((((()(((()))))(())(())((
)()(()())()()((()(()))))()(())()(()()((()((((())))((()))(((())()))()((()))))
))))())))(((()))(()()((()((())))(())()))(()(((((((((()()))())((()))())(()())
()))((()))())(())())()())))()(((())((())))))()()(()()((((()()(())())((()()((
)()())(())())())))())())))(())()()((()))(()(()((())((()())))(()(()(((()(()((
(()(())))((())))())))))()((()))(()()))))(()(()(((((())()()(())(((())()()()((
((((())()((()())))()()(())(()((()())(())))()))()((((()()()())))()(()()))(())
))()((()))))(())()(((())())()(())))(((()(()(())(((())())()()))))()()(()(()((
)(((())(((()()())))))((())))))(()(()()))(()(()()()(())())((((((()))()))(())(
)(((())))((((((()())))))((()((((()(())))))((()()()())()))(()))()((())((())))
)((((()()()()(()(())))(((()(()()))((()(())(()())((())))((())())(((()))))))))
)))(()())()()(()())(((()()(())((((((())())()(()(())))(()()))((()()((())))))) mplab xpressのボード増やさないのかな?
st-linkみたいな構成で、過去チップも対応できればarmに対抗できるかも
armチップは素人には高性能スギル Jim Stone(Freelance journalist) Microwaving Iraq
http://www.jimstonefreelance.com/beammed.html
ポッパー・ドームと呼ばれるマイクロ波兵器、秘密ビーム兵器、指向性エネルギービームなどについて
イラク戦争で米軍、ファルージャなどで「電磁波兵器」を使用!/建物の屋上の死角に、「ポッパー」あるいは「ドーム」と呼ばれる、ドーム状の発信装置を設置/射程半径0.8キロ住民に照射!頭痛・白内障・記憶喪失・癌・自殺……
http://onuma.cocolog-nifty.com/blog1/2014/03/post-40ee.html
一部訳
組織的ストーカー・電磁波犯罪被害に使われているのは、これだろ? >>5
C言語で、フラグを取るときは、
unsigned char hoge_flg;
unsigned bool hoge_flg; の、どちらを使いますか?
charだと8bit、boolだと1bit(?)だと思っています。
32bitのPICだと、int変数を取ると、
幅は16bitでしょうか、32bitなのでしょうか?
もし16bitや32bitだと、残りのbitは一生使われないので、
もったいないような気がします。 >>7
boolはK&Rでは定義されていない(ANSIやJISは知らん)
処理系がboolを予約語としてるときは、それはコンパイラメーカによる拡張
アドレスとビット指定のロード/ストア命令を持っているCPUなら
それなりに効率よくフラグにアクセスできる可能性はある
CPUがレジスタに対するビット操作命令しかないなら、
一旦レジスタにロードしてからビットにアクセスすることになるので、
メモリ効率は良くても実行効率は良くない PICマイコンのWeak Pull-upって「定電流Pch J-FET」 or 「単なる抵抗」のどっちなんだろ?
データシートは電流値で規格されていて電圧によらずmin値が同じだから定電流っぽいけど
端子のON波形見るとExpカーブ描くので抵抗のようでもあるし・・・ 16F690のRB7のフロックダイアグラムではMOS FETになってる 説明では内蔵プルアップ抵抗という表現になっています
ある書籍の説明では47KΩ程度と説明されていました >>11-12
なるほど。Vdd - 抵抗(47kΩ程度) - MOSFET - I/O pinといった接続で
プルアップされていると考えるのが実機波形とも合致するので納得しました >>9
今、K&Rを基準にしているコンパイラってほとんどないんじゃないかな。
それを基準にしてそこにないものをコンパイラメーカーの拡張というのは時代に合っていないと思います。
今はANSIが基準ですね。
boolですが、俺も自分でtypedefして使ってきたのですが、あらためて調べてみると、
今のMicrochipのコンパイラは、C99を部分的に取りいれていて、XC8では、_Boolは未サポートみたいですが、
bool は stdbool.h をインクルードすることで使えるようになっているようです。 んで、結局charにdefineしてるでしょ
いいじゃん最初からcharで 通常仕様Fと低消費仕様LFが別チップになっているのが納得いかん!
config wordで切り替えられるようにしてくれれば良いのに…
LFタイプは待機電流1uA切ってるからコイン電池駆動回路に愛用してるのだが
5V回路に使いまわせないのが悩ましい >>16
最新16F18313/18325であれば、VREGPMレジスタ設定することで
通常電圧仕様でもSleep時1uA以下にできる
旧世代の通常電圧版はたぶん内蔵発振起動時間の最小化を優先して
Powerdown電流を20uA程度食わせているんじゃないかな? picの開発環境はLinuxでも構築可能ですか?
特にpickit3の書き込みプログラムについて心配しています 16F18313ってTIMER0の仕様が変わったのか?
T08BITがT016BITに名称変更で8bitモードではTMR0Lの値がTMR0Hと一致したら割り込み発生で
割り込み処理でカウンター値をセットしなくても良いのかな。
正確なインターバルタイマーが可能になったのか。 16F18313/18325が機能豊富なのは理解できるけど従来Midrange品との互換性下がってるよなぁ・・・
当面は12F1822と16F1827で乗り切るよ 機能豊富なのはいいけれど機能すべて切り離しても動作時やSLEEP時の
消費電力上がるのは困り者だ・・・・ >>22
消費電力が気になるアプリだったら、必要なだけの機能を搭載したものを選ばないとなあ。
停止した機能モジュールも消費電力ゼロにはならんし。 >>23
でも機能と価格は魅力的なのは確かだな〜〜〜〜
このPICをいかせるアプリを考えてみます。 >>24
ばっちりと嵌まるアプリが見つかったら楽しいですね。とてもよくわかります。 教えてください。
PICマイコンで、8bit, 16bitのもので、内蔵PLLでもなんでもよいので、
Clockを、
・50MHzで動くものはありますか?
・80MHzで動くものはありますか?
あと
PICの内蔵PLLは、入力周波数8MHzに特化したものでしょうか?
それとも、入力周波数いくつでも4倍できるでしょうか?
よろしくお願いします。 ある
入力周波数範囲は物によって違うので、該当データシート読め >>26
http://www.microchip.com/maps/Microcontroller.aspx
上記で8bit, 16bitにチェックを入れ、MAX MIPSの最小値に50を入れて検索すれば出てくる。
8bitは無さそう。 訂正
上記ページで8bitとか16bitとかじゃなく、
coreが8bitPICとか16bitPICとかを個別に選んだ方がよさそう。
MIPSについてさっき書いたのじゃなく、8bit,16bit共に
MIPS=周波数/4になるはずだから、50MHzなら12MIPSを指定
8ビットだと18F系の奴が64MHzで見つかる。
あとはご自由に >>22-25で気になってPIC 8pin、3V-85℃Max、最小待機電流Ipd仕様を比較してみた。
Baseline〜Midrange世代(10F322、12F509〜12F683)は1.2uA〜1.5uAで、
12F629/675の0.77uAがもっとも優秀。
Enhanced世代(12F1501〜16F18313)に入ると2uA〜4uAまで上昇し、
12F1822だけが45uAと突出して悪化。LF版なら2uAまで抑えられるけど…
CR2032電池で10年持たせるにはSleep電流2uA以下に抑えたいところだが、
機能豊富なEnhancedも魅力的で悩ましい… >>29
>MIPS=周波数/4になるはずだから、50MHzなら12MIPSを指定
そうとは限らない。俺が良く使ってるのはクロック140MHzで70MIPS >>30
多分、1822と1823は同じチップなんだけど、電流は1822の方が多い? >>30は8ピンを調査対象にしているから、1823は対象外なのでは。 >>31
70MIPS のはパイプライン長いから、組み方次第では40MIPS の奴の方が速い事もある。 TIMER0の仕様が変わった事を確認しました。
意外とこれの違いに気づかない説明サイトあるんだな。 >>35
俺はほぼアセンブラだから、逆転することは多分無いな。
あと、70MIPSはUARTで921600bpsが安定して動くけど、40MIPSではキリが悪くて
使えない。1822でさえ921600bpsが使えるのに、ちょっと残念。 TVのリモコン信号は周波数38KHzだけど、多少ずれてもそれほど支障はないみたい
どのへんまでOKなのか実験してみた人いるかしら
あと、デューティ比は30%となってるけどなんで50%じゃなくて30%なんだろ
なんか意味あるのかしら >>35
40MIPS以下の16bitPICは通常命令1サイクル・分岐命令2サイクルの所
70MIPSのは通常命令1サイクル・分岐命令4サイクルなのか。
6割以上が分岐命令なら確かに逆転するな、そこまで行くことは無いだろうけど。
ただクロック比で75%性能アップだと思っていたのに、分岐命令が1割あると48%
2割あると31%しか向上しないってちょっと残念だ。
8bitPICから馴染みのある次命令スキップ系(BTSC,BTSS,CPS**)はサイクル数が
増えてないからアセンブラならこちらをうまく使えば良さそう このプログラムをC言語にコンパイルする方法が無いのでしょうか。
発光ダイオードの点滅用という事で書き込んでもらったのですが少し遅いので早く点滅させたいのです。
書き込んでもらったお店の人の話ではC言語なら早くできると言っておりました。
:020000040000FA
:10000000FF23831690008312073099008316003077
:100010009F000830850083120030A300230885006C
:10002000A30A142014200E28FA30A100F930A200EF
:0C0030000000A20B1828A10B16280800E5
:084000000000000000000000B8
:02400E00843FED
:00000001FF 現在2chの色々なスレッドで、怪しいIP表示スレへ誘導する不審な書き込みが頻繁に行われている事を受け、
セキュリティメーカー各社が注意を呼びかけています。
その不審な書き込みは、「意味不明の英数字列の書き込み」、あるいは「スレッドの内容とは全然関係ない日本語と
urlリンクのセット」の書き込みで、現在あちこちのスレッドでよく見かけます。
そのurlリンクをクリックするとIP表示スレに転送されますが、いくつかの書き込みを検証したところ、IPアドレス
抜き取りや、ウイルス感染などの挙動が確認されました。
最近のウイルスはアンチウイルスソフトを入れた状態でも感染させられる事があるので、
2chを閲覧している方は、IP表示スレへ誘導するurlリンクは極力クリックしないように注意してください。
(この書き込みは自由に転載してください) >>43
何でC言語ならって言ったのかわからないけど、
そのコードを改造するという前提なら、
MPLAB XにインポートしてProgram Memory見れば、ニーモニックが見れるから、
点滅の速度くらいなら、ここで数字変えるだけじゃね?
間違ってますか?偉い人!
ちなみに、アセンブラ使ったことねえから、
おいらなら、1からCで書くです。 >>47
Line21、23を変更すればよい。
Line Address Opcode DisAssy
1 000 23FF CALL 0x3FF
2 001 1683 BSF STATUS, 0x5
3 002 0090 MOVWF 0x10
4 003 1283 BCF STATUS, 0x5
5 004 3007 MOVLW 0x7
6 005 0099 MOVWF 0x19
7 006 1683 BSF STATUS, 0x5
8 007 3000 MOVLW 0x0
9 008 009F MOVWF 0x1F
10 009 3008 MOVLW 0x8
11 00A 0085 MOVWF PORTA
12 00B 1283 BCF STATUS, 0x5
13 00C 3000 MOVLW 0x0
14 00D 00A3 MOVWF 0x23
15 00E 0823 MOVF 0x23, W
16 00F 0085 MOVWF PORTA
17 010 0AA3 INCF 0x23, F
18 011 2014 CALL 0x14
19 012 2014 CALL 0x14
20 013 280E GOTO 0xE
21 014 30FA MOVLW 0xFA
22 015 00A1 MOVWF 0x21
23 016 30F9 MOVLW 0xF9
24 017 00A2 MOVWF 0x22
25 018 0000 NOP
26 019 0BA2 DECFSZ 0x22, F
27 01A 2818 GOTO 0x18
28 01B 0BA1 DECFSZ 0x21, F
29 01C 2816 GOTO 0x16
30 01D 0008 RETURN >:10002000A30A142014200E28FA30A100F930A200EF
この行の真ん中辺りのFAをテキストエディタで適当に変えて書き込んでみるとよい
80とかにすれば約2倍の点滅速度になるのでは >>50
すまん、すっかり失念してた
きちんと見てるよね、多分
チェックサム再生成 or 計算して手で書き換えの一手間がいるのか >>51
HEXファイルの4行目
FAを7Dに、EFを6Cに変更。
で倍の速さになるかな >>53
ゴミの書き込み失礼しました。
;##### KPICLED0.ASM KPICLED0.HEX
;
;***** RGB 3色LEDを6色に点滅させるプログラム。
;***** (電池1個、LED1個、PIC1個 だけで簡単にLEDを点滅させる実験にも使用)
;***** 2004.07.04
;
LIST P=12F675
;
INCLUDE P12F675.INC
;
;******************************* コンフィグレーションビットの記載
;
CNFB = _CPD_OFF ; データEEPROMもプログラム・メモリも
CNFB &= _CP_OFF ; コード・プロテクトしない
CNFB &= _BODEN_OFF ; ブラウンアウト・リセットを使わない
CNFB &= _MCLRE_OFF ; MCLRリセットを使わない
CNFB &= _PWRTE_ON ; パワーアップ・タイマを使う
CNFB &= _WDT_OFF ; ウォッチドッグ・タイマを使わない
CNFB &= _INTRC_OSC_NOCLKOUT ; 内部発振器を使う
__CONFIG CNFB
__IDLOCS H'0000' ; バージョン0.00
;
WITIM1 EQU H'21' ; WAITワーク
WITIM2 EQU H'22' ; WAITワーク
LEDBUF EQU H'23' ; LED表示用バッファ
;
;******************************* 処理プログラム
;
ORG H'0' ; リセット時に動作を開始するアドレスを指定
;
;******************************* 初期設定
;
CALL H'3FF' ; 内部発振器の補正値をセット。
BSF STATUS,RP0 ; バンクを1にする。
MOVWF OSCCAL
;
BCF STATUS,RP0 ; バンクを0にする。
;
; x6x43210
MOVLW B'00000111' ; コンパレーターは使用しない
MOVWF CMCON
;
BSF STATUS,RP0 ; バンクを1にする。
;
; x6543210
MOVLW B'00000000' ; ポートはすべてデジタル
MOVWF ANSEL ; AD変換変換使用せず。
;
; xx543210
MOVLW B'00001000' ; GP 5-4 2-0 出力
MOVWF TRISIO ; 入力出力の設定
;
BCF STATUS,RP0 ; バンクを0にする。 ;
;******************************* LED点滅処理
;
; xx54x210
MOVLW B'00000000' ; 最初の値
MOVWF LEDBUF ; LED表示用バッファに設定
;
LOOP EQU $
MOVF LEDBUF,W ; バッファから取り出す
MOVWF GPIO ; 出力ポートへ出力
INCF LEDBUF,F ; 1進める。
;
CALL DLYPRO ; 250msec × 2 時間待ち
CALL DLYPRO
;
GOTO LOOP
;
;
DLYPRO EQU $ ; 250msec時間待ち処理
; ; 時間待ち処理 WITIM1 に入れた時間×1msec時間待ちする。
; return ; デバック時これを生かしてとりあえずリーターンする。
MOVLW D'250' ; 200msec時間待ち処理
;
MOVWF WITIM1
WITLP1 EQU $
;
MOVLW H'F9'
MOVWF WITIM2
WITLP2 EQU $
NOP
DECFSZ WITIM2,F
GOTO WITLP2
;
DECFSZ WITIM1,F
GOTO WITLP1
;
RETURN
;
END
>>43
のHEXファイルと一緒のソースも提供しています。 CALL DLYPRO ; 250msec × 2 時間待ち
CALL DLYPRO
DLYPRO EQU $ ; 250msec時間待ち処理
; ; 時間待ち処理 WITIM1 に入れた時間×1msec時間待ちする。
; return ; デバック時これを生かしてとりあえずリーターンする。
MOVLW D'250' ; 200msec時間待ち処理
200msec時間待ち処理
このコメントはミス 250msec (D'250'だから)
上記の二つを調整する事で自由に点滅の時間を変更できます。 書き込んでもらったとか書いてるし、スキルレベルがわからん
それじゃHEXで修正しても書き込めないのではと言われればその通りなんだが… PIC10F200にてLEDをチカチカさせたいと頑張っています。
が、MPLAB IDE v8.92でプログラムしてPICkit 3 v3.10とPICkit 3 で書き込みました。
PICkit 3が接続されている状態だと希望通りに点滅してくれるのですが
10F200を別基板と別電源にすると点灯したままとなります。
配線は何度も見直しました。
何か初歩的なミスと思いますがどうでしょうか??
よろしくお願いします。 >>59
別基板と別電源ってのが分からんけどここ切り分け出来ないの?
電源だけ供給したり、別の10F200に同じの書き込んでも結果は変わらず?
ソースと基板出せるんならだしてよ。
ところで、電源が供給されてればLEDは点灯したまま?それとも消灯したまま? >>60 ありがとうございます。
PICkit 3で書き込む時にLEDも載せてあるのですが書き込み終わったらLEDが点滅を開始します。
使うのはGP0ポートをLED出力用でGP1ポートをリセットボタンで使っています。
希望は、5分消灯→10秒点灯を繰り返してボタンを押すと10秒点灯へ飛びます。
LIST P=10F200
#INCLUDE <P10F200.INC>
__CONFIG _MCLRE_OFF & _WDT_OFF & _CP_OFF & _IntRC_OSC
CNT1 EQU 0x10
CNT2 EQU 0x11
CNT3 EQU 0x12
ORG 0x00
movwf OSCCAL
bcf OSCCAL,FOSC4
movlw b'11111110'
TRIS GPIO
main_loop
SW_OFF
bcf GPIO,0
call DLY_1S
一部省略-------------------------
call DLY_1S
SW_ON
bsf GPIO,0
call DLY_1S
goto main_loop
DLY_1S
movlw d'100'
movwf CNT3
DLY_100
movlw d'100'
movwf CNT1
DLP1
movlw d'200'
movwf CNT2
DLP2
BTFSC GPIO,1
GOTO SW_ON
decfsz CNT2,f
goto DLP2
decfsz CNT1,f
goto DLP1
decfsz CNT3,f
goto DLY_100
retlw 0
END 改行が多いと怒られた為に見づらくなりました。
別基板では、電源とLEDとスイッチだけでプルアップ等はしていません。
問題でしょうか? >>62
あー、そりゃチャタってんじゃないの?スイッチだけで後はオープンなら現状スイッチ見てるGPIOはどっちか分からんよね?
それを頻繁にスイッチが押されてると勘違いしてる可能性があると思うけど。
そんな事は起きてないって言える?
とアセンブラ見てないけど答えてみる。
説明だと頻繁に押しても押さなくてもLEDの見える部分の挙動は変わらんのよね? 別の10F200に同じの書き込んでも結果は変わらずでした。 >>63 ありがとうございます。
最初、GP3をスイッチとした時にチャタっているようだったのでGP1に変更した所
希望通りに動くようになりました(PICkit3に接続時)
別基板では。LEDが点灯したままです。 >>64
スイッチが押されれば挙動が変わるわけで、どうやってもスイッチを押されない挙動を試してみては?
スイッチが浮いてるとのことなので、スイッチの足から無理やりグランドか電源(OFFになる方)に繋いで確認するとか。
後はアセンブラ読める人に任せたいんだけど連続してスイッチを押したら、点灯時間リセットされたりしない?
いつまでも点灯し続ける様になってるのってそこが原因じゃない?
>>65
GP3っていやな気がしたので調べたらMCLRピンじゃないの。
書き込みピンにノイズ入れたらそりゃ誤作動起きやすいよ… 空いているピンを全て+5Vに接続してみたけど変化無しです。
電源が+5.2Vは問題でしょうか? スイッチのGP1ポートをVSSに接続したらLEDが点灯しないです。
5分後にLEDが10秒点灯すれば正常ですが・・・ 5分後にLED点灯しました。
スイッチの配線が悪いのでしょうか?
GP1ポートと+5Vをショート挿せれば良いという考えは間違いなのでしょうか?? >>67
空きピンは出力設定でほうちでおk
電源は(データシート見てないけど)一応それくらいは許容できたはず。
>>68
>>69
だね、多分ソフトじゃない、ソフトで想定した流れ二つとも行けるって事は命令が正しく下されてないって事。
すごく簡単な説明をすると間違いじゃないけど、アナログ的な問題でどこからかノイズか何か拾ってる。
それがGP1を時々HIレベルにしてるせいでいつもスイッチが押されてるよーって反応を返してるだけみたいだね 解決したみたいです。
空きピンは放置しました。
スイッチのGP1とVSSを10KΩの抵抗で接続して
VDDとGP1をショートさせる事で希望通りの点灯となりました。
回路図を上手に示せれば簡単に解決出来たと思います、申し訳ないです。
ありがとうございました!! >>71
解決しておめでとう、自分はアセンブラ関係全くダメなので、もし困ってる人がいたら助けてあげてほしいな。
それじゃあ、早めに寝るんだぜ。 MachiKaniaを作りたく基板と部品を買いました。
PIC32MX270F256の書きこみが出来ません。
PICKIT2も買いましたがpic32prog.exeが見つからず書き込めません。
LPC1114FN28も購入しましたPIC32_Bootloaders_v2012_10_05.zipもPIC32UBL.exe もみつかりません。
PIC32MX270F256に簡単に書きこむ方法をお教え下さい。 pic32prog.exeは、本家のリンクからgithubへ行けばダウンロードできます。
LPC1114FN28の後は、何のことかわかりません。
参考にしているサイトのリンクを書いてください。
英数字は半角で書いて。 >>73
pic32prog.exeで検索すれば先頭に出てくるじゃん。
悪いこと言わないから、書き込み済みのを分けてもらうか、PICkit3買え。
だいたい、なんでいまどきわざわざPICkit2買うのかわからん。 すみません
PORT入力が変化するとSLEEPから復帰できますが、
この入力本数が多く取れるもの、あるいは増やす方法ないでしょうか?
40pinの16F1939でも、PORTBのたった8本しかなく・・・ >>76
そういうPICがあるなら俺も知りたい。
なければ外部回路かな。
MicrochipのI/Oエキスパンダ―でもできそう。
ttp://ww1.microchip.com/downloads/en/DeviceDoc/20001952C.pdf
数ビットぐらいの増設をシンプルにやっつけるならEX-ORとRC遅延回路+ダイオードORとか。
(構造はシンプルだけど、配線は全然シンプルにならないな…) Sleep復帰専用の16F1822(6本取れる)を複数個並べても良いかと >>78
おおー。それならI/Oエキスパンダ―の使い方を学ぶ必要もないな! >>74
回答ありがとうございます。
>pic32prog.exeは、本家のリンクからgithubへ行けばダウンロードできます。
IDの取得が難しいです。
参考にしているサイトのリンクを書いてください。
http://psp.dip.jp/web/log/PIC32MX.html
>>75
回答ありがとうございます。
pic32prog.exeで検索すれば先頭に出てくるじゃん。
IDの取得が難しいです。
>悪いこと言わないから、書き込み済みのを分けてもらうか、PICkit3買え。
基板を買う時に一緒でないと購入出来ないみたいです。
>だいたい、なんでいまどきわざわざPICkit2買うのかわからん。
PICkit3でPIC32MX270F256の書きこみは難しいようです。
お手数ですがよろしくお願いします。 >>80
お前さあ、わざと英数字を2バイト文字で書いてんのか?
URLへも直で行けないし、サイト内で該当部分検索するのに面倒なんだよ。
もうお前の相手はしない。 >>80
>IDの取得が難しいです。
IDなんか必要ない。
http://psp.dip.jp/web/log/PIC32MX.html
>アクセスできない。
基板を買う時に一緒でないと購入出来ないみたいです。
>PICkit3は、誰でも単体で購入可能。
>PICkit3でPIC32MX270F256の書きこみは難しいようです。
PICkit3で書き込むより難しい方法は、この世に存在しない。
あなたにはたぶん無理だから、素直に書き込み済みのPICを買った方がいい。 >>80
↑のようにレス番号を示すアンカーを打つ時も半角でないと(少なくともWEBブラウザで閲覧する際は)
リンクが張られません。
基本的には、URLや部品名の英数記号は半角で打つ方が読み手にやさしくなります。
> >pic32prog.exeは、本家のリンクからgithubへ行けばダウンロードできます。
> IDの取得が難しいです。
あなたが参考にされているページに掲載されているリンク先
https://github.com/sergev/pic32prog
ここからID取得なしでダウンロードできるようですが。(それとも過去にID登録してて、自動ログインとかになってるのかな?) >>82
まあまあ。
> 基板を買う時に一緒でないと購入出来ないみたいです。
> >PICkit3は、誰でも単体で購入可能。
たぶん>>80が言ってるのは書き込み済みのチップのことで、MachiKania専用基板と
同時購入でないと、チップ単体では買えないってことでしょう。
ところで、>>82さん。全角不等号を自分の発言の行頭につけておられますけど、
少なくとも半角の不等号は、慣習的に元発言の引用に使われていると思います。 んー。
http://psp.dip.jp/web/log/PIC32MX.html
↑ここって、俺の環境だと、一番最初は404エラーでアクセスできなかったのに、
そのあとは、普通にできてる。
>>82さんが見たときも、そのアクセスできないタイミングだったんだろか。 >たぶん>>80が言ってるのは書き込み済みのチップのことで、MachiKania専用基板と
>同時購入でないと、チップ単体では買えないってことでしょう。
http://store.shopping.yahoo.co.jp/orangepico/z2cj9r7ijp.html
なんかもう、PICの質問ちゅうよりは、「インターネットの基本講座」みたいだな。
>>80を見て思うのは、初心者ほど勝手な思い込みが激しく、
そのせいで深みにはまっていく、という現実だな。 >>86
> >>80を見て思うのは、初心者ほど勝手な思い込みが激しく、
> そのせいで深みにはまっていく、という現実だな。
あと「質問において初心者ほどよく情報を後出しにする」と言われます。
これって
・何が必要な情報かがわからない。
・かといっていろいろ書いたら長文ウザイと言われる。
って要素もあるかと思います。聞き出すことも必要ですね。 MachiKaniaのサイトを見てみたけど、
あれだけ丁寧に書かれているのに出来ない場合、
そういう人への対応は、このスレの範疇を超えてると思うね。
その上、>>80を見る限り、他人の意見を受け入れる気は無さそうだ。 73です。
無理だという事がわかりました。
親切な回答頂きました皆様ありがとうございました。
一部の方の蔑んだ回答にはがっかりしました。 >>91
それは残念でしたね。マイコンも、最近はいろいろと難しいですよね。
ところで、英数字を全角で書いていらっしゃるのには、
何か理由でもあるのでしょうか?
全角の英数字になれていないので、聞いてみたいと思いました。
よろしくお願いします。 >>91
何がどう無理なのかな?
わざわざMachiKaniaのサイトやら、Githubやら、リンク先やらまで行って、
調べて回答した俺らの方が、よっぽどがっかりだわ。 >>91
なるほど、めずらしいパターンの荒らしだった。
おかげで、VELUDDA作ろうと思って、だいぶ前にパーツそろえてあったの思い出したぜ。
ありがとう。 PIC10F322をSLEEPさせます。
外部からの入力なしに、一定時間後に、
自力で通常稼働に戻させるにはどうしたらいいですか?
自分なりに調べてはみたんですが、
ボタンを押すとかの、外部からの入力で起こす方法しか見つけられません。
よろしくお願いします。 ありがとうございます。
>>96
時間が自由にならないですが、WDTによる復帰は使えそうですね。
AD変換の話は良く分かりません。
>>97
http://ww1.microchip.com/downloads/en/DeviceDoc/40001585D.pdf
p94のNoteやp100の18.1.6には、ダメそうなことが書いてありますが、
何か方法をご存知でしたら、教えてください。 >>98
AD変換は変換用のクロックをシステムクロック(FOSC)ではなく、独自のFRCにするとスリープ中に
AD変換して終了時にスリープから復帰出来るようになってます。スリープ時にAD変換することにより
動作ノイズの影響を減らす為らしい。まあ時間も1〜6usと個体差も大きく時間の可変も出来ないから
他の用途には出来ませんね。
他にもNCOモジュールならクロック源をHFINTOSCに指定すればスリープ中も動作して割り込みで
スリープから復帰出来るみたいですが、こちらも最長で60ms程なので用途には合わないでしょう >>99
ありがとうございます。
どちらも、SLEEPから復帰はするが、今回の目的には使えない。
という理解でよろしいでしょうか? >>101
曖昧な質問で、大変ご迷惑をおかけしました。
後出しで失礼とは存じますが、
外部からの割り込みを使用しないで、
あらかじめ設定した時間が経過したのちに、
SLEEPから復帰させるのが目的です。
時間は数秒から、長くて30分程度を想定しています。
よろしくお願いします。 >>101
どうでもいいチャチャは入れるけど、
まともな回答は苦手らしいなw
http://hissi.org/read.php/denki/20170122/VFFxdzI2eWg.html
>>102
どうも、Timer1を32kHzとかで回すと、あなたの用に足るようだよ。
なので、そういうPICを選んだ方がいいと思う。
322にこだわるなら、WDTを上手に使うしかない。 >>102
p48を見ると、そこそこいろんな時間が選べるから、
起きたらSLEEPを適当に繰り返して、必要な時間にすればいいんじゃない? 「目的に沿ってない」と質問者が書いたけど、
回答者はその目的を知らないように見えたけど?
>外部からの割り込みを使用しないで、
>あらかじめ設定した時間が経過したのちに、
>SLEEPから復帰させるのが目的です。
>時間は数秒から、長くて30分程度を想定しています。
消費電力を低減したいのであれば、
30分SLEEPし続けさせなくても目的は達成できる。
すでに回答が出ているとおり、
数秒のSLEEPから何回も起き上がりながら、
目的の時間までSLEEPを繰り返せばいい。
SLEEPスリープし続けるのと殆ど消費電力は変わらない。
一般に、質問者の想定は回答者の想定とは異なる。
その認識が違うという事を理解しないと、
双方のフラストレーションが溜まるばかり。 まあ、でもあんた、>>101を見る限り、品性が疑われるよね。
で、>>106は完全な後出しで、>>105の後に良くそれ書いたな、って感じだ。
笑える。 >>104
親切ではないが、ヒントにはなっている。
意外と良い教師である。
>>105
面白味は無いが、的確な回答。
>>ID:TQqw26yh
クソの役にも立たないゴミレス。
>すでに回答が出ているとおり、
弁解がましくて哀れ。 SLEEPを使って消費電力を減らすときにはWDTを使うと
劇的に消費電力を減らすことができます。
割り込みがない10Fシリースでも繰り返すことで長い時間
SLEEPさせたプログラムを自分でも使用しています。
(コンパイル時にClear bssオプションをはずすことと
起動時のリセット要因で判断して変数の初期化する必要がある) >>106
何か言ってること変だよ。
SLEEPでなくてBOOSTだったとしても、
「繰り返し行って時間を調節する。」
という回答になってたはず。
つまり、省電力はたまたま結果として目的だと言えるのであって、
逆に電力の浪費が目的だったとしても回答そのものに差はない。
わざわざそこに食いつくアンタの書いた>>101には、悪意しか見えない。
自分自身の悪意をコントロールできないフラストレーションを
外にまき散らしながら生きる人は迷惑。 「MachiKania」の製作をされている >>73 さん へ。
http://jikken.jp/MachiKania/pic32wm.htm
をご覧の上(自分が行ったもろもろを記載しています)。
http://8130.teacup.com/kenken/bbs
で質問してみて下さい(ケンケン様のMachiKaniaのサポート掲示板とも言えるところです)。
ここの皆さんは親切なのではありますが自分や >>73 さんのような思い込みや自分が、、、という所が強いの
です。
PICKITとpic32progでPIC32MX270F256に書き込んでいる人も少ないと思われます。
>>82
>>IDの取得が難しいです。
>IDなんか必要ない。
自分も言われているのですがGithubは、使い方に難しい面があると思われます。
設定(Github使用者の)や環境でダウンロードしようとするだけではログインを要求される事があります。
(自分は正しい使い方を理解していないので不明な部分がある事はご了承下さい。)
(同じ事でも必要ないという方もいるのでOSブラウザ、ネット環境の可能性があります。)
>>PICkit3でPIC32MX270F256の書きこみは難しいようです。
>PICkit3で書き込むより難しい方法は、この世に存在しない。
「難しい方法 ??」
PICKIT2 と pic32prog と 書き込むHEXファイルがあれば
DOSコマンドで「pic32prog ファイル名.hex」だけで書き込めます。
PICKIT3でpic32progを使う場合は、
PICkit 3 Programmer App and Scripting Tool を PCにインストール そのソフトで一緒にインストール
されるソフトを「PICKIT3」に送り込む事が必要です。
pic32prog使用の用途なら PICKIT2もありです(互換品が安く買える)。
PICKIT3と「MPLAB X」 も 自分のように 「MPLAB X」がインストールできない動作しないという環境もあるのです。
OSの問題、環境の問題いろいろあるようです。
pic32prog.exe のありかですが
http://www.ze.em-net.ne.jp/~kenken/tools/pic32prog.exe
簡単にダウンロード出来ますがPIC32MX270F256には書き込めません(バージョンが古い?)。
https://github.com/sergev/pic32prog/raw/master/pic32prog.exe
githubの最新と思われるもの直接リンク。
自分の環境ではログインを求められ(求めらない場合は反応なし)ますがネットカフェのマシンではダウンロード出来ました
しかし、自分の環境では動作せず(ダンマリ)。
https://github.com/sergev/pic32prog/raw/e788d572ddeea63add8addf12a8f17d9b2099c5c/pic32prog.exe
インターネットアーカイブから紐解いてきたアドレス。
これだとPIC32MX270F256には書き込可能。
ただし、イレース(書き込み前のイレースは自動的に行われる)コマンドにないようです。
書き込みの一連(イレース、書き込みベリファイ)は正常に動作して「MachiKania」も正常に動作しています。
githubにしてもpic32progにしても使い方の問題なんでしょうけど誤魔化し、騙して使う事を模索している状態です。
「MachiKania」は、大変に良く出来たシステムで公開されているソフトだけでもそれなりに
遊べます。
諦めずに作っていただくよう希望します。 PICkit2ではPIC32MXに書き込めないからpic32prog.exeを使う。
これから始めるのにPICkit2を買うことはない。
PICkit3の互換機は千円台で買える。
サイトの説明を読めば、PICkit3を使う前提で書いてあるのは明らか。
すでにPICkit2を持っている人がPICkit3を買わずに済むように、
pic32prog.exeの話が書いてある。
問題は、説明を読み、理解し、実行する能力の有無であって、
それが難しいならやめた方がいい。
安くて簡単に入手でき、子供でも扱えるゲーム機はいくらでもある。
>>113
>自分のように 「MPLAB X」がインストールできない動作しないという環境もあるのです。
>OSの問題、環境の問題いろいろあるようです。
それ、詳しく教えて。
どういう環境なのか知りたい。 ID:bGm0WyRR = ID:0tSyma+S ユーザー名に全角文字があると動かないってのにはまって時間とカネを盛大に無駄にした
せめてこのくらいはMPLABのFAQに載せておきやがれ それ、MPLABに限ったことじゃない。
システムや開発環境に、不用意に全角文字を用いない方が良い。
「MPLAB 起動しない」
で検索すりゃ0.3秒で解決策へのリンクが表示されるけどね。
その程度の人でもマイコンを使える。
いい世の中になったってことだね。 >>118
トラブルの原因は自分の無知なのに、それを認めようとしない。
そういうあなたのスタンスそのものが、無駄を呼び込んだの。
つまり、自業自得。 勝手なこと言ってくれる
10年少し前に本の解説見ながらやっての話なんだよな それはアンタの勝手で、何の自慢にもならない。
むしろ、情報収集能力の欠如は無能さの要因の一つ。 Unicodeベースなら問題無いのだが、WindowsがSJISなせいでそういう問題が起こる。 ソフト開発者が2バイト文字コードに考慮しないからそうなる 一応書いておきます。
>>114
>これから始めるのにPICkit2を買うことはない。
その通りです。
投売りされている PICkit2も手だという事。
(実際はそんなに投げ売りでな無いですけどね。)
pic32progを使うのも簡単だという事。
>安くて簡単に入手でき、子供でも扱えるゲーム機はいくらでもある。
これを書いてしまったらおしまいでしょう。
>どういう環境なのか知りたい。
JERの関係らしいとだけ書いておきましょう。
全角文字の問題ではありません。
自分の場合は、12F 16F しか使ってないからX無しのMPLABで間に合ってます。
よって細かい事は調べてません。(オラクルと喧嘩するのも面倒。) >>125
JERの関係らしいとだけ書いておきましょう。
JREの関係らしいとだけ書いておきましょう。
の間違えです。 秋月で買っても、16bitのPICはそんなに高くないと思うけど、
なぜ8bitの16Fが、まだまだ使われるのでしょうか?
16bitのPICだと不都合なことがあるのかなぁ PIC18F46K22で2個あるMSSPでSPI通信のテストしています。
SPI Master#1とSPI Slave#2でSCK1->SCK2, SDO1->SDI2, SDO2->SDI1と接続します。
SSP2BUFに0x12をライトして、SSP1BUFに0x34をライトするとSSP1IFとSSP2IFの割り込みが発生して、
SSP1BUFをリードすると0x00でSSP2BUFをリードすると0x34となります。
SDI1をオシロで観察するとSlaveが0x12を出ているのですが、Masterには何故か0x00となっています。
何故なんだろう? >>125
>>113の人?
自分はPIC32MXを使う環境でもなく、使ったこともなく、
MPLAB Xがインストールすらできない問題について詳しく原因を調べてもない。
で、そのいい加減な知識で、これからPIC32MX使おうという人にアドバイスしてるわけ?
いずれにしても、初心者スレでPICkit2を進めるのは、明らかなミスリード。
サポートが終了している物を薦めるあなたには悪意を感じる。
それとも>>117の言う通りなの? >>127
チップの選択から始めて、1からプログラムを書くならそういうことになる。
16bitどころか、HarmonyとPIC32の組み合わせの何と効率の良いことか。
でも、既存の物を使いまわすとか、先人の作例を踏襲するとかなら、古いPICを使う。
8bitで十分な用途も依然としてたくさんある。
そういう過去の資産が豊富にあるので、古いPICの出番がなくなることは無い。 最近16F1827使い始めたんだけど割り込みが複雑になっててなんかよくわからないんで質問します
1)
IOCIFとIOCBFのクリアについてなんだけどこれどっちが正しいの
INTCONレジスタの IOCIF ビットはRead only で直接クリアすることはできませんが、セット原因となった
IOCAFまたはIOCBF レジスタを全てクリアすることでIOCIF ビットもクリアします。
http://sky.geocities.jp/home_iwamoto/page/P16F/P16_A09.htm
割り込み条件になると割り込み関数が実行されます。状態割り込み自体のフラグはIOCIFフラグになりますが、
これは自動的にはクリアされないので、割り込み関数内でクリア(0にすること)します。
8個ある端子のどの端子が変化したかはIOCBFレジスタで確認できます。IOCBFも自動的にクリアしない
ので、割り込み関数無いでクリア(0にすること)する必要があります。
http://www.robotsfx.com/robot/robohow/RoboHow154/RoboHow154.html
2)
なんで二つもフラッグがあるんだろ
どう使いわければいいの >>131
データシートを開いてIOCIFで検索するといいよ。
http://ww1.microchip.com/downloads/en/DeviceDoc/41391D.pdf
p86 Note 1
>The IOCIF Flag bit is read-only and cleared
>when all the Interrupt-on-Change flags in the IOCBF register
>have been cleared by software. >>131
基本、>>132の通り。
最初の引用はピン数の違いで1827にはIOCAFが無いことを除けば合ってる。
2番目の引用はIOCIFのクリアの件がちょっと曖昧。
レジスタを1つずつチェックするの面倒だから、
IOCBFでいっぺんにわかるように用意したんじゃない? ×IOCBFでいっぺんにわかるように用意したんじゃない?
○IOCIFでいっぺんにわかるように用意したんじゃない? >>127
たとえば、どれなら使いたい?
16bit PIC >>137
どうしても金に困ってるなら、サンプルもらえばタダだろ。
どうでもいい揚げ足取りは止めようぜ、ホントみっともない。 価格について自分でレギュレーションかけて楽しんでいる人はいるだろな。 >>138
揚げ足とり???
16bitの値段で32bitが買える
16bitが売れないのは高いから
同じ値段で比べるとショボいから
要するに16bitは糞 >16bitの値段で32bitが買える
そりゃね、いろいろあるから。
>16bitが売れないのは高いから
ソースどこ、脳内?
>同じ値段で比べるとショボいから
具体的にどぞ。
>要するに16bitは糞
どこの要点をつまんだのやらw おまいらmicrochipの社員でもないのに熱いな。 >>145
それ、ぱっと見で、例えば、PIC32はADCが10ビット、PIC24は12ビットです。
何をどう比較しろというおつもり?
ダメだな、やり直し。
>16bitが売れないのは高いから
このソースはまだなの? これを見て高いと思わないとwww
まさしく情弱www >>ID:MpNEVV+k
同じ値段でPIC24の方が高性能な例を示しただけの徒労に終わりましたね。
ちなみに、扱いやすいSPDIP28pinで、ADC12bitなPIC32は1つしかありません。
一方で、16bitでは、PIC24だけでも11個、dsPIC入れたら大変な数です。
それだけ選択肢があるのです。
さて、
>16bitが売れないのは高いから
このソースはまだなの? ADCのビット数マニアかwww
32bit ADCでも積んでオナってろwww >>152
たまたま、あなたの最初の比較例を見たら、
あら不思議、PIC24の方が高性能な項目がある!
それがADCだっただけですよ。
あなた、墓穴を掘りましたな。
それより、
>16bitが売れないのは高いから
このソースはまだなの?
それとも、その遠吠えで、もうお開きにする? PIC32は数値上では高性能かも知れないけど
何に使うかによっては性能を生かせないことが多いかもしれません
しかも、今までの使用実績もあるしそれほど高性能(数値上)
の必要がないのも事実かもしれません
自分も24FやdsPICは非常に良く出来ていると思っているし
普段使うのに十分な性能だと思うけど。
(消費電力の点ではもう少し何とかならんのか〜〜と思うことは
あるけど) 8ピンPICで消費電流とI/O本数の限界を極めようとすると
8bitしか選択肢ないんだよなー
14pinの24Fシリーズは待機電流も多いし >>153
俺はあんたの方が分が悪いと思う
皆が皆ADC使うわけじゃないしな
作例もあまり見たことないわ
統計ソースはなくて、あくまで個人的な印象だけど >>156
>あくまで個人的な印象だけど
脳内情報だけを頼りに物を言ってる自覚はあるんだな。
その愚かさに気づけば、そこらの猿よりはましになれるのに。
ADCで一本取られた腹いせに、ADCそのものを否定したいようだね。
残念ながら、アンタが必要と思わなくても、ADCはすべてのPIC32に載ってるよ。 24Fは変態アーキテクチャじゃないから安心
16Fはマトモなスタックもないのにローカル変数をよく実装できるもんだ 確かにADCのbit数もポイントだけど、プログラムを組むのに16bitのほうが楽ではない?
1回作ってしまえば使い回しで行けるし。クロックも早いので処理も速い。
特にUARTで960kbpsが使えるのは嬉しい。intが16bitなので、65535まで扱えるし、
メモリーも多い。CRCもあるし、UARTも2chあるし、ICSPピンが3カ所選べれるし >>159
PIC32に比べたらPIC24は変態アーキテクチャー >>158
> ADCで一本取られた腹いせに、ADCそのものを否定したいようだね。
誰がそんなこと言ってんだよ
人のこと猿呼ばわりする前に日本語勉強しとけ
それとも顔真っ赤で冷静さ失っちゃってんのか? >>160
クロックが速い?
別に速くないでしょ
処理が8bitに対して速いのはクロックが速いからじゃない
クロックあたりの命令数も命令あたりの処理量も16bitの方が上だから
ていうか、PICの8bitが遅すぎる
16bitも他のメーカーに比べたら遅い PIC32MXがある今ではPIC24はnot recommend for new design 状態 >>167
レスありがとうございます。CKEが0だったので1にしましたが、結果変わらずです。
初期化部抜粋
TRISCbits.RC3 = 0; // RC3: SCK1(OUT)
TRISCbits.RC4 = 1; // RC4: SDI(IN)
ANSELCbits.ANSC4 = 0; // RC4: アナログ入力禁止
TRISCbits.RC5 = 0; // RC5: SDO(OUT)
SSP1STATbits.SMP = 0;
SSP1STATbits.CKE = 1;
SSP1CON1bits.WCOL = SSP1CON1bits.SSPOV = 0;
SSP1CON1bits.SSPEN = SSP1CON1bits.CKP = 1;
SSP1CON1bits.SSPM = 0b0010; // FOSC/64 = 1MHz
PIR1bits.SSP1IF = 0; // 割り込みフラグクリア
IPR1bits.SSP1IP = 0; // 低位割り込み設定
PIE1bits.SSP1IE = 1; // 割り込み許可
TRISDbits.RD0 = 1; // RD0: SCK2(IN)
ANSELDbits.ANSD0 = 0; // RD0: アナログ入力禁止
TRISDbits.RD1 = 1; // RD1: SDI(IN)
ANSELDbits.ANSD1 = 0; // RD1: アナログ入力禁止
TRISDbits.RD4 = 0; // RD4: SDO(OUT)
SSP2STATbits.SMP = 0;
SSP2STATbits.CKE = 1;
SSP2CON1bits.WCOL = SSP2CON1bits.SSPOV = 0;
SSP2CON1bits.SSPEN = SSP2CON1bits.CKP = 1
SSP2CON1bits.SSPM = 0b0101;
PIR3bits.SSP2IF = IPR3bits.SSP2IP = 0;
PIE3bits.SSP2IE = 1;
低位割り込み抜粋
if (PIR1bits.SSP1IF == 1) {
SPI1RxData = SSP1BUF;
PIR1bits.SSP1IF = 0;
SPI1flag = TRUE;
}
if (PIR3bits.SSP2IF == 1) {
SPI2RxData = SSP2BUF;
PIR3bits.SSP2IF = 0;
SPI2flag = TRUE;
}
main抜粋
SPI1flag = SPI2flag = FALSE;
SSP2BUF = 0x12; // スレーブデータセット
SSP1BUF = 0x34; // マスターデータセット
while (1) {
if (SPI1flag) {
printf("From Slave Data = %02Xh\r\n", SPI1RxData);
SPI1flag = FALSE;
break;
}
}
while (1) {
if (SPI2flag) {
printf("From Master Data = %02Xh\r\n", SPI2RxData);
SPI2flag = FALSE;
break;
}
}
結果
From Slave Data = 00h
From Master Data = 34h
Slave Dataが12hになってくれない。 >>172
そうやって並べてみると
そもそも、言葉は汚いし、書いてることに論理性のかけらも無いし
相手しちゃダメな人だったなw >>168
それでマスター側で受けられそうな気がしますね。
試しにマスター側の割込み内先頭でSPIの1クロック分Delayしてみては如何でしょう? >>172
> >ADCなんて誰も使わないから
だからそんなこと誰が書いてるの?
引用記号であたかもそんな発言があるように見せかけて、あんたやり方が汚いね >>168
SDI1ピンをHIGH固定にして0xff受かるの? >>176
FF来ました。
オシロで見ると波形でてるが???
もう少し配線確認してみます。 >>174
割り込み処理はフラグ立てるだけにして
mainでSSP1BUFをリードするようにしたが、何度やっても結果変わらずです。
低位割り込み抜粋
if (PIR1bits.SSP1IF == 1) {
PIR1bits.SSP1IF = 0;
SPI1flag = TRUE;
}
main抜粋
while (1) {
if (SPI1flag) {
printf("From Slave Data = %02Xh\r\n", SSP1BUF);
SPI1flag = FALSE;
break;
}
} >>175
>PIC32はADCが10ビット、PIC24は12ビットです。
のあとで、
>皆が皆ADC使うわけじゃないしな
>作例もあまり見たことないわ
と逃げるやり方が汚いから強調されたんでしょ。
俺が見ても「あ、屁理屈でかわしたな。」って思った。
最初からフェアなら誰もいじらないよ。 >>178
RC3のアナログ入力禁止が抜けてる様に見えるけど。 >>178
うーん…解らんなぁー
マスター(SSP1)のSDOとSDIをショートすると、マスター側へ0x34が到着するだろうか? >>182
レスありがとう。
RC3はSCK1のOUT設定なのでアナログ入力禁止は不要と思っています。
アナログ入力禁止はデジタル入力割り当て時と思います。
TRISCbits.RC3 = 0; // RC3: SCK1(OUT)
また、SlaveのSCK2(IN)に入力されてMasterのデータを受信できているのでRC3は稼動している思います。 >>183
ありがとうございます。
それ明日やってみます。
それでも解決しない場合はMSSP1をスレーブでMSSP2をマスターに入れ替えてやってみます。 PIC32MXの一部はパイプライン利用で高速化している
使わなければ30MHzで命令読込動作
16bitデバイスは1命令の場合にクロック÷2の命令読み込み
(70MIPS 16bit除く)
つまり
割込をマイクロ秒でやる制御対象の場合
32bitは使い勝手悪過ぎ
16bitは使いやすい
ARMも似たような仕様多いけど
命令読込が100MHzとかで速いから
レジスタ退避の時間のみを考慮してやればいい
PIC32はウェイトバリバリ入りまくり
どっちかっていうと変態はPIC32じゃないのかな?
上はスーツで下はブリーフみたいな
変態紳士って感じするねPIC32は、、 どうせLチカ程度しか使わないので
PIC16で十分 しかし、クロックが速いのは何かと助かるよね。
へたくそなプログラムでも高速に走るし。
少ないメモリ、遅いクロックで悩むのは、もう終わりにしませんか?
PIC24FVなら、
・3.3Vでも5V電源でも使える
・DIP〜QFPまであり、使いやすいパッケージ。
・クロック用にPLL入ってる
・EEPROM内蔵
・UART 3ch
・割り込みベクトルがあるので、割り込み要因評価が不要 PIC32ついでに質問
XC32でハードウェア除算器使う場合って
どうやるん?
整数同士の割り算なんだけど普通に"/"使うと時間掛かって使い物になりません
XC32にビルトイン関数あるの?
見つけられない 判断は時間だけか。アセンブラのコード見たりしないのか? >>189
音声を圧縮変調してLEDトランスミッター作るとか? >>190
秋月で370円もするんか・・・28ピンってのも大きすぎるし ◆PIC24FV32KA302
??370
16bit / 32MHz / 16MIPS
ROM 32KB / RAM 2KB
ADC 100ksps
http://akizukidenshi.com/catalog/g/gI-09295/
◆PIC32MX270B-50
??380
32bit / 50MHz / 50MIPS / 83DMIPS
ROM 256+3KB / RAM 64KB
ADC 1.1Msps
USB OTG
32bit timer
JTAG
http://akizukidenshi.com/catalog/g/gI-10894/ >>191
普通にコンパイラが勝手に使うでしょ
除算はスーパーコンピューターでも遅いから、パフォーマンスが問題になるようなら、なるべく使わないですむようにアルゴリズムをかえる >>183
マスターのSDI(RC4)とSDO(RC5)を接続してみました。
結果
From Slave Data = 00h
From Master Data = 00h
です。
残念ながら0x34にはなりませんでした。
スレーブのSDI(RD1)はオープンですが、0x00となりました。 >>189
Lチカを馬鹿にしちゃ〜〜〜いけねいよ。
8PIN PICでLED20個を16階調で点灯させるくらいは
4MHzでもできるよ。
プログラム能力があればだけどね・・・・・ >>193に対してずいぶんとレベルが下がったな
でも8pinマイコンだと20個個別に16階調は外部回路必須だよね
どんな回路がシンプル? >>197
SCKは、予定通りの1MHzになっていますか? >>197
SDIはシュミット入力だからVIHに注意が必要
SDI1の"H"レベルが足りているか
0xFFが受信できたときの電圧レベル
あたりが気になる >>200
オシロで確認しました。
SCKは1MHzでSDOはSCKの立ち上がりで確定しています。
0x34です。
SCK ~~~|_|~|_|~|_|~|_|~|_|~|_|~|_|~|_|~~~~~
SDO _________|~~~~~~~|___|~~~|_____________
です。 >>201
Low 0V
High 5V
ほぼフルスイングしています。 >>198
素直に14pinで作った方が安くて小さくて簡単じゃない?
8pinの回路図が見たい >>202
SDI1ピンをHigh固定で0xffを受信
SDI1ピンをSDO1ピンからロールバックすると0x00受信(SDO1から0x34の波形)
矛盾しているようで良く解らんけれど
SDO1から0xffを送信してロールバックすると、やはり0x00を受信するんだろうか? >>195
コミュ障乙
>>190はこう書いとる。
>PIC24FVなら、
>・3.3Vでも5V電源でも使える
あと、その程度のリンクは誰でも探せるから、わざわざ張らんでええわ。 >>205
SDOから0xffでSDIにロールバックすると0x00でした。
SCKが出ている間はSDIはHをオシロで確認しました。
SDIをVddに接続すると0xffでGNDに接続で0x00です。
もうわけわからんです。 関係ない話ですが、main()の中でSPIのテストをしてますが、
SPIテスト以降のコードに行くのを止めるために
while (1) ;
を挿入するとビルドが数十秒のところ6分くらい待たされます。
これって以降のコードに到達できないのを最適化か何かで考え込んでいるのでしょうか?
環境はMPLAB X IDE 3.51 + XC8 1.40です。 >>206
あんたのレスも内容ないから、わざわざ書かんでええわ。 >>207
>>208
不思議な具合ですな。
208の環境で2,3行のmain()をコンパイルしてみた。
main()を抜けると、再びmain()へ戻ってくるニーモニックが作成されているみたい。
From Slave Data = XXh
From Master Data = XXh
この2行表示が繰り返されているんでしょうか。
PS.
while(1);をmain()の最後へ入れても、変化ありませんでした。 >>206
ほんそれ。
PIC32には5Vで駆動できるのが無いけど、PIC24なら5.5Vがそろってる、
というのが結構大事なポイントなのに。
わざわざそこ隠して引用してる>>195は、いったい何を比較させようってんだかw
まあ、よく知らないんだろうね。 >>210
帰宅しました。
最初のmain抜粋
初期化など
SPI1flag = SPI2flag = FALSE;
SSP2BUF = 0x12; // スレーブデータセット
SSP1BUF = 0x34; // マスターデータセット
while (1) {
if (SPI1flag) {
printf("From Slave Data = %02Xh\r\n", SPI1RxData);
SPI1flag = FALSE;
break;
}
}
while (1) {
if (SPI2flag) {
printf("From Master Data = %02Xh\r\n", SPI2RxData);
SPI2flag = FALSE;
break;
}
}
SSP2BUF = 0x56; // スレーブデータセット
SSP1BUF = 0x78; // マスターデータセット
while (1) {
if (SPI1flag) {
printf("From Slave Data = %02Xh\r\n", SPI1RxData);
SPI1flag = FALSE;
break;
}
}
while (1) {
if (SPI2flag) {
printf("From Master Data = %02Xh\r\n", SPI2RxData);
SPI2flag = FALSE;
break;
}
}
while (1) ;
これ以降もコード数十行あります。
ここまで
結果
From Slave Data = 00h
From Master Data = 34h
From Slave Data = 00h
From Master Data = 78h
でした。 >>210
while (1) ; の件
自宅のPCでもやってみた。
今までと同じPIC18F46K22を選んでSource Filesにnewmain.cを作成
-------------------------------------------------------
#include <stdio.h>
#include <xc.h>
void main(void) {
int i,j;
for (i = 0 ; i < 256 ; i++) {
printf("%d\r\n", i);
}
while (1) ;
for (j = 0 ; j < 256 ; j++) {
printf("%d\r\n", j);
}
return;
}
-------------------------------------------------------
ここで while (1) をコメントでビルドすると4秒で終了する。
コメントを外すと1分10秒にもなる。 5Vだと青色とかフルカラーとかのLEDが直接チカらせられるよね
勿体無いことするなとか言われそうだけど >>212
抜粋じゃなくて、コンパイル可能な最小限のコードを出すこと。
行数オーバーで書き込めないなら、行を詰めて複文にしてもOK。
今まで出てきていない懸案事項、
(1) GIE/PIE関係の設定がない。
(2) 割り込み内で使う変数定義が不明。
(3) 割り込み関数(名)の記述が不明。 省略せずに書け。
やってみること。
割り込みを使わずに、データの授受を試すこと、
まずこれが問題を切り分けるポイントになる。 >>215
承知しました。
明日、最小限のコードで再現後にアップします。
よろしくお願いします。 色々あってMSSP1とMSSP2の入れ替えコードでの評価はやれてません。
ごめんなさい。 >>204
5ピンあれば外部回路なしにLED20個は接続できるし
16階調くらいならソフトPWMでも何とか表示できるよ
Charlieplexing方式使えば・・・ >>220
方法そのものは、普通に使ってるが、
恥ずかしながら、名前知らんかったわ。
なんかうれしい、ありがとう。 >>220
実際やってみると輝度ムラが出る
抵抗値調整すれば改善はある程度できるけど やったのか
どういうアプリケーション?
ゲームとか?
まさかLEDを光らせること自体が目的の回路?
多色LEDなんかは固体差で色が変わっちゃうよね
キャリブレーションしないと
当然ソフト的に >>213
おー、こちらでもLITEモードだと50秒、PROだと1秒となりました。
原因は、不明ですが
while(1) NOP();
無意味な命令を突っ込んやるとLITEでも1秒で終わるみたい。
SPIの方は、解らんけれど… なんか色々とヤバイな
回路
複数ボタンを同時に押すとマズイ
ソフト
どこから突っ込んで良いかわからない
3回処理が走る理由
IOCBFnをクリアしてないから
intrの先頭でIOCBFnが立っていたら3回ともifの条件に当てはまる >>215
なんとか60行にいれました。
#include <pic18f46k22.h>
#include <stdio.h>
#pragma config FOSC = INTIO67
#pragma config PLLCFG = OFF
#pragma config PRICLKEN = OFF
#pragma config FCMEN = OFF
#pragma config IESO = ON
unsigned char SPI1RxData, SPI2RxData;
volatile int SPI1flag = 0, SPI2flag = 0;
volatile long TimerTickCount = 0L;
void putch(unsigned char data) {
while ((PIR3 & 0x10) == 0) ;
TXREG2 = data;
}
void interrupt low_priority ISR_L(void) {
if (PIR1bits.SSP1IF == 1) {SPI1RxData = SSP1BUF; PIR1bits.SSP1IF = 0; SPI1flag = 1; }
if (PIR3bits.SSP2IF == 1) {SPI2RxData = SSP2BUF; PIR3bits.SSP2IF = 0; SPI2flag = 1; }
if (INTCONbits.TMR0IF) {TMR0L = 131; TimerTickCount++; INTCONbits.TMR0IF = 0; }
}
void main(void) {
char data;
TRISA = TRISB = TRISC = TRISD = TRISE = 0;
OSCCON = 0x70; OSCTUNEbits.PLLEN = 1;
RCONbits.IPEN = INTCONbits.GIEH = INTCONbits.GIEL = 1;
PORTDbits.RD6 = 1;
TXSTA2 = 0x04 | 0x20; RCSTA2 = 0x80 | 0x10; BAUDCON2 = 0x08;
SPBRG2 = (unsigned char)(((64000000L / 4L) / 115200L) - 1L);
SPBRGH2 = (unsigned char)((((64000000L / 4L) / 115200L) - 1L) >> 8);
PIE3bits.RC2IE = PIE3bits.TX2IE = 0;
TRISCbits.RC3 = 0; TRISCbits.RC4 = 1;
ANSELCbits.ANSC4 = TRISCbits.RC5 = SSP1STATbits.SMP = 0;
SSP1STATbits.CKE = 1; SSP1CON1bits.WCOL = SSP1CON1bits.SSPOV = 0;
SSP1CON1bits.SSPEN = SSP1CON1bits.CKP = 1; SSP1CON1bits.SSPM = 0b0010; // FOSC/64 = 1MHz
PIR1bits.SSP1IF = IPR1bits.SSP1IP = 0; PIE1bits.SSP1IE = 1; data = SSP1BUF;
TRISDbits.RD0 = 1; ANSELDbits.ANSD0 = 0; TRISDbits.RD1 = 1;
ANSELDbits.ANSD1 = TRISDbits.RD4 = SSP2STATbits.SMP = 0;
SSP2STATbits.CKE = 1; SSP2CON1bits.WCOL = SSP2CON1bits.SSPOV = 0;
SSP2CON1bits.SSPEN = SSP2CON1bits.CKP = 1; SSP2CON1bits.SSPM = 0b0101;
PIR3bits.SSP2IF = IPR3bits.SSP2IP = 0; PIE3bits.SSP2IE = 1; data = SSP2BUF;
INTCON2bits.TMR0IP = 0; T0CONbits.T08BIT = 1; T0CONbits.PSA = 0;
T0CONbits.T0PS = 6; T0CONbits.T0CS = 0; TMR0L = 131; INTCONbits.TMR0IE = T0CONbits.TMR0ON = 1;
while (TimerTickCount < 1000L) ; printf("START!\r\n");
for (int i = 0 ; i < 10 ; i++) {
SPI1flag = SPI2flag = 0;
SSP2BUF = 0x12; // スレーブデータセット
SSP1BUF = 0x34; // マスターデータセット
while (1) {
if (SPI1flag == 1) {printf("From Slave Data = %02Xh\r\n", SPI1RxData); SPI1flag = 0; break; }
}
while (1) {
if (SPI2flag == 1) {printf("From Master Data = %02Xh\r\n", SPI2RxData); SPI2flag = 0; break; }
}
}
while (TimerTickCount != 0L);
} >>228
結果です。
START!
From Slave Data = 00h
From Master Data = 34h
上記2行が10回繰り返されます。
mainの最後にwhile (1) ;を入れるとビルドが待たされるので別の記述にしました。 まず黒丸が無いから全く読めないよねw
十字は非導通T字は導通と好意的に読んでも、SW関係なく常時全端子が導通で藁 それぞれのスイッチにダイオード咬ますかしたほうがいいんじゃないの LFの付いたやつで工作されてる方に質問なのですが、実際何ができるものなんでしょう?
電源範囲が低すぎてイマイチピンと来なくて質問なのですが
赤外線LEDは浮かんだんですがそれ以外はさっぱり Tの場合は黒丸を書かなくても良いと言う話があるのだが…
それとも直線に接続されずに無接続に見えるのか? 接続点に黒丸付けないなら、交差での非接続を明示するのが決まり。
T字の扱いなどはローカルルールだから仲間内に留めておけ。 >>228
手元にMSSPが2つ入ったPIC16F1829が有ったので暇に任せてSSP1とSSP2とを繋いでみました。
>>228のプログラムを辻褄合わせして(クロックは32/16=2MHz)動作させてみると10回とも0x12,0x34を受信しました。
うーん、デバイスのバグだろうか? >>236
そうですか、初めてのPICでハズレ(18F46K22)を引いてしまったのか??? >>237
ある品種用に書かれたプログラムを使いたい品種に移植して動くようになるかは全部お前の責任。
石のせいなんかすんなボケ。 >>237
マスターからスレーブへは、到達しているのだからERRATAの内容を試してみては如何?
プログラムの最初の方で
#define _XTAL_FREQ 64000000
を入れておいてSSPxBUFを読む直前に
__delay_us(2);
を入れて試してみるみる。どうかな? >>237
以下のように割り込みを使わない方法ならどう?
...
...
PIE1bits.SSP1IE = 0;
PIE3bits.SSP2IE = 0;
while (TimerTickCount < 1000L) ; printf("START!\r\n");
for (int i = 0 ; i < 10 ; i++) {
PIR1bits.SSP1IF = PIR3Bits.SSP2IF=0;
SSP2BUF = 0x12; // スレーブデータセット
SSP1BUF = 0x34; // マスターデータセット
while (1) {
if (PIR1bits.SSP1IF == 1) {printf("From Slave Data = %02Xh\r\n", SSP1BUF); PIR1bits.SSP1IF = 0; break; }
}
while (1) {
if (PIR3Bits.SSP2IF == 1) {printf("From Master Data = %02Xh\r\n", SSP2BUF); PIR3Bits.SSP2IF = 0; break; }
}
}
while (TimerTickCount != 0L);
} >>239
2回やって受けられてないから、待ちの問題じゃないと思う
>>237
端子を単純なインプットにしてLOW HIGHとも正しく受けられるのかテスト
PIC18F46K22 が2個あれば交換してみる
別のマイコンから送信してみて、片方だけ受けられないのか調べる
スペックシートを見直す
エラッタを見直す
回路を見直す >>238
移植はしていませんよ。
初めてのPICでSPIのテストをしているのですが? >>239
レス、ありがとうございます。
次回実験できるのは週明けになりますが必ず試します。 >>241
レス、ありがとうございます。
次回実験できるのは週明けになりますが必ず試します。 >>242
エラッタの内容が理解できていない A(^^;)
翻訳サイトで日本語にしてもイミフ
教えてくれませんか?m(__)m
MasterのSDIをVDDに接続すれば0xffでGNDなら0x00です。 ダイオードなんかかますわけないだろ
おまいら何いってんの >>242
帰ってきた。お湯割り飲んでもた
>>242 >2回やって受けられてないから
なるほど、1回前が遅れてBUFに転送されてれば2〜10までは、その値になるな。
そうだと、これは謎だな。
マスター送信→マスター受信のループバックNG
マスター送信→スレーブ受信OK
スレーブ送信→マスター受信NG
スレーブの送信かマスターの受信が何らかの不具合だと思うんだけど…なんだろ? 16F1829で正常にバイト交換ができた時のSPI1,2の波形を取ってあった。
http://www.mars.dti.ne.jp/~m7030/SDO1.png
http://www.mars.dti.ne.jp/~m7030/SDO2.png
横軸500nS/Div。 >>246
CKE=1 の場合はエラッタを回避してることになるので、
今回の場合はSPIのエラッタ、無関係です。 >>232
CR2032リチウムコイン電池駆動回路作るときにLFは必須やな
タクトSWで起動して処理終わったらSleepするような用途に最適
通常のFだとPowerdown電流食いすぎて1年くらいで電池無くなる 先にGIEをONにしていろいろやってるのが気持ち悪いな
全部設定が終わってからやるもんじゃないの? 今度は
if(IOCBF4==1){}
のとこを変えて
if(RB4==0){}
にしてみたんだけど、、相変わらずどのスイッチ押しても連続して3回プログラムが実行される
どこがいけないんだろ
回路図
http://www.geocities.jp/nnaa66yy/kiroku2017/haisen.jpg
プログラム
http://www.geocities.jp/nnaa66yy/kiroku2017/pgm-2.txt 回路(回路図?)を直す気はないんかいw
本当にその回路でやってるならソフトを確認するまでもなく絶対動かない 回路を直さなくても同時押ししなければ動く
同時押しすると壊れるかもしれないけど
それよりソフトがひどい 優秀な技術者が育っておるようじゃのう...
日本の未来は明るいわい!
ガーッハッハッハッ!!! 一度に1pinだけ0出力して他を入力プルアップにすれば壊れないし2個押しまで判別可能。
3つ押すと判別不能。 >>254
回路図の接続点に黒丸●を付けてくれないと分かりにくい。
同時に押すことがあるなら出力保護のためにダイオードを入れた方が良い。 >>260
上にも書いたがJISC0617でT接続は黒丸無しと有りの両方書かれている
おまいが見難いからと言って他人にまで自分の意見を書くなや T字の導通非導通が混在していて読めないのは問題にしないのな >>262
3つ以上は無理
この回路のスイッチを電卓の数字同様に1から9に
番号付けしてた場合124と125と145と245と1245の
同時押しが見分けられない
これらは全部上二本左二本が電気的に繋がり区別不能 >>263
安価付けて直接批判しる
俺はその点はコメントしない
絵が下手だからと言って批判出来る程俺も絵が上手では無いからな >>261,265
自意識過剰なんだね、絵が下手だなんて一言もいってないのにw
表現したいことは分かったから「回路図の接続点に黒丸●を付けてくれ」と頼んだのに。
一番下の段のSWの両足のT字接続は?
あたいは安価つけて批判しる(しるの過去形が分らない)w 前時代的な2ch用語使ってないで、普通に日本語書きなよ 少なくとも、P0とP6は直結していてSW3は検出できないと思うんだ… >>268
黒丸Cだけど、自分は線を接続していないところの黒丸は書かない(右下のSWなど)
>>269
垂直の線を少し長めに描いてくれれば「黒丸無し」でも良かったのかな。
でもマトリックス接続にしたいのは十分に分る。 >>268
おう、黒丸必要論が気になり過ぎて回路図よく見て無かったわ
俺はCの状態で黒丸の有無は別問題だと言う意見だ
一応書いておくが、俺はT結線には黒丸を付ける主義な
でもT結線の黒丸の有無は両方認められると言うだけ 黒丸CのSW1,SW2の右端、SW6,SW9の右端、SW3の両端は●不要だったはスマソ
脳内補正たのむ 回路にしろソフトにしろ
何を参考にしたのか逆に聞きたい しかしながら、実際書いている回路図通りに結線している可能性もある訳だが…
特に最下段 >>272
また間違えた。訂正:SW6,SW9の右端 → SW6,SW9の左端
>>274
黒丸Aがいちばん面白い いろいろ会社渡り歩いてるが結線に黒丸打たなくていい会社なんか無いぞ 正規のの図面には当然黒丸を付けるが、自分しか見ない資料には付けないな。 いちいち区別しねえ
CADが勝手につけてくれる
http://i.imgur.com/JcmTdRu.jpg
もっと他のことに頭使えよ、馬鹿どもw CADが付けてくれるかどうか、って話じゃなくて、
付いていない回路が間違っているかそうでないか、って話だよね。
結論からいえば、間違いじゃないから、T字結線黒丸なしの回路図も受け入れる
しかないわけだけど。 >>279
そうじゃない。
んなこたあ人間がグダグダ考えることじゃねえだろ。
CADに任せて、人は他に頭使えよって話。 未来の自分にも伝わらんと意味ないから手書きメモだろうがちゃんと書くよ >>239
お待たせしました。
#include <xc.h>
#define _XTAL_FREQ 64000000L
void interrupt low_priority ISR_L(void) {
if (PIR1bits.SSP1IF == 1) {__delay_us(2); SPI1RxData = SSP1BUF; PIR1bits.SSP1IF = 0; SPI1flag = 1; }
if (PIR3bits.SSP2IF == 1) {__delay_us(2); SPI2RxData = SSP2BUF; PIR3bits.SSP2IF = 0; SPI2flag = 1; }
if (INTCONbits.TMR0IF) {TMR0L = 131; TimerTickCount++; INTCONbits.TMR0IF = 0; }
}
結果、変わらずでした。 >>241
お待たせしました。
START!
From Slave Data = 00h
です。
From Master Data =は表示されません。
配線を確認します。 >>284
デバイスの仕様書 15.2.5
When the SPI is used in Slave mode with
CKE set; the user must enable SSx pin
control.
CKE=1の(エラッタを回避)場合、SSpinをmust enableしなさい。じゃないかな >>285
CKE=0 にして
>>284の様に__delay_us(2);を追加してみるのはどう? >>286
SS2(RB0)を有効にしてGNDに落としましたが変化なし。
マスターのSS1(RA5)も有効にしてGNDに落としましたが変化なし。
TRISBbits.RB0 = 1;
ANSELBbits.ANSB0 = 0;
TRISAbits.RA5 = 1;
ANSELAbits.ANSA5 = 0; >>288
やってみましたが、(SS1,SS2は元に戻しました)
START!
From Slave Data = 00h
で同じです。 >>287
いまどき、CADも使ったことないのかw 電気的に繋がっていなくても線が繋がって見えることがあるから
CADは繋がってることを明示するためにデフォルトで黒丸を付けてるだけ
接続するかしないかは人が考えて人がCADに指示するの >>ID:lh73Fqz9
お前が、何に噛みついてんのかよくわからない。
手書きでやってるから、T字に黒丸付けようかな、付けるのよそうかなって、
その都度つまらねえこと考えるんだろ?
CADでやれば、デフォでそういう設定なら、勝手に全部付くだろって言ってるんだ。
十字だって、操作次第で明確に付くか付かないかのどちらか。
大事なのは、統一性と曖昧さの排除なの。 >>293
何にも噛みついてないが?
CADのデフォ設定で接続する操作をすれば丸が付くのはわかったからwww
丸が大事なんだなw
もとの回路図みなよ、見た通り作ったら機能しないでしょ?
マトリックスを作る意図で書いたであろう回路図なのに、考えて書いたようには見えない
手書きでも電気CADでも注意して他人に伝わるように回路図書こうよって 回路図書いた当人は何とも思ってないのがそれはそれで面白い 質問者本人(>>226,254)も出てこないんだしもうやめようよ。 >>296
>導通か非導通かはCADに任せろ
とか勘違いしてる奴を、放置できんだろうがっw CADで黒丸有り無しは意味が違うんだから区別しろよ
最低限必要なことに頭使えよ、馬鹿どもw こんどは他人の回路図に噛みついてやがる。
手書きなんかしてるから黒丸を統一できないんだろ?
CADも使ったことない馬鹿は知らないだろうが、勝手に接続されるからCADに任せとけばいいんだ。 自動配線もシミュレータも通らないし
アホは放置してたら良い >>301
その人は別な質問者だよ >>128から始まってるMSSPのSPI通信の話 >>278,281,291,293,299,302
お前がおかしいのはわかったから黙っててくれ >>305
解説ありがとうございます。
初めてのPICで初めてのSPIなんでご迷惑をお掛けしております。 >>289
MSSP1と2との入替は、どうなりました?
MSSP2をマスターにしてSDO2とSDI2とを繋いでロールバックしてみたらどうなるかな
SSPENは、設定替えの時に一旦クリアして設定変更終了後にセットすると思っていたんだけど、
当方で動作させてみたPIC16F1829のMSSPだとSSPENセットのままで変更替え出来た…
PIC18F46Jの場合は、最後にセットしなくて良いんだろうか。どうなんだろう? >>309
すみません。
入れ替え、今日試します。 >>310
配線したボードの写真をどっかにアップしてみて。 >>311
これです。
http://i.imgur.com/plbYg3V.jpg
秋月のPIC基板にICソケットの一部を使ってブレッドボード風に配線しています。
配線はジュンフロン線です。
電源はミニUSBを使ってます。
これからMSSP1とMSSP2の入れ替え作業を始めます。 >>309
配線はそのままです。結果は次レスにします。
#include <pic18f46k22.h>
#include <stdio.h>
#include <xc.h>
#define _XTAL_FREQ 64000000L
#pragma config FOSC = INTIO67
#pragma config PLLCFG = OFF
#pragma config PRICLKEN = OFF
#pragma config FCMEN = OFF
#pragma config IESO = ON
unsigned char SPI1RxData, SPI2RxData;
volatile int SPI1flag = 0, SPI2flag = 0;
volatile long TimerTickCount = 0L;
void putch(unsigned char data) { while ((PIR3 & 0x10) == 0) ; TXREG2 = data; }
void interrupt low_priority ISR_L(void) {
if (PIR1bits.SSP1IF == 1) {__delay_us(2); SPI1RxData = SSP1BUF; PIR1bits.SSP1IF = 0; SPI1flag = 1; }
if (PIR3bits.SSP2IF == 1) {__delay_us(2); SPI2RxData = SSP2BUF; PIR3bits.SSP2IF = 0; SPI2flag = 1; }
if (INTCONbits.TMR0IF) {TMR0L = 131; TimerTickCount++; INTCONbits.TMR0IF = 0; }
}
void main(void) {
char data;
/* MSSP1=SLAVE, MSSP2=MASTER */
TRISA = TRISB = TRISC = TRISD = TRISE = 0;
OSCCON = 0x70; OSCTUNEbits.PLLEN = 1;
RCONbits.IPEN = INTCONbits.GIEH = INTCONbits.GIEL = 1;
PORTDbits.RD6 = 1;
TXSTA2 = 0x04 | 0x20; RCSTA2 = 0x80 | 0x10; BAUDCON2 = 0x08;
SPBRG2 = (unsigned char)(((64000000L / 4L) / 115200L) - 1L);
SPBRGH2 = (unsigned char)((((64000000L / 4L) / 115200L) - 1L) >> 8);
PIE3bits.RC2IE = PIE3bits.TX2IE = 0;
TRISCbits.RC3 = 1; ANSELCbits.ANSC3 = 0; TRISCbits.RC4 = 1;
ANSELCbits.ANSC4 = TRISCbits.RC5 = SSP1STATbits.SMP = 0;
SSP1STATbits.CKE = 1; SSP1CON1bits.WCOL = SSP1CON1bits.SSPOV = 0;
SSP1CON1bits.SSPEN = SSP1CON1bits.CKP = 1; SSP1CON1bits.SSPM = 0b0101;
PIR1bits.SSP1IF = IPR1bits.SSP1IP = 0; PIE1bits.SSP1IE = 1; data = SSP1BUF;
TRISDbits.RD0 = 0; TRISDbits.RD1 = 1;
ANSELDbits.ANSD1 = TRISDbits.RD4 = SSP2STATbits.SMP = 0;
SSP2STATbits.CKE = 1; SSP2CON1bits.WCOL = SSP2CON1bits.SSPOV = 0;
SSP2CON1bits.SSPEN = SSP2CON1bits.CKP = 1; SSP2CON1bits.SSPM = 0b0010; // FOSC/64 = 1MHz
PIR3bits.SSP2IF = IPR3bits.SSP2IP = 0; PIE3bits.SSP2IE = 1; data = SSP2BUF;
INTCON2bits.TMR0IP = 0; T0CONbits.T08BIT = 1; T0CONbits.PSA = 0;
T0CONbits.T0PS = 6; T0CONbits.T0CS = 0; TMR0L = 131; INTCONbits.TMR0IE = T0CONbits.TMR0ON = 1;
while (TimerTickCount < 1000L) ; printf("START!\r\n");
for (int i = 0 ; i < 10 ; i++) {
SPI1flag = SPI2flag = 0;
SSP1BUF = 0x12; // スレーブデータセット
SSP2BUF = 0x34; // マスターデータセット
while (1) {
if (SPI1flag == 1) {printf("From Master Data = %02Xh\r\n", SPI1RxData); SPI1flag = 0; break; }
}
while (1) {
if (SPI2flag == 1) {printf("From Slave Data = %02Xh\r\n", SPI2RxData); SPI2flag = 0; break; }
}
}
while (TimerTickCount != 0L);
} >>314
何故か変な結果になってしまった???
START!
From Master Data = 1Ah
From Slave Data = 00h
上記2行が続く(繰り返しの文章書くとアボーンされるので) >>313
PIC18F46K22は1個しかないので、これでやってます。
現状(上のソース)でMSSP1のSDIとMSSP2のSDIを両方GNDに接続した結果です。
START!
From Master Data = 00h
From Slave Data = 00h
上記2行が続きます。
次にMSSP1のSDIとMSSP2のSDIを両方VDDに接続した結果です。
From Master Data = 7Fh
From Slave Data = 00h
From Master Data = FFh
From Slave Data = 00h
上記2行が続きます。
最初だけ7Fhがあります。
どうもMSSP1に受信できていないようです。 SCK、SDIはPORT入力でも見えると思うので送受信中のスレーブ側のPORT
(MSSP1の場合PORTC、MSSP2の場合PORTD)を取り込んでみては?
//お膳立て
int i;
RCbuf[100];
unsigned char *p;
p = RCbuf;
SSP2BUF = 0x34;
*p++ = PORTC; // ←これを32〜64個ぐらい並べる
…
*p++ = PORTC; //
while (1) { if (SPI1flag == …
// 最後に取り込んだPORT内容を表示
for (i = 0; i < 32; i++) { printf("%02X\r\n", RCbuf[i]); } ああ
unsigned char RCbuf[100];
ね
分かるとは思うけど >>317
レスありがとう。
マスターとスレーブのSDIとSDOでリングにしてやってみました。
MSSP1のSDIのRC4はオール0で
MSSP2のSDIのRD1は先頭からの8バイトに1が出ていました。
0
0
0
1
1
1
0
1
0
以下、オール0です。
RC4は入力に設定してるけど何でかなぁ。 >>242 の最初、ポートが生きてるかどうかを試せって >>312
画像どうも。
(1) 電源はUSB端子から?
5V確認。
(2) 過去に、電源逆接続してマイコンが加熱したとか、
入力ポートを間違えて出力にしていたとか
過電圧加えてしまったとかの
こころあたりはある?
(3) ルーペか拡大鏡を使ってマイコン端子のハンダ付けが浮いていないかどうか
確認。
怪しい場合はSDI1端子にハンダをあてて確実にする。 >>320
T0CONbits.T0PS = 6; T0CONbits.T0CS = 0; TMR0L = 131; INTCONbits.TMR0IE = T0CONbits.TMR0ON = 1;
の次に以下を追加して入力状態を見ました。
while (1) {
printf("%02X\r\n", PORTCbits.RC4) ;
}
RC4をGNDへ落ちスト00の連続
VDDに繋ぐと01の連続
指で摘むと00と01がランダムに出ました。
入力生きてそう。 >>322
修正
RC4をGNDへ落とすと00の連続 >>321
(1)デジタルテスターで5.17Vでした。(HIOKI3801)
(2)たぶんないと思います。
(3)これから観察します。 ずっと見るだけ見てるけど
初PIC 対 初PICをやめて、経験のあるuCOMやコンバータの類 対 初PICにしてみるとか
もうやってるか。横から口はさんですまんかった 今までの情報からだと受け側の問題でしょ
もう一個買ってきたら?
同じマイコン もう1つ買います。
元々UARTを二個使ってプロトコル変換してる最中でデバッグ用にSPIで別のPICと通信して、そちらのPICのUARTからPCへだそうとしてました。
MSSP2は問題ないようなのでなんとかなります。
みなさんありがとうございました。 >>328
入力できているので大丈夫と思いましたが、試します。
今日は出張なので明日試します。 MPLAB X IDE v.2.35使ってるんですけど、最近新しいNew Project を作ったとき、
日本語文字が文字化けするようになりました
昔作ったのは今でも文字化けしないんですけど、なにが原因でしょうか >>331
そこはいいんでないの
どう書けばよかった? >>334
最近New Project作ったとき、
または
最近新しいProject作ったとき、 >>335
なるほど
しかし、最近も新しいも同じでないの
新しいnew yorkを作る, これおかしいかしら? >>336
最近と新しいが同じ?すまんが言ってる意味がわからない
なんか話が斜め方向に行ってると思うが、新しいNew Yorkを作るは
"New York"が一つの固有名詞(地名)なので、問題ないんじゃないか?
>>330のNew Projectは"New Project"って名前のプロジェクトなの?
だったらいいんじゃね?
>>338
上の"New York"という地名の場合と同じ PIC32MXで使われてるMIPSは大学の講義で使われてることが多いようだな
MIPSの生みの親の現スタンフォード大学の学長が書いた有名な本が教科書で使われてたりするようだ PIC32MXはエラッタがひどすぎる
売るレベルじゃない >>329
もう諦めちゃったかな?
症状は、
>http://www.microchip.com/forums/m551030.aspx
これと同じだとするとMSSP1のマスターは諦めてMSSP2をマスター、MSSP1をスレーブにして
>168 の初期化部分をCKE=1、SS1を使用にしとけば行けないだろうか?
ANSELA = 0;
ANSELC = 0;
ANSELD = 0;
TRISCbits.RC3 = 1; // RC3: SCK1(IN)
TRISCbits.RC4 = 1; // RC4: SDI(IN)
TRISCbits.RC5 = 0; // RC5: SDO(OUT)
TRISAbits.RA5 = 1; // SS1(IN)
TRISDbits.RD0 = 0; // RD0: SCK2(OUT)
TRISDbits.RD1 = 1; // RD1: SDI(IN)
TRISDbits.RD4 = 0; // RD4: SDO(OUT)
TRISDbits.RD3 = 0; // CS_OUT(SS2)
LATDbits.LATD3 = 1; //CS_high
SSP1STATbits.SMP = 0;
SSP1STATbits.CKE = 1;
SSP1CON1bits.WCOL = SSP1CON1bits.SSPOV = 0;
SSP1CON1bits.SSPEN = SSP1CON1bits.CKP = 1;
SSP1CON1bits.SSPM = 0b0100; //use SS1
PIR1bits.SSP1IF = 0; // 割り込みフラグクリア
IPR1bits.SSP1IP = 0; // 低位割り込み設定
PIE1bits.SSP1IE = 1; // 割り込み許可
SSP2STATbits.SMP = 0;
SSP2STATbits.CKE = 1;
SSP2CON1bits.WCOL = SSP2CON1bits.SSPOV = 0;
SSP2CON1bits.SSPEN = SSP2CON1bits.CKP = 1;
SSP2CON1bits.SSPM = 0b0010;
PIR3bits.SSP2IF = IPR3bits.SSP2IP = 0;
PIE3bits.SSP2IE = 1;
それぞれの送信部分で
SPI1flag = SPI2flag = FALSE;
SSP2BUF = 0x12; // スレーブデータセット
LATDbits.LATD3 = 0; //select
SSP1BUF = 0x34; // マスターデータセット
受信が完了したら
LATDbits.LATD3 = 1; //deselct
取り敢えずSS2ピンをCSにしてます。 >>345
SSP1BUF = 0x12; // スレーブデータセット
LATDbits.LATD3 = 0; //select
SSP2BUF = 0x34; // マスターデータセット
SSP1と2が反対でした。 >>345
諦めかかっていましたが、またトライします。
実は、第3の通信として、高位割り込みタイマーでソフトウェアUARTを組んで9600bpsはできたのですが、
プロトコル変換の元の通信が半二重で送受信の切り替えが230.4Kbpsで1char時間という厳しい条件のため
ソフトウェアUARTは不安定でSPIに戻ります。
PIC18F46K22の秋月基板も揃えたのでMSSP2のみでなんとかやれそうです。 >>343
初めてのPICスレであって、初めてのマイコンスレじゃないよ >>347
間の流れ全然追いかけてないんでピント外れだったらゴメンなんだけど
そもそもMSSPって送信バッファ/受信バッファなんてのは無くてバッファ一つだけだよね
送信モードで使う時はバッファの中身をシフトレジスタに転送して送信し、
受信モードで使う時はシフトレジスタがいっぱいになったらバッファに転送するという形
だから両方のバッファに送信しようとするデータをセットして、ほにゃらら通信が終わったら
お互い相手のデータが受信データとして入ってるという想定がそもそも間違ってるんじゃない?
MSSP1が送信モードで送信されたらSSP1BUFはクリアされて0
MSSP2は受信モードで動作して1から送信されたデータが入ってSSP2BUFはMSSP1から送られた0x34
とまっとうな動作をしてるように見えるが・・・ >>349
MSSP2のSDOがMSSP1のSDIに接続されてます。 これ、秋月で扱わないのかな
Microchip マイコン PIC32MM0064GPL028-I/SP
32ビット RISC PIC32, 25MHz, 64 kB フラッシュ, 8 kB RAM, 28-Pin SPDIP
http://jp.rs-online.com/web/p/microcontrollers/1241561/
¥262.20
単価: 購入単位は5個 まずはその部品を使った作例を設計してヒットさせよう
同じものを作りたい人がたくさん要望出すから扱いを始めるはず SPDIPが Shrink PDIP に見えてしまった…
Skinnyなのね。 25MHz(25MIPS)のMIPS32って32bit以上の演算を多用しないと、32MHz(16MIPS)のPIC24Fより
遅そうなイメージなんだけど。実際はどうなんだろ? そんな事はない
MIPSの方がずっと速い
1クロックで1命令実行出来るし、1命令の処理もPIC24より濃い ついつい PIC24F を基準に考えてしまう。
PIC24Fは、良く出来てると思うし。 >>357
>1命令の処理もPIC24より濃い
例えばどんな命令がPIC24より濃いの?
PIC24がPUSH 1命令でレジスタをスタックに積めるのに
MIPS32だと(sp)にストアして、sp動かしての2命令になる
PIC24はBTSC/BTSSとBRAでピンの状態で分岐できるけど
MIPS32って(1)LW レジスタにロード(2)ANDI/ORIして(3)BEQ/BNEで分岐だけど(4)その前に遅延スロット たいていNOP
MIPSはRISCだから命令がショボいのはしょうがないんだけどさ、フラグすらないし(C,Zとか) RISCの場合はスタックにpush、popするという操作より
あらかじめSPを退避に使うメモリ分だけ引き算してまとめてスタックのメモリを確保して
レジスタ間接でdispを指定してロードストアする方が効率がいい場合が多い
レジスタ数も多いからね 全然違う話だがRISCには64bitのARMのように
16バイト(64bitレジスタ2個)単位でしかスタックに積めないCPUもある >>359
普通に16bit CPUと32bit CPUの格の差がある
MIPSの弱点はRISCなので演算は基本レジスタ同士なくらい
32bitなのでメモリのコピーやクリアや比較も当然速い (1命令で32bit分出来るので)
レジスタ数が多いので、関数コール時もレジスタ経由でコールしやすいし、
一時変数もレジスタ上に保持しやすい
結果ロードやストアの回数が減る
PIC24は弱点が非常に多い
直接メモリ上の値を使って演算出来るメリットも、
アドレッシングの即値オフセットがMOVくらいしか使えないので、
結局MOVを使う場面が多い
即値のビット数も少なく16bitでADDやANDも出来ない
演算と同時のポインタ移動も実はあまり恩恵が無い
即値オフセットを指定できないので、結果レジスタをたくさん使ってしまう
ポインタ移動自体はループのアンロールで減らせるので、
クリティカルポイントはアンロールすればいい(コンパイラが勝手にやってくれたりする)
スタックへのプッシュポップは1回でまとめてポインタを移動する
ハーバードアーキテクチャでROMとRAMが別アドレス空間なのもマイナス
数値テーブルやswitchテーブルなどのテーブル参照に余分な命令が必要だし、
ROM上のデータは基本RAMにコピーしないと使えない
(データの位置でコードを分ける方法もあるにはあるが)
フラグ?
普通に自由にレジスタに結果を入れられた方が良いでしょ
その後の演算にも使えるし、高級言語との親和性も良いし
MIPSは比較&条件分岐が1命令だよ >>362
で、さ PIC24より濃い命令ってなんなの? RISCはコンパイラが使わないような命令を排除して
極力ハードウェアを簡素化して高クロックで回せるようにして性能を上げるCPU
どんなに高度な命令を実装してても、C言語でプログラムを組むなら
コンパイラが使ってくれなければ意味がない
そういう発想
MIPSはRISCプロセッサの中で特にパイプラインを乱さないことを一番考えられて作られたプロセッサ
MIPSはMicroprocessor Without Interlocked Pipeline Stageの頭文字をとったもので
日本語に訳せばパイプライン・ステージがインタロックしないマイクロプロセッサの意味
分岐の遅延スロットは他のプロセッサでは抹殺してたものをMIPSでは使えるようにしてるだけで
余計に時間がかかってるわけではない
ttp://www.cqpub.co.jp/interface/TechI/Vol39/app/mips_asm.pdf
ここにMIPSの命令セットについてわかりやすく書かれてる PIC32MMはmicroAptivコアだが
PIC32MXで使われてるM4Kコアは3万5000ゲートでゲート数はARMのCortex-M3とあまり変わらない
M4Kコアは高機能な16bitCPUと同等か下手をするとそれ以下のゲート数で済むほど単純なコア PIC24とMIPSどちらが優れてるというより、好きな方を使うといい
MIPSの売りは何といっても32bit
Microchip自体がPIC32MMはPIC32MXとPIC24の間を埋める製品だと言ってるわけだし
http://ednjapan.com/edn/articles/1608/01/news001.html >>362
PIC24はレジスタはRAM と同じ扱いだからな。 >>364
その命令セットみても、どの辺が濃い命令なのかわからないんだけど?
というかRISCに濃い(複雑な)命令なんて無い。
比較分岐が1命令って言っても、出来るのってレジスタ同士が同じか違うかだけの判定でしょ?
==100とか>100の判定するなら、100をレジスタに入れてから判定・SLTIで結果をどこかのレジスタに入れてから判定
実質1命令で比較分岐出来るのってzeroレジスタとの比較で==0,!=0だけ
32bitのベタコピーやクリアはそりゃ速いだろうけど、だから最初に>>356 (32bit以上の演算を多用しないと)と書いてる
RISCのメリットって命令を単純化してパイプラインで並列に高速動作させる所なのに、>>351のPIC32MMの
max25MHz動作ってメリットを放棄してるとしか思えないんだよな。
まあ実際は性能当りの消費電力が少ないとか、dsPICと比較するとコアのチップ面積が小さいとかあるだろうけど 理解する気が無いなら自分でベンチマーク作って比較してみれば パフォーマンス的には、全ての命令が2クロック以上ってだけで論外 >>369
濃い命令の例を幾つか上げてくれるだけでいいんだけどな、わざわざ>>359にレスしたのだからさ
BEQとBNEは特定の条件でPIC24より濃いのはわかったから他ので頼むわ 大昔の80系vs68系の対立を思い起こしたw
つまるところは適材適所なのに、なんと不毛なって感じ >>362に書いたけど
PIC24の分岐って4クロックもかかるのか >>359 みたいに例を出せって?
たくさんありすぎて
ていうか、>>359の例でも
PIC24は6クロック、MIPSはNOPを入れても4クロック, NOPじゃなきゃ3クロック さすがにmicroAptivとPIC24じゃ格が違いすぎる PIC24FのDeep-Sleep時の消費電流はMIPSやARMには真似できない
最低動作電圧も低いし電池で使うならPIC24F あれ????
5V駆動したかったんじゃないの???? アーキテクチャ論争なんて犬も食わない
何を実現して何を得るかの方が大事 論争とか言うレベルじゃ無いだろ
PIC24信者がアホ過ぎて >>375
クロック数の話では無く、1命令の内容の話のはずだけど?
じゃあさ 下のPIC24Fの命令をMIPSで置き換えてくれないかな、できればPIC32の場合とMIPSの場合で
(1) BTG LATA,#0
(2) MOV #0xFFF0,W0
AND LATB >できればPIC32の場合とMIPSの場合で
ここ、笑うところ? >>382
こういうコード書くヤツと一緒に仕事したくない 超初心者のためのスレ
という感じがしないのはオレだけじゃないと思う。 >>382
PIC32だとPORTAINV, PORTBCLRが使えるね
単体の命令だけでいえば、
PIC32はMADD,MADDU,MSUB,MSUBU,CLO,CLZあたりが宣伝文句になってる
あとは普通に32bit命令が使えることだね
"32bit演算"じゃなくても普通に使うから
フラットメモリなのも強み
PIC24に無い物としては即値16bitの演算
PIC24だと普通に使えるのは5bit
アドレッシングモードだと、
PIC24はオフセット番地が使えるのがMOVのみ
唯一の強みとも思えるメモリを直接使った演算が使えるところが実は非常に限られている
構造体のメンバにアクセスしたりオート変数にアクセスするのに頻繁に使うのだが 今のx86-64に比べたらMIPSなんかクソだけど
クロックごとに、256bit FMA2個、256bit 整数演算2個、256bitのメモリリードライトを同時にやっちゃう
クロックも3GHzとか
こんなコアが4個とか普通にのっちゃってる
数百円のマイコンと比べちゃいけないんだろうけど PICのボリュームゾーンは4クロックで8bit演算1個 AVR亡き後、内輪での争いが絶えんなw
常に敵が必要って馬鹿な連中だわ。 クロック数無視して1命令で複雑な事できた方がエラいってんならCで書けば? >>390
PICのスレにはPIC32を敵視する書き込みがかなり多いが
Microchipが32bit製品を拡充するのをよく思ってない他の勢力の妨害のような気もする ここは、僕たちのような初心者が質問するスレです。
技術力のある皆さんなら、こなところで雑談しないでください。
PICでアセンブラをやるような高度技術のみなさんに、
最適なスレ見つけました↓
http://rio2016.2ch.net/test/read.cgi/denki/1470076841/l50
移動をお願いします。 少し古い記事だがMicrochipの16bit製品は好調のようだが
16bitマイコン市場は縮小傾向のようだ
16bitマイコンは32bitマイコンへの移行が進んでるのか
2014年のマイコン市場は回復基調に、8ビットマイコンは絶好調
http://eetimes.jp/ee/articles/1408/22/news056_2.html
ただし、Tyagi氏によると、低価格かつ簡易なソフトウェアを好む設計者も多く、
少ないピン数とメモリ容量を持つ8ビットマイコンへのニーズは高いという。
「16ビットマイコン市場が縮小している中、8ビットマイコン市場は安定している。
安価かつソフトウェアもシンプルなのが魅力的なようだ」(同氏)。
Microchip社、8ビットマイクロコントローラの 売り上げランキングで再びトップに
http://news.infoseek.co.jp/article/dreamnews_0000111737/
2014年、16ビットMCU市場で上位10社中最も急速な成長を遂げたMicrochip社は、
他の全サプライヤの2倍以上のペースで成長しました。
また、32ビットMCUでは42.3%の成長を達成し、
32ビットMCUサプライヤ トップ10入りを果たしました。 >>382
MIPSだとこんな感じか
(1)PIC24
BTG LATA,#0
(1)MIPS
lui v0,LATA>>16
lw v1,LATA&0xFFFF(v0)
xori v1,v1,1
lw v1,LATA&0xFFFF(v0)
(2)PIC24
MOV #0xFFF0,W0
AND LATB
(1)MIPS
lui v0,LATA>>16
lw v1,LATA&0xFFFF(v0)
andi v1,v1,0xfff0
lw v1,LATA&0xFFFF(v0) あ、最後は両方とも sw v1,LATA&0xFFFF(v0) だ なんか色々と変じゃね?
割り込みがイヤだしCLRやINVを使おうよ
INVは複数ポートを同時にセットとリセットが出来る
同時であることが必要な時には使うかもね >>394
>16bitマイコン市場は縮小傾向のようだ
>16bitマイコンは32bitマイコンへの移行が進んでるのか
「ようだ」とか「のか」じゃないだろうなあ。
今、PIC以外の16ビットのマイコンを作ってるメーカーで、ARMをやっていないところってどれぐらいあるんだろう。(あるけどね)
ARMもやってたら、保守以外に継続してる理由が乏しいのではない? 32bitMCUはARMが強いがライバルは必要だ
32bitMCUがARMばかりになったらARMはライセンス料を引き上げてくるかもしれない
インテルだって286までは他社に製造する権利を与えてたし互換CPUもいくつかあった
386から態度を一変させてセカンドソースを廃止
互換CPUメーカーに訴訟を起こした
NECなどは和解して互換CPUを作らないことを約束
AMDやCyrixなど極一部のメーカーだけが裁判で勝ち取って互換CPUを作れる状態にはなったけどね
ARMだってどうなるかわからない >>399
それはつまり
「現在は広くライセンスしているが、ライセンスをしないことが商売上有利だとAMR社が判断したら、ライセンスされなくなる。
そうなると世の中パニックだ」
ということですかね。
内情は知らんのですが、ARM CPUを出している大手メーカーは無期限の設計・製造ライセンスを取得しているんじゃないでしょうか。
特に組み込み用途ならパソコンのCPUと違って息が長いですし、明日から新しいARMのライセンス供与がなくなっても、今のARM CPUを
作りつつ、他のものへの乗り換えを考えるのでしょうね。
我々が危惧する程度のことですし、メーカーは手を打っていると思います。 無線通信はBLEで低消費を追及
マイコンは8bitPICで低消費を追及
じつに素晴らしい組み合わせだ Bluetoothモジュールの中のCPUの方が豪華だったりして。 ARMの実行性能が高くとも1PCBoardのようにクラッシュして簡単にストレージ
破壊して停止するようなモノでは製品にならないだろう。
アンドロイドのような代物ではモーター回らないこともある。
だから初心者は深く考えず、初めからPIC使っていればいい。
マーケティングや市場とか命令セット比較は考えなくともいい。作ることに集中しろ。
以上。 もういいよ。
君らが博学で経験も豊富なことは、よくわかったから。
技術力のある皆さんは、こんなところで雑談しないで
あっち↓行ってください。
http://rio2016.2ch.net/test/read.cgi/denki/1470076841/l50
移動してください。
僕たちのような初心者が質問できないよ。 >>399
ARM が有利なのはLinux 動くレベルまでだな。
リアルタイムOS レベル以下になったら、周辺機能の互換性無くなるから、ARM にこだわる必要ない。 おーし、質問するぞ
pic は時々プラスとマイナス間違えて繋ぐことあるけど、そうすると発熱するけど、なんでなの
反応なしなら納得なんだけど、なんであんなに発熱するの ここPIC初心者のスレなんで、電気電子初心者はどっか余所行って http://blog.nshdot.com/2010/03/blog-post.html
このサイトの回路で、導通の有無は検知できると思うんですが、
3Ω程度の区別が測定できるでしょうか?
何かプログラムで工夫していると思われますが、
それはどのような工夫ですか? >>407
電源逆さしは、いろいろまずそうで、まずいからよくない、ぐらいにしか考えてませんでした。
とりあえず、PICに限らず、多くのC-MOS ICは、内部に
・GND側をアノード、信号側をカソードとしたダイオードと
・信号側をアノード、VCC側をカソードとしたダイオードが
たくさんあります。
GNDにプラス、VCCにマイナスをかけると、このダイオードに電流が流れまくりになりますね。 >>410
測定対象と10kΩで分圧してAD変換してるから、
電圧がADC(8bit)の1LSB未満になるような抵抗は変換値が0になってしまう
ただ3Ωがその下限なのかはわかんないね
抵抗の測定方法はアプリケーションノートにいくつかあるよ >>413
ありがとうございます。
見たところそうですよね。
8bitのAD変換なので、
3÷10003×256=0.08
となって、40Ω程度ないと判定不可能、という理解でいいですよね?
でも、
>抵抗値が低いほど周期が短くなり、約3Ω以下で連続音になります。
と書いてあるので、どうやってんのかなと思いまして…。 現物合わせで12Ωを直列に入れて約3Ω以下でA/D変換値が
ゼロになるようにしたのでは? >>414
10F222のADは8bitでリファレンスは常にVDDだからVDDとVSSの間を256分割までできる
VDD/GP0間に10kΩが入っているので、この1/255、約39Ωより少なければ1/256未満になる
で、入力回路に12Ωが入ってるので、測定対象としては約27Ω
となると3Ωって何やねん?って話になる
VDDの1/256の電圧がGP0に印加されれば1になるのは確かなんだけど、じゃあもっと低い電圧だと
どこまでが0でどこから1になる?
もちろん1/256よりも1μVでも下回ったら0になるなんて事はない。
そんな高分解能持ってるなら8bitなんて言ってない
一般的には、1/2LSbを設計の基準とする
0と1とが切り替わるのは1/2LSb。つまりちょうど真ん中で切り替わると考える
もちろん本当にこの値で変わる訳じゃないけど、まあそのあたりより上なら1になって下なら0だろうなと考える
で、件の回路に戻って考えると、8bitADの1/256の更に半分1/512を下回れば確実に0になるだろうと考えられる
とすると上記同様に考えて10kΩの1/511、19.5Ω以下
入力回路の12Ωを引くと7.5Ω・・・って3Ωじゃないじゃん
何で3という数字が出てきたのかは謎
作者に聞いてください
(作者に聞くぐらいならここで聞いてねーよという突っ込み待ち) 作者に尋ねずにあれこれ想像するのも楽しいかな。作者にはちょっと悪い気もするけれど。
>>415が当たっているような気がします。
3Ωに12Ωが下駄ばきされているので、A/Dの入り口なら、3×15÷(10000+15)=4.5mV。
一方、A/Dコンバータは、理想的には、11.7mV(3V/256) が A/D変換値 0 と 1 の境目だけど、
データシートのA/Dコンバータの項目を見たら、オフセットエラーが±1.5LSBとあり、±17.6mVの誤差を持つことになります。
なので、作者が使ったマイコンでは、11.7mVよりもゼロVに近い方に、0 と 1 の境目があったのかもしれないですね。 >>413
アプリケーションノートですが、探してみてもなかなか行き当たりません。
よろしければ、リンクなど張っていただけると助かります。
>>416
設計上に無理がある、という自分の理解を確認したいだけなので。
となると、現実問題として、低抵抗値の測定というのはどうやるんでしょう?
ヒントや関連リンクなど、教えてください。 >>417
てめえ何様だ。技術的評価もせずに罵倒だけするんじゃねえ。糞野郎め。 >>419
もともとこのアプリケーションでは、3Ω±〇%みたいな精度は目指していないはずですが、そういう測定を目指しておられますか?
だとしたら、プローブの接触抵抗も問題になります。
ケルビン接続 低抵抗
あたりで検索してみてください。 でも、抵抗値によって音の周期が変化するって書いてる。
ま、連続的にとは書いてないが…。 >>419
このPICで、この回路で3Ωを測定するというのは設計上無理があるというのは、その通りの理解で良いです
低抵抗の測定がしたい場合、単純な話で言えば12bitADなら更に1/16まで測定できますから
2Ω程度の精度で測定できます
他のやりかたとしては、測定対象にもっと電流流して構わなければ10kΩを小さいものに変えるという手もあります
たとえば1kΩにすれば4Ω、500Ωにすれば2Ω程度まで測定できます。 ノイズがあるから1と0の並びが変化して音色の変化として感じられるのだ PIC24FJ64GA002でRTCCを使おうとMPLABのデバッガで試してますが上手くいきません
RTCVALを読み書きするとRTCPTRがデクリメントされるという事ですが、どうもデクリメントされていないようです
なぜでしょう? >>419
普通は増幅してからADCに入れるんだよ あ、電流検出じゃなくて抵抗値を測りたいのか
素直にテスターを買えば >>401
何をするのか知らないけど、超低消費電力ってのはマイコンが起きてる時間を減らさないといけないわけで
8bit PICみたいな遅いマイコンが有利なのって、ほとんど何も処理しない、ただのログ取りみたいな用途だけじゃ? >>ID:WgDNmqOk
落ち着け、大丈夫だからw BLEチップには大抵ARM Cortex M0載ってるからPIC使うと無駄になるな Cortex-M0、M0+は同じARMではあるけどCortex-M3、M4、M7とは別物って感じ
サポートしてる命令が少なすぎ
数個の命令を除くと16bit固定長のThumbそのもの
ほとんどの演算命令ではレジスタが8個しか使えない ちなみにThumbは16bit固定長の命令セット
Thumb-2は16bit、32bit混在の命令セット
名前が似てるが持ってる機能の豊富さが全く違う Coretex-M0やM0+の対抗馬はMIPSのMicroAptivあたり
ルネサスが16bitのRL78でBLE用を出してるけど、これもPICの16bitより上
PICの8bitじゃ力不足 多少はCPUの処理能力を把握しておいた方が良いかと >>440
microMIPSが使えるmicroAptivはCortex-M4対抗らしいけどな
PIC32MXで使われてるM4KコアでもMIPS16eという16bit長の命令が使える
しかもMIPS16eの特徴は切り替え不要でMIPS32命令と一緒に使える利点がある
http://pc.watch.impress.co.jp/docs/news/535532.html
microAptiv
M14Kコアの後継となるMCU向けのmicroAptivは、
MCU向けとしつつも実際にはMCU向けとMPU向けの両方のラインナップがあり、
ターゲットとしてはCortex-M4からCortex-A5あたりまでということになる。
命令セットとしてはMIPS32に加えてmicroMIPSをカバーしており、
またDSP ASEのほかにeMDU(enhanced Multiply/Divide Unit)を追加したことでさらに性能を引き上げた、
というのが大きな特徴である(写真31)。 http://ednjapan.com/edn/articles/1311/22/news065.html
MIPS microAptivコアは、microMIPS命令セットアーキテクチャを採用している。
マイクロチップでMCU32開発およびマーケティング部門のディレクタを務めるRod Drake氏は、
「16ビットと32ビットの命令セットを組み合わせて用いることで、
ARMアーキテクチャベースの製品に比べてコード密度を約30%も改善している」と話す。
また、159個のDSP命令を追加している。
これによって、DSPアルゴリズムの実行に必要なサイクル数は、PIC32MXファミリに比べ最大で75%削減することが可能となった。 >>ID:668cEdut
どーでもいいことをグダグダ引用すんなよ。
次からは、てめえのブログにでも書いて、リンク張ってくれ。
ジャマ臭いんだよ、お前。 >>444
スレタイすら読めない馬鹿に説教するだけ無駄
しかも、ただのコピペは無能の証でもある PICのスレでARMの話をする方がスレチなのでは? PICのスレなのになぜかARMの話をしても罵倒されないのに
PIC32の話をすると罵倒される不思議 初心者が誤解しないように追記すると
PIC32MMはDSP ASEはサポートされてません
DSP命令はPIC32MZのみです >>444
な、無駄だったろ?
内容が陳腐なヤツは、理解力も低い
だから、言っても無意味 このスレでPIC以外の話は確かにスレチだろうけど、完全に禁止にすると、PICしか使ったことがない井の中の蛙がPICを過大評価するからなあ
PIC24信者もいるし
比較位は良いんじゃないか?
現実を知らしめる意味でも >>449
だな。
変なのが棲みついて、スレ台無しw 「枯れ木も山の賑わい」
枯れ木に花咲かねえからさw >>450
「井の中の蛙大海を知らず、されど空の深さを知る。」
まだPICを突き詰めてもいない初心者スレで、
他所事を大声でわめく自分の愚かさを知るべき。
はっきり言わんと分からんようだから書くが、
要するに、あっちでやれってことだよ。
http://rio2016.2ch.net/test/read.cgi/denki/1470076841/ もういいよ。
君らが博学で経験も豊富なことは、よくわかったから。
技術力のある皆さんは、こんなところで雑談しないで
あっち↓行ってください。
http://rio2016.2ch.net/test/read.cgi/denki/1470076841/l50
移動してください。
僕たちのような初心者が質問できないよ。 >>457
流行っているようなので「プロ〜」とか書いてみた、ってか?
マジレスしとくと、
質問が書き込まれたら回答する、でいい。
それを催促するとか、ホントの馬鹿か? 図々しい初心者にはなかなかまともな回答が付かないのは致し方無い事だ。 >図々しい初心者
回答能力の低い奴が一番に吐く言い訳 俺がいつも感心することは、こんな所でよく質問する気になれるな、だ。 俺がいつも感心することは、そう言いながらよく覗く気になれるな、だ。 >>464
ビックリするようなやり取り、吹き出しそうになるやり取り、いつのまにか罵詈雑言になるやり取り・・・
横から黙って見ているのは楽しいです、覗きはやめられましぇ〜んw CAN通信は、素人工作でも一般的によく使用されるのでしょうか? RS-485ならPICとトランシーバで組めるし素人でも余裕 >>467
dsPICを使って車とCAN通信してるけど、試行錯誤だったのでスキルとしてはかなり怪しい dsPicいいと思うけどな〜〜
CAN通信は情報が少ないけどサンプルはそこそこあるので
それを使えば通信だけはなんとかなるよ。
後は試行錯誤になるのは仕方ないんじゃないかな〜〜〜
でも少数だけどやってる人はいるよ!! ちゃんと使ったことないからわからないけど、
dsPICってあまりいい評判聞かないのはなんでなの? >>477
>あまりいい評判聞かない
具体的にどうぞ。 そうだよね、逆にdsPICの悪い所はどこ?
16Fに比べて
高い・ネット情報が少ない・消費電力多い・少ピンが無い
あとは? 474だけど、dspic33fj64gp802でCAN通信して、カーナビにビデオ信号を出力してる
DSPは未使用wで、RAMが多い・CAN・DAC付、で選んだ
PIC32も検討したけど、スリープ時の消費電力が多いのでちょっと >>480
CANってことは車載するんだよね?
電源個別に用意してるの?なんで細かい消費電力を気にするのか不思議。 OBD2コネクタの常時供給電源から電源取るからでしょ。
イグニションoffでスリープするんだよね。 イグニションoffでCANの通信サイクルが途絶えてスリープだ。 >>477
自分の世界が狭いから。
井の中の蛙とも言う。 >>481
483でコメントされている通りです
>>483
と、思うでしょ?でも実際は、直ぐには落ちないし、スマートキーを近づけるだけで起きたりするようです xc8でinline-asm(#asm 〜 #endasm)を使うと 赤!/赤線 が出てじゃまくさい
buildするとエラーは無く、結果も期待通りに動作する
無視すれば良いだけなんだが、なんか対策ないのかね
ググると似たような事聞いてるヤツが見つかるが
決定打が見つからない (Hintsをoffでも、まだ残る) XIDEのエディタが、該当部分をCの識別子として認識していません。
以下の設定で、ハイライト(赤い下線)がきえます。
Tools
Options
C/C++
Highlihting
Highlight Unresolved Identifiers わりい、それは見てた
IDEのVersion は v3.51、その項目無いんだよね。
それに相当すると思われるのが↑に書いた"Hints"の項目で、それでも全部は消えない
Verによる違いかな >>485
+Bからとるなら些細な差なんじゃないの?って話ね
少ないに越したことはないのは分かるけどPIC32じゃ
絶対駄目というレベルの話でもないよね?
それだけのメリットがソフトの作りやすさ以上にあるのか
疑問に思っただけなのさ >>488
面倒くさいが、これは如何
asm( "movlw 0xff" ); >>490
もともとは、ISR()のエピローグ/プロローグが大きいんで削りたい、ってのが目的なんだけど
該当部分の、具体的な該当コードは↓、石はPIC18F14K50
void IsrHigh(void);
uint16_t wTxData;
asm ("global _IsrHighFook");
void IsrHighFook(void) @ 0x0808
{
asm("goto _IsrHigh");
}
void IsrHigh(void)
{
#asm
btfss RABIF_bit, c
bra ret_ie
bcf RABIF_bit, c
btfsc _wTxData, 0, c
btfss RB7_bit, c
bra rst_rc5
set_rc5: <- ラベルを使ったところに 赤!
bsf RC5_bit, c
bra ret_ie
rst_rc5: <-赤!
bcf RC5_bit, c
ret_ie: <-赤!
retfie f
#endasm
} <- ここにも 赤!
確かに、ご指摘の方法で済む処はそんな風にして逃げたりしてる
下のように書き換えると
asm ("btfss RABIF_bit, c"); <- この手のが通らない
asm ("btfss INTCON, 0, c"); <- こんな風にベタで書くと通るのは解ったけど
どっちも、イマイチなんだよね >>489
そうですね。絶対ではないです。
うちの車だと暗電流が確か1割位増える計算でした(三端子レギュレータで落としてるだけなので) >>491
"で囲っているので#defineが利いてないみたいだね。
ベタで行くしか思いつかないです。 >>493
そのようですね
久しくやってなくて浦島状態だったから
俺 間抜けな事をやってるのかな?、 と思って聞いてみました すみませんが質問です。12F683で状態変化割り込みを使う場合、どのピンの割り込みかを特定するには割り込んだ後にピンの状態を見るのが良いでしょうか?
また、スイッチのチャタリングをソフトで除去する場合割り込んだ後にウエイトを掛けてサイド読み込むのが無難な処理でしょうか?
よろしくお願いします。 >>495
質問に書いた方法を評価する上での比較対象には、どんな方法がありますか? >>495
普通10ms程度の周期のタイマー割り込みの中でスイッチを読み込んで状態が変化したらフラグ立て、その後何回かの割り込みでスイッチが変化しなかったらスイッチ操作認識 >>495
自分がやってるのは、
タイマーを一つ用意しておいて、初期値として待ち時間の残り時間(後述)をセットしてスタート。
スイッチの読み取りルーチンで、タイマーのオーバーフローをチェックして
オーバーフローを起こしていなければ、スイッチの読み取り拒否をメインルーチン帰して終了。
(メインルーチンで必要な場合は前回のボタン読み取り値を利用する)
スイッチを読み込んだ後にタイマーに待ち時間分(チャタリング防止期間。自分の場合5ms程度)の値をセットしてタイマースタート。
メインルーチンに読み込んだスイッチの内容を返して終了。
こんな感じ。 .
unsigned char chat; // 記憶
unsigned char PIN; // フィルタ後のピン
void timer割込(){ // 1ms毎に入るタイマー割込み
chat <<= 1;
chat += ピン;
PIN = (chat==0x0f)? on : (chat==0x00)? off : PIN;
}
void main{
chat = 0;
PIN = off;
while(1){
if(PIN==on){
・・・・
} else {
・・・・
}
}
} 私は「SW入力変化でタイマスタート、タイマ完了割り込みでSW入力チェック」が多いかな?
SWの使い方はたとえばタクトSWなら
・押した瞬間に(立ち上がりで)動作させる
・離した瞬間に(立ち下がりで)動作させる
・長押しで(ON状態が一定時間継続したら)動作させる
などを組み合わせて色々。 >>502
でもそれだと、
ノイズが入っても、すぐに動作してしまうよね?
その論理が「一定時間連続するのを監視する」のが正しいと思うけど。 >>503
SWを押したときの信号の変化は「オフ状態〜チャタリング〜オン状態」だから
1)チャタリングの最初のオンでタイマをスタートして、
2)チャタリング時間経過後にタイムアップして、
3)サンプリングしてオン状態かどうかを再確認
で問題無いと思う。
SWオン状態で(オフ状態でも)ノイズが原因で信号がオン・オフするなら
別途、CR積分回路などの対策が必要になると思う。 追加
あ、もしかしたら、「押した瞬間に」が誤解を招いているのかな。
「瞬間」はもちろんチャタリング除去後の話です。 >>505
>あ、もしかしたら、「押した瞬間に」が誤解を招いているのかな。
そう。
>・押した瞬間に(立ち上がりで)動作させる
>・離した瞬間に(立ち下がりで)動作させる
この文章から、チャタリング時間経過後と 読み取れるわけないでしょう。
>「瞬間」はもちろんチャタリング除去後の話です。
そんなの当たり前じゃん。 押した瞬間がチャタリング除去後の意味とか
お前らおかしい。 ID:1UQ425zr
ID:eb46b5ti
何一つ条件設定のないまま話が平行線で進むのがすごい。 結局はプルアップしたSWにコンデンサ並列で物理的にチャタリング除去が普通じゃね?
もちろん16連射とかは想定外でモード切り替えとか単純な装置のオンオフとか一般に連射しない用途で。 >>509
>結局はプルアップしたSWにコンデンサ並列で物理的にチャタリング除去が普通じゃね?
それは違うと思う。
1円でもコストを下げたいのに、外付け部品なんか使わないよ。
ソフト設計で少しだけ苦労すれば、あとは繋ぐだけになるんだから。
>>509に質問
外付け部品でやるとき
・抵抗とコンデンサの各定数は、どのようにして決めてますか?
・プルアップしたSWにコンデンサ並列で物理的にチャタリング除去ということですが、
コンデンサに溜まった電気を、スイッチで直接ショートしも良いのですか?
スイッチが壊れないのでしょうか? チャタリングの除去はソフトだね。たいていはそっちの方が安いし。 ソフトで数回サンプリングして連続同じ値で確定が普通だと思う
応答性が不要ならとりあえず10ms3回
応答性が重要なら時間をつめたりオンオフ非対称にしたり >応答性が不要ならとりあえず10ms3回
そうそう、だいたいそんな感じね。 >>511
次のお重まだ〜 チンチン☆彡 (AA略 ゲームの話なら1秒60フレームだから16ms以内に判定を終わらせないといかんよね。 16ms間隔で読むならそのまま採用して何の問題も無い >>518
何度か見た方が外来ノイズや瞬時の接触不良に強いんだが 外来ノイズでLOW/HIGHが変わっちゃうレベルだとボタン以外もヤバそうなんで他に何か対策がいるとは思うけど >>516
じゃ次のお題は「使いたいチップに5V版がない!レギュレータなんか付けるのイヤン!」かなw >>510
定数ですが抵抗は10kを基準としてノイズなど気になる場合は少し電流を増やします。
コンデンサは充電の時定数を考えます。
なので使用するスイッチのチャタリング時間をオシロで100回くらい平均を取り決定します。
今まで余程粗悪なスイッチでない限り最大で10uFです。
スイッチが大丈夫かですが上記の容量の電力量ならばスイッチの抵抗で消費出来るので壊れることは有りません。 >>521
swを複数回見るだけでESDによる誤動作対策になるよ
>>523
weak pull-up と ソフト処理で部品を2個減らせることことに早く気づけ >>523
>今まで余程粗悪なスイッチでない限り最大で10uFです。
は? 10uF?
抵抗10kで100ms? そんな応答で許される製品なの?
>スイッチの抵抗で消費出来るので壊れることは有りません。
10uFあったら、スイッチやばいと思うけど。
スイッチの接触抵抗は何Ω? >>525
ボタン以外って書いたんだけど
ボタン以外の端子 >>526
作る製品は様々ですが例えばバイクのウィンカー制御など押してから0.1秒の作動で十分です。連打することなんて無いしね。
それに10uFはあくまで最大でスイッチによって変えるので普通はそれ以下。
スイッチが壊れるかですが
電流の二乗×抵抗×時間で消費電力が計算でかますが導通抵抗が50ミリΩで5Vでの運用で250V1Aを扱えるスイッチが壊れるとは到底思えませんけど。 必要な応答性能や信頼性やスイッチの構造が全く違うから >>527
以外見てなかったけど、ESD による誤動作が問題になるなら色々と考えなきゃいけないね。
ただ、体にたまった静電気は特に指からボタン回りに飛びやすいというのも一般論でしてね。 >>528
スイッチの消費電力の話ではないよ。
スイッチの接点が、コンデンサの電荷をゼロΩでショートするのが
どうかと思うんだけど、それはいいの? 接点は劣化しないですか?
普通は、
Vcc----抵抗10k?-----(a)----コンデンサ----GND
(a)---100Ωとか---SW----GND
(a)-----マイコンなどの素子へ
と抵抗を入れて、電流上限を制限すると思うけど。
それはしなくてもいいのですか? >>532
接点はゼロオームでは無いですよ。
接触時にも数十mΩ有ります。
なので数uFに5Vで貯めた電荷の消費程度問題なしです。 >>532
抵抗を入れる話、学問的に正しいのはその通りです。
実際と学問の違い。
別の言い方すれば製品と自作の自分用の違い。
言い方は色々有りますが電気的に問題なしです。 >>534
10uFを数十mΩで放電させたときにどういう電流が流れるかは電気が判ってい
る人なら分かると思うが、それで接点寿命を悪化させない説明を求めたい。
例えばぐぐると↓こんなんでましたけど。
http://blog.goo.ne.jp/jh3kxm/e/f186e452e693d25522083fcc67ee6dc6 >>533
>接点はゼロオームでは無いですよ。
もちろん知っています。でも1Ω以下なんて、ゼロとして考えて回路設計すべきです。
>接触時にも数十mΩ有ります。
私たちがよく使う、ALPSのSKHHのデータシートをご覧ください↓
https://www4.alps.co.jp/densokunou/productLineDetails/?productNo=SKHHALA010
初期値で100mΩmaxらしいですね。
>なので数uFに5Vで貯めた電荷の消費程度問題なしです。
5V / 100mΩ = 50A の突入が流れると思います。
100mΩmaxですから、実力値はもっと低抵抗なので、電流はもっと流れると思います。
しかしスイッチのデータシートを見ると、最大電流は 50mA らしいです。
最大電流の1000倍以上も流しておきながら、問題無いと言い切る理由を
示してもらえないでしょうか?
みなさん、すでにそのよう使い方をしていて、特に問題が発生していないという事実と、
自分の行いを否定されたようで しゃくにさわると思いますが、
知らなかったことは素直に「そうなのか」と理解してほしいと思います。
大丈夫な訳がありません。
それを知った上で、抵抗なしで使うのは、自己責任ですので問題ないと思います。
実は私も以前、リセットスイッチで知らずに直結で使っていて、
リセットが効かないクレームがあり、大問題になった経験があるので、
みなさんにもお伝えしたいと思ったのです。 お前その電流を実測してみたかい?
脳内で騙ってるんじゃないよね。
と、上司に言われなかったのかな。 >>517-521
ゲームの場合だと画面更新ごとに割り込みが来るから
その時に1度だけ読んでやればいいだけでチャタリング除去は気にしなくても平気だと思う。
むしろそれで駄目だと521が書いてるけどボタンが使い物になってない。 仮にそれが問題でなかったとして、もし後日接点不良が起きたら、設計ミスと言われても反論できない。 まぁでも普通は抵抗を入れてCからSW接点への電流制限をするだろうな。
趣味の電子工作なら構わないけど、商品として代金を貰うなら。 今思い出したけど、誰かが秋月の機械接点式の安物ロータリエンコーダで
http://blog.goo.ne.jp/jh3kxm/e/f186e452e693d25522083fcc67ee6dc6
のような使い方をして、
「接点のチャタリングがひどすぎる」って苦情言ってなかったけ? >>541
>コンデンサの内部抵抗は考えないの?
もちろん考えますよ。
以下のサイトでESRを見てください。
http://ds.murata.co.jp/software/simsurfing/ja/
値を1uFにして「R」ボタンでESR見てください。1GHzで1Ωくらいです。
この抵抗がコンデンサに直列に入ったとして、5Vですから5A流れます。
最大電流より100倍も流れますよ。 >>544
>「接点のチャタリングがひどすぎる」って苦情言ってなかったけ?
あの200円のエンコーダーですが、
「普通のタクトスイッチと同じだろ」って使うと、填まるって知ってます?
なんと 0.5mAmax しか流せない。
5Vで10kが最低抵抗。回転接点としての応答性を上げたくて、電流多めに流すと
壊れてしまう。22kとか33kで釣らないと。 新しい部品を使うときは隅から隅まで資料読まないとダメだよね。
このエンコーダを普通のSWの接点のつもりで使って、
さらに接点保護の抵抗を入れなかったりしたらすぐに壊れるだろうな。 僕は、実際にやってしまった。
それで覚えてるんですけどね。 >>546
直流の話で1GHzのところって本気で言ってるなら馬鹿じゃねーか? pic16f18313のEEPROMを使おうとして、Code Generaterで
void DATAEE_WriteByte(uint16_t bAdd, uint8_t bData)を使ってます。
ソースを見ると途中で
INTCONbits.GIE = 0; // Disable interrupts
やっていますが、何故ですかねぇ?
この行と戻す行はコメントにして使っていますが、
EEPROMに書き込み中にNVM関連のレジスタの操作を禁止にしたいだけですか?
詳しい方教えてもらえるとうれしい。 そりゃEEPROM書換中に割込はいったらデータ化けますがな >>552
意図しない書き変わり防止するために、特定のレジスタに連続して書き込み禁止解除の為の値を書く必要が有る。
この間に割り込み入ってしまったら、書き込み禁止解除されない。 MPLAB IPE
トロくて、イマイチだな。
PICkit Programmer の方が軽くて良いや
16F18313 にも何とか対応してくれよ。 >>557
>トロくて、イマイチだな。
どんな風にトロイですか? 12F1822 -> 16F18313 の移行をしてたんだが
IPE、この2つのデバイス指定を変更する毎に Firem WareのDownLoadが始まる
遅くてやってられない
結局、12F1822用/16F18313用 と2台使って凌いでる
トロイだろ PICkit3使っていますが、18F46K22と16F18313を使っているとファームの入れ替えがうっとおしいのですが、2個持つしかないのか? 昔はそういう待ちは煙草を吸いに行く絶妙のタイミングだったのだが、、 ん、タバコに火を付けるタイミングだろ。
いちいち席を立つのはめんどい。 ググりまくって
PICkit2 で 16F18313 の Prog-Rom / Config-Word の読み書きはできるようになった
(*EEPROMは駄目)
EEPROMは駄目だが、現状使ってないから 俺的は これでも十分可 16F18313/18325も設定いじれば旧mplab&hitech-c&pickit3環境で行けるんか?
と思ったら秋月で16F1825在庫が復活したのでしばらくは凌げそう PIC内のEEPROMをPICKIT3から書く用途が今一わからん
デバッグ用? >>571
シリアルナンバーを書き込むためじゃない。
小遣い稼ぎな。 EEPROMを書き込むプログラムを書き込んで実行すればいいんじゃない >>573
それを省くためじゃないの?
シリアルなどは通常生産ラインで書き込むが? xc8 と asm のインターフェイス、
"*.c" 側じゃなくて "*.asm" 側での複数パラーメータ受け取り方法な
変態アーキのせいで、一般的な スタック or レジスタ渡しとは異なもので、
リエントラント制限とか、コンパイルド・スタックが どうのこうの・・・・ とか
"XC8 C Compiler User’s Guide" 見ても、お情け程度の事しか書いてない
FNROOT/FNCALL の辺りを使うらしいんだが、ググっても殆ど参考例が見つからない
変態すぎて誰も使ってないか? 詳しいヤツ、教えてよ。 同じパラメータ、同じ戻り値のC関数をコンパイルしたのを参考にすると良いよ pickit3のファーム書き換えは、一服するには、チト足りない はっきり言って 糞だね、MPLAB IPE
もし IPEを 使うなら、2000円程度の中華品でも買い足して凌ぐんだな ATtiny2313というものがありますが、
これはPICなんでしょうか?
また、.hexをpickit3で書き込めるんでしょうか? データシートくらい探してきて目を通せ。
書き込めるかどうかはその後だw >>585
こんなとこでいきがってるのが恥ずかしい
恥を知ろうよ! >>586
マイコン使うにしても、まず言葉を知らないとな。
いき‐が・る【粋がる】 の意味
粋だと思って得意になる。また、虚勢を張る。
検索して探してきてデータシートに目を通すのが、「粋」な事らしいw
あ、そもそも「粋」を知らんか。
ホント、手に負えんな馬鹿は。 通りすがりだが、
目を通せ。という命令形が偉ぶっている。
偉ぶっているといきがっているというのは似た言葉である。
まずはデータシートを探して目を通されてみては如何でしょうか。
なら同じ内容だがいきがっていない。
というわけで 586 の勝ちに1票。 >>587
どうでもいいことにこだわるのはどうかと思うわ
問題の本質をみようよ 最近気づいたが、MPLAB X IDE v3.52でビルドすると以下の状態。
Microchip MPLAB XC8 C Compiler (Free Mode) V1.41
Build date: Jan 24 2017
Part Support Version: 1.41
Copyright (C) 2017 Microchip Technology Inc.
License type: Node Configuration
:: warning: (1273) Omniscient Code Generation not available in Free mode
PLink.c:169: advisory: (1510) non-reentrant function "_InitEvent" appears in multiple call graphs and has been duplicated by the compiler
PLink.c:751: advisory: (1510) non-reentrant function "_SetSysLog" appears in multiple call graphs and has been duplicated by the compiler
PLink.c:3188: advisory: (1510) non-reentrant function "__memset" appears in multiple call graphs and has been duplicated by the compiler
PLink.c:3195: advisory: (1510) non-reentrant function "__strcpy" appears in multiple call graphs and has been duplicated by the compiler
これらのワーニング消せないかな?
ちなみに_memsetは以下の通り。
void _memset(unsigned char *ptr, unsigned char data, int size)
{
while (size-- != 0) {
*ptr++ = data;
}
} MPLAB X IDE v3.51だったv3.55でも変わらんけど _memsetとかを割込みの中で使ってんじゃないの?
PICはスタックが沢山無いから、通常はスタック上に取る引数を固定領域で代替したりするのでreentrantにならない
そういうreentrantが必要な場面をコンパイラが見つけたから複製(duplicate)しといたよというメッセージなので
別に放置しといても問題ない
どうしてもwarningが出たままだと許せないというアスペさんなんだったら、割込み内専用の_memset
(たとえば _another_memset() とか)を作って、割込み内ではそっちを使えばwarningは消せる
が、結局コンパイラがやってくれてるのを手動でやってるだけのオマヌケなのでオススメはしない >>594
詳しい説明ありがとう!
duplicateが出てもそのままにするわ。 >アスペさん
>オマヌケなので
こういう、いかにもガキが喜んで使いそうな言い回しを
自制してやめられるようになれば一人前なんだけどな。 ×いかにもガキが喜んで使いそうな
○ガキなのでつい喜んで使ってしまう
だった、すまん。 xc8で質問です。
C++のclass書いたのですがビルドできません。
何か設定あるのでしょうか? >>599
XC8ってCしか受け付けないんでは?
XC32だけC++が使えた気がする C++の方がいろいろと便利なんだよね
stlやnewが使えなくてもいいからコンパイラだけでも対応してほしい >>600
対応してないのですね。
.hファイル作成したら、#ifndef __cplusplusがあるので対応してると勝手に思ってしまいました。 MPLAB XIDE(v3.51)でXC8(1.41)を使っていますが、ソースファイルを5個に分けたたらビルドできなくなった。
_mainが無いとか出てる。main.cにあるんだけど。
ProjectsのSource FilesでNewでC Main File... とmain c...の2種類出てmainの引数有無の違いがあるのも良くわからんなぁ。 >>603
引数がコマンドライン文字列で、戻り値がint が、main の本来の形。
組み込みでは、引数無しとか、戻り値無しの形も多い。 >>605
そんなことを聞いている訳ではないと思うが PIC16F183xx コスパ高いんだけど、今の処 8Pinは16F18313だけ
PIC16F18314 予定無いのかな?、出てもよさそうなんだけどな mplab起動したらアップデートのお知らせじゃなくて、ライセンスがなんとか?ってきたけど、何か変更あったの? >>607
15313がそのうち出るけど、あんまり変わらない >>603
自己レスです。
Shift-JISの罠にかかったです。
UTF-8にして解決です。 PIC16F18313使ってるけど、色々入ってるのはわかるけど
入ってる機能使うにはちょっと数減らしすぎで、Demo用の
チップのような気がする。
たとえばCLCやタイマーやCCPは減らされると入っていても
使える用途が限られてお遊び程度しか出来ない。 8pinだからね
安いし
個人的には18316がほしいが出ないだろうね PIC16F145xの後継も出てほしい
要望はRAM容量
1KBじゃいろいろ出来ない 12F1822->12F1840 みたいな感じで
ROM/RAM 拡張版が出てもよさそうだけどな RAM容量が大きいのはMicrochip的には24/32でカバーできているつもりなんじゃないですかね。
世間的には Cortex M3かM4でええやん、って感じで。 RAMやROMを増やすのが一番コストの増加につながる
しかも増やせば増やすほど歩留まりが悪化するため
必要最小限にとどめる戦略dと思う・・・・
でも、自分的にはあれば色々できるかなとも思うけど
現状でもほとんどのものが実現できているのも事実で
発売されてるチップの数が多いので、条件に合わせて
選べば不自由はないと思うよ。
PICはROM容量をワードで表示してるものが多いけど
AVRはバイトで表示しているので実際は半分の容量しか使えない
というのが実情です
(ATmega8は4K,168は8K、328は16Kwordが本当の容量です)
Tiny2313は1Kwordしかないのです・・ .
.
東京都三鷹市下連雀 元ニコ生主の莉里子 吉祥寺よ https://i.imgur.com/XYIO6ri.png http://imgur.com/a/iO1sL (リスカ)
(整形後) http://i.imgur.com/SLcz3dS.jpg (整形前) http://i.imgur.com/zPvxpx5.png
不倫とか浮気・密会や不道徳な行為はね 著名な小説家もしているの だから私もやっている
ヘラって撮ってもらった黒歴史の私のヌードも見せてあげる https://i.imgur.com/vZeIuO3.png
■2015年2月 釣りニコ生主コジコジと沖縄旅行でオフパコ
2015年2月2日-3日...沖縄旅行でSEX/やり捨てされ逆ギレ
2015年2月4日.........莉里子の父親から電話があって脅されたとコジコジに放送で暴露される
2015年2月6日.........リスカ画像UP
2015年2月9日.........ツイ全消し/コミュ爆破逃亡
http://imgur.com/a/58WQC
■2016年6月 バンドマン兼ニコ生ツイキャス配信者と密会 その3日後にSEX〜継続中
http://imgur.com/a/Lx8o2
●土井莉里子●早川莉里子●土井寧々●土井剛●早川剛●星崎●りりこ●りりこし●にゃんぱす
●ね子●にゃこ●みんち●めう●ねね●猫又●剛
※名古屋のゲイ風俗ホストとも肉体関係※ >>617
そのROM1KWしかないエントリモデルのtiny2313でさえAVRは実用的なマルチタスクが動かせるんだぜ、驚くだろ? どうでも良いが自分が発明したわけでも無いのに自慢するなよ。 入信した人は自慢したくなり他を罵倒し争う
入信していない人は何そんなにムキになってるか分からない >>621
ちょっと賢い周辺IC を目指したPIC に、コア性能でしか張り合えないとか。 PICとAVRならAVRの方が上なのは間違いがないけど、ARMやMIPSに比べたらゴミ そのゴミでさえちゃんと使いこなせないような三流プログラマしかいないけどw >>629
使いこなせなくても、ARMやMIPSをヘボながら使えて用が足りるんなら良いんじゃない? ゴミを使いこなす方が難しい
変態アーキテクチャー&エラッタ PICは100均工具だと思ってる。精度は悪いけど安くてどこでも入手できる。
欠点を理解しつつ工夫して使えば数千円の工具にも匹敵するパフォーマンスを発揮 >>633
自分の書き込みがゴミで無視されてるって考えは浮かばないの? いつも感じていることだけど、趣味でPICを使っている人って健気だね、
オジチャンは感心しちゃったぞ。
そのうちにマイクロチップ・テクノロジー・ジャパンから表彰されるかもしれないな。
周囲の雑音なんて気にせずにガンバッテ下さい、陰ながら応援していますよ。
では失礼します。 イヤミっぽい書き方になってしまって申し訳無い。
まぁ、でもガンバッテ欲しい、というのは本心です。
趣味の電子工作の道は違っても目指しているものは同じだと思うので。
気を悪くされた方がいたら、すみませんでした。
これで本当に終わりにします。 俺に取ってPICは(重要ではあるが)問題解決の一要素に過ぎない。
なので「フルパワーを搾り出す」とか「能力を使い切る」とか書いてあると
いい歳した大人のくせして…高校生かよ、と思わざるを得ない。 昔のトラ技の記事
PICでブロック崩し作ってた人いたな
あれはすごいと思った NTSCの映像信号をソフトで作った人ね
今でも語り草だよ >>640
いい歳した大人のくせして…
PIC信者www PICとかワンチップマイコンを扱える人間なら
PICだろうがAVRだろうがお互いの違いに文句を言いつつも結局は扱えるだろうから
お互いを馬鹿にしたところでたいした意味は見いだせないだろうなぁと思ったり。 少なくとも「エラッタガー」って連呼してる特定の一人は悪意でやってると思うわ いや、事実だろ
エラッタが多い
エラッタを放置
エラッタを未公開
は コア性能とエラッタ
これがPICの悪いところ
それをわかってて使ってるんでしょ? コア性能が良いとか、エラッタが他のマイコンと同等だとか、そういう事実と異なる主張の方がよっぽど悪意を感じられる バグも仕様のうち、という言葉があってな、
仕様を変えたら、今まで運良くでも動いていたソフトが動かなくなることもある。
チップメーカーは流通在庫をコントロールできないし、
製造業のユーザーがバージョン違いの両方で確実に動くことを確認することも難儀。
一旦世に出したら、かたくなに仕様(バグ、エラッタを含む)を変更しないというのもひとつのポリシーだと思うよ。 エラッタ隠蔽も、エラッタによるスペック詐欺も、モデルチェンジでエラッタを引き継ぐとかもポリシーか カタログスペック「アナログを強化、12bit ADC搭載」
エラッタシート「12bit ADCはまともに使えません。10bitで使ってください」
カタログスペック「ウィンドウモードのウォッチドッグタイマー搭載」
エラッタシート「ウィンドウモードのウォッチドッグタイマーはまともにつかえません。非ウィンドウモードで使用してください」 場合によりけり
bra/brw 命令実行中に割り込みが入ると どっかに飛んでくとか、到底仕様とは言えない
この場合、直すか/使うなと言うか のどちらかだ。 >>645
「悪い所を指摘している」のではなく
「悪い所を指摘しているのに気にしない人を馬鹿にしてる」んだよねぇ。見てるとさ。
しかも粘着の仕方が異常。 >>656
それを言いたいが為にずっと粘着しているようにしか見えんし。
自分の意見を認めてもらえず、それが悔しくてに粘着してるんだろうなぁと。
使いたい人が使いたい物を使えばいいだけの話。 >>657
エラッタのを回避ができなくて相当苦労したんだよ。そっとしといてやんな。 自分はまだ経験が無いけど、
作ったプログラムが正しく動作しない原因がCPUのエラッタのせいだと分ったときの
ショック、怒りは大きいだろうな。
しかし修正しないってのはメーカーとしてあり得ないと思うけど、どうなってんだ? > 作ったプログラムが正しく動作しない原因がCPUのエラッタのせいだと分ったときの
> ショック、怒りは大きいだろうな。
PIC の話ではないが、雇われ技術者の経験談としては、俺のバグではなかった、ザマミロ、とある意味ほっとする面があるんだ。
それと、エラッタ回避も自分の責任ではないと判明した以上、パズルを解くような楽しみさえある。
必ずしもいつもそうだ、というわけではないが。
> しかし修正しないってのはメーカーとしてあり得ないと思うけど、どうなってんだ?
エラッタ修正版が出てきたら出てきたで、テストを全てやり直し、もうエラッタ回避してちゃんと動いてるんだから勘弁してくれ、という気分になることも否めない。 経緯分からないんだけど、結局そのバグとやらは
ちゃんとMicrochipに然る筋からキチンと報告したのかね?
ここで騒いでるだけで隠蔽だの言ってるのだとしたら
単なる粘っこい残念な人にしか見えないんだけど。 PICではないが、8bitマイコンのエラッタが原因で、出荷後にソフト変更を行ったことが1回ある
市場で発覚
負荷テスト1週間位でやっと発生する問題
エラッタに記載は有ったが、内容が正しくなかった為に、非常に低い確率で回避出来ていなかった
当然メーカーと代理店を呼びつけて説明して頂いた
損害賠償請まではいかなかった
10年くらい前の話 8bitだと、コンパイラのバグでソフトのバクを出したことがあった
これは幸い量産には間に合った
コンパイラのエラッタに記載が有ったが、その当時コンパイラのエラッタを確認するルールも習慣もなく見逃した 8bitレベルの小規模マイコンだと、思い出に残ってるのはこの2件くらい
一部上場電機メーカーの開発チーム20年のエンジニア エラッタが直ったことで発生するようになった問題は今まで一度もない
通常、エラッタを回避する場合はエラッタが無くても正常に動作するコードにするので
エラッタが直らない方が良いと思ったことはないな
評価はエラッタが直ろうが直るまいが、リビジョンが変われば当然やるよ
おれがやる訳じゃないけど PICは量産では使ったことがないし、使おうとも思わない
ただの趣味 簡単に回避可能なエラッタなら、情報を適切に公開してる前提で、直さなくても良いとは思うけど
PICの場合は、回避不可能なエラッタ、機能が使えなくなるエラッタ、回避コードがコード全体に影響するようなエラッタまで放置なんで
しかも適切に情報が公開されていない >>669
そのコメントはある意味否めない。俺は品証じゃなかったからね。 負荷テスト一週間程度で出る不具合が検出できてない時点で
チップメーカー非難する以前のレベルだろう。
事前に部品評価もQAもろくに出来てないんだろうな。
よくまぁ一部上場企業とかドヤァ出来たもんだなぁ・・・ >>673
発生した時のログと現象からピンポイントに絞った負荷テストだよ
普通の負荷テストじゃ1年やっても発生しないよ
ていうか、製品に夢見過ぎだな
ある程度の規模以上のソフトはなにかしらバグがある これだけ使えない機能が有っても売っちゃうんだもんな
これでも氷山の一角 ほら、みんなで相手するからエラッタ君キャッキャ言ってるぞ。
「相手してもらったぁぁ!!」って夜も寝られないぞ。 結局、メーカーに言えないからここで憂さ晴らししてるだけじゃんw 安価で提供する代わりにアマチュアユーザーがバグ出し検証に協力していると思えばいいんや
対策版を企業ユーザが採用し、そこで得た利益を新製品開発に投入する・・・良いサイクルだ アマチュアユーザーはバグがあっても報告しない
Microchipはバグがわかってても対策しない PICユーザーはプログラムがうまく動かないときに
<自分のプログラムの問題なのか、それともCPUの問題なのか>
なんて悩まなければいけないのか?
考えただけでもゾッとする 苦情を出したいんですが英文が書けないのでここで憂さ晴らししています >>682
まず99%自分のバグを疑え、
errataなんて万策尽き果ててから真剣に見るもんだ。
それまではチラ見で問題ない
>683
データシート読んでる位ならかけそうなもんだが。
つかgoogle翻訳 もうマジレスなんかしないでスルーしようぜ
煽って楽しんでるだけなんだし >>684
普通のマイコンだとそれで良いんだけど、PICの場合は違う
そもそも記載もされてない >>683
苦情を出したからって動くようなメーカーじゃない
全くの無意味 多くのモデルでDIP版がある
秋月でDIP版の品揃えが豊富
趣味の電子工作の小規模マイコンでは採用率が高く、作品例も多く紹介されている
低価格路線のシェアが比較的高い
基本的には廃盤にしないポリシー
モデル数が多く、古くて低性能高価格の物も売っているので、モデル選択に困る
CPUのパフォーマンスは全体的に低い
特に8bitは顕著
エラッタが多く、公開されてない物も多い オレのお薦め
迷ったらこれを買え
(秋月に売ってるPIC DIP限定)
●USBなし
PIC10F200 マゾ専用 最低スペック 50円
PIC10F322 最安 45円
PIC16F18313 8pin 75円
PIC16F18326 14pin 130円
PIC16F18346 20pin 160円
PIC32MM0064GPL028 28pin 3.3V 175円
●USBあり
PIC16F1455 14pin 140円
PIC16F1459 20pin 180円
PIC32MX230F064B 28pin OTG 3.3V 270円
PIC32MX270F256B-50 28pin OTG 3.3V 380円 >>686
AtmelだってAVRにerrataに載ってないバグあったよ。
心配ならルネサスでも使っとけ。 仕事で使ってる分にはDisconなし、ってのは有難い方針なんだけど、
趣味の方にはデメリットなの? MAPS onlineとか使った事ないの?
秋月の取扱いが全て? >>693
逆では?
遊びなら古いCPUを死ぬまで使い続けてもカラスの勝手だけど、
仕事で使っていると適当な期間で生産中止にしてくれないと困る。 >>694
それは開発でお金をもらう立場だけの言い分では?
当たり前だけど、開発の主体となって製品を出す立場なら、部品は長期供給が続けられるものの方がいい。
ディスコンになったからといって開発部隊を動かしたり、開発外注にお金を払うのは避けたいわけだし。
一面だけ強調して「仕事ならディスコンしてくれないと困る」と代表されても、ナニコノヒトって感じ。 下請けだとディスコンになろうがなるまいが
供給責任という名のもとで長期間ほそぼそと作り続けなくてはならないのだよ >>691
仕事で使っていれば分かるけどルネの石も酷いもんだけどな >>695
普通はそんな0か1かみたいな話じゃなくて商品のライフサイクル決めて計画するだろ >>698
ルネもRL78でSPI通信にエラッタあって
業務開発でモロに食らった経験ある
メーカー問わずシリアル通信の受信ユニットは
マイコンクロックと同期しないからバグが出やすい鬼門なのかもね >商品のライフサイクル決めて計画するだろ
ごもっともです。 >>695
私がCPUの生産中止を望むいくつかの理由
・CPUボードはCPU1個だけで出来ているわけでは無い。
周辺の半導体はもちろん、コネクタ、スィッチ、ノイズフィルタ、CRなどが
1個でも入手できなければボードは作れなくなる。CPUだけ存在しても意味が無い。
・機能をアップしたくても古いCPUの仕様に縛られてしまう。
上位コンパチみたいな形で対応せざる得ないがソフト、ハード共に面倒になる。
・使っている客がいる限り、そのCPUボードのサポート体制(人と部品在庫)を維持しないといけない。
・修理だけでは儲けが出ない。適当なタイミングで新しいCPUボードに買い換えてくれ。
私と >>695 の考えが異なるのは、作っているものが異なるからか?
ちなみに当方の一番古いCPUボードはザイログZ8を実装した'90年頃のもので、
複数個のラック(マザーボード)をLANで接続してビルの管理をしており。
現在も24時間365日稼働している。
たまに落雷や工事で壊れたりするのだが、CPUボードの時計ICやPLD、
DC-DCコンバータなどが当然入手できないので、修理に四苦八苦している。
>>695 は本当にメーカーなのか? どんな商品を作っているのか?
……などと長々と書いてきたけど、
いつも君と意見が衝突するし、いつも同じような内容のやり取りだし
なんかとても下らない事にエネルギーを遣っているような気がしてきて、
突然もうど〜〜〜うでも良くなったw
レスは不要です。(もちろん書いても構いませんが)
関係無い人、興味ない人、長文ゴメン。 >>702
それってCPUが製造中止にならなくても、作り手の意思で更新すればできることじゃないか。
自分たちで企画した製品でも社内の理解が得られなくて、CPUを更新することなんてできない、
いっそCPUがなくなればできるのに、って話なんだろうけど、
コンペチタが競合製品をぶつけてくるときは、その時点で合理的な部品の選択してくるよ。
だいたい言ってることに一貫性がない。古い機器について
>時計ICやPLD、DC-DCコンバータなどが当然入手できないので、修理に四苦八苦している
CPUがディスコンになっていなくても、他の部品がディスコンになっていることを理由に作り直せばいいではないか。
それができない現場なら、CPUがディスコンになっても類似CPU+周辺回路+ソフト変更でお茶を濁せって言われるぞ。 こんなリスキーなCPUを
開発ベースとして選択してる時点で
設計担当者としては才能が無いと考えた方がいい 初代Pentiumか何かがcmpxchg8bなんちゃーらを食らうとそこでハングアップするエラッタ無かったっけ?
バッファオーバーフローとかで好きな命令動かせるようになると威力を発揮する危険なエラッタが
プロテクトモードでも駄目なんじゃ無かった様な気がした エラッタというより非公開のメンテナンスコマンドだったというよな説も
フローティング演算結果がくるってるというのが結構有名だったよな。 教えてください
テスターなどの表示数字の表現で、3桁半とか言いますが、この意味がわかりません。
たとえば、
・1999表示は、全部で4桁ありますが、半と言うのは何を示すものですか?
・3999表示、5000表示は何というのでしょうか 1か0(無点灯)しかないものが1/2桁
3,2,1,0しかないものが3/4桁
最大表示が1999は3と1/2桁
最大表示が3999は3と3/4桁
最大表示が5000は知らん PICの8ビットコアをAVRに変更する
エラッタの修正をAVRの設計スタッフに頼む
以上でPICの現状の問題点はとりあえず回避できる >>709
割り算テーブルが間違ってるヤツだな
intelはあれ以来エラッタを修正できるような仕組みをCPUに入れた >>712
そんなことしたら、会社が傾きどっかに買収されておしまいwww ところでHarmony 2.0はいつbetaが取れるんだ?半年は掛かってるが。 ARMの資料らしいけど、ARMの32以下っていつ位の時代の話だろう?
4bitは4bitなりにRTC内蔵とかデフォでやってるのでむしろ8/16bitが置いてかれるのは分からんでもない 組み込みCPUなんて所詮黒子なんだしいちいち盛り上がったとか凋落したとか違和感あるわ
(スマホのアプリケーションプロセッサは除く >>719
ARMは32bitと64bitのアーキテクチャしかないよ
ARMが提示した資料だけど、MCU市場全体のグラフ >>721
レスあり、PPCとかMIPSとか相手にしてた時代からの話って事?
(その辺しか昔から高ビットでやってたのを知らないのでニワカっぽかったらすまん)
このスレ的には逆に言うと8/16ならとりあえず各サプライヤのオリジナルとかも含めPIC/AVRあたりの独自マイコンを提示しとけって話になるのかな?
4bitは格安時計用に水晶二つ繋げる品名すら出てこない所を見た事しかないので済まない…
PICもディープスリープで時計になる様なのでないかな?
別に買ったらRTCと電源って高いよね?
理想的には外部電源とボタン電池で外部電源が切れる合間だけボタン電池で動く、数年は楽に持つようなのがワンチップ…とは言わないまでも実装可能なのが欲しいんだけど… 90年代に8bitマイコンが使われてたような用途で
今は32bitマイコンが使える
90年代に2000年代に32bitマイコンが使われてた用途で
今は64bitマイコンが使える
時代は移り変わっていくもの PICなら32bitでもDIPパッケージとかあるし
毛嫌いすることもないんじゃないのか >>726
さすがに出ないでしょ
PIC16F1454/PIC16F1455の後継、ROM/RAMアップ版希望! >>712
8bit PIC のコアの仕事は、レジスタに値設定するだけだから。 >>728
1822が出る前、流石に8ピンでUSART付きは出ないと思ってたわ 8ピンPICで簡単なロガー作ったことあるけど意外と使いものになる
一日数回A/Dした結果をEEPROMに記憶し、UART〜FT232経由でPCに吸い上げる使い方 USBの場合、
pin数がなんとかなったとして、
ROM/RAMはPIC16F18313に対して大幅に増やさないとUSBドライバが作れない
アセンブラでガチガチに作らないと機能が実現出来ないような製品を作るわけはないし
ROM/RAMを大幅に増やした8pinが出たら、USB機能以外にもいろいろとうれしい PICはペリフェラルI/Oコントローラとして作られたのだから
システムコントロール能力が低いのは当然であって
他のメーカーのCPUのような過大な期待をしてはいけない
731 のような単機能のフォーマット変換やプロトコル変換や前処理・後処理なら
エラッタありのPICでも十分に使えるし
この世にはそのような低レベルの需要はいっぱいある
エラッタがある、エラッタが未修正、マルチタスクが走らないなどと
文句を言う事自体が間違っているのだ
これでいいのだ (天才バカボン) じゃあ初心者が普通のマイコンだと勘違いしないようにテンプレに載せとけよ
PICはマイコン未満のデバイスですって >>733
逆に言うとPICに今時のマイコンみたいな
汎用性とかスケーラビリティとかを
期待しちゃダメだって話だな
PICは決まった処理の低レートの処理を
地味にこなす様な用途にしとけって事だわ
RTOSやら話が出て来た辺りから
妙な方向に話が突き進んでしまった様だ PIC32MM0256GPL028の情報無いですか? 汎用処理が出来ないとかwww
℃素人にも程がある。
計算可能性理論とかの基礎から勉強すればいいのに
ユトリ世代って、箸にも棒にもかからないwww 計算可能性理論www
おれの得意とするところだが、この板でやる話題じゃない バグだらけのPICに計算可能性理論…
世の中には理屈通りにいかない事が多いって
いつになったら気付くのか いやいやバグとかPICとか関係無いから
計算可能性理論
実際のコンピューターの命令とは関係なく、
計算オーダーですら無視するジャンル
無限のリソース、無限の速度のコンピューターで何が出来て何が出来ないか
とかそういうことを扱う学門
℃玄人がそんな関係無い話題を出したってことは、その学門の意味を知らないってこと >>748
で、お前の動かしたいプログラムは、PICだとどれくらいの時間が掛かるんだ? うっせーなお前らの好きな16F84A 4096コでクラスタでも組んどけ PICを使ってビッグバン後の宇宙のシミュレーションをしたいと思っています
PICで実現できるでしょうか
PICは何個必要でも用意します
また有限時間でできるならいくら時間が掛かってもかまいません
よろしくお願いします 宇宙の素粒子の数分用意してください
10^(-100)秒間を10^100秒でシミュレート出来ます 素粒子の数だけPICは用意できるでしょうか?
素人考えだと宇宙中から集めても材料が足りなくなる気がしており不安です
よろしくお願いします 何個でも必要なら用意するって書いたのはウソか?
材料が足りないなら他の宇宙から持ってこい ネタにしてもかなりお寒い内容だと
何故書いている最中に気付かないのか
せめて投稿する直前に一度読み返して
寒い内容だと自ら気付く慎重さが
開発者のセンスとしては必要だな 自分がつまらなかったネタをスルーせずいちいち突っかかってくるセンスは
開発者にとって必要なセンスなのでしょうか? 実力無い奴って、発想が貧困だから碌なネタを書けない。
他人の書き込みですこしスレが振るわうと、何故か悔しがって珍妙な書き込みするんだよなwww
面白すぎるw 宇宙をいくらでも用意するから、お金の心配はするな。俺にまかせろ。 >>759
>実力無い奴って、発想が貧困だから碌なネタを書けない。
>他人の書き込みですこしスレが振るわうと、何故か悔しがって珍妙な書き込みするんだよなwww
この発想はどこから来るんだ?
そもそもスレは誰かさんの所有物では無いと思うし、賑わって悔しがる必要も無いと思うけどな
。
もしかしたら 759 は少しでも他のレスが賑わうと、
悔しがって珍妙な書き込みをしている本人なのか?
--- AVRスレより ---
卵加
印加帝国
印加してもいーん…
あい〜ん
押下すんぞ?
インカのめざめ
インカの山奥で修行して
淫花ってのがあったなか 微妙に話それるけど質問。
MPLAB X IDE内蔵のエディタ画面中央に、縦の赤い線が表示されてるんだけど消せないんかな? 線幅1ドットで、画面を中央で分割するように上端から下端まで表示されてる。
もちろんモニタの異常ではなく、内蔵エディタでのみ表示されてる。 返信ありがとうございます。
>>769
画面ど真ん中なんでマージンと言う感じではなさそうです。
>>770
後で設定見てみます。 >>768=>>771です。
右マージンの設定値を200にすることで赤線消えました!あぁスッキリ。
皆さんありがとうございました。 ちなみに昔内蔵エディタの矩形選択について質問した者ですが、ctrl+shift+rで切り替え出来ることを割と最近知りました。ちょっと挙動不審な事もありますが。 MPLAB X IDEの文字バケ問題解決したわ
win10から7に戻したら文字バケしなくなった
どうも俺のパソコンは10と相性が悪いらしい IDE全体の設定と、プロジェクトごとの設定と、テキストファイルの文字コード、全てが一致してると問題は発生しない あー8.92はないわ
ICD3とかのドライバスイッチとか面倒だし
全部8.92で開発出来れば使うんだけどねぇ
Xメモリバカ食い,1G近くも食ってるわ
32bitWinだと辛い 昔なら一台新しく組んでLinuxでって言えるけど今ノートPC買ったほうが安そうだしなあ
うちは部品が余ってたから一台組んでLinuxで開発してるけどそう言う時代じゃないし
一応5桁PIC使えるよ。当たり前か 初PICでPIC10F322いじってみてるんだけどLチカでは
つまらないのでPWMでブザー鳴らしてみたんだけど
ちょっと音階鳴らすだけのプログラムでもCで書くと
メモリあふれちゃうな。
こういう時ってどういうコードが生成されてるかを
確認する方法ってある?
サイズ内ならば生成されたelfだかhexを開発環境に
食わせて逆アセンブルの内容を見れるみたいだけど
なんとなく関数化されてるものが展開されてるように
見えるので確認したいなーと
環境はWindowsでMPLAB Xの最新の奴を使ってます コンパイルオプションでアセンブルコード吐き出させる >>785
XC8でもはかれます?
試したけど生成物の中にそれらしき物が見つからず。
ググったらXC32の記事は出てきましたが・・・。 >>784
Cとかいう以前にプログラミング能力の低さをなんとかしてください >>784
音階を鳴らすくらいなら十分に収まります
自分はNCO使ってメロディーを鳴らしていますが
結構、音のデータも入ります。 ふむ・・・よく見てみたらちゃんとビルドが通れば--asmlistでlstファイルが
はかれているね。今回の場合は生成されないので比較出来なかったけど。
コードを切り詰めて切り分けしてみたら__delay_msの書き方の問題みたいだけど
こういう事は出来ないの?while内に直接書くのはビルド通る。
#define _XTAL_FREQ 8000000
void WaitMS(int x)
{
__delay_ms(x);
}
void main(void)
{
while(1)
WaitMS(100);
} 良く判らんが待ち時間はタイマで測定して、別の処理させろや 世の中には10種類の人間がいる。
二進法が理解できる人間と出来ない人間だ >791
__delay_ms とかは、実体はマクロだからな。
たくさん使うなら、関数化した方が良い。 マクロだから変数は受付ないと思ったな、違ったらゴメン
少々の誤差は出るが
下みたいに定数を使った形に書き直せば通ると思う ・・・試してはいないけど
void WaitMS(int x)
{
do {
__delay_ms(1);
} while(--x) ;
} 単なる動作確認でちょいちょいと適当なコード書いたら
意図しない動きになったのでなんで?何が起きたかは
どう解析する?という話なのでタイマーを使えとかは
期待した答えではないんだがな・・・。
別に全然大したことしてないし、アセンブラで
書けば全然余裕で収まる内容なのは分かってんだけどね。
Cでも大差ないと思ってたから何でかなと思っただけ。
>>796
ああ、なるほど。
中身までよく調べてなかったけど、このマクロの中で
使ってる_delayってインライン関数なのか。
エラーの意味を勘違いしてたわ。サンクス。 どんな言語使ってもちゃんと動けば良いだけ!!
アセンブラ使ってもバグだらけではどうしようもない
開発効率が良いもの使って、精度が必要なとこだけアセンブラ使ったほうが
短時間で開発できる。
趣味でどれだけ時間がかかってもいいようなものなら別だけど?? 開発時間が掛かるのは能力無いから。
趣味でも向き不向きがあるから辞めとくのが吉 以下の理由で、趣味であっても私はフルアセンブラを推薦する。
+ PICのような低レベル(低速、低容量、低機能)のCPUではアセンブラの方がパフォーマンスを発揮できる
+ たかだか数Kベイトのプログラムをアセンブラで書いても大した作業量では無い
+ フルアセンブラとインラインアセンブラでは根本的に設計方針(アルゴリズム)が異なる
趣味なら開発効率よりも達成感、充実感では?
妥協していたら進歩しない PICってPIC10からPIC32MZまであるんですがご存知?
あとさ、趣味もいろいろあって、
手っ取り早く機能を実現したい場合は、フルアセンブラなんて遠回り過ぎて
移植性、可読性、メンテ、この辺を多少でも求める人にも向かない
回路は凝るけどソフトはそれほど興味がないとか
フルアセンブラは、PIC10にどれだけ機能を入れられるかとか、そういうことにこだわりがある人がやればいい
単にパフォーマンスが問題なら、問題となるところだけをアセンブラにするのがはるかに効率的 C言語、C++などで実現出来る機能をフルアセンブラで組むなんてのは、ソフト開発的にはアホ
趣味なら人それぞれ
8bit PICの糞命令を堪能したいとか、MIPSを勉強したいとか、そういう用途ならフルアセンブラはオススメですが 限界に挑戦するならアセンブラは必須
そういうごくごく一部を除けばアセンブラなど不要
仮にアセンブラが必要な場合でも、フルアセンブラである必要性は極めて低い ポートに出力したり、レジスタに値セットする程度で
アセンブラ使う必要性があるのか???
しかもPIC程度のプログラム量で・・・・・ どっちかっていうと8bit PICみたいな超貧弱マイコンの方がアセンブラが必要になることは多い
もちろん大規模プログラムでも使いどころでは使うが、率的には非常に低い
DSPが一番出番が多いかな
特殊な命令で非常に限られた処理時間で処理をする必要がある場合が多いので 必要性にかかわらずアセンブラを勧めるようなヤツ、特に℃玄人は素人
アセンブラの欠点を理解した上で、必要であれば使えば良い
趣味なら御自由に XC8の無料版2ヶ月しか最適化されない問題が解決しないからASMで書くしかなかんべ -O1出来るんなら、それで十分だわ、俺には。
1バイトでも少なくナイト〜 とか 1サイクルでも早くナイト〜 とか、
興味ねえ。 xc8の無料版、最適化なしは1バイト多くなるとかいうレベルじゃない印象 アセンブラでガリガリため息つきながらプログラム
DMA使いだしてからCでフンフン♪ 無料版ってアンインストールして再インストールしたら試用期間リセットされるっていう話は都市伝説なのかな。
サイズもスピードも厳しい用途ではないから試用期間過ぎてもそのまま使っているけど。 32KB選んでも256KB選んでも¥100も違わないんなら迷わず256KB選ぶよ、趣味だし。 @PIC32MX2xx PIC32MX270F256B-50
いっぱい買っちゃったよ
容量小さいのよりエラッタが微妙に直ってたりする
微妙にクロックが速かったりするし >>828
32bit で容量けちりながらソフト組むのはバカバカしいからな。 Lチカってエロチカと読んでしまう。
俺っておかしい? >>830
コードサイズはもうすでに気にする時代じゃないね
データサイズや実行速度は気にするべき情況はまだまだある Harmonyが超贅沢に(無駄に)コードを精製してくれるけど256kBあれば全く問題なし
スクラッチで組めば32kBでも全く問題ない
画像データとかフォントデータとか音声データとか、そういうデータだとまだまだ圧縮が必要 そういうのは読み出しに速度が必要でないなら外にEEPROMでも置いておくべき 普通に考えたら SPI NOR Flash
256kBで足りないのにEEPROMは無いだろ
普通に買えるるのは128kBまでだぞ
いずれにしろ圧縮は普通やる >>835
光ファイバー通信でも下でやってるこたあLチカみたいなもんだから >>838
素人が見るとそうかもね
技術的には全然違うけど そもそも趣味のフルアセンブラ派は命令が貧弱なPICなんか使わん いやいや、世の中にはマゾがいるんだよ
糞マイコンである程燃えるヤツが >>834
EEPROM はバイト単位での書き込みが簡単な分、割高。 >>800
> スルーされたからってしつこく書かなくて良いぞ
べつにスルーしなくたっていいのになあ
ここの人はなんかみんなギスギスしてるから、余裕とかほしいと思ったんだけどな 10種類の10は二進法だったのか!
って感じで良い? W25Q128使えば無敵だ〜〜〜〜〜
ただし、書き込みは遅いけどな!!!! FRAMもいいよ。FM25V01Aとか。値段はちょっと高いけど。 >>853
あー。もしかしたら固定データか。だったら書き込み速度は気にしなくていいね。 連休は別に楽しくなくても良い。
ストイックに自宅に篭って普段時間がなくて出来ないことをする。
今日はPICのライブラリが少し充実した。 過去に作った趣味の PIC ソースコードの
タイムスタンンプが GW ばかりだった。 一年中2chで他人をおちょくってるだけの人生の方がもっと寂しい人生を送ってると思われてるよ 8bitマイコンでアセンブラで必死に最適化するより
32bitマイコン使ってC言語で書いたほうが楽
趣味なら尚更だな 8bitマイコンでアセンブラで必死に最適化する趣味もあるし、
32bitマイコン使ってC言語で書く趣味もあるし、
64bitCPUでアセンブラで必死に最適化する趣味もある >>864
8bit PIC にそんな複雑な処理させないし。 >>864
趣味なら「楽」を求めないだろ?
「楽しさ」なら求めるかもしれないが。 今のプログラマーに
480kB制限でビジュアルRPG作れと言ったら
脱糞するだろうな 32bitは割り込みレイテンシが糞すぎる
25MHz品は致命的
8bitの方が勝手よろしいわ >>870
ワーストケースで32命令サイクルだもんなぁ
8bitアセンブラ大好き人間には到底受け入れられないわ 楽にテストをするならCを使ってタイミング重視ならアセンブラを使う。
時と場合によりだなぁ。
>>869
プログラムが32KBで収まらずに
キャラROMにプログラムを入れてワークRAMにコピーして使うと言う荒業やってる。 測定してみました。
ICNを使って、
ポートが変更されたら別のポートを変更する処理でオシロスコープで遅延を測定してみました。
どちらもC言語で作成、フリー版コンパイラの最高の最適化を行い、
割り込みハンドラの先頭でポートを変更しました。
PIC32の方はシャドーレジスタを使用するかどうかと、
割り込み時に実行している命令によって時間に差が出ますので、
最短と思われる、単純命令中のシャドーレジスタ使用時と、
最長と思われる、除算命令中のソフトレジスタ退避時と、
を測定してみました。
結果は、
PIC16F1454 (48MHz) : 1.2us
PIC32MM0064GPL028 (24MHz) : 1.5us〜1.65us
若干PIC16の方が速いですが、
通常よりクロックが1.5倍速い48MHzですので、
32MHzであれば逆転すると思われます。 通常の処理は圧倒的にPIC32MMの方が速く、
割り込みハンドラはPIC16はすべての割り込みで共通、
PIC32はプライオリティ付き多重割り込み可
ですので、
割り込み応答性能が要求される普通の処理では当然PIC32の方が有利かと思います。 >>874
突然まだマイナーなPIC32MMが出てきてびっくりした。
PIC32MXの50MHz使えば楽勝で勝てるでしょ。
なんでMMなん? >>876
>>870の書き込みに対して測定したからです
25MHz品と言えばPIC32MMでしょう
当然PIC32MXなら圧勝と思います >>877
アセンブラ同士はじゃあ後程
PIC32MXとPIC24もやりますか?
----
全ての割り込みプライオリティレベル用に個別にシャドーレジスタがあるようなマイコンもありますね
全くレジスタ待避を考えなくて良いので、パフォーマンスを考えて使用するレジスタを制限する必要が無くて最適化が楽です
実際は複数のプライオリティの割り込み全ての応答性能が重要なんて事はないんですが >>880
>PIC32MXとPIC24もやりますか?
お手数かけますが、お願いします。 入力〜出力の割込み遅れ時間、興味が湧いたのでtiny2313(20MHz)で測定してみたら、
450nS〜550nS程度だった。
資料によると、
リターンアドレス退避などの割込み応答処理で4クロック
ベクタテーブルのジャンプ命令で2クロック
出力操作命令で2クロックという事で、計算上は8クロックx50nS =400nSだけど
割込み入力回路のサンプリングやディレイが関係しているのかも?
測定プログラム
;***** setup
RESET:
LDI R30,0b11101111 ;Port-D input with pull up, output Low
OUT PortD,R30
LDI R30,0b00010000 ; output:bit4, input:bit0~2,4~7
OUT DDRD,R30
;
LDI R30,stack ;set stack
OUT SPL,R30
;
LDI R30,0b00001000 ;triggered by -edge of INT1
OUT MCUCR,R30
LDI R30,0b10000000 ;enable INT1 interrupt
OUT GIMSK,R30
sei
;
;***** main
Loop:
rjmp Loop
;
;***** INT1
IRQ2:
sbi PinD,_Out ;toggle output
reti
; C言語
PIC16F1454 (48MHz) : 1.2us
PIC16F18325 (32MHz) : 1.6us
PIC32MM0064GPL028 (24MHz) : 1.5us〜1.65us
アセンブラ
PIC16F18325 (32MHz) : 1.1us
PIC32MM0064GPL028 (24MHz) : 0.85us
入力ポートの値を読んで、その値を出力ポートに設定しているので、
>>882 とは微妙に処理が違います。
>>881
今日は無理そう
明日は忙しいので明後日以降にやります PIC32MXを追加しました
C言語
PIC16F1454 (48MHz) : 1.2us
PIC16F18325 (32MHz) : 1.6us
PIC32MM0064GPL028 (24MHz) : 1.5us〜1.65us
PIC32MX270F256B-50 (50MHz) : 0.9us
アセンブラ
PIC16F18325 (32MHz) : 1.1us
PIC32MM0064GPL028 (24MHz) : 0.85us
PIC32MX270F256B-50 (50MHz) : 0.75us >入力ポートの値を読んで、その値を出力ポートに設定しているので、
bit3のマイナスエッジ割込みから両エッジ割込みに変更して
割込み内では入力ビットのH/Lレベルを出力ビットにコピィする。
sbis PinD,3
cbi PortD,4
sbic PinD,3
sbi PortD,4
命令が3個増えるので100nS程度の増加かな(パイプライン処理があるので)
PIC18やPIC24はどの程度なんだろ? >>886
割り込みの応答、12F1822@32MHzで700n前後だった気がする。
ちょっとプログラミング能力足りないんじゃね? 12F1822に下記プログラムを書くと、3ピンの入力エッジ毎に、2ピンにパルスを出力する。
遅延時間は600n秒位。
5ピンに500Hz位を出力するので、5ピンと3ピンを接続してオシロで見れば観察出来る。
:020000040000FA
:020000000928CD
:0800080080168012270093010D
:100010000900200000308C0023008C0024000030F8
:100020008C00210010308C002000F030210099005D
:0400300020000D2976
:100200005E30FD000B30FE000130FF00FD0B0629C3
:10021000FE0B0629FF0B062908000C30840085011F
:100220002700103091009200FF3013069305210043
:100230008B158B1720000021220004308C061A2910
:020240001A2979
:020000040001F9
:02000E00A40943
:02001000FF1DD2
:00000001FF 最適化が目的じゃなくて比較が目的なので
元のCコードはこれ
void interrupt isr(void){
LATCbits.LATC4 = PORTCbits.RC3;
IOCCFbits.IOCCF3 = 0;
PIR0bits.IOCIF = 0;
}
これの動作を保ったまま普通にアセンブラにしたのが以下
特別冗長にしたわけでもないし、
ギリギリまで最適化したわけでもない
ISR CODE 0x0004
movlb 0
btfss PORTC,3
goto l1
movlb 2
bsf LATC,4
goto l2
l1: movlb 2
bcf LATC,4
l2: movlb 7
bcf IOCCF,3
movlb 0
bcf PIR0,4
retfie 普通の処理であれば、
割り込み要因の確認が入ったりレジスタの退避を行ったりするので、
これでもずいぶんと少な目な値
本当であれば、割り込みフラグも先にクリアするのが正しい
割り込みフラグのクリア前にポートの値が変わった場合に取り逃すので は?ワーストケースでの話じゃないの?
データシートみたら割り込み遅延は
PIC32MXで 11〜34命令サイクル
8bitPICで 3〜3.75命令サイクル
16bitPICで(16〜40MIPS品で) 4命令サイクル
16bitPIC(70MIPS品)で 10〜11命令サイクル
PIC32MMは見つけられなかった PIC16F18325で、割り込み後の1命令目でポートが変わるようにして測ったら575nsでした。
4.6命令サイクルなので、ポート設定1命令後にポートが切り替わるとするとほぼスペック通り
>>890
600nsってことは4.8命令サイクルなので、
上の測定結果と同じで、割り込み後の1命令目でポートが変わるようにしてますよね?
てことは、明らかに >>884 の処理とは違いますよね?
それとも、PIC12F1822の割り込みは速い?
>>890の中身は見てませんが。
>>893
PIC32MXの34命令サイクルってのは、一番時間がかかる除算命令中ですよね?
除算命令以外は速いんで、遅延が問題なら割り算を使わなければ良いのでは?
8bitPICには除算命令が無いんで
除算中を除けばクロック数にして同程度、時間ではPIC32MXの方が速いですよ >>893
MM はフラッシュアクセスのWaitが入らないから、MXより、サイクル数としては少ない。 ん???
>>871 と >>893 で内容が食い違ってるけど
どういうこと?
データシートを見たら、PIC32MXの割り込み遅延も見つからなかったんですが。
もしかして
「Early-in iterative divide. Minimum 11 and
maximum 33 clock latency (dividend (rs) sign
extension-dependent)」
を割り込み遅延のスペックだと勘違いしてたりしませんか? >>891
>最適化が目的じゃなくて比較が目的なので
結果が倍も違ってたら割り込み応答速度の比較にならんだろうにって話なんだが?
最適化云々の問題じゃない。Cしか出来ない奴はこれだからwww 割り込み要因をチェックしない特殊な条件で8bitの方が速いとか意味わからん
低遅延がお好みなら、FPGAでLチカでもしてればいいのに 8ビットで割り込み要因をチェックしない例なんていくらでも有る。全然特殊じゃ無い。
だいたい、割り込みの遅延時間を調べるのに条件によって変化する要因チェックなんて入れれば本質が見えなくなる。
そもそも、状態変化割り込みなんてスタンバイを抜け出す以外で使うのは、ほぼ℃素人プログラムだしなw
結局、割り込みに掛かる時間は
600μ秒 普通の人が書いた8ビットアセンブラ
850μ秒 Cしか使えない奴が書いた鈍臭い32ビットアセンブラ
1100μ秒 Cしか使えない奴が書いた鈍臭い8ビットアセンブラ
1200μ秒 Cしか使えない奴が書いた鈍臭い8ビットC
1650μ秒 Cしか使えない奴が書いた鈍臭い32ビットC
って事で、Cとかアセンブラ以前に、個人の力量が一番効くって事だなwww >>904
℃玄人は、頭おかしいから もう来なくていいよ >>904
℃玄人は、
頭おかしいから もう来なくていいよ www
頭悪すぎwwwww
ワロタ www >>887
一つの信号の立ち上がりと立ち下がり別々に割込みを掛ければ
それぞれの割込み処理内で実行する命令はビットセット/ビットリセットの何れか1個で済む
余り意味の無い比較だがいずれにしろ最速はAVR >>910
お勉強は大事ですよ、孫子も言ってる事だしw
「彼を知り己を知れば百戦して殆うからず」 >>909
でも先は無いけどな。
昔からそうなんだが、直交性だのプログラムが書きやすいだの必要クロックが少ないだの
信者が言い訳するCPUって、主流になれずにディスコンになるんだよなwww >>908
>>890を実際に書き込んでオシロで確認すればよろし 実力って>>890でわかるようなうすっぺらいものなんですかね。
>>908の質問も答えを出しようのないものですが、>>914のはぐらかしの方向違いもすげえものです。 レベルが低いなwww
℃素人文系の言い訳っぽいwww ℃玄人氏って結構知識もあって適切なアドバイスもちゃんとしているのに、まずいところで引くってことをしらないな。 >>918
だから℃玄人なんだよ
玄人にはなれない器 >>918
「言い負かす事」に重点を置き過ぎって感じ 実行中の命令に応答時間が影響されないPIC24にしかできないことがある ポートチェンジでテストした人は、計測の手段として使っただけだろう
それに割り込み要因を調べない=一種類の割り込みしか使えないってこと
16ビット以上ならベクタテーブルがあるから、チェック不用
893の情報を読む限り、普通の使い方なら16bitの方が速くなるかと
指摘のポイントも的外れだし、そもそも8ビットが速い、じゃなくてアセンブラ使いの俺スゲーという独り言としか読めなかったのだが
俺もZ80の頃から使っているのでアセンブラは嫌いではないけど、904みたいなのは流石にどうかと dsPIC33Fで状態変化割り込み測ってみた
XC16最新版最適化O1
300nsec
ちなみに素人でCしか分かりません
シャドウレジスタ使ってない
割り込み内でLATBを全反転完了までの時間 >>903
遅延時間だけでなく、応答するまでの時間が一定で有る事が要求される用途もある。 ちなみに測定器は
1万円で買ったDslogic
メインルーチンはインクリメントした32bit割り算の無限ルーチン
割り込みはビルトイン割り込み関数
24Fでも試そうかと思ったけど
手持ちなかった >>925
それを割り込みで実現するのは難しいんじゃない? 思った通り
>>890の中身は割り込みハンドラの先頭で
ただ単にポートを立ててクリアしてるだけ
004 : BSF INDF0, 5
005 : BCF INDF0, 5
>>886 とは比較してる内容がまったく違います
>>894 で私が測った575nsのコードの方がまだ>>886に近いですね
℃玄人の実力ってそんなもんですか
まあおそらく℃玄人本人のコードですらないでしょうが >>927
特定の割り込みであれば、
割り込みが発生してから同じ時間になるように待つことで
時間をそろえることは出来ますが... >>928
後から「俺も出来る」とか言っても何の足しにもならない。
悔しさは十分伝わったけどな。 ここまでの流れをまったく理解するつもりがない俺はたぶんどしろうと 初めてのPICスレで、短いコードを持ち出して実力論議ですか。やめようよ。
そんなことで実力なんて判断できないから。
ちなみに℃玄人氏の力量はちゃんと答えたリアドバイスしているレスを見る方がよくわかる。
口汚く喚いているのが目立つだけなんだが、これって往年のVoid氏みたなものだよな。
Void氏ほどには洗練されていないけど。 voidて・・・
やはりこういう所にいる人って50前後以上の人が多いんだろうなぁ
ずっと同じような会話が続いてるのもナンだよねぇ ℃玄人って8bitPICしか知らないからなあ
32bitなんて全くの℃素人 数字が大きいほど難しい・・・、 とか思ってんのか
間逆だ、このバカ >>935
そうは言っておらんだろう。書いてないことまで読むなよ素人。 >初めてのPICスレで、短いコードを持ち出して実力論議ですか。やめようよ。
どの程度の能力を持っているか、他のCPUと比べてどうなのかは初心者の知りたい点だろうし、
CPUが持つ能力をたとえ一部であっても第三者が実証(再現)可能な具体的方法で比較するのは
構わないと思うけどな。
そもそもこんな場所で長いコードで比較することは出来ないし、
短いからこそハッキリする事もある。 >>937
言葉足らずで悪かった。俺が言っているのはCPUの実力ではない。 >>914 が言ってる実力。
>>908
> >>904
> あなたの実力が見たいです!
>>914
> >908
> >>890を実際に書き込んでオシロで確認すればよろし
あなたの実力を、と要求されて、914はこの短いコードを指示したんだよな。
このコードで人の実力がわかるわけがない。 割り込みの実力を調べるのに、2倍も実行時間の掛かる鈍臭いプログラムしか書けずに
鈍臭いプログラムで評価するのは実力の無い奴がする事。
どれ位実力が無いかというと、学生が初めてマイコン使って何か作ってみたレベルの実力。
製品を作れるレベルならば、割り込みに掛かる時間とその後の処理の時間は別に評価する。
いろんなプログラムが有るわけだから、余計な処理の入った鈍臭いテストプログラムなんて
害悪でしか無い。
それを示すための最短時間の割り込み処理だろう。 結局割り込み遅れ時間は
C言語
16bit < 8bit < 32bit
アセンブラ
8bit < 32bit
(16bitは未検証)
但しアセンブラの場合、能力差で変動する ℃玄人がムキになってるwww
よっぽど悔しかったんだろうなwww >>940
>>904が正解。>>939に書いた通り、余計なプログラムがついた状態での評価なんて害悪でしかない。
そんな評価方法で違うCPUを比較するなんて愚の骨頂だわwww
違うCPUの比較をするならまともに動くプログラムで比較するか、純粋に機能分割して単体で評価するべき。 今回は珍しく数字出たけど、数字を出してる方が℃玄人さんじゃないんでしょ?
こらカッコ悪いですわ…。 >>941
そんなこと言ってるとてめぇも℃玄人の仲間入りだぞ >>942
>>904 が正解なわけ無いだろ
クソ℃玄人 二度と来るな。 ℃玄人同士の子供じみたけんかは他所でやってくれませんかね ℃玄人は他人の書き込みをなじることが生きがいの
かわいそうなガキですから、スルーするがよろし ICN割り込み後の最初の命令でポートをセットするコードで遅延を測定してみました
PIC16F18325 (32MHz) : 500-612us
PIC24FJ64GB002 (32MHz) : 480-530us
PIC32MM0064GPL028 (24MHz) : 597-633us
PIC32MX270F256B-50 (50MHz) : 272-288us 連休でヒマだから >>909 の意見を取り入れて
2個の割込みINT0、INT1を使って立ち上がり、立ち下がりの割込みを分離した。
(入力信号、出力信号としてはもちろん共に1個)
遅れ時間をオシロで見ると立ち上がり、立ち下がり共に約500nS。
CPUがやっていることに大差は無いので、結局はクロック周波数の差になるのかな。
入出力の波形画像 赤が出力(tiny2313の8番ピン)、黄が入力(6、7番ピン)
http://i.imgur.com/l4OROwk.jpg
プログラム(ベクタテーブルは省略)
;***** setup
RESET:
LDI R30,0b11101111 ;Port-D input with pull up, output Low
OUT PortD,R30
LDI R30,0b00010000 ; output:bit4, input:bit0~3,5~7
OUT DDRD,R30
;
LDI R30,stack ;set stack
OUT SPL,R30
;
LDI R30,0b00001011 ;triggered by +edge of INT0 and -edge of INT1
OUT MCUCR,R30
LDI R30,0b11000000 ;enable INT0/INT1 interrupt
OUT GIMSK,R30
SEI
;
;***** main
Loop:
RJMP Loop ;wait interrupt
;
;***** INT0/INT1
IRQ1:
SBI PortD,_Out1 ;output Hi
RETI
;
IRQ2:
CBI PortD,_Out1 ;output Lo
RETI
;
しかしPICスレは何で毎度毎度、最後は罵倒レスの応酬になるかねぇ。
おかしな奴は相手にするとキリが無い、 948 の言うとおり無視するのが一番だと思うけどな。 ごめんなさい
単位間違えました
PIC16F18325 (32MHz) : 500-612ns
PIC24FJ64GB002 (32MHz) : 480-530ns
PIC32MM0064GPL028 (24MHz) : 597-633ns
PIC32MX270F256B-50 (50MHz) : 272-288ns >>949
us って、 ns の間違いじゃないの?
もしそれが事実なら、 ええっ って感じだな >>949
8bit PIC 、実質8MHzなのに結構速いな。 >>957
確かに早い。パルス列の入力〜出力までに
20MHzのAVRが10命令サイクル程度(50nsx10、これは資料を読むと順当な値)なのに
8MHzのPICが4命令サイクル程度(125nSx4)なのは驚異的だ。 C言語で変数使うと退避レジスタ変わってくるよ
PIC32はSW命令入りまくる
多重使わなければシャドウレジスタ使えば解決だけど
PIC32MX1 PIC32MX2 シリーズには無いんだな tiny2313の割込み処理に必要なクロック数はタイミングで少し変わると思うけど
・割込み要求フラグのセットまで4クロック(これは下記のラッチなどのハードウェア)
http://i.imgur.com/DOf3HBx.jpg
・戻りアドレスのスタック退避などに4クロック
・ベクタテーブルのジャンプ命令で2クロック
・目的のビット操作命令で2クロックの2クロック 8ビットPICの割り込みレイテンシは、バックグランドの命令が1サイクル
であっても2サイクルであっても、3サイクル一定だった。
もちろんCPUクロックと割り込み要求が同期している条件で。
ところが最近の1で始まる型番のPICではFSRを使ってプログラムメモリを
アクセスすると3サイクル命令となってレイテンシが4になる場合が出て
きて、ちょっと気を付けないといけない。
そういう命令を使わなければいいんだけど。 最近、どうでもいい内容ばかりだな〜〜〜
何に使うかが問題だよ。 使う物の中身を理解していないと何に使えるか分らないだろ PICのアセンブラは糞というけど
PIC24Fのアセンブラは別に糞でもなんでもないよね
AVRのアセンブラよりわかりやすいんじゃない? くそかくそじゃないかの判定基準をまず明示せよ
話はそれからだ ブスも3日で慣れ
一週間で愛着が生まれ
1か月で愛情に変わる
8bitPICはブサイク分類だろ
AVRは美人さんだと思うよ >>964
異なる命令コードビット数(14、16、24など)のCPUを比べるのはどうなんだろ?
「CPU」というくくりで見ればどれも同じ条件だ、という意見も前にあったけどw
>>966
美人かどうかは分らないが
割込みを使って入力パルスを出力する >>950 のプログラムはシンプルで分りやすい PIC24のアセンブラはわかりやすいから
とりあえず、何かのアセンブラやってみたいという人にはオススメできると思うよ PIC24のPDF
ttp://www.microchip.jp/docs/DS39703A_JP.pdf
ttp://ww1.microchip.com/downloads/en/DeviceDoc/70157F.pdf 8bitだろうが32bitだろうが、アセンブラなんてどれやっても同じじゃね?
今使ってるCPUには無く他のCPUでは有る命令も
同じ事をプログラムを組んでやればいいだけの事だし。 アセンブラを語るなら最低でも以下を知らないと
x86
ARM
MIPS 今更だが、ちょうど今やってたとこなんで 感想を一つ
MIPSは要らんなぁ
知ってて損は無いけど、PS2のHackingぐらいしか役に立たない >>973
MIPSコアのPICがあると聞いたけど、アセンブラとかどうなってるのかな?
PICよりなのか、がっつりMIPSなのか… PICは、8Bit (8Pin)にしか興味ないから知らない
あと、x86は 知ってると色々得する事が多い
例えば、CompilerをProModeに変えるとかな >>968
データ16ビット、コード24ビットのPIC24のアセンブラはどんなものかな?
大いに興味があります。比べやすいように
>>950「割込みで入力したH/Lをそのまま出力する」
をPIC24のアセンブラで書いてみてもらえないでしょうか?。
>>970
確かにしょせん1命令で済むか、2命令あるいは3命令必要か、程度の違いだよね。
しかも、この差が運命の分かれ道、なんて用途はそうそう無いだろうし。
そんな事よりアーキテクチャ(CPUの設計方針)の差の方が
影響が大きいと思う。 >>971
68Kをやった後に16F84Aを使い始めたけど、
64bitの加算と減算で「うわっ」って思った事はあるなぁ。
でも6502をやってたおかげで考え方はいろいろ応用が利いたと思う。
今は18F2620でLチカして遊んでる。 >>974
MIPSコアなので当然MIPS命令
周辺はPIC24に近い >>978
まぜこぜって事? MIPS使いがうまく使いこなせなくて扱いにくそうだなぁ…。
まあどっちも知らん上に、コンパイラに任せてる身には何とも言い難いけど… MIPS使いって...
普通はコンパイラを使うからコアが何かとか意識しなくても使える
速いPIC24と思っても良い
ガシガシに最適化する場合と、一部の特殊命令でアセンブラの出番となることはあるが >>981
ほうほう、PICと考えても使えるのね。
勘違いを正してもらってすまん。
8bitか16bitしか使ったことないので、他社のコアなんて使いにくいんだろうなぁ…と勝手に思ってた 秋月でPIC32MM取り扱い知ってデータシートとか眺めてたんだけど
ADCのミッシングコードエラッタって、、
どんなアナログデータ来るか分かんないって事?
500nsec以下のシュミットエラッタもあるし
要所要所で痛いなぁ PICではそのくらいは当たり前
エラッタ情報が開示されてないのもたくさんあるので注意 PIC32MMは格安でオススメ
16bitより安い32bit
ADCもスペック詐欺ではあるけど、スロー8bitなら問題ないんで、普通の用途だとそれほど致命的でもない
内蔵OSCで25MHzを作れない
I2Cが無い
といった、へんてこりんな面はある >>979
コアがMIPSなのと、周辺の機能は全く関係ない。 1チップかどうかってあまり関係ない
コアだけのマイコンなんて無いから ----- テンプレ ----
PICの特徴
多くのモデルでDIP版がある
秋月でDIP版の品揃えが豊富
趣味の電子工作の小規模マイコンでは採用率が高く、作品例も多く紹介されている
低価格路線のシェアが比較的高い
基本的には廃盤にしないポリシー
モデル数が多く、古くて低性能高価格の物も売っているので、モデル選択に困る
CPUのパフォーマンスは全体的に低い
特に8bitは顕著
エラッタが多く、公開されてない物も多い お薦めのPIC
迷ったらこれを買え
(秋月に売ってるPIC DIP限定)
●USBなし
PIC10F200 マゾ専用 最低スペック 50円
PIC10F322 最安 45円
PIC16F18313 8pin 75円
PIC16F18326 14pin 130円
PIC16F18346 20pin 160円
PIC32MM0064GPL028 28pin 3.3V 175円
●USBあり
PIC16F1455 14pin 140円
PIC16F1459 20pin 180円
PIC32MX230F064B 28pin OTG 3.3V 270円
PIC32MX270F256B-50 28pin OTG 3.3V 380円 Z80その他 相当数のCPUを全否定ですか
>>989 >>993
ハードにアクセスしないでコアだけ動かすなんて無いから
Z80もI/Oポートなどは当然ある
コアだけでハードを意識しないマイコンなど無い
内蔵してなくても外付けのペリフェラルのアクセスは必須 >Z80もI/Oポートなどは当然ある
Z80にはI/Oをアクセスする信号がいくつか用意されているが、
これをもって「I/Oポートはある」というのは少し無理があると思うナ。
8251、8254、8255、8259などの周辺ICの存在価値が無くなるw
文中の「ハード」の意味が不明瞭だけど、
ノイマン型コンピュータは演算装置と記憶装置と入出力装置とで構成され、
どれが欠けてもコンピュータとは言えないのは当然です。 >>989が言ってるコアと周辺の組み合わせの話は、メーカーがワンチップに組み合わせたものの話だよね。
Z80みたいなマイクロプロセッサの場合は、ファミリに拘ることなくある程度自由な組み合わせもできるのだし、
一緒にはできないよ。 >>983
変換値に歯抜けがある。
抜け方、あなたのADCの使い方によって痛さが違うよ。
アナログ入力が連続的に変換したなら、変換値も1LSBづつ変わることを期待したいけど歯抜けのために不連続な変換値になってしまう。 このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 124日 6時間 45分 20秒 2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.2ch.net/
▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。