初めてのPIC 0x0f
レス数が1000を超えています。これ以上書き込みはできません。
PICをさわるのは今日が初めて、という超初心者のためのスレです。
(O>――<O) PIC選び、PICを使った回路は、誰でも最初は不安なものです。
/ (・) (・) ヽ 恥ずかしがらずに何でも聞いてください。速攻で教えてくれますよ。
○ /▼\ ○ 質問のしかたは、初心者質問スレの発言1を見てくださいね。
|(ヽ二フ ) |
/  ̄ ̄ ̄ ヽ
f ヽ / | PIC関係のスレは、レベルに合わせて以下のスレもありますので、活用しましょう。
ヽ \ / ノ ・PIC専用のスレ
| \_ )(_/ ! 本家本元のPICスレです。口の悪い人もいますが、楽しくやってるみたい。
| | ここの話がわかるようになれば、あなたはもう一人前のPICerです。
| | ・マイコンソフト 悩み事相談室
| | ̄ ̄| | マイコンソフトやツールの質問は、こちらでどうぞ。的確な回答があります。
(_ノ ヽ_)
質問する時のコツ
・性格の悪い回答者はスルーしよう(相手すると逆効果)
・素人玄人などと 上から目線の回答者は、無視してください。相手してはいけません。
・そこそこ良い回答が出るまでしばらく再発言しないのもあり(良回答は後に出やすい)
・回答者のアドバイスで後日解決したら、結果報告しよう(とても喜ばれる)
・回答者は、僕たち初心者に優しくしてください。あなたも通ってきた道のはずです。
必要なソフトなど(基本無料)
統合開発環境 MPLAB X ttp://www.microchip.com/mplab/mplab-x-ide
コンパイラ (XC8 XC16 XC32) ttp://www.microchip.com/mplab/compilers (高機能版は有料)
コード生成プラグイン (MCC) ttp://www.microchip.com/mplab/mplab-code-configurator
マイクロチップ ライブラリ (MLA) ttp://www.microchip.com/mplab/microchip-libraries-for-applications
必要なハードなど
初心者はPIC16F1、PIC18F1以降の型番で始めると無理なく始められます。
プログラムの書き込みには書き込み器が必要です。持っていない場合はPICkit3(中華クローンでもまず大丈夫)を使いましょう。
PIC一覧、スペック検索 ttp://www.microchip.com/ParamChartSearch/chart.aspx?branchID=1005
さ、質問どうぞ〜っ
0x0e 2018/02/13〜 ttps://rio2016.5ch.net/test/read.cgi/denki/1518524799/
0x0d 2017/10/25〜 ttp://rio2016.5ch.net/test/read.cgi/denki/1508935254/
0X0C 2017/07/27〜 ttp://rio2016.2ch.net/test/read.cgi/denki/1501157324/
0x0B 2017/05/08〜 ttp://rio2016.2ch.net/test/read.cgi/denki/1494235320/
0x0A 2017/01/04〜 ttp://rio2016.2ch.net/test/read.cgi/denki/1483498857/
0x09 2016/09/07〜 ttp://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 )((())()))((())))(()()()))())))(()))((((((())(((((())))(()(()(()())())))((()
)))()()))((()(()(())())(()))()((())())(())))))()(()))())(()))(()((((((((()((
)((((()()))(())()((()(()(((()(()))())()))(()((()))))(()))((((()))))))()))(((
)()))(((()())))())()(((()))((()))(((((((()(())()()())(()())))(()(()))()))()(
)())((((()(())())((()(())())))(()()))()(()))())((()((()()))(((())(())))()(()
()()((((())())())()))(()((()()))))()(()()()())((((())())()(()()(())()())()()
)()(()((())()()(((((()))(()))))(()(()))())))()()((())()(()))()()()()((()))((
)()(()(()))()))(((()))()()()())))((())())())))))))(()))(((()()(()((()(((((((
)((()()))(()))))())()())(()()((()))())()))(()()))(((()((())())((()((((())()(
(())))()()))(()()(()))(())())))())))()())(((()()()((()()((()(())()()))((((((
())))())))(()((((()(()()()()()()(()()(())))(()))))((((()))((((()())))()())((
()))())(())))(((()(((((()()))())()((())(()(((()()(())(((())()()))((())))))))
)()()()(()()(())((((((((())((((()))()(())())))(((()))))))())()(()()(()()))))
())()(())))(())()()(((()()))))()()()((()))(())()(())())(())))))((((()((()(((
)()))()())(()(()))()(())())()(()((()))()())()(()))((()((()))()())()((())((((
(())(()())))))((())()((((()))))())(()(()()()(()))((()))((()()()((()()))()(()
))((((((((())))(((()))(())))))))()))()(())))(((()((()())()(()()((())((())))(
)))()))))())()((())(()(()())((()((((())))))())))())(()))((((())()())((((((((
())())(()())())))))()()(()(()())(()))))(()()))((())()((((()((((()(((()))(())
())()()(()())()())(((()))))(((())))(((()))())(()))(())((())(((((())()(()))()
)()()(())()((()))(((((()))))))()((()))))()()((()))((((()())()()()()()))((()(
())()(())(())()))((()((()((((((())(()()))()())(())))((()((())((()())))))()))
)())()(((()))())(()()()))((())((())(())))(())((((((()())()()())((()(()()))))
()((()()()())())(((()()())()((()))()((())()(()(())())))()))()()))()(()()((()
((((((((()(()()()()())))(()())))(())()()()()())()()))())()))()(()(((()(())))
))((()(()))()((()(()())()())())))())(()()())())()(((()))()())((()()())()((((
(())())(()()(())())((((()))(()()))()())()())))()(()())(()(()(((()()))(())()(
()()()())))(())((((()(())(()(())(()(()()((()())((()()()))(()((())))())))))()
(()()()((()))(()())()(()))))((()()()()()))()(((())())()(()())(((((())(()))))
()()((()(((((()(()(()()(((()))()(()())))())((()))()(((()()))))()))(()))())))
()))))((()())((())))(((())()))((()))))))()(()(())))(((()()(()((()(()())()(((
())()()(())))()(()))()))()()))(()))(())((()()())))))((()())((((()(((())(((((
))((()(()()))()(((()))))())))()(()())))((()()(()))(((()(()()()(((())((())))(
(()))(()())((((()))(())(((())))))(()(())))()))))(()(())(()(()())()(()(()()((
())()())(()()()((()))((()(())()())((()()()))())((((()(()()))()(()(((()))))))
)))()(()(()()()))()()())(((()))(()(())))()())))()((()(((((()()()((()(()())))
))(()()(((()))())()(())()(()())))(((()))()())((((()()(()()))()(((()))()))()(
()())(((()(()((()(())))()))()()))))()(()()())()))))())()(((()()())((()()((((
(()())(()))())))()()(()()(()())((()(()()((()()))((()((((()))(()(())))()())))
(((()())))()(())(((())))(((()(()))(())(()())(((()))))()()((())()))())(())()(
(())(())()(()())())))(())(())()(()(())()(()(()(((((()))))(()()())()(()))()()
()()))()())(()()(())((())(())()))())))())(()((()())))(()()()(()(((((()(()))(
)))()(()))))))()((()(()()))((())))(((((()()())()(())(((()()(()(((()))))())((
)()()))((()()(()))())))())()((())))()(()()())))(((())(())((((()))(())((()(((
))(((()()(((((()())()()((((())()())))())((()((()())((()))))(()))))))(((())))
)((())))((())(()()((((()(())(()()))(((()(())))))))(((())))(((())((()(())))))
()((())))()(())((())()()()))(()((()(()()()()()))())((()(()))(()(()))()))(()(
()((())(()()())((())(()(()())))(())())(((())())(()))))()(())))()()())()(((((
(()))))(()()))()(((())(()((((()))))))))))))())((()(()(())(()((()(((()))(()((
)()()))((((()(())())((())))()()(())())(()())()(())()))(((()()()(())(()))(()( PIC32MM
8ビット16ビット置き換えをねらったコンパクトなコア
安い、省電力
microAptiv 25MHz
PIC32MX
設計が古くてエラッタも多い、これだけはお勧め出来ない、後継待ち
M4K 120MHz
PIC32MK
ミドルクラス32ビットPIC、なぜかI2Cが無い
microAptiv 120MHz
PIC32MZ EF
PICコア最強、DSP命令や倍精度浮動小数点命令搭載
M-Class 252MHz
PIC32MZ DA
グラフィック、32MB RAM
microAptiv 200MHz PIC10/12/16/18
8bit
ほぼ全ての製品にDIP版がある
コアの性能は他の8bitと比べても極端に低いので
ちょっとでも重い処理をするならPIC以外を選ぼう
4クロックで1命令サイクルなので、
クロックを1/4にしたのが処理性能の目安
コアやペリフェラルは非常に単純なので
自力で全てやってみたい初心者には良い
ただし命令は特殊なのでアセンブラの学習には向かない
PIC24 / dsPIC
16bit
Microchipは32bitに力を入れていてラインナップはいまいち
処理性能は8bit PICよりはずっと上だが
他社の16bitよりは劣る
エラッタも多い
コスパが非常に悪く、
特殊用途以外では今新規で選ぶ価値は無い PICは他メーカーの同規模のMCUに比べて非常にエラッタ(バグ)が多いので注意
機能が使い物にならないものやスペックの性能が出ないものも多く存在する
メーカーが把握しつつも公開されてないなかったりする 本当にPICが適切か良く考えてから選びましょう
主な競合MCU
8bit AVR / STM8
16bit RL78 / MSP430
32bit STM32 / LPC / Kinetis / RX 開発ツール
PICへよソフトの書き込みやデバッガでのデバッグには以下が必要です
PICkit4 :
安価なデバッガ / ライター
8bitならこれで十分
ICD4 :
高速高性能デバッガ / ライター
16bit / 32bit PICのソフト開発にはこちらがオススメ ファン気質を排除して客観性をキープしたいのだと思う。
ファンと、ファン気質を排除した中立的議論をしようとすると、ニュートラルはアンチ的発言が増えざるを得なくて、
結果的にアンチとみなされることはある。
でも、CPUは純粋な論理的判断の元で選ばれるわけでもないのでニュートラルであることが正しいとは限らない。
一方で、全く白紙のビギナーも対象のこのスレなら、入門前に悪い面も知っておくことも必要かもね。 そうか? 正当に公平に客観的に評価しているな、と俺は少し感心したが。
PIC信者は「アバタも笑くぼ」「贔屓の引き倒し」みたいな、>>8 のようなアホばかりだと思っていた。 >>10
たとえば>>5の「他社製品との比較」の話は繰り返し書かれてますが、
客観性を示すだけの何かが提示されたことはありません。 仕事で実験なんかのお試しはPIC搭載のユニバーサル基板を好んで使うよ。
秋月で安くて入手容易。
最終版はRXになるけど、色んなデバイスを使うとアイデアも豊かになるよ。 あ、しまった。
https://rio2016.5ch.net/test/read.cgi/denki/1517669525/869
みたいなことを書く人が、
>そうか? 正当に公平に客観的に評価しているな、と俺は少し感心したが。
なんてことを書いても、まともなはずはないな。 >>13
違うものを使うことで、「〜とはこういうものだ」という概念が固まってしまうことを避けられて良い、
と、俺も思う。 >>13
私も色々なCPUを使う事には賛成だな。
「広く浅く」にならないように気を付ける必要があるけど。
私自身は今はあまりPICを使わないけど、昔使ったPIC専用のラッピング配線ユニバーサル基板を
再利用できるように残してある。
ところで、私は始めてのCPUには、まず最初にUARTを使用するモニタプログラム(デバッガ)を
アセンブラで作ってみる。
1週間ほど掛かってしまうが、そのCPUの割込みやレジスタ、メモリ構成、命令などの
アーキテクチャをよ〜く理解できる。 趣味ならではだな
仕事でそんな事して遊んでられない CPUだけじゃなくてビルド環境にも依存する
セクションの指定方法とか
スタートアップコードとか
割り込みベクタの作り方とか
割り込みハンドラの作り方とか >>17
そだねー、プロにとって時は金なりだからね。
でも、開発環境のデバッガがブラックボックスではなくなる、
(デバッガの訳の分らない不思議な動作や、手の出せないデバッガのバグが無くなる)
というメリットを考えると、プロでも検討してみる価値があるのでは、とも思います。
>>18
6、7種類かな。一番古いのは16ビットコード、16ビットデータの某社のXXXXXXで
一番新しいのはAVRで、AVR用デバッガは現在も成長中。
これからビデオに撮り貯めた世界卓球女子の美誠パンチを見るから、
これで。 あ、間違えた、 撮り貯めた → 録り貯めた だね。 >>22
プロには、なるべく責任を他人に分担させる(押し付けるとも言う)と言う考え方と、
なるべく自分で取れる責任範囲を広くすることで利益や責任をとりやすくすると言う考え方の二種類がある。
一方しか出来ない人は、生き残れないかもしれない。 付加価値作ってなんぼだからな
他にできないことができるということが強みになる
お鉢が回ってくるのも大変だけどなw >>17
仕事は仕事、遊びは遊びの時間にするんですよ。
その遊びが仕事にも役に立つことが多かったりして。 >>22
製品の開発はブラックボックスばかりだよ
コンパイラが吐くコードを検証したり
ライブラリの動作を全て検証したり
ネジを開発したり
金型を自分で削ったり
電子パーツを自分で作ったり
こんなことをしてたら製品なんて出来ない
だから信頼関係は重要
どこかみたいにエラッタを隠蔽するような会社の部品は仕事では絶対に使いたくない >>28
エラッタを一切公開していない会社ってことなんだろうけれど、そんなところってあるのかな。 でも、>>27のような極論って不毛だよな。
製品作りの過程で、
・コンパイラが吐くコードを検証することもあるし
・ライブラリの動作を全てでないにせよ検証することもあるし
・ネジや金物部品を開発することはわりとあるし
・プログラマブルな部品なんて昔の人から見ればICを自分で作るようなものだし。
俺の経験の範囲では「金型を自分で削った」製品はないな。
でも「最終製品を作っている人はすべて金型を自分で削ることはない」ってことは
ないだろう。
一方で、企画に特化した会社の人なら、
「俺の会社だと、自分でコーディングなんてしていたら製品なんてできないよなあ。
回路図? ハンダ付け? それは工場がすることでしょ?」
なんて常識に浸かってるだろうし。
自分の経験や知ってる範囲の情報で「なんたらはこういうものだ」なんて断定するのは
恥ずべき行為。 >>27は極論でもなんでもない
ごく普通の製品開発 >>27
スポットで一個二個買うだけの奴に信頼関係なんか築きようがない。 picのエラッタは公開してるだろ。
治す努力はわからんけど。
治してもリビジョンチェックして、回避コードと分けるのも面倒なんで、常に回避コードかな。 >>31
たしかに「極論」は言葉として不適切だったかもしれない。
二つの極を想定してその端っこの印象を与える場合がある。でも極論には「極端な論」の意味もある。
コーヒーにどれだけ砂糖を入れるのが旨いか、という話において、
全く入れない、山ほど入れる、前者の意味での極論。
だけど、
「コーヒー自体の濃さ、量に関わらず、2.4グラムの砂糖。これが普通であり、これ以外は旨いと感じるべきではない」
なんて話が出てくれば、これは後者の意味での極論。
開発請負もやるけど、最終製品を出してるわりと大きい会社の人が技術のことには無関心なこともある。
その分、彼らはユーザーのことを回路やプログラムを弄ってる俺たちよりもよく知っているし、
もっと喜ばれるものを考えることに意識を集めている。彼らはコーディングもしないし、もちろんはんだ付けもしない。
彼らにとって製品の開発とはそういうことだし、それは、俺が基板の製造や部品の実装を外部にお願いしていることと、
たいした変わりはない。
そうかと思うと、同じ会社の別の部門で、全然やり方が違うこともある。
…なんてことを経験している人は少なくなかろうと思う。
さまざまなレベルで「〜をやっていたら製品なんて出来ない」の普通があって、>>27の言ってることはそのレベルの
ごく一部にすぎない。2.4グラムの砂糖みたいなもの。 >>32
>スポットで一個二個買うだけの奴に信頼関係なんか築きようがない。
メーカーとユーザーの信頼関係は、友人関係と違って対称ではないし。
クルマを買うとき、「トヨタ(あるいは他のメーカー)は信頼できそう」という漠然とした気持ちとか、
メーカーがユーザーにそのように思ってもらえるようにするために行動することも、ひとつの形。 >>33
公開してないのがたくさんあるわけだが
隠蔽じゃないとすれば
管理ができてない
製品評価が出来てない
ってこと >>31
日本のスマホ開発とアップルのiphone開発は
両極端(ブラックボックス組合せと、全開発)の近くにいる。
アップル相手で無くても、
低価格のチップをモーレツな勢いで設計し、
多様な製品を作り出すどっかの国と競争できる気がしない。 >>34
何が言いたいかよくんかりません
主張を分かりやすく書いてくださいな >>36
じゃんじゃん情報提供してやれば良いやん。 >>36
>公開してないのがたくさんあるわけだが
そのことに問題があるのだとして、他のメーカーのものを選択する、という話だと思うが、
他のメーカーと比較の上で話をしてくれないと意味がない。
↑ID:A/CaZZ4F でも、この2行なら理解できますか? ブラックボックスは少ない方がいいに決っている。
そういえば、昔、韓国がアメリカから購入したジェット戦闘機の飛行管制装置か
火器管制装置だったかのブラックボックスを無理に開けたはいいが閉められなくなって、
アメリカからメチャ怒られた、という事件があったナ。
日本はブラックボックスに出入りするデータを調べて、中身を解明したそうな。
エラッタの多いCPUと少ないCPUのどちらを選ぶか?
選択権が自分にある時に、エラッタの多いCPUを選ぶ人はM傾向がある、
というのが私の持論だけど、
もしかしたら、あえて試練、苦難の道を選ぶ、という崇高な人なのかもしれないな、
なんて思ったりしちゃったりしてw
冗談はともかく、連休も半ばを過ぎました、
英気を養って、趣味、仕事のどちらさんも
プログラミングや回路設計を楽しみましょう。 チップの「エラッタ」には少なくとも次の二つの意味がある
(1)実際のチップのバグ、問題
(2)そのことを記した情報
>>42が言ってる
「エラッタの多いCPUと少ないCPU」はどちらを指してのことだろね。
いずれにしても、多い少ないは、相対的な量を指す言葉であるから何かと比較する必要がある。
多いか少ないかは別にして、(2)を抜きにした非公開情報も含めた(1)については、使ってみないとわからない。
ところが、簡単に顕在化するものとは限らないから、使ってみて大丈夫だから問題なし、とは言い切れない。
そういう意味ではネットに書き込むような開発者が多いチップほど情報が共有できそう。
崇高かどうかは別にして、ユーザーが少なく、メーカーから(2)のエラッタ情報が少ないものは、伏魔殿の
可能性もある。それゆえに、新しいチップについてはメーカーも開発者を増やすことに熱心になるね。 エラッタが多くても、エラッタが正式発表されてなくても、ユーザーが多くて情報が沢山出回って、不具合で困る事が無ければいいのだ。
医療用や自動車や航空機じゃなければ。 なんにせよ初めてスレで何スレも使って延々とする話じゃないんだわ
PIC専用スレに行ってくれ。エラッタ君があの世に行くでもいいけど。 PIC32MX340Fを使用してUARTの割り込みをしたいのですが、
反応しません
なにか設定ミスでしょうか?
因みにputsUART1などで文字列送信は、ちゃんとPCで受信できておりますので
ボーレートなどは間違っていないみたいです
void __ISR(32, ipl4) U1RX_interrupt(void) {
LED=1;//LED割り込み時、LED点灯
IFS0bits.U1RXIF = 0; //mU1RXClearIntFlag()
}
//UARTの設定
void Uart_ini(void)
{
// Create a UART TX/RX Pin
SYSKEY = 0xAA996655; // Write Key1 to SYSKEY
SYSKEY = 0x556699AA; // Write Key2 to SYSKEY
//IO Port Initial--------------------
//-----------------------------------
TRISF = 0x0004; // U1TX:RF3 U1RX:RF2 LED:RF0
//UART1 Initial ----------------------
//-----------------------------------
//Mode Setting
U1MODE = 0x00000000; //Clear
U1MODEbits.UARTEN = 1; //15_UART_Enable
U1MODEbits.RTSMD = 1; //11_FlowMode
U1MODEbits.BRGH = 0; //3_StandardSpeed*16
U1MODEbits.PDSEL = 0b00; //8Bit None Parity
U1MODEbits.STSEL = 0; //Stop Bit = 1
U1MODEbits.ON = 1;
U1BRG = (unsigned int)(5000000/Baud)-1; //Baud Rate 9,600bps
//Enable Setting
U1STA = 0x00000000; // ALL STA Clear
U1STAbits.UTXEN = 1; //TX_enable
U1STAbits.URXEN = 1; //RX_enable
U1STAbits.URXISEL = 0B00; //1ByteReceive_Interrupt
//Interrupt Setting
IEC0bits.U1RXIE = 1; //U1RX_Interrupt_Enable
IPC6bits.U1IP = 0B110; //Set priority Priority_2
IPC6bits.U1IS = 0B00; //Set sub priority
INTCONbits.MVEC = 1; //Multi Vector Mode
/* Enable interrupts. */
asm volatile("ei");
} >>45
要約すると「犠牲を払って未知の情報を手に入れた」だよね。
実際、昔は飛行機の開発段階で多くのテストパイロットが犠牲になっている。
でも、この事とPICエラッタとの関係性が分らないな。
「PICの性能向上のために、エラッタの犠牲になるユーザーが発生するのは仕方が無い」とか?
ま、どうでもいいんだけどさ。返事は要らない。
>>46
初心者にはエラッタは大事な話だと思うナ。
つまづいてPICがイヤになるかもしれないんだよ。 >>48
エラッタについて「根拠を示して他社製品と比較」をしないのはなぜ? >>47
なんか色々と順番がめちゃくちゃ
割り込み優先順位もバラバラ
それが原因かどうかは知らんけど pic18なんですが、floatを24bitから32bitに切り替えてビルドするにはでこでしていするのでしょうか?
また、printfで%fも32bitのライブラリがあってリンクされるのでしょうか? 皆さんこんにちは。お世話になっております。前スレ746です。
https://rio2016.5ch.net/test/read.cgi/denki/1518524799/746
前スレ976さんにいただいたアドバイスに従い勉強してみたところ、
https://rio2016.5ch.net/test/read.cgi/denki/1518524799/976
UART通信+TeraTermを使ったデバッグが私にも出来るようになりました!
それで、USB通信の試験をしていた秋月18F2550マイコンボードにFT232RLUSBシリアル変換モジュールを組み足して、
UART通信の出力させてみたところ、……文字化けしてしまいました
気を取り直して、秋月18F2550マイコンボード+FT232RLだけの最小構成で組み直して、
クロック周波数48MHz SPBRG 311 と設定した場合、文字化け
々 20MHz 々 129 と設定した場合、UART通信成功 しました
TXSTAbits.BRGH:1 高速の場合
SPBRG = クロック周波数 ÷ 16 ÷ 通信速度(9600bps) - 1 で求められるはずなんですけど、
48MHzで計算して出た311の値を入れても上手く行かないみたいでお手上げです
宜しければまたご助言いただけないでしょうか?
クロック設定 48MHz、SPBRG 311 = 結果:UART通信 文字化け
#pragma config PLLDIV = 5 // PLL Prescaler Selection bits (Divide by 5 (20 MHz oscillator input))
#pragma config CPUDIV = OSC1_PLL2 // System Clock Postscaler Selection bits ([Primary Oscillator Src: /1][96 MHz PLL Src: /2])
#pragma config USBDIV = 2 // USB Clock Selection bit (used in Full-Speed USB mode only; UCFG:FSEN = 1)(USB clock source comes from the 96 MHz PLL divided by 2)
#pragma config FOSC = HSPLL_HS // Oscillator Selection bits (HS oscillator, PLL enabled (HSPLL))
SPBRG = 311;
クロック設定 外付け振動子 20MHz、 SPBRG 129 = 結果:UART通信成功
#pragma config FOSC = HS
SPBRG = 129; >>52
俺詳しくないからあてずっぽだけど、
spbrgって何ビットレジスタなんだ?
256以上の値入れても良いのか? >>52
SPBRG設定値が255を超えてるから、BRG16を1にしないとダメだよ
設定してるっけど書き洩らしてるだけだったらごめんよ >>55
xc8 1.45とMPLAB X IDE 4.05です。 >>56
ならproject propertiesのXC8 linkerの
Option categories:Memory modelにある
Size of Floatかな >>57
ありがとう!
これで積算回数増やしても大丈夫になった。 >>52
低速(BRGH:0)にして
SPBRG = ((48MHz / 9600bps) / 64) - 1
SPBRG = 77
でもいいんじゃない >>52です。質問してすぐに的確で素晴らしいご回答をいただいていたのに
すぐにお返事できなくてすみませんでした!
>>53さん
ありがとうございます!
ご指摘のように、SPBRG は 8bitレジスタでした!
恥ずかしながら、8ビット長の値までしか入らないなんて、
全然頭にありませんでした!
>>54さん
正解まで導く的確なアドバイスをありがとうございます!
おかげさまでBAUDCONbits.BRG16 の存在と意味を初めて知りました!
ご助言に従い計算してみたところ、
BRGH:1高速、BRG16:1の場合、
通信クロック制御値 = クロック周波数 ÷ 4 ÷ 通信速度(9600) -1 = 1249
1249 = 0b100 1110 0001
SPBRGH = 0b100;
SPBR = 0b11100001; となり、
その値でプログラミングしてみたところ、TeraTermとのUART通信に成功しました!
感激です!!
>>59さん
ご助言ありがとうございます!
BRG16がわからないなら、BRGHを低速にしちゃえばいいじゃない
逆転の発想が素晴らしいです
その設定でも試したところ、通信が上手く行きました!
おかげさまでとても勉強になりました >>59
低速モードの方が、1クロック当たりのサンプリング回数が16回になるから、エラーに強いしな。 どんなエラーに強くなるんだろう。
俺の想像 → ビットレートの誤差(エラー)ぐらいかな? それ以外に特別なことをしてるのだっけ。 うーん割り込みが発生しない PIC32MX220Fでは動作したのですが・・
レジスタ設定が悪いのでしょうか?
IOポート設定の後に、シリアル割り込み↓を設定
//Interrupt Setting
IEC0bits.U1RXIE = 1; //U1RX_Interrupt_Enable
IPC6bits.U1IP = 0B110; //Set priority Priority_2
IPC6bits.U1IS = 0B00; //Set sub priority
INTCONbits.MVEC = 1; //Multi Vector Mode
----
↓割り込み関数は下記
void __ISR(_UART_1_VECTOR, ipl2)U1RXHndeler(void)
{
//Receive Command Buffer Input
cRevBuf[iRevCnt] = getcUART1();
LED=1;
IFS0bits.U1RXIF = 0; //mU1RXClearIntFlag()
} すみません自己解決しました。
■修正箇所
・RTSMDを0にすべきでした
U1MODEbits.RTSMD = 0; //11_FlowMode
・優先2になってませんでした。
IPC6bits.U1IP = 0B010; //Set priority Priority_2 >>62
波形歪みに対して少し強くなるということくらい。
この場合の波形歪みとはデューティー50%で送信したのが受信側では40%で受かる
とか60%で受かるという意味。
調歩同期ではビットの中心をサンプリングするのが基本だけど、サンプリング
クロックが低いとセンターからのバラツキが大きくなる分波形歪みに弱くなる。
しかしサンプリングクロックを低く選択すると分周カウンタの値を大きくできる
のでボーレートのエラーを少なくできるという利点がある。
ボーレートを高くする場合はサンプリングクロックが低くなる組み合わせを選択
した方が総合的に有利になる場合が多い。 調歩同期サンプリングって3か所とって多数決判定じゃなかった?
ソフトUARTは知らんけど >>68
PICのUARTって、単にbitの真ん中で刻むんじゃなかった?
16回取って多数決はやってないかと。
ボーレート設定値は、単に源振からの分周値。 だいたい元の質問で9600ってんのにどんな過酷な線路想定してんのよw >>70
PIC24FとかPIC32のUARTリファレンスマニュアルには
3回サンプリングの多数決と書いてあるねぇ
8bitのはしらんけど http://ww1.microchip.com/downloads/en/DeviceDoc/39632e.pdf
>20.1.2 SAMPLING
>The data on the RX pin is sampled three times by a
>majority detect circuit to determine if a high or a low
>level is present at the RX pin. >>74
このスレって、理由を書かず難癖だけ書き込むのが多い気がする。 ルネサス当たりの石だとUART入力とかにいろいろ対策回路が入っているな
ノイズ対策etc ピックのポートリードとポートライトについて質問さしてください ポートAのうち、0,1,4,7を出力にして使いたいと思っています
使わされているのはXC8です
たとえば
PORTAbits.RA0 = 1;
PORTAbits.RA1 = 0;
PORTAbits.RA4 = 0;
PORTAbits.RA7 = 1;
このようにコードを書いた場合、RA0とRA7は同時に1にならず若干の時間差が
あると思うのですが、4つのポートを真に同時に変化さしたい場合はどうすれば
いいんでしょうか?
出力として使わされてないRA2-3, RA5-6は変化さしたくないのですが、
PORTA = 0b10000001 ;
と書いてしまっても大丈夫なんでしょうか? >>79
> 出力として使わされてないRA2-3, RA5-6は変化さしたくないのですが、
> PORTA = 0b10000001 ;
> と書いてしまっても大丈夫なんでしょうか?
日本語の解釈が判然としないが
出力に設定されているが、変化させることを許されていないと言う意味ならば、あなたの書いたコードは、まずい。
もう少し解釈が分かりやすい日本語を書いてもらえないかな? >>81
このコードが最適化で同時になったらさすがに怖いと思う。
>PORTAbits.RA0 = 1;
>PORTAbits.RA1 = 0;
>PORTAbits.RA4 = 0;
>PORTAbits.RA7 = 1; >>82
>ポートAのうち、0,1,4,7を出力にして使いたいと思っています
ということなので、それ以外のビットは出力ポートではないと解釈できないだろか。 >>84
書き方が「使わされている」とか、他人の設定の下で作らされていると言う雰囲気なんだよね。
他のポートを出力にしないなら、何も気にする必要はないのだけど、そう読み取れないんだ。 確かに他人のコードを邪魔しないように変更したいんだけどどうしたらいい的な雰囲気は取れるな。
一貫して使わされてる、変化さしたくない、大丈夫でしょうか、とか一歩引いてるよね。
まあここで聞いても結論というか、保証にはならんが。 なんか不安になる書き方よなw
怪しいから
1回PORTAを読んで
bit 0,1,4,7を変更してから
LATA出力した方がいいかな
って思ったもん 79です。すみません
>>82
他のポートは入力に設定しています。トリス設定が
TRISA = 0b01101100;
とされているという意味でかきました >>88
だったら、
あなたの書いたコードでok
ところで、
>出力として使わされてないRA2-3, RA5-6は変化さしたくないのですが
この文章は、何が変化することを心配して書いたの? トリスで入力に設定しているポートに対してラットで値を書き込んだ場合、
次にそのポートをポートで値を読み込んだら先ほどラットで書いた値に
変化するんじゃないかな?と思って心配してかきました
トリスで入力に設定しているポートについては、ラットで値を設定しても
完全に無視されると言う認識でよろしいでしょうか? TRISをトリス設定って云うのはじめて聞いたな
まぁまんまだけどなんか深セン >>90
それは大丈夫。
入力はピンの値をそのまま読む。
だから困ることもある。
出力時に値を読み込むと、違う値が読めることがあるんじゃなかったかな。
特にキャパシタがぶら下打てたりすると。 続けてポートリードのほうの質問をさしてください
以下のようなコードを書いてみしたのですが
a += PORTAbits.RA0;
b += PORTAbits.RA1;
c += PORTAbits.RA2;
d += PORTAbits.RA3;
x1 += PORTAbits.RA4;
x2 += PORTAbits.RA5;
x3 += PORTAbits.RA6;
x4 += PORTAbits.RA7;
これって
1・PORTAの値を読む
2・0ビット目の値を得る
3・変数aに加算する
4・PORTAの値を読む
5・1ビット目の値を得る
6・変数bに加算する
:
:
と言う感じで無駄にポートAの値をよんでるのでは?ないかというきがしています
最初に
data = PORTA;
としてまずポートAの値を読んだあとに
a += (data & 0b00000001 ? 0 : 1);
b += (data & 0b00000010 ? 0 : 1);
みたいな感じで処理したほうが効率的に処理させられるんでしょうか? 勿論そうだが
if (data & 0b00000010 ) b ++;
の方が効率良いと思う >>93
コンパイラの出力するコード次第だけど、
PICの場合、アセンブラレベルで見ると、
dataに移さずPORTAで直接処理しても、
実行速度は変わらないんじゃない。
だから、細かい効率を考えるなら、
if (PORTAbits.RA0) a++
が一番速そう。
個人的には、dataに移す方がプログラムのお行儀的に良いと思うし、
アセンブラで書かないなら、違いは分からないだろうな。
ところで、無駄にポートAの値を読むと、何が悪いと思ってるのかな?
♯お行儀はよくないのだけど。 ま、慣れた人が同時に変化させたいなんて案件なら
ポートA全部出力にまとめる
入力は他のポートにする
だろうね。 >>93
PORTAbitsは周辺制御に使う特殊レジスタですので
コンパイラの最適化を行わないような設定になっています
なので>>93のような処理になるはずです
以下のような項目に問題があるなら最適化の方法は色々とあります
同時性、処理速度、コードサイズ
これらの問題がないならそのまま気にしないのが良いでしょう >>79
PORTAの2356が出力設定になっていないのであれば問題ないですが
将来的にこれらを使う可能性を考えると
極限までコードサイズや実行速度を求めるのでなければ
2356の出力を保持するコードが良いとおもいます
>>81
>>97の理由でなりません >>79
LATAが存在するPICならLATAで制御するべきですね
----
PICのポート出力は3種類のチップが存在する
1. PORTAで制御
2. LATAで制御
3. LATA, LATCLR, LATSET, LATINVで制御 (32bitのみ)
3. だと以下のような万能なコードが作れるが
1. 2. だとそのようなコードは作れない
LATAINV = (LATA ^ val) & mask; LATって「ラット」じゃなくて「ラッチ」じゃないの?
いつも「ラッチエー」「ラッチビー」って呼んでるわ 書くときに「トリス」とか書かなければ良いんじゃねえか?
呑みたくなるよなあれ見ると。 全くレス番関係ねーじゃねーか
>>102,>>104の罪は重い 私が生まれて初めて作った真空管パワーアンプは6BM8。
2作目は6BQ5のPP、最終作は6080のOTL。
12AX7のローノイズ管も何本も持っていたが、
ある日、真空管をじぇ〜んぶ捨てた。何もかも捨てた。 冷え込んだ冬、アンプの球を代えてチューニングしていた
熱したタマをフローリングの床に置いたら、ピシッと言ってヒビが入った
WE300Bだった >>121
ヤフオクで売れば結構な飲み代になったのに勿体ね
>>124
それも勿体ね >>125
>>121
は
>何もかも捨てた。
を
拾ってやれよ。 同調回路の出力を、
内蔵A/Dでデジタルにすれば、
PICでラジオはできますか?
if()でマイナス側を切ってしまえば検波になりそうです。
PWMで出力して音にするとか。 そんな半端な信号処理する意味は無いが
単なる実験ならやってみれ >>127
dsPIC 使えば DSPラジオ出来そうだけどな。 >>128
どの辺が半端でしょうか?
なぜ意味がないのですか? ゲルマラジオと同じことをPIC使ってやったって意味なかろう
やるなら全帯域サンプリングしてLo掛けてLPF後にヒルベルト変換して
絶対値振幅取ってAM検波すればいいが
AGCのダイナミックレンジはADCで賄えないからRF段にAGC回す必要があるし
そんな処理はそこらのPICには入らないな >>130
とりあえず「包絡線検波」でもググって、やるべきことが何なのか理解することから始めよう >>131
知ってることを並べたかったんだね。
世の中に、意味のないことなんて、何もないと思うけど。 > 知ってることを並べたかったんだね。
おれもそう思った
なんか無理してる感
> 世の中に、意味のないことなんて、何もないと思うけど。
これには同意しないけど MPLAB X IDEのエディターで質問です。
文字コードはUTF-8にしています。
ソースのコメントに全角文字を使うと赤色の〜状のアンダーラインが表示される部分があります。
何の警告何でしょうか? もうちょっとマシなコメントを書け
ってことじゃね? >>137
やっぱそう?
俺コメントは後日思い出しやすいように「このエラーが出たらどうするのが正解かわからんので無応答でマスターの次のフレームを待つわ」とか。 必殺
int i = 0; // iに0を代入する コメントには、
何をするかを書くんじゃなく、
なぜそうするのかを書く。 いやー、そうじゃなくって、
int i = 0; // フレーム番号は0から始まる
とか、
int i = 0; // 不要なはずだが、念のため初期化しとく。
とか。 規模が大きくなるとコメントの内容も規模が大きくなる
>>145みたいな細かい単位のコメントはマイナスになることも そもそも、
コメントが必要な変数が i ってのが良くない int i; が良くないというのは同意。
付け加えとくと
何をするかの記述には、まとまったコメントとして書く。
行末のコメントは、何故そうするかを書く。
ただし、行末コメントのほうが更新しやすく、
まとまったコメントは修正し忘れて、実態と合わなくなってしまう事が多いので、
一方に頼れない。 int i;
別にこれ自体は問題ない
使いどころを誤らなければ 更新しない人は行末とか関係なく更新しない
コメントに頼るのってのも異常 i j kとintegerの変数使うのはFortranの亡霊かな int i; はワード検索にしないと探しにくいという観点で好きくない。
int ii; にするとがぜん検索しやすくなる。 検索しなきゃならない用途で i なんて使ってはいけない
極めてローカルな変数、生存するのがコード数行の範囲みたいな場合でのみ使う
こういう場合は極めてシンプルな名前にするべき >>151
JISSU は INTEGER、SEISUU は REAL >>152
複素数?
虚数単位じゃなくて?
>>155
逆じゃね? forteanの暗黙の型宣言は以下のルールに基づきます。
A-H,O-Zで始まる変数は実数型となる
I-Nで始まる変数は基本整数型となる PICkit4 Programmer Application というのは作らないのかな? 4になって速くなったんじゃないかなあ。
中華クローンの3しか使わないから、遅いけど高くはないね。 速度は遅いと思った事無いけど、あのピンソケットみたいなのいい加減やめてくれと思う。 クローンの値段でも儲かるってことだよな
ぼったくりすぎ >>171
でどうしろと?
>>173
売りっぱなしの中華セラーと本家Microchip との立場の違いを考えりゃ分かる話っしょ。
たかが5000円で何言ってんだか…。 本家はPICKITで儲ける必要は無いんだから
利益ゼロでもいいくらい
他だと無料で配ってたりするのに それな
オープンハードにしてくれればいいんだよ
arm(mbed)のHDKみたいに 中華製だと使ってる部品がさらに海賊版とかの可能性もありそう
Windowsのドライバアップデートで海賊版はじくようにしたら阿鼻叫喚みたいなのが前にあった気が >>174
答えは身内にあるよ。Atmel ICEみたくロックするコネクタがベスト。 >>179
変えたら変えないことを望むユーザーが文句を言うだろね。
というか、1列ヘッダーが嫌なら変換基板を作るのも手なんじゃない? >>179
>ロックするコネクタがベスト
へえ、なぜ? ピキ4(ピクキ4)とピキ3で数百円しか差がないし、今から買うなら
問答不要でピキ4だろうなぁ
うちのピキ3で玉に出る「VDDの電圧が足りない」エラーも改善されてたり
するんかなぁ >>182
君頭悪いね 勝手に抜けるのが問題でロックするコネクタ使えって書いてるのに
「変換基盤作れ」とかさ。 旧アトメルARMコアのpickit4でpic開発する時代になったのか >>190
確かに変換基板なしでも、
PICKIT(1列ヘッダー接続)---ワイヤーハーネス---ロック付きコネクタ
でいいね。
変換基板を作っておけば、Atmel ICEの標準ケーブルをそのまま使えるのでは、
とは思ったけど、要らないな。
で、コレなら別に何の苦労もなく、今のPICKITで実践できるのでは?
PICKITのところは、いったん接続すれば、ターゲットボード側と違って
抜き差ししなくちゃいけないものでもなく、粘着テープでも使えば勝手には抜けないわけだし。 8 bit DIP PIC で遊ぶとき 5 pin ヘッダのうちの 3本 (GND,ICSPDAT,ICSPCLK) を
PIC の足に直接はんだ付け。Vdd と Vpp の 2本は電線でつなぐ。
これだけでプログラミングができるわけだが、 さて、そうすると、PICKIT が裏返しに
なってしまう。これが気持ち悪いので、PICKITの1列ヘッダーの順番を入れ替える
だけの短いケーブルを作って使ってますが、誰の役にも立たない情報ですかね。 PIC使い始めてすぐにこういうの作ってブレッドボードで使ってる。
https://i.imgur.com/QOYu9uQ.jpg
ロックするコネクタの必要性が良く分からない。 なるほど 今よりは良さげだからパクらせてもらう。ありがとう。 うん、もちろんメスのバージョンもあるよ
あとICクリップのバージョンも PICkitのコネクタはユルユルなんだよね
俺も延長ケーブルを粘着テープで留めてるけどロックがあった方がいいね >PICkitのコネクタはユルユルなんだよね
うちのはそんなことない。
まさか、細いピンヘッダ使ってるとかいうオチじゃないよね? >>197
短くて使いにくそう
おれのはもっと長い
バラオス
バラメス
5pinオス
5pinメス
4種類作ってある >>201
ゆるい女っているよな
中が空洞みたいな感じになってて
遊びすぎってわけではなさそうだけど >>207
そして中がエクレアみたいなのに賛成です 電子工作初心者です。質問させて下さい。
DMMで図の場所における直流電圧を測りました。
スイッチONにしたらLEDが点灯するのは
トランジスタPNP型の使い方として、理屈の上ではわかるのですが、
では、何故LED無しでスイッチOFFの場合でも4.5Vも流れてるのでしょうか?
意味がわかりません。DMMの使い方が間違ってるのかもしれません。
間違ってるとしたら、スイッチON/OFFの場合にLEDのあった場所に掛かる適切な電圧の測り方を教えて下さい。
どうか宜しくお願いします。(このあとPICを使った回路に組み込む予定です)
[LEDあり]
スイッチOFF:1.6V
スイッチON:1.8V - LED点灯
http://neo.vc/uploader/src/neo33050.gif
[LEDなし]
スイッチOFF:4.5V - スイッチOFFでも何故こんなに電圧が掛かってるのですか?
スイッチON:4.8V
http://neo.vc/uploader/src/neo33051.gif >>203
それだったか分からないけど、秋月で買ったので頭の径が2.54mmより太いのがあるよね。
並べて挿すとピンソケット痛めそうな欠陥商品。 >>211
PIC関係無いけど二枚目の図だとDMM短絡してるだけなのに
本当に電圧出てるならそんな不良DMMは棄てるべき 213さん、ご回答ありがとうございます。
おかげさまで、短絡(ショート)の意味がわかりました。
抵抗無しで電圧を測ると、理屈上では電圧が無限大になってしまうのですね。
下記URLの図のようにして計測し直したところ、
スイッチOFF:1.4V
スイッチON:4.8V
と、求めていた通り正しく計測できました! これでPICへ組み込めます!
http://neo.vc/uploader/src/neo33052.gif 間違えました。ショートすると、電流が無限大です。
オームの法則。I = V / R >>215
電流流れてない場合は両端電圧0Vだから1.4Vもでるのはおかしい 1.4/0.47=2.978723404255319
3mAも流れるのはおかしいね、回路図でなく写真が見たいな 実は回路図の外に、
トランジスタのベースに、スイッチ以外にも赤外線センサーが並列で繋がってまして
そのセンサーが微妙に反応してるからLEDの部分に1.4Vも流れてたみたいです
センサーを取っ払ったら、きっちり0Vになりました
すみません。お騒がせしました >>213
DMM棄てる前に、DMM両端の電線を「発電する電線」として売りだせば儲かるのに、と思ったが、
>きっちり0Vになりました
残念だった >>219
一応注意しとくけど
> LEDの部分に1.4Vも流れてたみたいです
電圧が掛かる
電流が流れる
だよ。 下記のサイトを参考にしてPIC32MX340FのI2Cの実験をしている
http://www7b.biglobe.ne.jp/~nobosan_flute/lab_theme60.files/PIC32MX_RTC8564_Test_1.c
のですが、I2Cの出力がされません(たまーにI2C出力されたり、とても不安定)
回路図
https://i.imgur.com/1E7vwXf.jpg
レベル変換の回路と先の回路は、PIC32MX220F032Bで実績があります。
Main関数はポート設定のini_io() を呼び出した後、300msec後に
I2Cの初期設定I2C_ini()を呼び出すようにしてます。
void ini_io() {
//IO Port Initial--------------------
//-----------------------------------
TRISG = 0x000C; // PortG
AD1PCFG = 0xFFFF; //ALL DigalMode * 0:Analog 1:Digital
//Timer1 Initial---------------------
//-----------------------------------
T1CON = 0x0000; // Stops the Timer1 and resets the control register
//80MHz ->12.5nsec Timer1 :12.5nsec x 80 = 1000nsec = 1usec
TMR1 = 0x0000; // Clear timer register
T1CON = 0x8000; // TMR1 on, prescale 1:1 PB
}
void I2C_ini(void){
//I2C ini
OpenI2C1(I2C_ON | I2C_IDLE_CON | I2C_7BIT_ADD, 0x18E); // Address Mode :7Bit BaudRate:100kbps
} >>226
(オシロスコープがあれば)
PIC側、デバイス側両方のSCL,SDAの波形を見る
SDAとSCLを普通のポートの設定にして、
入力にした時とロー出力にした時の各電圧をテスターで測る
速度を落として動かしてみる (1kHzとかに)
ポート制御のI2Cにして試してみる
(Microchipのコードもある bit-bang i2c で検索)
信頼できるコードを探す >>226
波形が出ていたり、出なかったりするのが変だね
コードや回路がおかしかったら、まったく出ないはずだが:::;。
デバイスだけ変えたら、正常に動作するんだよね?
340fのバグなんじゃ・・・ エラッタにそれらしい記述は無かったが
お得意のサブマリンの可能性もあるかも
それにしてもひどいねエラッタ(というかバグ)
リビジョンが4回変わってもほとんどなおってない >>231
「I2Cの出力がされません」
と書いてあるだけで
波形が出てないのか鴨東が無いのか
どうやって調べたか
などは何も書いてないし
デバイスだけ変えて動くとも書いてない
解析において思い込みは良くないぞ 公開されてるだけで76個のバグを抱えたマイコン
MXは使うなって
メモリ2度書き問題とか
リセット不完全問題とか
ヤバいのが盛りだくさん >>235
エラッタ厨は専用スレに書けよ
コッチでケチつけるくらいしかできないんだろ
具体的にI2Cがエラッタかどうかの解析方法すら書けないくせに お前らプロファイル情報の更新した?
モレスキン社の手帳が届いたわ。 >>235
エラッタ専用スレがありますので、そちらで語ってください。 PIC18を動作させることに成功し、次にPIC32にチャレンジしましたが、
ビルドすらできず困っております。
アドバイス等ありましたら教えて頂きたいです。
【環境】
PIC32MX210F016B
MPLAB X IDE v4.15
XC32 v2.05
Harmony v2.05
【ビルド時のエラー】
--前略--
make[2]: Entering directory '--プロジェクトのフォルダ名--'
make[2]: *** [build/default/production/_ext/1360937237/main.o] Error -1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [build/default/production/_ext/1688732426/system_init.o] Error -1
"C:\Program Files\Microchip\xc32\v2.05\bin\xc32-gcc.exe" -g -x c -c -mprocessor=
32MX210F016B -ffunction-sections -O1 -I../src -I../src/system_config/default
-I../src/default -I../src/system_config/default/framework -MMD -MF build/default/production/_ext/1360937237/main.o.d -o build/default/production/_ext/1360937237/main.o ../src/main.c -DXPRJ_default=default -no-legacy-libc
nbproject/Makefile-default.mk:183: recipe for target 'build/default/production/_ext/1360937237/main.o' failed
--後略--
最後の行(nbprojectで始まる行)がリンクになっており、クリックするとMakefile-default.mkの
@${MKDIR} "${OBJECTDIR}/_ext/1360937237"
と書かれた行に飛び、その行には波線と行頭に△!が表示されますが、警告内容は表示されません。
特に手がかりとなるメッセージも読み取れず、途方に暮れております。
IDE・コンパイラ・Harmonyを再インストールしましたが、改善しませんでした。
PIC18は現在もビルドできます。
長文申し訳ありません。
このスレに書き込んだつもりが違うスレに書き込んでしまったので、再度書き込みさせて頂きます。 PIC18とPIC32は同じPICを名乗っていても中身は全然違います
タイヤがついてるから荷車(一輪車)もF1カーもどっちも同じクルマだよね
って言うくらい違います 別に大して変わらんよ
MCCやHarmonyを使うことがPICのプログラミングだと思ってる人から見たら大違いなのかも知れないけど >>241
Harmonyのアプリフォルダにプロジェクトを作らないとエラーになる MXを選んじゃった被害者がまた出たか
コアも古いし色々と設計者が32bit規模に慣れてない感じのマイコン
とにかくバグが多い
https://www.clarestudio.org/elec/pic32/intro.html エラッタ多いのは100歩譲るとしても何で修正しないんだよ?
修正する気が無いなら製造中止にしろ 誰が作っても同じような事はHarmonyに任せてApplication Logicの構築に注力する。
何でも自分でつくろうとして(データシート読んでないだけだろうが)結果ハマってエラッタエラッタと吠える。
どっちが賢いか、分かるだろ? >>247
もしかしてHarmonyのコードはエラッタ対策されてると思ってる? > 修正する気が無いなら製造中止にしろ
すげー暴論
自分が使わなければいいだけ
そう言うとこの手の輩は、これ以上被害者を増やさないためとか言い出すが
小さな親切大きなお世話だ ユニークで個性的な確実稼げるガイダンス
暇な人は見てみるといいかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
SEPLO >>250
小さな親切?親切なんてまったくなくてウザイだけだろ >>246
無茶言うな。
廃番にしないのが売りだろうに。 >246みたいなのは半導体をパソコンみたいにブロックをカシャカシャくっ付けたらハイ出来上がりとでも思ってるんだろうね。 電子工作初心者です。センサーを使ってPICのデジタル入力へON/OFFの電圧を掛けるために
コンパレータを使いたいのですが、上手く使えず画像右下のLEDがどちらも点灯しません
何がいけないのでしょうか…? どなたかどうかご教授ください。。
(可変抵抗は0~100kΩです。※記載漏れ)
LM393
http://neo.vc/uploader/src/neo33105.jpg
NJM311D
http://neo.vc/uploader/src/neo33106.jpg コンパレータの入力2点の電圧と
出力の電圧値はいくらよ? >>255
ちょっと疑問なんだけど、回路図を描かずにいきなりそうやって組むのですか? >>256さん
LM393
IN1+:4V、IN1-: 1.5V、 OUTPUT1:0.03V = LED点灯せず
NJM311D
+INPUT:4.2V、-INPUT:2.3V、OUTPUT:0.3V = LED点灯せず
という感じになっております
どちらも全然OUTPUT電圧に反映されないです…
>>257さん
ちょっと今疲れ果てていて、すぐできるかわからないです…
勝手なこと言ってすみません >>258
今回のような最小部品構成で組んでみるだけの場合は、
回路図書かないですね… >>260
すごいな。俺、絶対そんなことできないよ。
回路図でないと考えられない。
311Dの回路ってこんな感じだろか。図のようにLEDの一端がGNDに落ちてるように見える。
470Ωにつながってるのがアノード?
電源電圧がちょっと足りないことを差し引いても、もしこの図の通りだと、点かない。
311Dの出力は電流を吸い込むしかできないし。
失礼いたしました。とあるサイト様よりこちらの回路図を参考に作成してみました。
http://neo.vc/uploader/src/neo33107.gif オープンコレクタなのに電源側にLED繋いでないとか 393の方も出力がこんなふうになってるのでは?
>>262さん
ご丁寧に図解まで示していただきありがとうございます
NJM311D の作例を回路図で表すとしたら、その通りです
LEDのアノード、カソードは正しく接続されております
>もしこの図の通りだと、点かない。 311Dの出力は電流を吸い込むしかできないし。
??? ちょっと理解できる範囲を超えてます
もし宜しければ少し詳しくお教え願えないでしょうか? コンパレータは出力がオープンコレクタになっているものが多い。
出力オープン コレクターみたいだね
上記のようにすればいい
>>264さん
教えてくださってありがとうございます。
オープンコレクタ。調べてみます!
>>265 >>267さん
初心者にもわかりやすくご丁寧にありがとうございます!
オープンコレクタを調べて、理解に努めてみます
>>268さん
ありがとうございます!
結果はしばらく後でご報告させていただきますね あ。もちろん、>>267のようなLEDの接続にすると、出力がLのときに点灯することになる。
当初設計が期待するところは出力がH(IN+ > IN-)のときに点灯だよな。
いろいろ方法はあるけど手軽なのは、IN+とIN-の配線を逆にすることかな。
それと動作の結果にはあまり関係がないですが、>>262のIN-に中点電圧を入れるのに330Ωを使ってます。
これは電流を流しすぎ。IN+と同じような抵抗値が望ましいのです。 お世話になっております
皆様からご親切にご教示いただいたオープンコレクタについて
勉強してまいりました
PICのLATと今回使用したコンパレータのOutputを完全に混同していました
コンパレータを使う時はデータシートの回路図を参照して、
Outputがオープンコレクタになってるかどうかを確かめる必要があるのですね
確かにこのような誤解に基づく場合は、質問する際に回路図を書いて示さないと
エスパー回答するしかないですね 反省しました
そして、>>264さんのご指摘や、>>267さんの図解にある通り、電源→LED→Outputへと繋ぎ、
NPN型トランジスタと同様に考えることで、ついにLEDを点灯させることができました
解決方法はまさに>>270さんがご教授してくださった通りで完璧でした
おかげさまでコンパレータを用いてセンサーを通したH/L信号をPICのデジタル入力へ渡せそうです
皆様、本当にありがとうございました! PICにコンパレーター内蔵してるのあるけど・・ (この機能つかったことがないけどね)
外付けでやるんだったら ヒステリシスいれてたほうが出力バタバタしないで
いいとおもうが・・ 8 pin PIC だとピン数が少ないので AD して比較する方法になびいちゃうね。
オーディオ帯域を超えるスピードが必要でなければ、AD 後ヒステリシスでも
ディレイでもフィルタでも自由自在だしね >>271
ちゃんと報告されてて、丁寧でいいなあ、と。 >>259
電源電圧は?
普通のコンパレータは、入力できる電圧の範囲が、電源電圧より1V位低い。 >>276
流れを読めば電源電圧も書かれています。
同相入力電圧範囲は回路を組むときに注意するべきポイントですね。
ただ、たいていのケースで、IN+、IN-のどちらかがその範囲に入っていれば動作します。
絶対最大定格から外れるのは別ですが。 なんでコンパレーターはオープンコレクターなのですか?
横からすみません そりゃあプルアップしたラインに複数個つなぐだけでOR取れるからに決まってるでしょ旦那 ただの伝統だろ
多くのロジックICの出力はオープンコレクタではないし >>280
ロジックICの文化では、オープンコレクターのOR(ワイヤード不論理OR)は L->H の遅延が大きいので、ロジックICでORするのが標準だった。 出力をORしてプルアップする。
Hにしたら次のクロックでトライステートコントロールでハイインピーにする。
PCIバスのサスティンドトライステートな。
これが高速オープンコレクタもどき。
同期回路専用です。 >>282
うむ。双方向バスに関してははロジックICの黎明期はオープンコレクターと相場が決まっていたが、
スピードの観点からトライステートに変わっていったな。しかし、トライステートバッファを使って
ワイヤードORする話をしているようで、それは邪道、オープンコレクター使うべし、と思ったが、
今は秋月でも 74xx05 とかのオープンコレクターのロジックIC売ってないんだな。 エミッタなら速かったんだろうな
電圧ドロップが厳しそうだけど。。。 >>285
電圧ドロップ以前に L -> H は早くなっても H -> L で下に積極的に引っ張る人が居ないから同じようなものじゃないか。 今時爺くらいしかPICなんかに興味を持たないからな >>284
邪道でもないと思う。
>>282の手法で、PICの通常ポートでもオープンドレインが実現できるわけだし。 アナログ入力電圧がロジック電源の範囲に入ってる状況しか考えられないのか 世の中には抵抗器という部品がありましてな、それをうまく使いこなすと、好きな電圧の範囲に収められるようになったりするんですけどね 今わざわざ新規でPICを選ぶってどういう理由が考えられる? 理由すら分からないのなら使わなければ良いのに。。。 >>308
初めて出てくるような質問ではないですよね? 値段
動作電圧範囲
サイズ
あとの理由は
ユニークなペリフェラルかなぁ
コンパレータとか
ロジックとか >>301
今PIC以外では新規に何をお使い?
そしてその理由は? 一個人の理由を聞いて何の参考になるんだろう。
そもそも参考にするつもりなんて初めか >>311
ATtiny
性能
値段
動作電圧
サイズ PICをやりすぎると人格に障害がでるらしいぞ
もうかなり進行してる人もいるみたいだから注意してね >>313
PICより安いのでしょうか?
電圧は何Vなのですか?
PICよりサイズの選択肢が幅広いのですか? >>313を書いているのは、PICを選択する理由を書いた人だよな。 うちの選択理由は、対ノイズ試験がPICが優れていたから。
あとは旧三菱とか東芝の一部機種がよかったが、入手製と開発問う考えてPICに。
ちなみにAVRは対ノイズはあまり良くない。アーキテクチャはいいんだけどね。 DigiKeyで検索すると
PICは値段が高いと思う
20円から色々なマイコンが1個から買えるのに
PICの最安は42円@3000個のPIC10F200
同価格帯ではダントツに低スペック
PICが安いというのは例えばどれのこと? >>325
ノイズ試験がどういうのかも知らないだろ 静電気試験ならやるけど
ノイズ試験なんていうぼんやりした名前の試験はやらんなあ PICと他のマイコンを同じ製品の同じ基板にのせてテストするってのもなかなかあり得ないと思うし
車とか医療関係だと単体でテストしたりするの? 選定で評価基板でやったりする
オーバースペック耐性がどこらにあるとか
実際はスペック内で使うとしてもだ
ロットごとにやったりする
ロットごとにX線取ったりする
(こっそり変わっていないか) >>327
「ノイズ試験」でググれば色々出てくるよん。
ノイズ耐力だけでなく放出するノイズの試験も含まれるが、
これらを包括してノイズ試験と言うな。機能試験と分けて。 イミュニティ試験だと30MHz〜2GHzまで100V/mくらい晒して誤動作しないか確認するな
昔のマイコンだとこれくらいの強度でプロテクト外れたりレジスタ化けしたりした >>324
色々なノイズの試験全てで優れてたって?
それは単品評価?製品での評価?
何と比べて? >>333
インベーダーゲームをタダで遊べたよな。 >>324は「全て」って書いてないのに。
揚げ足とったり、意図的な誤読や誇張をからめるのは、相手を困らせるためなのかな?
やたらと相手に開示させるのは、結論として相手がやってきた検討なり判断が不十分だとあげつらうためかな?
どこの誰だって限られた時間とお金の中で限られた調査をして部品を選択していることぐらい最初からわかってるだろうに。
分かっててそういう根掘り葉掘りをするのっておかしい。まるでこの場の議論で相手をいてこますことが目的みたいだな。
質問に値するだけの情報開示をしない人が、他人に開示を要求するなんて、お前が言うか、ってレベルじゃないですかね。
技術の板なんだし、この場での議論の勝ち負けはあまり意味ないですよ。お互い出せる情報を出して交換しましょうよ。
で、>>334に質問なんだけど、単品評価ってどうやってするの?
俺自身、開発の現場が長いけど、部品単体でノイズ試験をかけたことなんてない。
どんな場面でそういうことが要求されるのかぜひ知りたい。 説得力が全く無いから、
ちょっとでも説得力を増す為の質問をしてあげただけ
「対ノイズ試験がPICが優れていたから。」
これだけじゃあねえ >>337
自分で情報開示しない人が他人の説得力を語るのですか?
>>336の単品評価についての質問についてはどうです? 欲しかったのは回答ではなく説得力だったんだなw
よくもまあ、そんな気構えで質問できる物だ・・・ 5分間隔でadcの結果をi2cのeepromに保存してるのですが、2〜3日くらいで
i2cのDS1307の読み出しでpendingエラーが発生して止まってしまいます。
リトライしても永遠にpendingエラーで
2c初期化しても同じです。
wdtでリセットも同じです。
電源再突入しか再起動出来ないのですが、何なんだろう。 >>338
ノイズ試験と聞いて静電気とかしか知らない奴に何言っても無駄ですよ。
たぶんノイズ試験でググってノイズ研あたりのトップページをチラミして書いてるのでしょう。 >>340
PIC側の問題かDS1307側の問題か切り分ける
DS1307側の問題なら他のスレへ ここは日大アメフト部となんか似てるな
上がえらそうで >>343
円滑なコミュニケーションを妨げるもの
(1)一方、または双方の非協力的・高圧的な態度。
(2)他方に対する挑発行為。
(3)言語能力の欠如
(4)書きて・話してがそもそも書かない。
>>343は(4)に相当すると思います。 >>340
2〜3日、っていうのが奇妙だな。
単純に頻度が低くて、たまたまそれが2〜3日目に起こっているのかな。
とりあえず再現する最小ソースがあると答えられる人もより出てくるだろね。
I2CにつながってるのはDS1307とEEPROMだけ? ノイズで誤動作してロック状態に陥っている可能性がある。
こういう場合はいくらソースを見ても分からない。 >>347
そういう場合は、ね。
ソースがあれば完璧って話でもないし。
回路図、実際に配線の様子が分かる写真ぐらいが揃えば、かなりいいかな。 2-3日で書き込みアドレスのラップアラウンドが発生して、その時の処理が間違ってるとか >>349
おおー。なんかありそう。
5分に1回。1日で288回。2日めの途中で512回をまたぎますね。 想像してたって解決にならん
PIC側かDS1307側か調べるのが先
現象発生状態で片方だけの電源をいったん落としてみる
これでわかる
3日かけて失敗したらもったいないので事前練習も
PICのWDTで復帰しないということから
DS1307の可能性が高そうだが
WDTでリセットがかからないブロックもあるので
ちなみにマイコンはどれ?
マイコンによってはエラッタで途中で止まることがある
PIC32MZ EFとか あと良くやるのは発生までの時間を早くする方歩を探す
5分を1秒にしてみるとか >>350
書き込んでる完全にソフトの問題ならWDTで復帰しないってのと合わないが
その問題だとしたら
サイズを小さくして周期も狭めればすぐに発生するはず
検証は簡単 pendingって、
・DS1307がACKを返してこない状態で、EEPROMは継続してアクセスできている。
・その状態になったらDS1307もEEPROMもアクセスできない。
のどっちなんでしょ。
どちらかのデバイスがバスを引っ張ったままってことはあるのかな? みなさん、ありがとうございます。
メインループはTMR0で10mSの制限を持たせて、ADCを読み込み積算して、5分間の回数で平均をEEPROMに書き込みます。
デバッグ用にシリアルでTeratermへ時刻を送っているので、0.5秒間でDS1307を読み込んでいます。
I2Cの通信は、0.5秒間隔でDS1307リードと5分間隔のEEPROMライトが発生しています。
EEPROMはページをまたがない用に128Byte単位でライトしています。
EEPROMの書き込みではreturnの前に5mSの待機を入れてます。
PICKit3でプログラムを書き込み終了で自動的に起動して必ずDS1307のエラーでリセットしても変わらずで電源を入れなおします。
秋月のPIC18F46K22搭載基板です。
秋月のDS1307基板に4KBのI2CのEEPROMもありますが、AT24C1024Bのアドレスと同じなのでアドレスSelect Jumperをショートしています。 真剣に解決したいのか雑談したいのかどっち?
解決したいなら情報を小出しにしない
リセットっていうのはPICのリセット端子によるもの?
だとしたらソフトのバグでないことがわかるわけだが
そういう重要な所をちゃんとはじめから書くこと
残りはDS1307かI2Cのエラッタか
確率に頼ったデバッグをせず
確実に原因を切り分けるのか近道 >>356
すみません。
リセットは秋月のPIC18F46K22基板のリセットボタンです。 >>355
追加です。
2〜3日と書きましたが、5台作って止まらないのもあります。
MCCのi2c1.cを使っているのですが、以前にも書きましたが、うまく動作せずで、PIC16シリーズのMCCのi2c.cを参考に改造して使っていました。
それがとっても気になっており、先ほどMCCのファイルを全部消して、Generateしたところi2c1.cは改造なしで動作しました。
しかし、PICKit3で書き込み終了後の再起動でDS1307のPendingは発生して、電源再投入でした。
以前の改造したi2c1.cは Revision 1.55で今回 Generateしたのは1.65.2になっています。
1.65.2のI2C1_MasterTRBInsert関数は私が1.55でパッチした
inline void I2C1_WaitForLastPacketToComplete()
を呼ぶようになっていますので、結局なんの違いもないかもです。 >>358
MCCでTMR0/ADC/UART1/MSSP1と16MHz内部クロックPLLx4を指定して使っています。
ADC以外は割り込み使っています。 >>358
リセットで復帰しないならPIC側の可能性はほぼ無い
少なくとも割り込みとか関係ない
無駄なことを聞くな 使うレジスタは、リセット後に必ず初期化してるか?
pon resetに頼ってる部分はないのか? >>364
MCCからGenerateしてmain.cの先頭にSYSTEM_Initialize()がマージされ。
INTERRUPT_GlobalInterruptHighEnable()と
INTERRUPT_GlobalInterruptLowEnable()と
INTERRUPT_PeripheralInterruptEnable()のコメントを外して、
// Add your application codeの後の行に
TMR0_SetInterruptHandler(timer)を最初に記述して始まっています。 >>362
通信がエラーになるんだからI2Cの通信中に
割り込みかかってプロトコルエラーになってるのかと思っただけだ。
無駄なこと聞いて悪かったな。
けど、そんなムキになることか? MCCの割込み部分です。
void interrupt INTERRUPT_InterruptManagerHigh (void)
{
// interrupt handler
if(PIE1bits.SSP1IE == 1 && PIR1bits.SSP1IF == 1)
{
I2C1_ISR();
}
if(PIE2bits.BCL1IE == 1 && PIR2bits.BCL1IF == 1)
{
I2C1_BusCollisionISR();
}
}
void interrupt low_priority INTERRUPT_InterruptManagerLow (void)
{
// interrupt handler
if(INTCONbits.TMR0IE == 1 && INTCONbits.TMR0IF == 1)
{
TMR0_ISR();
}
if(PIE1bits.RC1IE == 1 && PIR1bits.RC1IF == 1)
{
EUSART1_Receive_ISR();
}
if(PIE1bits.TX1IE == 1 && PIR1bits.TX1IF == 1)
{
EUSART1_Transmit_ISR();
}
} >>359
もう一つ無駄なこと聞くけど、
>5台作って止まらないのもあります。
これは個体差なの?
止まらないやつは何回やっても止まらない? ってかさ、I2C にプロトコルアナライザつないで確認すべきだよ。 >>369
書き方悪かったです。
止まらないと言うのは、精々5日くらいで途中で電源切ったりしてます。
どれもPICKIT3での書き込み後にPICがりスタートするとDS1307のpending は発生します。 >リセットで復帰しないならPIC側の可能性はほぼ無い
I2Cバスの操作の仕方でスレーブがおかしくなってしまって、PIC側のリセットでは復帰しなくなるケースもありえますし。 >>372
>どれもPICKIT3での書き込み後にPICがりスタートするとDS1307のpending は発生します。
>>359
>それがとっても気になっており、先ほどMCCのファイルを全部消して、Generateしたところi2c1.cは改造なしで動作しました。
>しかし、PICKit3で書き込み終了後の再起動でDS1307のPendingは発生して、電源再投入でした。
この「〜改造なしで動作しました。 しかし、PICKit3で書き込み終了後の再起動で」のくだりが気になります。
次のような認識で良いでしょうか?
・PICKIT3を繋がない状態であれば2〜3日でPendingになるもの、ならないものがある。
・PICKIT3で書き込み後に(PICKIT3がつながったまま)リスタートすると、すぐにPendingになる。このときリセットボタンを押しても効果がない。 >>374
お付き合いいただき、ありがとうございます。
>PICKIT3を繋がない状態であれば2〜3日でPendingになるもの、ならないものがある。
はい、PICKKIT3で書き込み後にPICKIT3を外して、電源入れて、Pendingになるものとならないもの(5日程度しか試していませんが)があります。
>PICKIT3で書き込み後に(PICKIT3がつながったまま)リスタートすると、すぐにPendingになる。このときリセットボタンを押しても効果がない。
はい、書き込み後にPICKIT3が刺さった状態でPICは自動的にリスタートしますが、必ずDS1307の読み込みでPendingになり、基板上のリセットスイッチを押してもPendingとなります。Teratermにprintfで表示されます。
15秒のWDTを設定しているので15秒間隔で画面にPending Errorの表示がたまります。 >>373
PICKIT3の書き込み中にI2C信号が乱れてDS1307が応答不可能になるのでしょうか?
その場合、I2Cマスターで回復させることは可能でしょうか?
動作中のPendingエラーと書き込み後の必ず発生するPendingエラーは同じと思い、これに対応できれば動作中のPendingエラーも大丈夫と思っています。 PICKIT3での書き込み中にI2Cバスに使っているピンがばたばたと不用意にLになることが
あるかなあ、ってことですね。
書き込み中は当該ピンがHiZに維持されていて、プルアップされているなら、そうはならない
と思うのですが。(秋月のDS1307モジュールってことなので、そこでプルアップされているかな)
できれば回路図を見てみたい。 >その場合、I2Cマスターで回復させることは可能でしょうか?
I2Cにバスリセットのルールはなかったと認識してます。 PICKIT3から3.3VとかのVDDを供給する設定になってるってことはないですよね… 逆に、書き込み中のVPPがダイオードか抵抗を通じてVDDを押し上げてしまっているとか。 >>380はないですね。秋月のPIC18F46K22搭載基板ってことですし。 >>377
秋月のDS1307モジュール内でプルアップされてます。
最初知らなくて外部でプルアップしてましたが、今は外しています。 >>379
PICKit3での電源供給はオフにしています。 >>365
いや、電源電圧じゃなくて
I2Cのクロックとデータ
PICとデバイスどちらかがLOWに引っ張ったままじゃないかテスターで測れって言ってるの
テスターがなければLEDでもPICの別ポートでもなんでもいいから >>367
割り込みがかかるとなんでプロトコルエラーに?
意味不明
ムキにはなってない
口は悪いかも知れないが >>373
原因のトリガーよりも、
どちらが異常状態かを調べるのが先 I2Cで良くあるロック状態
スレーブ側はデータをLOWに引っ張ってクロックを待っている状態
マスター側はスレーブがデータを解放るす(HIGHにする)のをまっている状態
>>384を調べればそうなっているかどうかがわかる
マスターは異常状態であることがわかったら
無理やりクロックを出せば良い
I2Cのまま出せないことも多いので
そういう時はGPIO設定にしてから出す
一瞬のノイズとかでそうなることもあるし
プルアップ抵抗が適切じゃないときにも起こる 言うとおりにすれば導いてあげるのに
全く私が言ったことをやらないのはどういうつもり? >>388
急かさなくても。
なるもの、ならないものがある。
PICKIT3で書き込み直後はだめ。
ここにきて>>347に光が当たるかも。
PICKIT3はけっこう激しく信号が動くし。
電源、グランドが弱いとかないですかね。 そうだね
ゆっくり待つ
>>378
>>387の現象その他を防ぐ為に
ストップコンディションを10個くらい送ることがある
デバイスでもバスリセットとしてそれを規定している物もある picユーザって人間性に問題ある奴が多いよね。
macユーザみたい。 おはようございます。
勤務先に持ち込みましたので、オシロで観測しました。
ご指摘いただいた通り、PICKit3での書き込み後のSDAがLowになっていました。
書き込み前にSDAにパルスが現れます。
MCCの初期化(SYSTEM_Initialize関数)の前に
    TRISCbits.RC3 = 0;
    TRISCbits.RC4 = 0;
    LATCbits.LATC4 = 1;
    for (i = 0 ; i < 16 ; i++) {
        LATCbits.LATC3 = 0;
        __delay_us(100);
        LATCbits.LATC3 = 1;
        __delay_us(100);
    }
    TRISCbits.RC3 = 1;
    TRISCbits.RC4 = 1;
で不要かも知れないがSDA=HighでSCLを実行して、
これだけでは復帰しないので、ストップコンディションを送るアドバイスから
    // Add your application code
    for (i = 0 ; i < 10 ; i++) {
        I2C1_Stop(I2C1_LOST_STATE);
    }
を実行でとりあえず復帰できました。
ただし、PICKit3を刺した状態で放置するとWDTが働く度にPendingです。
PICKit3を引き抜くとWDTで再起動して上記コードの効果が出ます。
I2C1_LOST_STATEとI2C1_MESSAGE_COMPLETEどちらも結果は同じでした。
稼動中のpendingエラーはWDTで再起動になるので、取り合えずこれで行けます。
パスコンは増量して様子を見ます。
みなさんありがとうございました。 >>392
すいません。
ソースをコピペした際にUTF-8であることを忘れてました。 >>391
自分の身の回りのごく少数のサンプルでそう判断してしまうあなたの方がやばそう。。 >>391
ごく一部の人間だけだよ、大部分は常識的な会話が普通に出来る。
ただ掲示板だと、実社会だと相手にされないような、
そのごく一部の人間の影響が大きいんだよね、残念ながら。 思い込みの強い感じのやつは少なからず掲示板に書きにくるね。 >>391
安倍マンセーなネトウヨの書き込みですら0.5%程度の誤差のようなものだって言うじゃないか。
PICユーザーの書き込みなんてppmオーダーだろ。
それを基準に何かを語るお前の人間性の方が心配だわ。
実生活では一生かすりもしないだろうからどーでもいいが…。 やだ、お父さんのおちんちん
血のつながった小学2年性の娘のお膣のなかで射精したくてPICPICしてる・・・ はじめまして、PIC初心者です。
タイマー割り込みで、5us程度の正確なパルスを出そうとしていますが、
20usくらいで、割り込みショートして、動きません。
20MHzの水晶を使っているのに、内部は5MHzで動くようです。
また、割り込みの種類を、いちいち判定しなければなりません。
質問ですが、
クロックが4分の1になる理由は何でしょうか?
割り込みを種類判定をする理由は何でしょうか?
宜しくお願いします。 >>406
>クロックが4分の1になる理由は何でしょうか?
そういうアーキテクチャだから
4倍PLL内蔵のチップを使えば原発振周波数で動作可能
>割り込みを種類判定をする理由は何でしょうか?
割り込みベクターが別れてないから
使う割り込みが1種類なら判定は不要 PICでやることがパルス出すだけなら
割り込みとか使わずメインループでソフトでGPIO上げ下げする
ウエイト(NOP)でデューティ調整
インラインアセンブラ使ってコンパイル後にlstファイル見て確認だ >>408
アーキテクチャは関係ない。
4相クロックで動かした方が、設計が楽だから。 >>406
> 割り込みを種類判定をする理由は何でしょうか?
他の割り込みが同時に発生する可能性ががあるから。
もし回路やほかのモジュールの設定でタイマー以外の割り込みが発生しないと保証できるなら、判断は外しても可 質問するのに型番も書かないアホと
型番もわからないのに適当な回答をするアホ きっと、命令フェッチ、データリード、演算、データライト
を一クロックずつやるようなショボいマイクロアーキだろ。 >>406
質問の答えは「PICだから」w
幸せになりたかったら今すぐAVRに乗り替えよう。 PICにDDSつなぐか、FPGAかASICでやったほうが正確だぜ
わざわざPICに外付けの水晶つける初心者さんよ FPGA だと発振回路は外付けになる。
PIC より正確かというとハテナ
マイコンに外付けクリスタルでも悪くない設計だと思うが。
>>420 は内蔵オシレータで済む程度のことしかやってないってことかな? 水晶の精度の正確さが出せるのは
PICだろうがFPGAだろうがASICだろうが同じでしょ PICユーザーの皆さんの比較参考用にAVRtiny2313(OSC:20MHz)で
パルス列を出力するプログラムを作ってみた。
リセットすると出力を開始する。
<<<<< ハードウェア(カウンタから)出力 → 5MHz
(clkIOの周波数は20MHz/4=5MHzで正しいのか?)
RESET1:
;----- Port_B
ldi ZL,0b00000100 ;bit2:output CTC_A
out DDRB,ZL
;
;----- timer0 for CTC_A
ldi ZL,0b01000010 ;simple-CTC mode, toggle output to OC0A=PB2 bit
out TCCR0A,ZL
ldi ZL,0b0000001 ;no pre_divide
out TCCR0B,ZL
ldi ZL,1 ;compare_A:1 for fast count
out OCR0A,ZL
Main1:
rjmp Main1
<<<<< ソフトウェア(直接にポートのビットを操作)出力 → 3.33MHz
(全命令実行クロック数は6、実行時間は50nS*6=300nS)
RESET2:
;----- Port_B
ldi ZL,0b00000100 ;bit2:output
out DDRB,ZL
;
Main2: ;total clocks 2+2+2=6
sbi PortB,2 ;set bit
cbi PortB,2 ;reset bit
rjmp Main2 >>440じゃなくて>>420でした
手軽に高精度だと
水晶振動子 + トリマコンデンサ + マイコン
トリマコンデンサじゃなくて地道に固定コンデンサで調整しても良い
VCXO/TCXO/OCXOとか
GPS同期とか
高精度にする手段は色々とある
パルス出力はソフトが介在しないで行うのが
精度と応用の面でほぼ必須
アウトプットコンペア、PWM、通信モジュールのクロック、...
など色々と方法がある >>409みたいなコードは全く応用が効かないし
その方法しかないということは極めて稀なので
考えるのは最後の最後で良い >>406
PICはゴミ箱に棄ててAVRにすれば良いよ
水晶が20MHzなら20MHzで動くし割り込みも要因別に個別ベクターだ >>406
>>ID:WD7kbETe
>>428
の自演。
よほど暇なのか、Atmelでリストラされたのか。 AVR布教のつもりで自演してるんだろうけど、ここでやってもアンチ増やすだけだと思う。 実際PICの欠点が多いのは確かなわけで
無駄な苦労をしなくないならPICは選ばない方が良いかと 欠点にしか関心がないなら、そりゃ欠点の方が多くて当たり前ですね。
どんなものにでも言えます。 皆さん、ありがとうございました。
PICの型番書かなくてすみませんでした。
PIC16F883です。
バルスは、ROMに配列で記憶させた8bitデーターを、
ポートから定周期で8bit同時に更新することです。
開始制御もあるので、mainは制御フローを書きます。
AVRが凄いことはよく分かりましたが、
乗り換えるつもりはありません。
パターンを8bit出すので、コンペアは使えません。
時間の精度のために水晶発振子を使用しました。
割り込みベクトルを備えていない理由が知りたいです。
4分の1なのは、ハーバードアーキテクチャーのため、仕方ないのでしょうか?
仕方ないのなら、ルネサスのマイコンに行こうと思っています。
今さらAVRを選ぶ理由は無いです。 AVR もハーバードアーキテクチャだけど
1クロック1命令だよ。
来なくていいけど。 >>437
後出し感満載だが、要は5usの周期割り込みが掛かればよいだけで、パルスの出力は不要なんだろ?
> 割り込みベクトルを備えていない理由が知りたいです。
その方がPIC内部の回路が簡単になる。
> 4分の1なのは、ハーバードアーキテクチャーのため、仕方ないのでしょうか?
ハーバードアーキテクチャとは何ら関係ない。PIC内部の設計でFlipFlop間でどのタイミングで転送するかという設計手法 >>437
1クロックで実行するようなマイコンでも、
実際の命令の実行は、見かけ上1クロックでも数クロックかかってます。
パイプラインというしくみで見かけ上1クロックで動作しているように
見えてるのですけど。
なので、ジャンプするとそのパイプラインで早く動作しているのがキャンセル
されたりしますので時間がかかってしまうことがあります。
それと、パイプラインのしくみを作ることで、面積も増えます、消費電力も
増えます。
きっちりとした、データ出力で、しかもμ秒オーダーということだと、
マイコンの割り込みで実装したら、ジッターが発生しそうです。
FPGAの方がきれいにできそう。 >>437
PIC32で80MHzでぶん回せばSPIで20MHz出る。
パラレルに換算しても2.5MHzだから0.4usで、十分あなたの要求を満たすのでは?
なぜPIC16F833なのかと…。
わざわざAVR厨の餌食を用意している、つまり自演にしか見えない。 >>473
バルスwww
割り込みハンドラが共通なのも速度か1/4なのもコスト削減の為
PICやAVRよりもRL78の方が楽にコードが書ける
STM32とかLPCでも良い
データサイズはどのくらい? ジッターを抑えたければタイマーとDMAを使えば良い
割り込み遅延とか無関係で、
CPUは他のことに専念できる >>441
コアクロック25MHzのPIC32MMでも
SPIで25MHz出るけど >>441
>バルスは、ROMに配列で記憶させた8bitデーターを、
>ポートから定周期で8bit同時に更新することです。
さて、どうやってSPIで実装しようか。 もちろんPLL後に80MHzって意味ですよ、当たり前でしょ。
あと、データ送っといてラッチしときゃ要求は満たすでしょ。
まあ、何したいのか良く分からんけどさ。
少なくとも速度は担保できる。 >>448
要求は「8bit同時に更新」だ
日本語読めないの? PICは「艱難辛苦我を玉にす」の山中鹿之介の生まれ変わりを自負する人間しか手を出すべきじゃないよね
データシート読めば解決する事で躓く雑魚はどっか行け、シッシ あれ?
4周期がーとか、ハンドラがーとかの人どこいったの?
ルネサスのWebでさまよってるかな?
あそこ分かりにくいからな、商売っ気なくてw >>450
データそろえといてトリガ掛けりゃ同じでしょ。
文字通りにしか解釈できないのか? PICスレでは質問しっぱなしで消えるのはよくあること
質問がスレを盛り上げる為の作り話だったりする 何が何でもレガシーPIC1個で、という条件付けてAVR圧勝にしたいのかな。
いまどきそんなことだから買収される。 >>455
データをどこに揃えておいてどうやってトリガーをかけるって? >>451
こゆう人こそあっちへいってほしいいんだけどなあ
いやがらせジジイ
内田監督の手下かな >>440
割り込みで実装してもジッタは発生しない。
・割り込んだら即データを出力する
・次の割り込みで出力するデータを用意しておく
という手順でやればOK >>460
すみません。他のマイコンと混同していました。 一般的には色々な理由でジッターが発生する
実行中の命令の時間差
キャッシュヒットするかどうか
明示的な割り込み禁止中
ISRの頭や終わりなど、明示的ではない割り込み禁止期間
優先度が同じか高い割り込み中
ペリフェラルによるバスロック
クロック変動
等々 8bit PICの場合で
他の割り込みを使用しておらず
明示的な割り込み禁止期間が無い場合でも
割り込みの瞬間の命令の実行時間によってジッターの原因となる
例えば
ジャンプ命令など8クロックかかる命令の実行中と
普通の4クロックの命令の実行中で
割り込み遅延は異なる >>463
>ジャンプ命令など8クロックかかる命令の実行中と
>普通の4クロックの命令の実行中で
>割り込み遅延は異なる
そこ。 PICは2インストラクション命令を実行中でも、1インストラクション命令を実行中でも、
割り込みのレイテンシは同じですよね。すっかり忘れてました。
でも、もとの質問は5usで更新だしちょっとむずかしいような気がします。 実行中の命令が1サイクル/2サイクルに関係なく割り込みレイテンシは
常に2ですね。
もちろんCPUクロックと割り込み要求が同期している条件で。
ただ、ハイエンドシリーズ(16ビット長命令)のPIC18Fでは3サイクル命令が
一部採用されているので、これをメインで使わないようにする必要があるよ
うで、残念です。 5us に対して誤差(ジッタ)をどのくらい許容出来るかだね。
>時間の精度のために水晶発振子を使用しました。
とあるけど、長期的な安定度のためかな。
適当に組んだら数百ppmくらいか。 いつもの後だしのお偉い初心者様かな。
すなおにCPLDかFPGA使え。
マイコンのポート出力ででジッタを無視できる時間規定でポートを同時に出力ってのは
外付けラッチ使うか、入出力切替をいじるなど時間規定されていないトリッキーな技を使わないと無理だろ 普通、精度とジッタは対策が違うがな。
質問者が何のために使うのかわからないと、今の情報からでは必要スペックが分からない CPLDやFPGAは出力だけ考えたらぴったりなんだけど
値段とか手軽さとか他との通信とかを考えるとちょっとねえ
値段的にはDMA付きのマインが余裕で買えるからそれの方が良いかと
8ポートの出力を同時に出力は、普通のマイコンなら普通に出来る
PIC16F833でも CPLD、FPGA使うまでもなく、D-FF(レジスタとも言う) 1個外部におごればジッター解消できる。 8回路必要だぞ
DMA付きマイコンを買う方が安いだろ それをどこにどうつけたら同期するんよ
クロックはジッタ―無しを与えないと意味ないのだが
そのクロックのエッジ以内でセットアップタイム満たして
ポート制御するとか、同期できると思ってるの? ジッタが5usに比べて十分に短ければできるのでは? 開始制御ってのが最初だけで、そこには5usの縛りが無く、
その後5usで規則正しくデータを出し続けるという事であれば、
開始制御は適当な方法で実現し、
データを出し続ける部分をアセンブラでループ書いてクロック数えればいいじゃない。
PICに向いてる応用はこんな感じで書ける事だと思うな。 >>476
そうそう。
アセンブラで書いてサイクル数合わせられるのがマイコンのいいところ。
DMA だとタイミング合わせられるの? 8ビット幅データの受け側でなにやってんのか分からんとこの罵り合いが続くぞ >>473
あ、結構安かった
>>474
クロックの与え方は上でいっぱい語られてる >>476
最終的にはそういう方法もある
昔ながらのドロ臭い方法
他の機能を入れる可能性が全く無いなら
普通はマイコンを積んだら色々な機能を任せたくなるけどね >>477
DMAだとタイマーをトリガーにして1バイトずつ書くだけ >>480
> 普通はマイコンを積んだら色々な機能を任せたくなるけどね
それが命取り。
確実にジッタなしの5us間隔を実現するために、PICを単純作業に専念させる。
後のことは動いた後で考えるのが吉。 >>476
アセンブラーでクロック数えるという職人技でも良いが、
送出タイミングのクロックが来たことを割り込みでもフラグ
ポーリングででもマイコンで検出して、次に送るデータを
D-FF の入力にセットしておけばよい。
>>479
20円でお釣りがくるDMA付きマイコンを教えてもらえる
のかと思って期待していたのだが。 安い8bit pic一つで十分なのに、なぜ外付け部品を増やす設計にするのか?
不要な拡張性追求が、コストアップと開発期間の長期化、真のユーザーニーズの未達になってるって気づけよ。
機能強化するなら、Arduinoの方が楽。 >>484
1μs 以下のジッターをとことん嫌ってるからだろ。
100円の PIC と 20 円の D-FF でできるんだから
それはそれでいいじゃん。 単機能であれば60円のPIC16F57と発振子でできる
データはROMで良いと言ってるし
それでいい気がしてきた
>>483
いやいや、もちろん差額で
でも20円だと無理ですね 単機能で良いかどうかは>>406しか知らんけど
単機能じゃダメで25命令サイクル周期だと無理だからPICを諦めたのかも知れない >>473を見ると他に制御しなきゃならないことがあると書いてるようにみえる
dsPICでもRL78でもARMでもMIPSでも、
もうちょっとCPUパワーがあるのにしたら良いと思う
8bit PICはそういう用途には向かない >>485
クロック数えて出力する時、プログラム由来のジッタがなければ、ハードのジッタはns以下だと言う情報を見たことがある。
具体的には、高安定度の10MHz発振器をクロック入力して、
10^7カウンタで1ppsのパルスを作りGPSの秒信号と比較すると言う文脈での話。
俺もダブルオーブンの水晶発振器で秒パルス作ったことあるがジッタはほとんど観測できなかった。 高速なマイコンなら
タイマーのISR内でタイミングを微調整してからポート書き込みが出来る
PIC32MM0064ならPIC16F883より安い175円 このクラスでPICを選ぶ価値は全くないけど一応PICスレだから >>492
>ジッタにオーブンとか関係ないし
あはは、知識レベルの低さ丸出し。
ダブルオーブン用の水晶は、一般的なATカットの水晶よりも
位相ノイズ(ジッタだよ)の低いSCカットというのを使うんだよ。
だからわざわざダブルオーブンと書いたのだよ。
無知なら無知らしく、低姿勢で聞きなよ。 ほんと >>391
PIC の何が引きつけるんだろう。 ジッタの観測は難しいよ何で見たの?
ある程度の精度以上はスペアナで位相ノイズとして観測する
マイコン内蔵のPLLなんて位相ノイズは酷いもんだよ >>498
高周波でもこの位相ノイズレベルはスペアナでは無理。
まして、この話は1ppsだからスペアナ使えない。
同種のosc二つ使ってパルスの時間差を観測して統計処理。
アラン分散ってやつね。それ以上はスレチだからやめる。
pll使わない生クロック利用でPICのハード由来のジッタは無視できるよ。 ほらな、もとの質問のやつ消えたら重箱の隅つつくようなのしか書かれなくなる。 >>437
四相クロックを作るために、4倍のクロックを使ってる。 >>500
後は、この中のどいつが質問者なのかを推理して遊ぶのさ。
ま、あなたや私かもしれないんだけどね。 >>471が言ってる内容から、>>474が飛躍しすぎているように思う。
>471は>>470を受けたもので、「PIC16F833のように8ビット同時出力できないマイコンでも、CPLDを使うまでもなくFFで良い」と言っているわけだよね。
だから>471が言ってるジッターは数100秒みたいなオーダーの話。
>474はこれがサブn秒みたいな話にすっ飛んでいるのだけど、それは、>471を上記のように解釈できてなくて、
「『同時に8ビットに出力できるマイコンで、更に外付けでジッタを低減する』ということは、外付けFFに与えるクロックがより上質でないと意味がない」
と考えてしまっているように見える。 いや、
>>474は単純にFFに対してソフトでクロックを与えるとダメってことだろ
サブn秒に関しては突然>>489が頓珍漢な事を言い出しただけ
1Hzでジッタを測るとかアホな事を言ってるし そもそもジッタが問題だとか質問者は一言も言ってない
時間的精度が必要だから水晶を使うって書いてるだけ あとは、1/4になっては困ると
タイマー的には1/4にってもちょうど5usは作れるので
CPUパワーが欲しいって事だと思う
mainで制御フローを書くと書いてるし >>504
>FFに対してソフトでクロックを与えるとダメってことだろ
その可能性はたぶんないのでは?
仮に、8ビットを同時に操作できない、を条件として
1, 4ビット出力
2. 別の4ビット出力
3. FFのクロック端子につながったポート操作(←これがジッタを持ってはいけない)
というような動きを行う場合、
>そのクロックのエッジ以内でセットアップタイム満たして
>ポート制御するとか、同期できると思ってるの?
FFのセットアップを心配するようなことだろか、って思います。 5us間隔(200kHz)の8bit出力で時間的精度が必要
出力データはROM
全く用途が想像出来ない >>508
用途の想像は質問とは切り離していいことだと思います。
想像するなら、単純なところなら、任意波形発生機かもしれません。 >>507
クロックのエッジ以内ってのがよくわからんが、
1周期25命令サイクルしか無いわけで
その半分以下でデータをセット出来るのかって事を心配してるのか?
それともFFの動きを理解してないとか >>510
データはROMに持つと言っている
任意波形ならUARTやUSBでデータをセット出来ても良いと思うのだが >>511
>クロックのエッジ以内
その表現は>>474のものなので、俺ではなくて>>474にアンカーをうって欲しいな。 >>510
用途の想像どころか
みんな仕様まで想像で書いてるからね
質問者はもうこのスレにはいないし >>512
任意のレベルの違いですかね。
汎用測定器としてのものではなくて、専用品なら好きな波形をROMに焼き込んで、
波形発生でも任意だろうって思ってました。
それでは任意にならない、という閾値も理解できます。
でも、 ID:gOLuK3gu さん。
>全く用途が想像出来ない
ということは、すでになくなってますね。
「データをROMに持った波形発生器」という用途は、ご自身が想像されてるわけですし。 質問者が仕様をあとからでも書かないなら、
それがネタになって技術談義になるのは健全なのでは?
あとから書くことを阻害することがあるとしたら、「後出し」と非難する習慣じゃないですかね。
赦されるべきことなのに、非難するのはどうしたもんでしょ。 データをROMで持つのにテーブルポインタや間接レジスタでROMを読めないPICを選択した謎を残しつつ質問者は逃走したのだった。 >>516
全く健全ではないですね
質問者は適切な回答が得られるようにする
回答者は質問者が欲しい回答が出来るようにする
これが健全
質問者の書き込みをろくに読まずに
書きたいことだけを書く
真面目な質問者であればただの迷惑ですね
質問者も情報を全然出さない
おそらくいつもの作り話でしょう >全く健全ではないですね
と考えない人とそうでない人がいるってことでしょう。多様性はあります。
あなたも、あなたの考え方だけが正しいとは思ってないでしょ? >波形発生器は用途ではなくてただの動作ですよ
えー。ファンクションジェネレータ売ってるんですが。 FG は作ったり買ったりするけど
全くと言って良いほど使うことがない。
オシロにつないでリサジュウ見るくらい。 8ビット同時出力するのに外付けラッチが必要なんて話しにどうして
なっちゃったんだろ >>524
仮に
"PIC16F883のように8ビットを同時に操作できるマイコン"
でなくても、
例えばポートAの0〜5とポートBの3,4を使って、合計で8ビット出力をするケースにおいて、
8ビットを同時に変化させる必要があるなら、外付けのFFが使える。
という話ですね。 そういえば「(外来語の日本語としての)リサジュー」と「鰻重」の「じゅう」の部分の発音は同じなのに、
「リサジュウ」とか「うなじゅー」って表記はあまり見ないね。 電気系日本語ではリサージュだと思ってたけど。
リサジューは数学方面で聞いたことはあるな >>525
そんなんじゃなくて
>>468 が何かを勘違いしただけ >>529
そういうところにあなたが躓いていても、あなたにメリットがあるように思えないのだけど。 普通は躓くって意図せず発生したデメリットな事に使うわけだけど
日本語大丈夫? >>527-528
確かに、俺が昭和の時代に学校で習ったときは「リサージュ」でした。
近年は、特に固有名詞は元発音に忠実であろうとする動きがあります。
「リサジュー」もその流れなのでしょう。
何年か前に学生さんと話をしてたら「リサジュー」って言ってました。
その頃には、教え方も変わっていたのだと思います。 検証しても意味のないことに意識を持っていかれてしまってるのは、躓きだと思います。
同様に、躓いている人を起こすこともできないときに、それでも起こそうとする行為も
意味が薄く、そこに意識を持って行かれるのは躓きです。
なので、ID:bEXH+/Ko に対して、以降、このことでコメントすることはないでしょう。 発音揺らぎなんぞどうでもいいよ
シーケンスとかシークエンスとか
プロトコルとかプロトコールだとか
バイラスとかウイルスとかビールスとか
いちいち拘ってろ >>524
正確なパルスを作りたいという質問者の要件から
(1) 周波数精度
(2) ビット間のずれ(スキュー)
(3) クロック幅の正確さ(ジッタ:ソフトの処理依存)
(4) クロック幅の正確さ (外部ラッチの遅延)
(5) 周波数ジッタ(水晶の制度レベル)
とまあ広範囲に正確さの話が展開され、その過程の (3) において
>>444 が DMA 使えば良いと言い出したので、そんなの 20円の
外付けラッチで解決できるじゃんという話の流れ。 お前ら、なんでpicスレがレベル低い争いになるか分かってるのか?
>>490
> ジッタの意味がわかってなさそう
こういう風に、自分の知らないことに対して、いきなり見下す態度をとるからだよ。
結局返り討ちにあってグダグダになる。
これが治らない限りレベルは低いままだ。 >>510
抵抗繋いで、簡易的なDAにするならともかく、ROMに繋ぐならクロックで同期必要だから、タイミング満たせる範囲なら、バラついても問題ない。 どうせマイコンのランクを上げなきゃいけないんだから
DMA付きを選んどきゃ良いんだよ
わざわざ外付けなんかしなくても
話の流れもわからないでオーブンとかジッタを1ppsで測るとか
頭のおかしいヤツがレベルを下げる >>542
その DMA の主張が分からないんだが、
転送クロック(200kHz)を外部から入れるってこと? PIC16F883で問題なくできるしDMAは関係ないと思うけどな >>539
> いきなり見下す態度をとるからだよ。
とは
> お前ら、なんでpicスレがレベル低い争いになるか分かってるのか?
> これが治らない限りレベルは低いままだ。
こういう態度のことだよな。 >>406
>>437
CPUパワーが問題
というようにみえる
1/4になるのが問題
解決しないなら他のマイコンを使うと >>545
タイマー割り込みで自動的にDMA転送が開始できるの?
CIP とか使えばいいの? タイマーでDMAを動かすなんてごくごく当たり前の使い方
マイコン内蔵の汎用DMAでこれが出来ない物なんてある? その欠点を補う何かがあるから人気があるのですよ。
その「何か」はPICが嫌いな人には大して価値もないので、
PICが好きな人とPICが嫌いな人が、PICの価値について話をしても実りはないのです。 アンチに技術力がないのはよく分かったからあっち行っててね やだ、お兄ちゃんのゴム無し生おちんちん、血の繋がった小学4年生の実の妹のお膣の
中でこってりどろどろザーメン中出しして孕ませてボテ腹妊娠させたくてPIC18PIC24してる・・・ ARMが56円で買える時代だならな
PICの価値って何だ? 技術力無いってのは
マイコンを活用できずにわざわざ外付けラッチとか付けちゃう人 過疎スレが集まった過疎板の中でも
このスレが、なぜか勢いあるのが気に入らない
野田朗。 LPC-Link2 2800円
ST-LINK 3000円
PICkit4 5700円
安い? >>547
ここはおかしな人が多いわ
そうとう性格がねじまがってる AtmelもMicrochip傘下なんだからいい加減仲良くしなよ... まあ何を言われても乗り換えないんだけどな
どうせ大した使い方してないし、新しい物が出る度に追いかける気力もない
使い慣れたPICでいいや
過疎って年寄りばかりになった5chにはお似合いだろ
こういう自分のような奴も多いんじゃないか ArduinoのライブラリがMPLABXでサクっと使えれば秋月DIP老人は大喜び。 低レベルのCPUを使っていて怖いのは、ユーザーの技術もいつまでたっても
低レベルに留まってアップしないって事だ。
たまに庭のミカンの木にアゲハチョウの幼虫を見つけるのだが、
大きくなる前に取り除くと小さなサナギになる。
虫も必死なんだなぁ。
ま、虫はそれで良いと思うけどさ、人間は自分で選択できるんだからな。 >>571
どこまでをブラックボックス(というか出来合い化)にするかだけど、MCCがほどほどだと思う人が多いのでは。
>>572
PICでもArduinoでも、マイコンを使うことがユーザーのレベルじゃなくて、本来はそれで何をするかだと思う。
マイコン技術のレベルよりもアイデアの実現のレベルの方に関心がある、という方が普遍的価値観に近いと思う。
マイコンに深く関心を持ってると、マイコンの技術に関心がいきがちだけど、何かを作るとなったら、
アイデアそのものだとか、機械加工の技術だとか、人脈の形成の要領だとか、いろいろな能力が必要。
マイコンのレベルを語る人が、切削加工能力についても同様に語るかっていうとそうじゃないし、
誰しも万遍なく様々な方面で高いレベルを持てるわけでもない。
どこに重きをおくべきかなんて正解はないよね。 >>574
Arduino用のドットマトリクス液晶とかセンサのライブラリを使いたい。
具体的に書くと、U8G2をXC8で使いたいのだ。 >>572
30年前のソフト技術をドヤ顔で語るようなスレだからな
マイコンもユーザーも進歩が無い >>577
Lチカや温度ロガーなんて進歩も糞もないけどな
クラウドとかいうハッタリに染まる気もないし >>578
テキストスクロールと画像表示は出来たんだが、Arduinoのみんなが楽しく盛り上がってる輪にPICの俺も加わりたい気持ちがある。
中華Nanoなら簡単なんだが、PICはDIPだし8ピンもあるし優位性がある。 >>580
趣味がLチカと温度ロガーwww
まあこんなネタでもいくらでも進歩の余地はあるけどね
>>581
だから素直にArduino使えって >>580
30年前とか言ってるから、あのひと50歳過ぎのジジイだよ ヒソヒソ >>582
サイズや電源の制約が無ければArduino使う。 >>584
ライブラリーのコードは公開されてる訳だから頑張って改変して。 >>466 を訂正
>ただ、ハイエンドシリーズ(16ビット長命令)のPIC18Fでは3サイクル命令が
>一部採用されているので、これをメインで使わないようにする必要があるよ
> うで、残念です。
2ワード命令をスキップしたとき、2ワード命令の2ワード目をNOPとして実行す
るのをカウントして3サイクルと言っているようです。
NOPの実行前は割り込み可能と思われるので割り込みのレイテンシは2サイクル
一定と考えて良さそうです。
実験はしてないですが。
一つ気になるのはMOVFFの実行サイクルが、363ページTABLE2-52では2サイクル
となっているのに対して、385ページでは2(3)サイクルとなっています。
しかし、3サイクルになるような説明はないのでTABLE2-52が正しいのかと思い
ますが。
もう一つ気になるのがパラメトリックサーチで[Show ALL Products]ボタンを
押さないとK22シリーズが出てこない。ポピュラーじゃないということ?
PIC18(L)F2X/4XK22 Data Sheet
http://ww1.microchip.com/downloads/en/DeviceDoc/40001412G.pdf PIC18自体もう力を入れてないでしょ
PIC24もオワコン
PIC32MMにシフトする 他のマイコンを一度試してみると
PICがどういうマイコンかよく分かるよ
例えばSTM32F030
8bit PICと同じような値段のARMマイコン
PICkitよりも高性能なデバッガ内蔵のボードも
秋月で1500円
ARMなので高性能だし情報も多い
ペリフェラルや開発ツールも含め洗練されている
コードはSTM32CubeMXで
ドライバやRTOSや各種ミドルまで自動生成してくれる
もちろん全てスクラッチでも組める
スタートアップから全てC/C++でも書けるし
全てアセンブラでも良いし
これら混合でも良い
全てC/C++で組んでも
PICフルアセンブラよりも高速 >>589
STMicro、開発環境で安い奴何があるんだ? >>589
全てスクラッチからはかなり難しいぞ。
8bitの比じゃない。オレには32bitは無理だった。 上に書いたNucleoでも良いし、
マイコン単品とST-LINKでも良い
ST-LINKは純正が秋月で3000円
中華なら3桁円のもある
IDEはTrueSTUDIOのProバージョンが無料で使える
Eclipseベースの高機能IDE >>590
stm32の開発環境構築でググレ
開発ソフトはフリーだ
秋月のボードちょん切ればデバッガハードになる >>591
そういうやつのための受け皿にPICは必要だなw >>591
STM32F030は非常にシンプル
全く難しくない
初期設定がちょっとあるだけ
最上位のSTM32H743でもそれほど大変でもない
手っ取り早く動かしたいならコード自動生成で問題ない
一番シンプルなSTM32F030から最上位のSTM32H743まで
ドライバが差を吸収するので
アプリはほぼ同じ >>588
あれ、ほぼ同時書き込んだのか
MIPSもコア自体は良いと思う
問題はチップがPICくらいしか無いこと
PIC32MM〜PIC32MZで遊んでも良いけど
PICやMIPSにこだわらないならARMで良いよね 何かいっぱい書いてあるけど、
そうか、んじゃNucleoでも買ってみるか。
ってな気にちっともならんな。
プレゼン力無さすぎ。 >>598
ああ、アンタ、そういう料簡だからプレゼン力皆無なんだわ。 Stm32f103c8t6 arm stm32最小システム開発ボードモジュールarduinoのdiyキット
http://s.aliexpress.com/V7JNbIZ3?fromSns=Copy to Clipboard
これ買ってUSBつなげば開発出来るのか!? Picスレなんだから
SAM使おうって話はでないか >>595
なんか、PIO に出力したいだけなのに
モジュールやバスのクロックをオンしたりで
結局訳分からなかった。
サンプルをコピペしたのは動いたけど。
エミュレータが繋がらないとARM系はムリポ。 PICだとソースレベルデバッグするまで大変だよないろいろ
ICD4は\29800位とコンパイラは幾らだ?
ARM系だと\1000以下でエミュハード&ソフト手に入るんだが
まあここはPICのスレだからそんなことは気にせずに
ずーっとPIC使っててください。 >>608
PICkitでもソースデバッグは一応出来る
色々としょぼいけど あっちはRAMやコアを生かしたままのスリープ電流が凄まじい PIC18のIdleはSTM32のSleep
PIC18のSleepはSTM32のStop
ですよ
STM32L0はPIC18に比べて10倍の性能で半分の電力 大枚はたいて買った製品開けてみてPIC入っていたら
(´・ω・`)とならないか
STM32だと("´_ゝ`)だけど IC使ってたらましって商品を見てきてるからなあw
世の中は酷いのいっぱいあるよ >618
いや、マウスにSTM32F103使ってたのにはわりと引いたぞ。
ワンセグにSAM3Uなのはむしろよく能力足りてると思ったが...。 XC32のfree版で32KB辺りを上下してるようなプロジェクトでもSTM32なら余裕で入っちゃう? >>621
PIC32MXよりは小さくなる
PIC32MM, MK, MZとは命令セット自体のコード効率は同じような物
(MIPSの方が微妙に良いと主張はしてるけど)
コンパイラの性能まで合わせると、
STM32の方が若干小さくなると思う あ、
Free版はmicroMIPSが使えなかったような気がしてきた
だとするとCortex-Mの方がずっと小さくなる 興味あって探してみたけど、STMもNucleoも、専用スレ無いのな。
盛り上がってるのはここ(の2、3人)だけとか?
おもしろいね。 秋月と5chでは盛り上がってるねPIC
ホビーマイコンだからね 秋月でNucleo見てみたんだけど、種類多過ぎで引いた。
今まで通りArduino(ESP8266含む)とPICの棲み分けで行くことにした。
いろいろ無駄な情報をありがとう。 Arduinoの種類もPICの種類もあたら多いけどなw
好きなの使えや
目的達成できればなんでもいいのだから 秋月で扱ってるチップが2種類だけだし、1番マシなRSでもMOQが5からとかやる気あんのか、と思えてきた。 マイコンを単体で入手して自作の基板に取り付けるっていう発想の無い人がいるようだね。
普通にこれ買って手ハンダでテスト基板作ったりするわけだが。
http://akizukidenshi.com/catalog/g/gP-07365/
もうずーっとスレの違いなのに、それすら自覚出来ないようだから仕方ないね。 スローなDIP PICしか使ってないと
>>636の問題点が分からないんだね まぁテストで汎用変換基板試して見ると
低速ならSDRAMぐらいでも動いちゃったりするもんだ 高クロックは怪しいこともあるが
試作なら変換基板使うよ
しかしブレッドボードじゃないとイヤだとかいう向きは
そこまでだな >>648
0.8mmピッチの変換基板でだよ
お呪いとしてパターンカットしたり
裏にパソコン貼ってみたりするけどね!
fpgaとsdramの変換基板に載せて
UEWで配線して動かしてみると、結構頑張って動くもんだよ!
完璧主義は凄いと思うけど、度胸も大切だよ! 最近ここから初心者がみんな逃げてるね
PICの会社の人、少しは介入したほうがいいんじゃないかな
将来困るぞ 信用出来ない基板で実際使わない速度で動かして
何の評価になるんだか
そんな無駄な労力を使わないで
素直に基板起こせよと思う いつもの作り話が始まったって感じだな
裏にパソコンwww 8bitと32bitを比較してどや顔するのも作り話のようなもんだよな。 A3 サイズのラッピング基板なら
パソコン貼ってあっても違和感なさそう。 問題だ問題だ言うわりに、何が問題かは言わないんだよな
クソの役にも立たないっていう
中途半端な知識をひけらかして本職に突っ込まれるのが怖いのかな >>657
面白いフォントだね。
フォントも自作なの? 結構安いなOLEDドットマトリクス
どうせ文字しか表示しないからキャラクタ液晶をよく使ってたけど
使ってみようかな ビットリバースは色々とテクニックがあるよ
でも反転だけでガクッと落ちるってことは
文字描画はつらいかな RAM 2KBだから
ダブルバッファリングも出来ないのか よくPIC16でがんばるね
PIC32MMが175円で買えるっていうのに フレームバッファは1画面分で768B食ってしまう。
PIC32MM、気になるがDIP少ピンは無いのかな。
作ってるのは加速度センサで重力加速度を検出して、上下自動反転するアニメーション砂時計。
秋月D基板に全てを収めたいんだ。
フレームバッファの回転アルゴリズム、調べたいので検索キーワードを教えてくれないか? 96x64ドットか
じゃあ他をケチればダブルバッファリングも可能かな
でも転送しながら描画とかしないか >>670
ビット リバース アルゴリズム
とかで検索するといくらでも出てくる
PIC16はバレルシフタが無いから
256バイトのテーブルが良いかな
転送時に反転じゃなくて
描画時に反転するのが一番速いと思うけど
フォントデータとかコードが2セット必要で手間がかかる
表示モジュール側で反転出来るのあるけど 描画時に反転ていうか、
元から反転してあるデータを持って
逆向きに直接描画するってこと
砂時計データやフォントデータを2セット持てるスペースかをあれば >>673
96x64でまともにデザインすれば
上下対称にはならんでしょ Tnx.調べてみるわ。
砂時計のアニメーションと共に時間表示の数字も表示させたい。
逆向きフォントも考えたが、文字の並びも逆になるし、
画面ごと回す方が良いかなと。 >>675
逆向きフォントだとややこしいもうひとつの理由は、HX1230の画面サイズが96*68って点。64じゃなく68。 >>670
dsPICやPIC24なら少ピンDIPがある
DIP自体需要がもう無いからね
サイズ的にも電気的にも不利だし
今となってはコストもかかる >>677
データの並びって普通に1ラインごとでしょ?
縦の端数はあまり関係なくない? 電源オフ時のただひたすら電源ONを待ってるだけの待機用マイコンでも100pinだよ >>670
このOLED、物は何?
PIC32のDIP版は28ピンだけだと思う。
1列14ピンだからD基板に載るでしょ、OLEDは裏面に配置すりゃいい。
で、メモリに余裕持たせて枚数用意してアニメーションが一番いいと思う。
砂時計に加速度センサーは必要ないから傾斜スイッチにすれば?
そうすりゃ場所取らないから基板面に余裕出るし…。 >>685
http://s.aliexpress.com/U7BnINNr?fromSns=Copy to Clipboard
OLEDじゃないただの液晶。
安いぞ。
https://i.imgur.com/G92koY7.jpg
液晶のメモリはこんな。
左上から横方向にデータを送る。回転のイメージはこんな感じ。
フレームバッファのサイズは96*9=864Bだった。 1ライン12バイト x 68ライン
じゃねーのかよ >>686
それ、アフィリエイトのリンク?
にしてもマイナーなモジュールだねえ。 バイトが横8ドットではなくて、縦8ドットなのはモノクログラフィック液晶のコントローラに割と見られるタイプだと思う。 縦8×横5ドットのフォントを使うのに都合がよかったからかな。
俺も、先にPC-9801のVRAMのイメージに馴染んでいたので、初めて見たときは
戸惑いました。 アナログRGBもDVIもNTSCもHDMIも
全部上からラインごとに右へスキャンなんだけどねえ
ライブラリだと下からってのもある
.bmpも普通は下から >>694
なんでそうなるのかな?
もしかして、縦8ドットのコントローラの存在を俺が知ったのがごく最近だと思われました?
だとしたら早合点ですよ。 98の次に縦8ドット液晶を扱ったってことか
縦8ドット液晶ってそんな昔から? ラインごとにスキャンするVRAMの構成にするのは、ラスタースキャンモニターへの
出力のためには相性が良いからですね。
横8ドットにすれば、メモリアクセスの周期がドットクロック÷8になるので、速いメモリが
高価だった時代にも優しい方法だったのだと思います。
液晶やプラズマディスプレイのドットを直接コントロールするコントローラにはそういう
制約はありませんし。 >>698
俺が初めて縦8ドットのグラフィックコントローラを見たのは液晶ディスプレイパネルじゃなくて
プラズマディスプレイパネルでした。 あ。>>700に肝心なことを書かなかった。それはまだ1980年代だったはず。 世の中のドライバはこのままの形でデータを作ってからそのまま転送するんだろうか
それとも転送時に変換?
このままの形だと
ただの直線を書くだけでも非常に面倒だし時間もかかるよね
2Dアクセラレータも使えない まあここで文句を言ってもしょうがないか
手を出す時は選択に気をつけよう MSXのテキストモードを思い出す配置だな
今風に言うとキャラクターRAMかな。。。 >内田監督みたいなひと
それは具体的にどのような傾向・習慣・行動を指すのですか? >>656
そんな大きいユニバ売ってたら見てみたいですね(笑) NYT
常識を備えたコンピューター
Computers with common sense
http://iht.newspaperdirect.com/epaper/viewer.aspx
ここ5年間で、A.I.に関することで最もホットな話題は、deep learningと呼ばれる部門でした。
壮大な名前のついた統計的手法は、コンピュータに大量のデータを処理することによって学習する方法を
提供します。deep learningのおかげで、コンピュータは簡単に顔を識別し、話し言葉を認識することが
でき、人間のような知性が手のとどくようになった。 Google、Facebook、Microsoftなどの企業は、
deep learningにお金を注ぎ込んでいます。がん治療からオフィスの自動化にいたるまでのすべてのことを
試してみようとしているようです。
しかしその一方で、deep learningは本当にdeep なのか疑問を持ち始めている人もいます。
カリフォルニア大学バークレー校のマイケル・I・ジョーダン教授は、deep learningが、過剰な期待と過剰投資を
煽りすぎてやがて失望に変るのではと、警告しています。
「ここには本当の知性などというものはない。これらのアルゴリズムの力をあまりにも多く信頼することは、間違って
いることだ。やがて、技術的な壁にぶつかって、最終的には1950年代以来くりかえされてきた反発に直面する。」
と言う。
ディープ・ラーニングは成功をもたらしていますが、その結果は膨大な量の利用可能なデータがある分野に限定され
ています。deep learning の技術は、よりオープンな知性の領域、すなわち意味、理由、常識などの分野が
不得意です。 ディープ・ラーニング・ソフトウェアは、数百万語の単語を即時に識別できますが、「正義」、「民主主義」、
「干渉」などの概念は理解できません。deep learningが大きなデータとの強力なパターン・マッチングには楽勝ですが、
簡単にだますことができます。 比較的少数のピクセルを混ぜるだけで、亀やライフルや冷蔵庫の駐車標識と間違える
ことがあります。
ニューヨーク大学の教授ゲイリー・マーカスは「deep learningは限界に近づいている。 多くの場合、deep learning
によって抽出されたパターンは、人工的すぎる。」と言う。
あまりにも多くのお金とあまりにも多くの精神がそれに費やされる可能性がある、。そうすれば、私たちは、他の重要な
概念やA.I.を進歩させる道筋を逃してしまうリスクを冒しています。」
一方、一部の研究グループ、新興企業、コンピュータ科学者は、deep learningを超えたA.I.へのアプローチにもっと
関心を向けています。 シアトルの非営利団体であるAllen Instituteは、2月に、プロジェクトアレクサンドリアと呼ばれる
常識的な知識を生み出すための機械を教えるための研究に、今後3年間で1億2500万ドルを投資すると発表した。
そのプログラムやその他の取り組みはさまざまですが、彼らの共通の目標は、deep learningよりも幅広く柔軟な
インテリジェンスであり、より少ないデータで分析できるものである。
以下略 >>701
うちにまだプラズマなダイナブックがあるが動くんだろうか?少なくともFDDはダメだろう カラーのOLEDをポチってみた
カラーだとさすがに普通のデータの並び順ですね
計算上だと秒60フレーム出る計算ですが
実際はどんなもんでしょう
動いたら報告します >>714
3100GTかな?AT互換だよね?
なぜか、増設メモリ兼RS232Cボードがある。本体は無いのに、、
あと、XT互換の3100ラップクラッシャーがあるな。 >>715
なんて品番のOLED?
計算の根拠も知りたい。 昔使ってたなあ
J3100SSとかGTとかSXとか >>717
HiLetgo 0.95インチ SPI OLEDディスプレイモジュールフルカラー65KカラーSSD1331
ってやつ
画面全体が16bit x 96ドット x 64ラインで98304ビット
SPIのクロック周期が150nsだから
1フレーム転送に15msくらいで秒67フレーム出る計算
ダブルバッファリングで転送はDMAを使えば
あとは純粋に描画時間
非圧縮アニメデータ+簡単な文字描画くらいなら間に合う計算 >>719
俺の知識不足で理解出来ないんだが、SPIの転送速度をフルに使う処理がPICで出来そうってこと? 25MHz動作のPIC32MMでもソフト書き込みで25Mbpsの送受信が出来る
DMAを使って送信だけで6.6Mbps出ない理由が無い 非圧縮だと128MbitのSPI NORでも136枚分のデータしか持てないから
映画とかは無理だけど 64GBのSDカードを使えば映画1本くらいは大丈夫か >>710
PIC32MMとか面白いと思って書いてるのかね。 >>725
DIPにこだわる人専用32bitCPU
こだわり無い人にとってはゴミ おしゃべりマイコンはつないでないけど、
しゃべらせるのも面白いかな。 >>730
すまん、電源内蔵ブレボの方が気になってしまった
いいなと思ったけど高っ。。自作するかな 電内ブレッボ(電源内蔵ブレッボ)じゃ柔軟性無いような気が
いまだとUSBコネクタから5V供給して、あとはレギュレータで3.3Vも可能。
くらいで十分賄えそう 私のブレボ電源供給方法
とはいってもピンをハンダ付けしたDCジャックを差し込んだだけ
GND側が1本なのでやや安定性に欠ける
工夫の余地有り
https://i.imgur.com/OFFiKcp.jpg 今からPICなんて始めない方が良いからな
いじめるのが優しさだよ 本当にPICが適切か良く考えてから選びましょう
主な競合MCU
8bit AVR / STM8
16bit RL78 / MSP430
32bit STM32 / LPC / Kinetis / RX 「秋月でDIP物がいろいろ売っている」
これくらいしかアドバンテージは無いが、
どうしてなかなか強力なことよ 汎用トランジスタと言ったらC1815&A1015くらい強力 中華シナチョンで格安PCBが作れるようになってからはディップ品なんて
とんと使ってないけど、それでもソップ品であったとしても秋月にかけこめば
いつでも豊富に取り揃えてあるのは大きいんだなぁ
週に十数個位の単位でガンガンつかうからリア店舗で買い揃えられるのは
ありがたい。 >>743
レギュレータじゃなくてレギュだろ。
キャラ統一しろよ。 >>736
おお、こんなのあるんだ
thx!
>>737
アクロバティックだなw
コンパクトでそれもありだな 今時コンパイラに変な制約かけて稼ごうとか恥ずかしいわ >>750
商売の形は、いろいろあるし、どんな方法を取るかは売り手が考えればいい。
有償版コンパイラはサポートの費用もあるだろさ。 >>754
これで±電圧(5V〜15V)のがないかな?
オペアンプ回路に便利。 マイコン+アナログ交流信号回路のとき電源はどうしてる?
+電源からチャージポンプでマイナスを作る
+電源からDC-DCでマイナスを作る
マイナス用にもうひとつACアダプタを準備する。
単電源でやってのける 基本、単電源、ロジック-アナログ共通仕様だね。
これで無理が出たらそれから考える。 単電源でなんとかなるアナログ測定電圧なら単電源
なんともならない場合はチャージポンプで両電源
その他色々大変な時は、アナログ電源だけ外部端子設けてる ビットリバース検索したら目から鱗だった。が、速度はほとんど変わらない。
PIC32に換装かな? バレルシフタが無いからテーブルでやらないとダメだよ >>761
バレルシフタって、rrfとrlfを高速にやってくれる機能?
テーブルって、入力と反転出力を1:1対応のテーブルから呼び出すってこと? バレルシフタは複数ビットのシフトを高速で行う回路
x = x >> 4 | x << 4;
こんなのが高速で出来る
これが高速で出来ないとこのアルゴリズムの意味が無い PICでDIPならとりあえずPIC32MM0064GPL028
DIPにこだわらないならPIC32MM0256GPM028
PICにもこだわらないならSTM32F103C8T6
を勧めておく
ARMならビットリバース命令があって
32bitリバースが1クロックで出来る tnx.
前に書いた変な中華液晶のフレームバッファ回転だから、一度にリバースさせるのは4ビット。テーブルは16バイトで済むからやってみるよ。
ところでPIC16F1のハードウェア乗算を活用すれば速くなるかな?
それでもダメなら換装だ。 左シフトは乗算に置き換えられるけど
レジスタコピーが発生するので
速くなるかはわからない
ローテート命令やニブルスワップの方が使えるかも 4ビットずつ別々にリバースしなくても良いんだよ
せっかく8ビット一気に演算できるんだから
リバースしてない4ビット4ビットを組み合わせてから
一気にテーブルでもリバースアルゴリズムでも使えばいい >>768
コピーとリバースのセットを4ビット毎に区切ってやっていたが、8ビットのリバースを高速化できるなら試してみる。 SPIで反転出来るのもあるんだけどねえ
PICじゃ無理か 宇野壽倫(葛飾区青戸6)の告発
宇野壽倫「文句があったらいつでも俺にサリンをかけに来やがれっ!! そんな野郎は俺様がぶちのめしてやるぜっ!!
賞金をやるからいつでもかかって来いっ!! 待ってるぜっ!!」 (挑戦状)
■ 地下鉄サリン事件
オウム真理教は当時「サリン」を作ることはできなかった。
正確に言えば 「作る設備」を持っていなかった。
神区一色村の設備で作れば 全員死んでいる。「ガラクタな設備」である。
神区一色の設備を捜査したのが「警視庁」であるが さっさと「解体撤去」している。
サリンは天皇権力から与えられた。
正確に言えば オウム真理教に潜入した工作員が 「サリン」をオウムに与えた。
オウム真理教には 多数の創価学会信者と公安警察が入り込んでいた。
地下鉄サリン事件を起こせば オウムへの強制捜査が「遅れる」という策を授け「地下鉄サリン事件」を誘導したのは
天皇公安警察と創価学会である。
天皇は その体質上 大きな「事件」を欲している。
オウム科学省のトップは 日本刀で殺された「村井」という人物だ。
村井は「サリン」授受の経緯を知る人物なので 「日本刀」で殺された。
http://d.hatena.ne.jp/kouhou999/20150224 >>715
シングルバッファで簡単なラインを書いたくらいですが
画面全体転送で秒60フレーム出ました
上下反転や左右反転もコマンドで出来ます
思ってたより高機能ですが
思ってたより小さくて思ってたより表示が汚い
PWMの周期が遅いのか、画面が微妙に動くだけて点滅がわるし、発色もいまいち >>771
最近のは、SPIとか高機能化されてる。 >>774
届くの早い!
コマンドでとは、OLED側が処理してくれるの? そういうことです
取り付け向きで180度回転したい場合
数学と同じように上をプラスにしたい場合
などへの対応でしょう
左右スキャンではなく上下スキャンも出来るので、90度回転した状態でも使えます 直線描画や矩形描画や矩形コピーなどの2Dアクセラレーション機能や
指定矩形に限定して描画する機能
もあります
まだ使ってないですが パネル側でアクセラレーション付きは珍しいっすね
SoC内蔵とかEPSONのS1D系とかならいざ知らず
SSDとかILばっかりつかってるとアクセラレーション?何それ美味しいの?状態だったのにw 型番不明
アマゾンで以下で検索すると出てくる
「HiLetgo 0.95インチ SPI OLEDディスプレイモジュールフルカラー65KカラーSSD1331 7ピンArduinoに対応」 >>782
なかなかの高級品ですな。
うちのは1.44インチ128x128ピクセルのTFTで送料込み365円とかの安物だった。
Arduinoからコードを移植してPIC24でカラーチャートを表示したころで1年半放置してあるわ。 >>784
はい、見た目もドライバICもそれと同じです。
値段がだいぶ盛られてますが…。 thx
次はこのこの大きいのにしてみようかな
ペンも遣えるし
https://www.amazon.co.jp/gp/aw/d/B075FQRBXX/ref=pd_aw_sbs_328_3?ie=UTF8&psc=1&refRID=HJNKM6GWW0QGTF53W1AF&dpPl=1&dpID=71vSHf7K3cL ドットマトリクスLCDやOLEDをPICで動かしてる人は、どんなソースを書いて制御してるの?
自前で書くのが主流? >>788
Arduinoのライブラリを移植
どうせI2CやSPIで接続してるやつだから 初心者こわがってだれも質問しなくなったな
ステマ大成功 砂時計がほぼできた。
回転させても12FPS位出るようになったが、32MHzしか出ないはずのPIC16F18346が64MHzで動いてるんだよ。
PICってそんなもん?
壊れたりするのかな?
http://fast-uploader.com/file/7084661401688 64MHzで動くんだー
外部クリスタル16MHzの4倍? PC用だと遠い昔でも1.5倍位が限度だった
フラッシュアクセスタイムとか調整した? >>795
16MHzクリスタルの4倍だよ。
趣味とは言え不安だから8MHzクリスタルに換装しようかと。
MCCで設定出来てしまうのが謎。 DSスペックは温度とか電源電圧全域の保証範囲
局所的にはOCで動作する
のかも >>793
PWM用とかに、周辺機能だけ64MHz入れられるだけだと思うが。 >>786
早速遊んでみました
イメージががRAMに展開出来ないので
8分割して8回描画して8回転送って感じにしました
でも描画よりも転送に時間がかかっちゃって
1FPS位しか出てません
ピンの都合で8bitがバラバラになってしまったのが主な原因です
ピンの並びをキレイにして、
16分割してダブルバッファリングすれば
DMAが使えるんで、
これを目標にしてみます このLCDの場合、
タッチパネルがLCDと共通ピンで非常に使いにくいです
データ転送の隙間でペン位置を見ないといけない
素直に4pin独立で出しておいて欲しかった >>803
楽しそう。
テキストの逐次転送とか、画像でも部分的リフレッシュならFPS上がる? もちろん部分更新ならFPSは上がります
全画面フルカラーだと
コントローラー最大の15MHzでも30FPSが最大
全画面フルカラーの動画再生で使うようなモジュールでは無いんでしょうね これは剥がすと見えなくなっちゃう系のシートじゃね? 12*4=48MHz
液晶表面のは保護用だから、ケース加工後に剥がす予定だよ。 保護シールのことだろ。
本題に無関係のどーでもいいことをチマチマうるせえよな。
わざわざ書く神経がクソだわ。 >>803
ピンがバラバラなままでソフト書きでなんとか30FPS出せました
出せたところで何をするかは決まってないんですが 素直にピン配変えろって聞こえてきそうだが
こういう無駄な最適化は楽しいね アセンブラで書いたら1バイト転送あたり
MIPS 10命令
ARM 6命令
になりました
MIPSはアドレッシングが貧弱なのと
PICのポート設定の問題で
命令数が多くなってしまった
どちらもポート順がバラバラで2グループにまたがったピン配で、他の(同じグループの)ポートはいじらない
データは転送データそのまま
という条件
PICだとポート設定が
SET, CLR両方を使うか
INVで反転しないとダメなんですよね アセンブラで命令数は減って
命令の依存関係にも気を使ったんですが
C++とほとんど時間は同じでした
たぶんメモリ帯域の問題と思います >>819
キャッシュとメモリアクセスはどうやってるの? .macro lcd_write_bulk_even n
lw TEMP, \n(DATA_PT)
sw CLOCK, (LATA_INV)
xor DATA_B0, DATA_B0, DATA_B1
sll TEMP, TEMP, 4
addu TEMP, TABLE, TEMP
sw DATA_A0, (LATA_INV)
lw DATA_A0, (TEMP)
sw DATA_B0, (LATB_INV)
lw DATA_B0, 4(TEMP)
xor DATA_A1, DATA_A1, DATA_A0
.endm
.macro lcd_write_bulk_odd n
lw TEMP, \n(DATA_PT)
sw CLOCK, (LATA_INV)
xor DATA_B1, DATA_B1, DATA_B0
sll TEMP, TEMP, 4
addu TEMP, TABLE, TEMP
sw DATA_A1, (LATA_INV)
lw DATA_A1, 8(TEMP)
sw DATA_B1, (LATB_INV)
lw DATA_B1, 12(TEMP)
xor DATA_A0, DATA_A0, DATA_A1
.endm こんな感じ
このマクロをループ内に8個ずつ交互に並べる
大文字なのはすべてレジスタの#define
命令キャッシュもデータキャッシュも有効
LATA_INV / LATB_INVのキャッシュは無効
送信データはRAM上でサイズ的にキャッシュからは追い出された状態 ARM(STM32)だと偶数奇数を分けなくてよくて、命令もこれだけ
str r6, [r5]
ldrb r7, [r0], #1
str r8, [r5]
ldr r8, [r2, r7, lsl #2]
str r9, [r5, #0x400]
ldr r9, [r3, r7, lsl #2] >>818
MIPSは、 対象のビット だけを書き変えられるようになってるから 先輩方の高いレベルの雑談は、本スレでお願いします。
ここは、僕たち初心者が質問するスレです。
俺は詳しいんだ、凄いだろと言う雑談は、
あっちのスレでお願いします。 元データにXORをした方がいいですね
これで9命令に
.macro lcd_write_bulk_even n
lb DATA0, \n(DATA_PT)
sw CLOCK, (LATA_INV)
xor DATA1, DATA1, DATA0
sll TEMP, DATA1, 3
addu TEMP, TABLE, TEMP
sw DATA_A, (LATA_INV)
lw DATA_A, (TEMP)
sw DATA_B, (LATB_INV)
lw DATA_B, 4(TEMP)
.endm SWL命令で1命令減る
けど部分書き換え命令だから遅いかな こんな簡単なアドレス計算に2命令も使うとか
MIPSはやっぱりいまいちだな
アドレス計算は頻出するんで
命令の美しさとか犠牲にしてでも
アドレッシングはリッチにしておくべきだったと思う
x86だとアドレッシングがリッチすぎて
(バランスが悪すぎて)
普通の計算にもLEAを使ったりする アドレッシングで余分に時間がかかったりしない
その為のハードウェア演算回路
ARMならCortex-M0でもメモリアクセスノーウェイトなら1クロックでアドレス演算含めて読み書きできるし
x86なら1クロックで(コアあたり)2個のロードと1個の書き込みが同時に出来る PIC32はMZ搭載のM5150コアでも加算とシフトで2クロック使ってしまう
まあそれでも、
アドレス計算に何命令も使い
その計算したアドレスのメモリにアクセスするのに何命令も使い
その各命令に4クロックも使う8bitよりかは遥かに高速だけど >>833
例にCortex-M0出してるが
Cortex-M0は演算で使えるレジスタの数に制限があるのを知らんのか?
大部分の演算命令では8個のレジスタしかアクセスできないぞ Cortex-M0はThumb-2の16bit長の命令とほんの少しの32bit長の命令しかない
32bit長の命令はたったのこれだけ
BL
DMB
DSB
ISB
MRS
MSR
UDF
ちなみに>>823のコードはCortex-M0ではアセンブルできないぞ
LDRやSTR命令でR8-R15は使えないし、
ldrb r7, [r0], #1
ldr r0, [r2, r7, lsl #2]
ldr r0, [r3, r7, lsl #2]
なんてアドレッシングも使えない
str r0, [r5, #0x400]
これもオフセット値が5bitまでしか使えないのでオフセット値が大きすぎてエラー どうで、ここ数日間、某スレで暴れてたAVR信者だろうな
某スレで見たがPICスレでエラッタエラッタ言って暴れてるのもどうやらAVR信者っぽい いやいや、
>>823はCortex-M0じゃないから
M4のコードで実際に正しく動作してる あっちのスレを見れば
おれがPICマニアということはわかると思う
PIC10からPIC32MZ EFまで守備範囲
ARMもx86も詳しいけど >>835はM0のコードと勘違いしたのか
読解力のないヤツ >>841
そうじゃないだろ
>>833がCortex-M0とM0+がCortex-Mのなかでも特殊なのを知らなかったということだ
だからCortex-M0を出してきてる
>>823のコードはCortex-M3以上なのは見ればすぐにわかった Cortex-M3、M4、M7はARMv7-Mだが、Cortex-M0、M0+はARMv6-Mだからな
ARMに詳しいならこれくらい知ってるはずだ M0/M0+
M3/M4
M7
この3グループ、中身は全く違う
そんな事は知ってる
M7はスーパースカラ
M5150よりもずっと格上 だから、M0、M0+はサポートしてる命令が少ないわけ
Cortex-M3、M4、M7とはプログラミングの仕方が変わってくる >ARMならCortex-M0でもメモリアクセスノーウェイトなら1クロックでアドレス演算含めて読み書きできるし
ARMに詳しいならなんで特殊なCortex-M0を出ししてきたの?
Cortex-M0がCortex-M3とサポートしてる命令が違うことを知らなかったんじゃないの? >x86なら1クロックで(コアあたり)2個のロードと1個の書き込みが同時に出来る
なんのx86のことを言ってるかわからないがPC向けのx86だろ?
Sandy Bridgeとかか?
いずれにしてもマイコン用のM4KやmicroAptiv、M5150と比べるようなたぐいのものじゃないな リアル基地外2人をあぼーんしたら一気にすっきりしたw コーディネータの指図に従って動く人なら、コーディネータや客が指定するいろいろな
CPUを使えるようになってる必要があるかもね。
でも、自分の裁量で作れる人にとって、いろいろなCPUを学んでいることは特別に大切なことじゃないよね。
どのCPUを使ってるかは、ファッションじゃねえし。 MPLAB X、PICKIT2が使えるのはVersionいくつまででしたっけ? 多少の脱線話はしょうがないがやり過ぎだろ
このスレで解ることはPICは初心者向きではないって事 >>863
初心者向けの理由や根拠にはいろいろな側面がある。
そもそもスレタイの初心者にも多面性がある。
なにかにつけ、肯定も否定もしない場合には理由はいらないけれど、
否定するときぐらいは根拠は書くべし。
そうでなければ、その根拠の解明をめぐってやりすぎの脱線が始まるおそれがある。 >>865
PICを否定する根拠を問うてはいない。「PICは初心者向きではない」ことの根拠。
根拠が書かれていないのであれば、PICは初心者向きではないという結論に意味はないし
根拠がある、とだけ書いて逃げている>>865の主張にも意味はない。
根拠に乏しいものを信用せよという態度も、それを信用できるという態度も、
デマの拡散をするタイプの情弱だろね。
嗜好、選択の自由、それそれがすでに持っているもの、
それらを含めて、否定できるだけの根拠はちょっと考えにくい。
PICそのものへの否定であれ、初心者むけではないという結論であれ、
ただの白紙からの演繹的な判断や嗜好にすぎないことが多い。
最低限、嗜好の多様性は守られるべき。(それとも北朝鮮みたいな統制が好き?) >>866
初心者自体が明確に定義できないから意味無し PICと一括りに否定している辺りに「あ、こいつ知らない奴」ってのが読める 否定的意見を潰すんじゃなくて
肯定的意見を言えば良いのに
ここが良いとかここが便利とかここが優れてるとか >>866
私は嗜好の多様性や選択の自由なんて問題にしていない。
初心者が始めるなら、8ビットPICよりも可能性の高いCPUで、と思っている。
その方が初心者も興味が持続するのでは無かろうか?
今ならArduinoでいいじゃないか、安いし。
>>868
ご存じの通り8ビット〜32ビットPICは全く別物のCPUだが、
このスレでも分別していないし、混乱の要因だ。
同一ブランド名を割り当てるマイクロチップテクノロジの常識を疑う。 いやぁ、ちょっと問題だったな、PIC関連スレでArduinoを薦めてしまった……
「今ならArduinoでいいじゃないか、安いし。」は無かった事にして下さいw >>869
別に肯定的意見なんていらないのですよ。
ここに来る人は(否定する野次馬をのぞけば)それぞれに肯定的理由があるから来てるんだし。
否定派も肯定的理由を聞けば納得するだろう、という主張もありますが、そんなことを言ってる人が本気でそう思ってるとしたら甘いですね。
テレビであるタレントの顔を見るだけでムカムカする、と言ってる人に、その人がいかに美人なのかを説明したって心変わりはしません。 初めてスレだから
始めら前にちゃんと悪い面は知っておいた方が良いよな >>866
>>865とか>>867のような書き方をする奴とは議論にはならないだろ
ああ言えばこう言うの逃げを打つだけなので相手をするだけ時間の無駄 >>873
>テレビであるタレントの顔を見るだけでムカムカする、と言ってる人に、その人がいかに美人なのかを説明したって心変わりはしません。
CPUの好き嫌いとタレントの好き嫌いの判断は同じような範疇なのでしょうか?
そんな訳の分からない、曖昧な理由で使うCPUを決めているのでしょうか?
私にはそうは思えません。
PICを嫌っている人は嫌いな理由がちゃんとあります。
それは美人/不美人の判定のような感覚的なものではありません。
たとえば私の場合、いくつか8ビットPICを嫌いな理由がありますが、
一つだけ挙げるとすれば、タイムスライスが出来ない、です。 5 :774ワット発電中さん [sage] :2018/05/02(水) 01:20:40.75 ID:qrQAGo28
PICは他メーカーの同規模のMCUに比べて非常にエラッタ(バグ)が多いので注意
機能が使い物にならないものやスペックの性能が出ないものも多く存在する
メーカーが把握しつつも公開されてないなかったりする
6 :774ワット発電中さん [sage] :2018/05/02(水) 01:28:19.06 ID:qrQAGo28
本当にPICが適切か良く考えてから選びましょう
主な競合MCU
8bit AVR / STM8
16bit RL78 / MSP430
32bit STM32 / LPC / Kinetis / RX ○○ができない→○○を使おうとしている人には貴重な情報。
○○が他のCPUに比べて多い→他のCPUと比較した根拠が必要。
エラッタに関しては、他のCPUと比較したときの客観的データが出てきたことがない。ばかばかしい。
逆に、特に直接のメーカーサポートが受けられないアマチュアユーザーの場合、
国内外で自分が使っているときに知りえた情報を掲示板に書くようなようなユーザーが
アンチも含めて多いPICはエラッタ情報を共有できて良いんじゃないかとさえ思う。
俺も仕事だとほかのCPUを使ってるけど、そこで知りえた問題はネットに書いたりしないよ。
そういう意味ではアマチュアユーザー「も」多く、掲示板を含めたネットでの情報交換が活発な
CPUは悪くはない。 仕事で使ってて
バグで全く使えない機能を堂々とスペックとして謳ってるのはPIC以外にある?
おれはPICしか知らん
いずれにしろここはPICのスレだから
他のマイコンのバグはスレチ 見つかったばかりのバグならともかく
何年も前からわかってる問題でも PIC10 OR PIC12 OR PIC16 OR PIC24 OR PIC32
2600000件
STM32
7600000件
(PIC10 OR PIC12 OR PIC16 OR PIC24 OR PIC32) (エラッタ OR errata)
543000件
STM32 (エラッタ OR errata)
25800件 👀
Rock54: Caution(BBR-MD5:1341adc37120578f18dba9451e6c8c3b) >>878
> 国内外で自分が使っているときに知りえた情報を掲示板に書くようなようなユーザーがアンチも含めて多いPIC
客観的データをよろしくね >>879-880
>他のマイコンのバグはスレチ
もし、その態度で逃げるつもりなら、他のマイコンとの比較の上で否定的な表現はするべきじゃないと思います。
>バグで全く使えない機能を堂々とスペックとして謳ってるのはPIC以外にある?
その部分については、なんだかなあ、という気はするけど下のようなことはあるかもね。
■意図的に直さない
PICについては、異常だと感じるほどに修正に慎重です。
コンパイラも古いものも長期間にわたってダウンロードできるようにしています。
ICでもソフトウェアでも、「何かを直したら、別の何かがおかしくなっている」というのはわりとよくある話です。
現状で動いているアプリケーションがある以上、別の何かをおかしくしてしまうリスクを避けるという
意図があるのかもしれません。(というのは想像だから、違うだろ!って思った人はメーカーに聞いた方がいい)
大昔のマイコンでも(値段は高くなっても)製造は維持しているものが多いのがPICの特徴のひとつです。
それを使っているアプリケーションの動作を変えない、変える恐れのあることを避けるという思想があっても不思議ではありません。
データシートの記述を修正する代わりにエラッタ情報をメンテしているふうなところはあります。
それは企業風土に近いものがあるように思います。
■全く使えないのか、その使い方なら全く使えないのか、まあまあなら使えるのか
もし、ある種の使い方ならまあまあ使える問題であって、割と多くの人がそのある種の使い方でええやんと
思うものなら、まあそんなもんじゃないでしょうか。
回避策が掲示板で共有されてて、「俺の使い方なら、それじゃダメなんだよ」って言う人は他のCPUを選べばいいし、
「まあええやん」と思う人は、まあええのではないかと思います。
あと、その人の環境次第という面もありますね。
・AというCPUにはバグがあって、やや性能を落とした使い方をしないといけないけれど、情報も豊富で、よく知っている人がまわりにいる。
・BというCPUにはバグは明らかにはなっていない。誰かが根拠を示さずAよりマシだと言ってる。まわりに使っている人がいない。
・BというCPUにはバグは明らかにはなっていない。Aほど情報は豊かではないけど、よく知っている人がまわりにいて、使い方について教えてくれる。
ほかにもいろいろなパターンがあるでしょうね。 >>882
何かと比較して多い、と言ってるわけではないので、客観的データはないよ。
いろいろと検索していて、ふだんから「PICは自分が期待する基準において情報の絶対量が多い」と
感じている人は同意してくれればいいし、
「PICは絶対的に情報が少ない」と感じている人は同意してくれなくていい。 でも、PICの情報は良い意味でも不幸な意味でも、日本全国の傾向をすくえば
相対的には多い方じゃないですかね。 >>883
バグ自体を直せなくても広告は直せるだろ >>886
シングルスタンダードで通せる人なんていないし、求める方がおかしいのですよ。
誤解されているかもしれませんが>>881はエラッタの数の客観的データではありません。
あえていえば、ネットにでてきたキーワードのカウントです。
>>887
その理由に関心がある人がMicrochipに問い合わせをすればいいのではないですか?
俺は潔癖症でもないのでそのあたりはどうでもいいです。 ことほど左様に初心者にはハードル(not敷居)が高いPICでしたとさ。 先輩方の高いレベルの雑談は、本スレでお願いします。
ここは、僕たち初心者が質問するスレです。
俺は詳しいんだ、凄いだろと言う雑談は、
あっちのスレでお願いします。 シッテル披露する奴は人の話を聞かないもんだよ
披露するのが目的
基本スルーがセオリーなんだけど
披露自慢人が複数いると
まぁ、こうなるわな もうネタなんてないだろうし
いまさらPICをはじめようなんて人もなかなかいない
作り話でつないでもしょうがない
このスレ自体不要では? PICでスタートする人も多いですよ。
・ネッなど日本中に仲間が多い
・情報量がAVRの比じゃなく多い
・パッケージのバリエーションが多い
・秋月で安価に買える
・内蔵周辺モジュールが豊富 神様にお願いしといた。
「PICでスタートして後で後悔する、なんて初心者が居なくなりますように」って。
しかし、<美人とブス、どちらでも好きなほうとつきあえる>、という状況で
わざわざブスを推薦するって >>897 は罪作りな奴だなw
後で恨まれるぞww ブス!とか言いながら、その子が気になってしょうがない小学生w AVR(のアーキテクチャ)は気になるけど、ardunoがウザイ。
AVRもPICみたいに簡易なデバッガが出て欲しいな >AVRもPICみたいに簡易なデバッガが出て欲しいな
あるのでは? AVRスレで尋ねてみれば? LPC-Link2 2800円
ST-LINK/V2 3000円
MiniProg1 3650円
PICkit4 5700円
Atmel ICE 11000円
Microchipは高い >>898
PICで何かを作ろうとする気概のある人は
他人に責任を求めたりしないと思うが データシートより他人を頼る人がPICユーザーに多い気がするけど PICの場合そもそもデータシートが信用出来なかったり >>905
僕 英語読めません、って素直に白状したら? 先輩方の高いレベルの雑談は、本スレでお願いします。
ここは、僕たち初心者が質問するスレです。
俺は詳しいんだ凄いだろう、AVRは凄いんだ、
と言う雑談は、 あっちのスレでお願いします。 マイコンプログラミングをはじめるなら
無難に32bitが良いよ
8ビットは色々と特殊すぎて >>910
質問して良いんだよ
いつもの作り話でも PIC←→AVR
フルーク←→フルーク以外
VHS←→β
非喫煙者←→喫煙者
・・・
非主流は姦しい・・・ 次は
カラー画面
アニメの高画質化
表面実装部品による小型化
赤外リモコン送信機能
赤外リモコン受信
リモコン&メニューによる設定
USBを使ってPCから設定
この辺に挑戦してください ROMサイズが必要ならこの辺を
PIC32MM 20pin 64KB
PIC32MM 28pin 256KB
基板設計もぜひ挑戦してみよう
今はとても安く作れます 今時電源がトグルスイッチも無いよね
自己保持回路による待機電力ゼロ化
でも良いし
リモコン受信可能なまま省待機電力に挑戦
でも良い 砂時計だから加速度センサで起動が普通か
1秒に1回くらい値を見て値が大きく変わったら起動
電源は3系統
PIC, 加速度センサ, 画面 DC/DCのenableをプッシュボタンで起動して、
動作中はPICがenableを保持すれば、
オートパワーオフが成立しそうなんだが、
1ボタンでそれをやる回路が思いつかなかった。
PICからのenable信号がボタンと競合してしまう。
ダイオードとかで何とかなる?
20ピンの32MM、気になる。 >>921
ダイオード使ってもいいし、enableを駆動できる程度に
pic出力に1K位の抵抗直列に入れればぶつかってもok >>922
そしたらボタンが押されっぱなしにならない? >>923
> >>922
> そしたらボタンが押されっぱなしにならない?
ん?
時間来たらpicが切るんじゃないの? >>925
ボタン1個で、起動、砂時計容量変更、ブザーストップをさせたい。
電池はDC/DCに直結するが、動作時のみenableにする。
DC/DCはGNDに落とすとenableになる。
これが解けなかった。 プッシュSW1回路の場合、どの電源系につなぐかが面倒くさそう。
卑怯な方法。二回路二接点プッシュスイッチ使い1回路を電源ON用に使う。
別の方法も考えられると思うけど、電源系の電圧が書かれた回路図がないと分からないな。 >>926
ん?
普通にダイオードと抵抗で出来ないか?
まあ最悪ボタンはADCで検出でも XC8について質問さしてください
XC8で@(アット)マークを付けたら変数領域を指定のアドレスへ配置出来る
と思うんですが、この機能を使えば
myStruct1 AAAA @ 0x500;
myStruct2 BBBB @ 0x500;
と言う感じであえて同じアドレスに2つの変数を配置して、あたかも共用体の
ような使い方が出来ますでしょうか? 同時にインクルード出来ないヘッダで別々に定義されてるとか? >>929
そんな事しなくても、ポインター使えば、簡単。 賢いコンパイラだと、まずいかも。
たしか、cには、異なるタイプのポインタは同じものを指さない
と言う縛りがあってそれを使った最適化をするコンパイラがある。
アホなコンパイラなら、そんな最適化はしないだろう
それでもvolatileはつけとくべきね。 >>926
普通にダイオードでANDを作ればできる
逆流防止や電圧制限はいるけど enableの代わりにトランジスタ
マイコンからの制御にデジトラ
なところが違う >>940
U1を取っ払ってQ1のコレクタをVCCにつなげばVbattの単電源になるのでは? あるいは、そのサイトのマイクロコントローラーで
もう1ピン入力チェックに使うだけ。
http://ednjapan.com/edn/articles/1212/28/news037.html
の図1は、シンプルな回路でいい。 そもそも電源の選定は正しかったのか。
PICと液晶は2.7V<Vcc<5Vだから、18650直結なら簡単だった。
PchMOSFETをDCDC上流に入れた場合、バッテリ電圧の下限はどの程度?
1.0Vで動かなきゃNiMH×1には使えない。 >>940だと、
スイッチを押すとスイッチの抵抗側の電圧が変わるようにしておいてADCで検出
とか >>929
出来ることはできるが、
変数のアドレス管理誰がやるんだよ
それは普通、アドレスマップのレジスタに対して使う機能 >>949
誰って
プログラマ以外にいるか?
直接指定するって言ってんだから 色々な使い方があるのに乏しい経験で「普通」とかいってわざわざ用途を絞っちゃう
お前ソフトに向いてない アホカ
ただのグローバル変数に絶対アドレス指定したらそこが他で使われていないか、
リンカのマップファイルみて一々確認しなきゃならんだろ
そんなめんどくさいことやる馬鹿いねーよという意味だよ
(普通に共用体で宣言すればいい)
それともあれか、 @ 機能つかったらそのアドレスは他で使われないように
コンパイラが管理してくれるのか?
ヒープの真ん中でも避けてくれるのか?w
それに「普通」ってのが用途を絞っていると断言している根拠はなんだよ
勝手に決めつけるなよw >>954
じゃあXCには何のためにアドレス指定機能があると思ってんの???
馬鹿? アドレス指定したいっていう人に
アドレス管理誰がやるんだよって
頭おかしい >>954
普通のメモリマップドIOの割り当てをコンパイラやリンカがどうやると思ってるんだろ 普通にアドレス指定してるが・・・・・何か????? >>898
美人は3日で飽きるがブスは3日で慣れるという有名な格言があってだな以下略 IOやSFRのアドレスと、変数のアドレスをごっちゃにしてはややこしくなる。
変数のアドレスはコンパイラ、リンカに任せればいいという話でしょね。
いやいや、アドレス指定したいって話なんだから、という話もわかるのだけど、
共用体ではなんであかんのでしょ、って疑問はあるのかも。俺もまあそう思う。 >>962
疑問に思ったとしても質問の前提だから
素直に共用体にしたくない理由はいくつか考えられるし
共用体はおまけでアドレス指定が主な目的かもしれない 質問に答えるだけならその理由は不要
代替案を知りたいなら理由も書くでしょう 変数のアドレスを指定したい理由も色々と考えられます
経験の浅い人はそういう発想もないでしょうけど 質問者も、
やって見ればすぐわかることをいちいち質問しないでやってみればいいんですよ
出来たならここに理由と共にテクニックとして紹介する
初心者同士そうやって高め合えば良い >>964, >>966
>素直に共用体にしたくない理由はいくつか考えられる
アドレス指定とは別にして、共用体にしたくない理由って具体的にどんなこと
でしょうか。
>変数のアドレスを指定したい理由も色々と考えられます
昔のパソコンでVRAMをワークエリアに使うようなときにはアドレス指定をしていた
けれど、8bit PIC で変数のアドレスを指定するほかないようようなことって
どんなことなんでしょうか。
いろいろ考えられるうちの3個4個ぐらいを教えていただけると勉強になります。
と、こういう疑問は持ってますが、技法としての元質問の価値はあると思ってます。
必要なら自分でやっつければ済むことですけど。 >>968
●共用体
◇文字数の削減や移植の手間や見易さの為
(※無名共用体が使えない場合)
◇ファイルやモジュールの分離性確保の為
・同時にインクルード出来ないヘッダ
・コンパイル依存性(コンパイル時間)
・ライブラリ化
◇共用体に出来ない構造体への対応
(※C++の場合) >>968
●アドレス指定したい場合
◇部分ビルドする場合のインターフェース
ブートローダーとアプリケーションや
複数のアプリケーションなど
ROMの複数エリアを別々にビルドする場合のインターフェースとし
エントリーポイントのテーブルなど
◇周辺モジュールとのインターフェース
DMAのバッファなどで特定の番地にしたい場合
◇高速化や簡略化の為
配列の先頭や終端のアドレスが特定の値で有ることで高速化やコードの簡略化を行う
+と&でリングバッファのポインタを更新するなど
◇セクタ考慮
ROMのセクタやRAMのバンクなどを考慮したい場合
境界を跨ぎたくないとかセクタ先頭からはじめたいとか
◇デバッグ性
よくデバッガで書き換える変数の固定アドレス化
外部からアドレス指定でアクセスしたい変数の固定アドレス化 >>969-971
共用体を避ける理由については、正直なところ俺にはピンとこないものでしたが、
アドレス指定については思い当たるところもなくはなく。
ただ、とても個人的な事情にすぎないことで、俺のPICの使い方ではあまり縁がないものばかりでした。
あと、俺の思い込みもありました。8ビットPICってPIC18も含まれるのですね。
ありがとうございました。 >>972
アドレス固定にすれば、エンディアンとかの考慮要らないから、移植しやすい とかかな? >>973
アドレス指定をするとエンディアンの何が解決出来るって?
少なくとも考慮要らないなんてことはない >929
GCC (XC8含め) のリンカは別の名前が同じアドレスをさしていても問題ない。
だからやろうと思えば適当にリンカへの指示を加えることで可能にはなる。
ただ、リンカへの明示的な指示なしでコンパイラが、暗黙のうちにリンカでエラーにならないように
セクションや名前を選定してくれるかは別で、
ゼロ以外で初期してたらだめ、
ゼロで初期化するやつは初期化しないやつとならマップ OK、
初期化してなければOK、
とかそんな感じになると思うけど、
GCC でファイルをまたぐ名前の扱いが 2012年あたりからちょいちょい変わってるので
XC の元ネタの GCCの版によって挙動がかわるかもだから保証はしない。
あと、異なる名前が同じアドレスを占めていて、それを一つの関数内で両方の名前を扱うなら、最適化で O2 以上は禁止な。
gcc -O2 は異なる名前は異なるアドレスをアクセスする前提で最適化する。volatile 関係ない。
ここ 2年くらいエイリアスの最適化の動作確認してないけど変わっとらんと思う。 XC8ってアドレス指定すると何の警告も無しに同じエリアに値を割り振るんだね
怖い怖い 最適化に関してはunionでも悪影響が無い保証なんて無いよね
volatileは読み書きの順番や回数はバイナリ上では保証されるから意味が無いことは無いけど
最適化が非常に制限されるからなるべく使いたくない
そもそも、最適化で変わるような関連が密なデータであれば素直にunionにした方が便利な事が多いと思う XC8ってリンカスクリプトとかスキャッタロードとかって無いの? >>976
>> gcc -O2 は異なる名前は異なるアドレスをアクセスする前提で最適化する。volatile 関係ない。
これ、gccドキュメントのどこに書いてある?
前に書いたように、異なるポインタタイプは同じものを指さないという仮定=strict-aliasingルールはドキュメント上にある。
-O2はstrict-aliasingを仮定して最適化するとドキュメントに書いてある。
GCCのドキュメント(gcc6のね)から、
'-fstrict-aliasing'
前略
In particular, an object of one type is assumed never to reside at the
same address as an object of a different type, unless the types are
almost the same. For example, an 'unsigned int' can alias an
'int', but not a 'void*' or a 'double'. A character type may alias
any other type.
中略
The '-fstrict-aliasing' option is enabled at levels '-O2', '-O3', '-Os'.
volatile周りも、理解してないね。 >>976
念のため例つけとくと、
void f(int *x, int *y)
{
int a = *x;
// a == *x に決まっている。
*y = 0;
// これ以降は、a != *xかもしれないと考えて最適化する
ということだからね。
同一視の可能性は名前じゃなく、ポインタの型だよ。
なお、int *とunsigned int *は類似の型なので、同一型のように扱う。 先輩方の高いレベルの雑談は、本スレでお願いします。
ここは、僕たち初心者が質問するスレです。
俺は詳しいんだ凄いだろう と言う雑談は、 あっちのスレでお願いします。 >>976
>>980
話題がそれてるけど
ポインタじゃなくてスタティックな変数への直接アクセスの話
unionとunionじゃない同じ番地の変数が同じように扱えるか
が質問内容
一旦ポインタを経由したら最適化が同じになることは容易に想像がつく
コードはポインタの中身に依存しないので このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 58日 19時間 39分 25秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。