X



トップページ電気・電子
1002コメント361KB
マイコンソフト 悩み事相談室 3 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
0001774ワット発電中さん
垢版 |
2017/06/19(月) 02:24:24.69ID:mEcw5Uka
.
  ∧ ∧    
  ( ´・ω・) < コンフィグって何? 昆布なら知ってる。  ボラチルって何? ボラは魚だよ。
  ( ∪ ∪   ,.-、     ,.-、   ,.-、     ,.-、
  と__)__)  (,,■)   (,,■)  (,,■)   (,,■)
         PIC    AVR  H8    ARM

  学校でC言語を習ったことがあるので「楽勝でしょ」って、マイコンを始めたけど、
  わからないことだらけ。誰か教えて!

  PCとは別世界の、マイコンのソフト。難しいよね。

  ツールの使い方、ツールの設定、マイコン特有のC言語の書き方、
  「デバッグモードにプログラミングモード。何?」 Eclips, Emacs って何?
  VBAしか知らないよぉ、という人まで、
  各社マイコンに関するマイコンソフト相談室です。

  質問者は、「初心者質問スレ」の>>1を見て、分かり易く質問を書いてね。
  回答者は、威張らない、バカにしない、言葉使い注意で、親切に教えてあげてね。

  あっ、そうそう。 
  ハードウェアに関する質問は、それぞれのマイコンのスレに、達人がいるから。

  過去スレ
    1 2014/09/11〜
    2 2016/07/31〜 http://rio2016.2ch.net/test/read.cgi/denki/1469905691/l50

  では、質問、ドゾ〜
0928774ワット発電中さん
垢版 |
2019/11/04(月) 07:44:05.08ID:Njo0DyOf
その国語教育がなっていない。

ほかの教科をふくめテストの設問で「次の中から適当なものを選べ」なんて書いている時点で国語に対する危機感が足りない。
いまなお文学的表現に偏りすぎで「情緒的で流麗で読みやすい作文」を「事実を解釈に幅なく表現する作文」より優先しすぎだし
読解でも「行間を読むこと」を「書いてあることから事実だけを抽出するここと」より優先しすぎ。
そんなものだから、感情的に偏った読み方をして、ほかの教科の教育だってうまくいってない。
テキストでもテストでも、教える側が「そう読むか!」と嘆くような解釈をするケースが少なくないのだそうだ。

プログラミング教育で「解釈に幅のない表現」の力がつけば良いと思うんだ。
0929774ワット発電中さん
垢版 |
2019/11/08(金) 18:33:58.78ID:4MMhuatx
グラフィックLCDに字描く時の定番ライブラリってあるのでしょうか?
0931774ワット発電中さん
垢版 |
2019/12/29(日) 14:41:22.39ID:lTp+lQJK
トーンデコーダを並べるのが大変なんで、マイコンでやってしまおうと思ってるんだけど
A/D変換した後何をすれば良いのかヒントはありませんか?
0933931
垢版 |
2019/12/30(月) 11:15:43.70ID:MnUwCfof
レスありがとう、色々調べてみます。
空線信号やDTMFならIC使った方が楽なんですけどね…
0934774ワット発電中さん
垢版 |
2019/12/30(月) 17:28:45.16ID:mMHREDze
トーンデコーダって書いてあるからDTMFのデコードだと思っていたわ。だから8回
特定の周波数にピークが立っているだけの判別で良ければ判別すべき回数分のDTFで良いけど
バックグラウンドについても何らかの判別を行う必要があるならFFTする必要があるかもしれませんね
0935774ワット発電中さん
垢版 |
2020/01/07(火) 02:59:34.56ID:Q/+Ngq0x
マイコンソフトやってて、馬鹿な俺をご披露

・#includeしているファイルを修正してるのに、ちっともバグが取れない。
  よく見たら、.BAK ファイルを修正していた。
・割り込みの中の変数をmainで見ようと、Global変数を取ったのに、
  ちっとも読めない。よく見たら、割込中でstaticで取っていた変数だった。
  Globalよりstaticのほうが強いのね。
・ソース中の定数を変えてるのに、まったく変化しない。よく見たら、コメントの数値を変えていた。
0936774ワット発電中さん
垢版 |
2020/01/07(火) 21:40:12.22ID:RVgv6xXx
>>935
1つめと3つめはアレだが、2つめはわかってよかったじゃん。
自分は、10進数の桁数揃えようとして頭に「0」追加したら、8進数になることを知らずにもんげー悩んだよ。
それと、昔は全角スペースが表示されなかったんで、何でコンパイルエラーになるのかわからなかったりとか。
0940774ワット発電中さん
垢版 |
2020/04/26(日) 14:31:19.85ID:rg9deATq
[ネットストーキングするために必要な物リスト]
◯ボールペン(ネットで調べた情報を書きとめるために)
◯ノート(ネットで調べた情報を書きとめるために)
◯老眼鏡(ネットで調べた情報を見るために)
◯足つぼマッサージ板(ネット検索で疲れた足をいたわるために)
◯マグカップ(お茶飲みながら作業するために)
全てダイソーで揃います
0941774ワット発電中さん
垢版 |
2020/06/06(土) 10:41:27.29ID:Efx3h2Xb
H8/3069FってIOポートのDDRをビット単位で操作できないのでしょうか?
0942774ワット発電中さん
垢版 |
2020/06/06(土) 17:14:58.68ID:NnOduWKW
H8の事もう全く覚えてないけど、
仮にDDRがWrite Onlyでも手が無い訳じゃない、
別に変数持ってビット演算してその結果をDDRに書け。
0943774ワット発電中さん
垢版 |
2020/06/08(月) 15:15:11.71ID:sjDxBvWh
>>941
言語が書いてないがC言語ならメーカー提供のI/Oレジスタ定義ファイルに
ビット単位のunionがあれば簡単にできるよね。
まあ>>942の通りアセンブラでもできるか。
0944774ワット発電中さん
垢版 |
2020/06/10(水) 02:40:46.36ID:OrUkCef7
>>941
構造体で書けば、1GPIOごとのI/O方向は、設定できる。
ただ、内部アクセス的には、8bit単位で書き込んでると思う。
0946774ワット発電中さん
垢版 |
2020/06/20(土) 04:31:19.00ID:QRJ9FOrR
符号付き14bit A/Dの変換値を、画面に表示するプログラムを考えました。
以下の通りなのですが、何か考え方が間違っているようでしたら
教えてください。

h_AD = get_14bit_AD();          // 14bitADの値を 16進で取り込む
f_AD = (float)h_AD;           // float値にする 0001→1.0 0000→0.0 ffff→-1.0
f_measure = (5.0/1.0) * (f_AD/8192,0); // 変換する +5.0V→ADに+1.0V入る。14bitADなので±13bit
printf( "AD=%fxx.xx\r\n", f_measure ); // 表示
0947774ワット発電中さん
垢版 |
2020/06/20(土) 06:42:21.07ID:0qf+RRTr
符号付き14bit ADCなんてあるんだ

> f_measure = (5.0/1.0) * (f_AD/8192,0);

f_AD*(5.0/1.0/8192.0);
に変形しよう
乗算1回になる

浮動小数点演算は変形で値が微妙に異なる事があるので
コンパイラが最適化しにくい
0948774ワット発電中さん
垢版 |
2020/06/20(土) 06:53:35.71ID:0qf+RRTr
f_AD*(5.0f/1.0f/8192.0f);
fを付けないとdoubleで計算してしまう

マイコンだとdoubleもfloatも同じ精度の物もあるけど
0949こまわりさん
垢版 |
2020/06/20(土) 07:53:18.31ID:+H7BWcSm
千石電商 田口と松田
0950774ワット発電中さん
垢版 |
2020/06/20(土) 10:42:06.71ID:ZY9EVHlQ
>>946
0xFFFF は 65535 だから float にキャストしても 65535.0 じゃない?

> printf( "AD=%fxx.xx\r\n",f_measure ); // 表示
AD=1.23456xx.x とかなりそう。
0951774ワット発電中さん
垢版 |
2020/06/20(土) 11:32:59.10ID:0qf+RRTr
わざわざ符号付きって書いてあるんだから
get_14bit_ADもh_ADも符号付きなんじゃないの?
0952774ワット発電中さん
垢版 |
2020/06/20(土) 12:30:14.54ID:8Xy2ANwK
実際にやってみて悩めばいいと思うけどな。
他人にあらかじめ見てもらって悪いところを全部直してもらう
なんてことやってたら一人でプログラム作れるようにならないし
楽しくないだろ。
0953774ワット発電中さん
垢版 |
2020/06/20(土) 17:31:58.51ID:dC5PpNll
だいじょうヴイ
楽しみ方は人それぞれだし
天下無敵のコピペがあるじゃないかw
0954774ワット発電中さん
垢版 |
2020/07/13(月) 14:20:45.64ID:lECv8bpZ
CPUを使った既製品ハード+コピペソフトの電子工作の素晴らしいところは、
「コンピュータを動かしている俺、何て頭が良いんだ」
と気持ちいい誤解を素人にさせてくれるところだなw
0956774ワット発電中さん
垢版 |
2020/07/17(金) 17:06:23.87ID:gMOW57ea
趣味の電子工作は気楽で良いよな
同僚が作ったバグのせいで取引先に呼び出されて
エライ人達5、6人に取り囲まれて
原因と対策を延べよ、なんて詰問されたりしないだろうし
0958774ワット発電中さん
垢版 |
2020/07/18(土) 02:46:08.10ID:ewX0Ltgh
>>956
>原因と対策を延べよ、なんて詰問されたりしないだろうし

原因なんて「検査の見落としでした」しかないでしょ?
どんなバグがあろうがなかろうが、出荷前検査で確認してあれば良い訳だから。

対策は「検査項目を増やし、検査員を1人追加します」

結局、多項目の検査を複数回、複数人でやる以外に対策は無いんだよね。
0961774ワット発電中さん
垢版 |
2020/07/18(土) 05:43:14.13ID:Xib9j1RJ
「検査の見落としでした」
「検査項目を増やし、検査員を1人追加します」

何も報告してないのと一緒
出直してこい
0962774ワット発電中さん
垢版 |
2020/07/18(土) 11:12:41.70ID:2hUsI3/u
ミスは絶対にゼロにはならないし、問い詰めること自体が意味が薄いことが多いんだよなあ。
Windowsのバグがあったから、っていちいちユーザーがマイクロソフトの上級エンジニアを呼び出して、
納得いくまで詰問するわけじゃないことぐらいわかってるのに、そのことは棚に上げて、詰問するんだしな。

詰問される側になったこともあるし、愚かなことに詰問する側もやったことがあるけど、作業環境の問題とか
わりとはっきりと対策できること以外は、たいていが担当者個人の資質に依存することだし。
かといって、継続的な製品なら、その人を担当から外すとか、その外注さんを変えてしまうとか、そうそう
できるものでもないしね。

チェック項目やチェック担当者、ハンコ欄を増やすのは割と最悪の納得だよな。

https://pbs.twimg.com/media/EA7jtfYVUAAe6Mb?format=jpg&;name=small
https://japanese.engadget.com/jp-2019-12-17-1-2-2019.html
0963774ワット発電中さん
垢版 |
2020/07/18(土) 14:02:17.03ID:ovBUVDRY
まぁ、実害(金銭的な損害)が発生すると、たいていの場合は目の色が変わってくるんだよね
会社によっては謝罪だけでは済まない場合もあるし
0964774ワット発電中さん
垢版 |
2020/07/20(月) 02:11:57.87ID:H52Hsx38
以前、こんなソースを見たことがある。
mainが、タイマー割込ごとに動作するという。

void main(){
  if( wrikomi==1 ){
    warikomi=0;
    処理を書く
  }
}
もうほとんどFPGAじゃないか?と思った。
分かりやすくて好きだけどね。
0966774ワット発電中さん
垢版 |
2020/07/20(月) 10:06:50.02ID:Wr9FlovS
これが変とか言われたら結構な割合で世の中の組込みコードは変という事になる。
0968774ワット発電中さん
垢版 |
2020/07/20(月) 10:27:12.30ID:IOJZVOxJ
すぐにmain()を抜けるんだね。

無限ループの中にif(warikomi == 1)が入ってるのはあると思うけど。
0969774ワット発電中さん
垢版 |
2020/07/20(月) 11:55:14.13ID:LKo/EUGt
>>964
> mainが、タイマー割込ごとに動作するという。
これは見たことないな
割り込みをフラグで拾ってメインルーチン側で処理すると言うのはそれなりに見るけど

> もうほとんどFPGAじゃないか?と思った。
これはよくわからん
0971774ワット発電中さん
垢版 |
2020/07/20(月) 12:27:13.99ID:IOJZVOxJ
>>965-966の見解も聞いてみたい。
0972965
垢版 |
2020/07/20(月) 13:05:24.97ID:uF/x6awb
単純にvoid loopの書き間違いだと思ってたよ。
だってソース通りなら基本的に即HALTやん。
0974774ワット発電中さん
垢版 |
2020/07/20(月) 19:02:07.18ID:PZ62PZrk
スタートアップコード自作ならmainの外でどんな動きにも出来る
0975774ワット発電中さん
垢版 |
2020/07/20(月) 19:43:39.60ID:Av23oRk0
>>969
> > もうほとんどFPGAじゃないか?と思った。
> これはよくわからん

always に似てると思ったんじゃない?
0977774ワット発電中さん
垢版 |
2020/09/06(日) 13:55:09.41ID:sUm50DKG
教えてください

switch文で質問があります

switch (制御式) {
case 値1: 文1
case 値2: 文2
default : 文3  break
}
通常は各case文の末尾にbreakをおきますが、
それがない場合は、どのような動きになるのでしょうか?
・値1の時は、文1 文2 文3 を実行する
・値2の時は、文2 文3 を実行する。
・値3の時は、文3を実行する。
という理解で、正しいでしょうか?
0981774ワット発電中さん
垢版 |
2020/09/06(日) 17:06:46.16ID:LpetLc21
>>978
ありがとうございます。
とても覚えやすくて、ありがたかったです。
ありがとうございました。

>>980
ありがとうございました
0982774ワット発電中さん
垢版 |
2020/09/10(木) 01:23:11.18ID:aH9j9E+G
教えてください。

マイコンで、AD変換→EEPROM記録を定周期で行っているとき、
電源が抜かれて0Vになった場合、記録中のデータ書き込み完了や破損を防止したいです。
そのめに考えたのは、
・大きな電解コンデンサで電源低下を持たせる
・電源電圧2V〜5Vのマイコン、EEPROMを選定し、5V→2Vの間で作業完了
上記の結果、少なくてもその回の書き込みを完了させてから落ちることを考えました。
しかし前者ではコンデンサが大きくなりそうで、スマートではないなぁと思っています。
そうしなくても、ソフトウェア的に何かテクニックがありますでしょうか?

これまでのデータが喪失しないこと、今回のデータは最悪喪失でもよいです。
0983774ワット発電中さん
垢版 |
2020/09/10(木) 07:20:15.80ID:XeaJq4Zn
>>982
書き込みは6ms位で終わるから、コンデンサで持たせる で良いと思う。
ページ単位なら同じ書き込み時間で32byteとか書ける。

データをバッファに溜めてるなら、電源低下をなるべく早く検出して、残ってるのをEEPROMに書き込み。
0985774ワット発電中さん
垢版 |
2020/09/10(木) 11:07:57.81ID:sDCn/NOK
そもそもプログラム中に給電が止まったときの影響範囲ってマニュアル等に書いてないの?
0986774ワット発電中さん
垢版 |
2020/09/10(木) 11:58:07.18ID:qojhqQmT
ソフト的には「一定電圧以下では書き込みを行わない」しかないっしょ。
書き込み時間の確保や低下検知後の動作はハードの問題。
少なくとも書き込み実行しちゃった後の時間を確保するためのコンデンサは必須だよ。
それが大きくなるか小さいので済むかもハードの問題。
0987774ワット発電中さん
垢版 |
2020/09/10(木) 22:54:09.75ID:rPepYd9A
>>982
・電気二重層コンデンサでバックアップしたら、マイコンとEEPROMぐらいなら秒オーダーでもつよ。(マイコンによりけりだけど)
・電源低下はm秒より短いサイクルで検出したいし、モーター、リレー、ディスプレイなどの電源はマイコンの電源から切り離せるようにしたい。
>>984の方法が確実では。Z80の時代からSRAMのバッテリバックアップはよくあった。
・今なら、書き込み時間の短いFRAMもあるし、なんなら、一部のMSP430みたいに、FRAMを搭載したマイコンもあるし。
0988774ワット発電中さん
垢版 |
2020/09/11(金) 01:13:39.62ID:T0xTS+AL
>>982です。
みなさん、どうもありがとうございました。
やはり、電圧が残っている間に、チャチャって済ます ですかね。

以下のように考えてみました。
1. 電源断をいち早く知る
2. 短時間に書くようにプログラムを工夫する。
3. 記憶媒体を見直す。

1. 電源断をいち早く知る
   電源RESET ICかコンパレータICを使用して、4.0Vを↓したら、外部割込をかける。
   (NMIは使ったこと無い)

2. 短時間に書くようにプログラムを工夫する。
   ・マイコン内部のRAMにBufferするのをやめて、毎回毎回書き込む。
   ・バースト書き込みはやめて、1byteずつ毎回、Address, R/W, Dataで書き込む

3. 記憶媒体を見直す。
   ・EEPROM→FRAM 使ったこと無いんですが、パラレルバスのICでしょうか。
    ワンチップマイコンなので、外バスが出ていなくて、要検討です。
      SPIのFRAMがあれば、書き込み時間を検討してみます。

4. 次点
   ・電源の改善に、空気二重層を付ける→入手難のようですね。Panasonic?
     書き込みが完了したら、空気キャパシタを遮断するようなスイッチ必要検討。
     マイコンがスリープすれば良いか。

屋外で使用したいので、電解コンデンサの容量減少も考えないと。

みなさん、いろいろと、どうもありがとうございました。
0989774ワット発電中さん
垢版 |
2020/09/11(金) 01:15:36.44ID:RWDJuBLh
EEP-ROMで足りるもの(アクセス速度や回数制限が問題にならない)を
FARMやバックアップ付きSRAMに変える意味はほとんどない。
データ書き込みプロセスを始めたら、終わるまで止まっちゃならんのはすべて同じ。
0990774ワット発電中さん
垢版 |
2020/09/11(金) 05:50:08.30ID:cJDnlvMz
>>989
> データ書き込みプロセスを始めたら、終わるまで止まっちゃならんのはすべて同じ。
そこは同じだけど速度が全然違うだろw
0994774ワット発電中さん
垢版 |
2020/09/11(金) 08:16:26.96ID:lDgZNUds
速けりゃ電圧維持時間ゼロでもいいのか?
ちゃんと設計せにゃならんだろ?
> 終わるまで止まっちゃならんのはすべて同じ。
0995774ワット発電中さん
垢版 |
2020/09/11(金) 08:28:26.57ID:ME3mJTrC
薄れ逝く意識 弱り逝く体力で遺されたダイニングメッセージ
判別でけんかったり 内容がデタラメだったり

そんな記憶値 簡単に信じたらあかんで
0996774ワット発電中さん
垢版 |
2020/09/11(金) 08:46:33.56ID:zztadHYn
抽斗は多い方がいい。
自分の流儀にあわないものでも好き嫌いなしに抽斗に入れておけば役に立つことがある。
0997774ワット発電中さん
垢版 |
2020/09/11(金) 08:47:53.89ID:zztadHYn
あ、多い方がいいのは抽斗の中身だね。

(カモシカのような脚ってどんな脚?)
0998774ワット発電中さん
垢版 |
2020/09/11(金) 09:24:20.67ID:U9Qk669V
>>994
SRAMとかに随時書き込んでるなら電圧維持時間ゼロでもいいだろ。
書き込みシーケンス途中で落ちるのが悪いんだから。
0999774ワット発電中さん
垢版 |
2020/09/11(金) 09:30:49.01ID:cJDnlvMz
>>998
いいわけ無いだろ
書き込みの瞬間に電源落ちてアドレス不安定になったらどこに書くかもわからんし
シーケンスの意味がわかってないなら黙っとけ
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 1180日 7時間 14分 26秒
レス数が1000を超えています。これ以上書き込みはできません。

ニューススポーツなんでも実況