X



トップページ電気・電子
716コメント266KB
マイコンソフト 悩み事相談室 4
0001774ワット発電中さん
垢版 |
2020/09/11(金) 09:38:11.57ID:cJDnlvMz
.
  ∧ ∧    
  ( ´・ω・) < コンフィグって何? 昆布なら知ってる。  ボラチルって何? ボラは魚だよ。
  ( ∪ ∪   ,.-、     ,.-、   ,.-、     ,.-、
  と__)__)  (,,■)   (,,■)  (,,■)   (,,■)
         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
    3 2017/06/19〜 https://rio2016.5ch.net/test/read.cgi/denki/1497806664/

  では、質問、ドゾ〜
0097774ワット発電中さん
垢版 |
2021/05/03(月) 17:50:38.46ID:mqOsL7XC
>>96
C++のようにワーニングが出るなら、
enumで定義されていない値を、おかまいなしに int値で入れるようなことをしたらわかるしね。
0098774ワット発電中さん
垢版 |
2021/05/07(金) 11:16:06.87ID:kksbdgks
まとめ
MicroPythonは、基盤となるマイクロコントローラハードウェアに依存せずに
リアルタイム組み込みアプリケーションを実装したいと考える開発者にとって、
魅力的なプラットフォームです。
開発者は、MicroPythonで提供された標準ライブラリを使用して
高水準のPythonスクリプトを作成し、サポートされる任意のマイクロコントローラで実行できます。
これには、次を含む数多くのメリットがあります。

   アプリケーションの再利用性が高くなる
   市場投入までの時間を短縮できる
   アプリケーションとハードウェアを分離できる

MicroPythonはあらゆるアプリケーションに最適というわけではありませんが、
産業用および宇宙システムのアプリケーションやプロトタイピング、概念実証では、
これまでに高い効果を発揮しています。

試してみたいけど、Windowsでできるのか・・・
0102774ワット発電中さん
垢版 |
2021/09/23(木) 14:24:43.82ID:W2Zztq8n
ポケモンをきっかけにマイコンに興味持ったんだけどhexファイルをなんとかしてATmega32U4系で使う方法ってない?
逆は出てくるんだが
0103774ワット発電中さん
垢版 |
2021/09/23(木) 16:32:53.52ID:hXa3fWDr
ダメと君が判断した理由が逆に分からん。
HEXは入れ物に過ぎん。
0104774ワット発電中さん
垢版 |
2021/09/23(木) 18:10:49.74ID:uXorIzBn
何のhexファイルなんだろう。

なんかdocxファイルを手に入れたんだけど、卒論に使えるかな?

みたいな。

HEXファイルは、世の中のさまざまなマイコンのプログラムや、ROMに書き込む
データのフォーマットで、マイコンの機種が違ったり、同じマイコンでも、
マイコンの周辺の回路が違えば使えないと思った方がいいよ。
0105774ワット発電中さん
垢版 |
2021/09/25(土) 01:02:00.77ID:B3UKhayf
>>102
マイコンの動作を考えて→プログラムにして→コンパイルをすると→機械語が生成されます。
その機械語ファイルの形式を、hexファイルと呼びます。
プログラム→コンパイル→機械語ファイル生成(hexファイル)という流れは逆行できません。
もちろん、あのマイコンで作ったhexファイルを、機種の違うマイコンで使うこともできません。
0108774ワット発電中さん
垢版 |
2021/09/26(日) 10:17:41.98ID:pfJ7cNaz
機械的にか人手かしらんがリソースかければ逆行できるよ。
0109774ワット発電中さん
垢版 |
2021/09/26(日) 13:04:25.58ID:Wsutz+Pw
逆コンパイルしてコンパイルしても動かないだろ
同じマイコンじゃなきゃ
0110774ワット発電中さん
垢版 |
2021/09/26(日) 20:54:42.37ID:ueyX8gs8
>>106
それはもしかしてエミュレータ?
だとしたら、パソコンの中にソフトウェア的にファミコンを作っているからできること。
0111774ワット発電中さん
垢版 |
2021/09/28(火) 20:53:47.82ID:/ygy3r6I
マイコンも別のマイコンのエミュレータを走らせればいい。
0113774ワット発電中さん
垢版 |
2021/10/02(土) 03:16:27.85ID:8IVdH/BX
質問させてください。

ほとんどのマイコンで、複数のタイマーモジュールがあると思います。
この複数のタイマーは、どのような使用を想定して装備してあるのでしょうか?

例えば、main()処理中にtimer1割り込みが発生しました。その処理をします。main()に戻ります。
これは普通に使いますし便利な機能だと思いますが、timer1, timer2のつを動作させた場合、

timer1の割り込み処理中に、たまたまtimer2の割り込みが発生します。
優先順位が高ければtimer1の処理をそっちのけで、timer2を処理しに行きます。
timer2から戻ってtimer1が再開して、その後main()に戻ります。
通常はtimer1とtimer2の周期は違いますから、
多重割り込みが発生するときもあれば、しないときもあります。
そうすると、せっかくのtimer1の定時性が崩れてしまうと思うのです。
ではtimer1のpriorityを上げれば今度はtimer2の定時性が維持できないと思います。

timer1の処理中で、if( n++ > T2 ){ T=0; timer2の処理 } とやれば、timer1 1本なので、
どちらの定時性も確保できて良いと思うのですが、この考え方は間違っているでしょうか?

現実にtimerが5本も6本もあるところを見ると、私の考えは正しくないことは想像できるのですが、
学生時代からずっと疑問に思っているのでお尋ねしました。
0114774ワット発電中さん
垢版 |
2021/10/02(土) 06:22:02.07ID:oYrziDCk
・タイマーはいろんな用途がある
波形の幅測定、波形出力、ソフト処理用タイマー、フリーラン、...

・完全な一定間隔でのソフト処理は難しい
実行中の命令、割り込み禁止区間、多重割り込み、キャッシュ
などにより命令サイクルレベルの一定間隔での処理は(ほぼ)不可能
>>113の方法も、処理1の処理時間がifや可変数ループなどで一定でなければ処理2は一定間隔でなはなくなってしまう
その程度のばらつきが許容される用途にしかソフト処理は使えない

・タイマーの共有
単純に使用リソースを減らす意味でタイマーを共有するのは一般的
規模が大きなソフトなら一定間隔で行いたい処理は100個以上にもなる

・割り込みの優先順位
どの程度処理が遅延していいか、どの程度処理に時間がかかるか、その処理のクリティカル性
などによって割り込み優先度を決める
許容遅延10usオーダーのタイムクリティカルな処理はタイマーA、1ms程度ならタイマーB、10ms以上ならメインループ
のような階層にする
0115774ワット発電中さん
垢版 |
2021/10/02(土) 08:55:20.38ID:bv5wNIxJ
>>113
そもそも多重割込で定時性が許容できないような処理を割り込みルーチンでやるなよって話
0116774ワット発電中さん
垢版 |
2021/10/02(土) 09:24:45.81ID:0GF1Hgct
>>115
では、何でやるのか?
0118774ワット発電中さん
垢版 |
2021/10/02(土) 09:56:55.09ID:DubNlVS0
定時性ってどれぐらいを定時って考えるかによる。±1m秒ぐらいでOKなら、とか、±100nsでないといけないとか。

ひとつのタイマー割り込みでソフトウェアで分岐するやりかたもありだし、タイマーが少ないマイコンだったらそうしてた。
それでも、ソフトの処理の分岐や、タイマー割り込みルーチンに入るまでの時間ばらつきで、応答のばらつきはあるし
定時性のばらつきをどこまでを許容するのかを想定しないと。

たくさんのタイマーは、必ずしもそれぞれで別個の割り込み処理につかうわけでもない。
別のペリフェラルの直接に起動に使ったり、I/Oピンからタイマーの状態をソフトを介さずに使うこともあるわけだし。

定時性のばらつきは、クロックのジッター程度しか許さない。ってことだったら、そういう処理は外部デバイスに任せる
しかないのでは。
0119774ワット発電中さん
垢版 |
2021/10/12(火) 22:36:36.52ID:Zyi07KWK
6800 6809 のアセンブリをやってみたいのですが、
フリーのアセンブラーってありますか?
6502 や 68000 もさわってみたい。チップがあるかわかんないけど。
CPU, PIO, TIMER, SCI ぐらいあれば、デバッグもできそうだし。
0121774ワット発電中さん
垢版 |
2021/10/13(水) 01:15:53.91ID:W8t+3Ljn
>>119
6502は秋月でも売ってる。
アセンブラもC コンパイラなんかもある。
ただ、ROMに書き込むのはどうするかとか、そもそも最初はCPUがROMやRAMを読めるのか?ってあたりからテストしていかないといけないから、それなりのスキルと道具は必要かな?

トラ技でも以前6502マイコンボードを製作していて、スイッチパチパチしてRAMにプートローダを書き込んで、PC上で作成したプログラムをシリアルでダウンロードして動かすなんてやってたな。
0122774ワット発電中さん
垢版 |
2021/10/13(水) 12:58:34.76ID:Ppe+ESc8
>>119
6800、6809、6502、68000のアセンブラで思い出したけど、
昔、汎用の(複数のCPUに対応している)メタ・アセンブラなるものがあった。
検索してみたらCross-32は今でもあるみたいだが、残念ながらタダではない。
https://www.cdadapter.com/cross32.htm
0123774ワット発電中さん
垢版 |
2021/10/13(水) 14:17:43.78ID:zppVI9Xo
asm6809とかググれば一発目に出てくるが
コレ
6309にも対応とか遊べそう
0124774ワット発電中さん
垢版 |
2021/10/13(水) 22:32:30.48ID:DqRc+I0p
いまさらROMライタとか胸アツだわ
もうやり方すらわからねえよ
0125774ワット発電中さん
垢版 |
2021/10/13(水) 22:41:10.78ID:S3Km3Sev
イレーサーの蓋開けたときの
オゾン臭がなつかしいにほひ
0126774ワット発電中さん
垢版 |
2021/10/13(水) 23:04:56.71ID:DqRc+I0p
O-Zoneってマイヤヒーの?
苦しいな
フラッシュ式で消すやつと紫外線で消すやつが有るのよね
でROMライタでブランクチェックするのがルーティン
0127774ワット発電中さん
垢版 |
2021/10/14(木) 08:38:24.37ID:W7hqp+hl
昔は遊技機から外されたものと思しき窓付きの27256とかが出回っていたけど、
今ならどうするんだろう。FLASHとかEEPROMで代替かな。
実験だったらOTPは使いにくいし。
0128774ワット発電中さん
垢版 |
2021/10/14(木) 10:06:55.37ID:mfnB9au8
主計機は書き換えられんようマスクだったと思う。
演出用は何でもあり。
0129774ワット発電中さん
垢版 |
2021/10/14(木) 11:20:07.43ID:e9Y2oRTA
医療用のX線だったか粒子加速器だったかで消去を試みたが
デバイス自体がお亡くなりになったという話を聞いたことがある。
0130774ワット発電中さん
垢版 |
2021/10/14(木) 11:43:49.69ID:qhJ7+EUA
あれは特定波長の紫外線が必要
ブラックライトじゃ消えないよ
消毒用じゃないとだめ
0131774ワット発電中さん
垢版 |
2021/10/14(木) 12:58:56.76ID:vCd/VNFa
うちは自作したのがあるな。
といっても、紫外線ランプと安定期、グローランプをつないだだけだけど。

今ならレジン用のが手芸用品店で手に入るかな?
0132774ワット発電中さん
垢版 |
2021/10/14(木) 14:12:33.24ID:XPghmWAe
なんか料理してるみたいな感じだった
あれはあれで味があったな
面倒だけど
0134774ワット発電中さん
垢版 |
2021/10/14(木) 14:26:50.57ID:fiiaFuVh
普通にROMイレーサーの製品を使ってたわ
測定器と同じ括りになるから自作じゃ無くて銘板が貼ってある製品
0135774ワット発電中さん
垢版 |
2021/10/14(木) 14:59:21.16ID:vCd/VNFa
ストロボ式で、すぐ消えるっていうのもあったけど、一回では上手く行かなかったり、色々あったな。
0137774ワット発電中さん
垢版 |
2021/10/14(木) 16:25:53.73ID:RVcC66rP
トラ技のコラムか何かで
新製品発表会で製品を動作させてるとき、撮影でフラッシュをたかれたら誤動作してしまい
UV-EPROMに遮光シールを貼ってなかったから、みたいな話があったな
0138774ワット発電中さん
垢版 |
2021/10/14(木) 16:28:45.59ID:XPghmWAe
光で発電するからね
LEDも光当てると発電する
意外とこれ知られてないんですけど
0140774ワット発電中さん
垢版 |
2021/10/14(木) 20:49:00.18ID:RbwE/uUN
ストロボの方が合ってるの?フラッシュ(メモリじゃ無い)の方が合ってるの?
言葉はどうでも良いのだけど、発光させて(たしか10回くらいだった)消すやつが有ったけど消えたり消えなかったりでブランクチェックする手間考えたらUVのイレーサー使ってた
あっちの方が確実だった
0142774ワット発電中さん
垢版 |
2021/10/14(木) 21:34:00.45ID:RbwE/uUN
底辺職やってたとき開発じゃ無くてマスターROMを空のROMへコピーする簡単なお仕事してました
0143774ワット発電中さん
垢版 |
2021/10/15(金) 00:00:28.78ID:oeqqk5js
フラッシュっていうのは、本来は使い捨てのフラッシュバルブ(閃光電球)
を使った奴のことなんだろう。

アセンブルし直すとすごい時間がかかるのと、開発装置自体が取り合いに
なるので、今みたいにソースを修正して再アセンブルなんてできなくて、
ROMライター使って、パッチあてるなんていうこともやってたな。
命令コード記憶していたしね(笑)
0145774ワット発電中さん
垢版 |
2021/10/15(金) 13:27:06.75ID:oeqqk5js
そう、ストロボタイプの商品もあった。
でも、実際に使うとEPROMの不良が多発して使うのをやめたっけな。

「やっぱり、じっくりこんがり焼かないと駄目なんだね」なんて言いながら・・
0152774ワット発電中さん
垢版 |
2021/11/14(日) 03:53:16.31ID:yAa+pXJ2
昔、IA80というコンパイラーって無かった? たしかフロッピーベースで動くという。
それで6801のソフトをやっていた。
0153774ワット発電中さん
垢版 |
2021/11/14(日) 08:42:32.75ID:ikqTiLW1
コンパイラはないだろ
PROASM(IA80 アセンブラ、IR80 リンカ)じゃないの?
0154774ワット発電中さん
垢版 |
2021/11/14(日) 10:28:08.09ID:WITMEx6M
昔はたいていフロッピーで動作してたよ。 BDS CとかLSI-C 80とかあったよな。

パソコン用でもMS-C、Lattice C、Turbo C/C++、LSI-C 86 をフロッピーで使ってた。
0159774ワット発電中さん
垢版 |
2021/11/14(日) 14:21:35.53ID:WITMEx6M
>CP/Mとかはそれ以前の問題だったね
それ以前の問題、ってどういう意味?
0160774ワット発電中さん
垢版 |
2021/11/17(水) 13:31:35.82ID:Fd63G+VL
>>154
その当時から、構造体とか共用体、ポインターもあったんですか?
0161774ワット発電中さん
垢版 |
2021/11/17(水) 16:46:33.07ID:SPj/eat2
>>160
あった。
というか、Cって高水準アセンブラみたいなものだからね。
ポインタがあってこそのCって感じで。
0163774ワット発電中さん
垢版 |
2021/11/17(水) 17:43:10.39ID:NtZocBuq
CP/M の BDS-C だったか α-C だったかの本まだあるかな
探してみよう
0166774ワット発電中さん
垢版 |
2021/11/18(木) 09:17:22.92ID:0N/d3pRO
>>165
すまん。たしかα-Cは、BDS-Cと違って、何かのファイルが付いてなくてROM化ができなかった。
0167774ワット発電中さん
垢版 |
2021/11/19(金) 03:10:14.98ID:OIM717kF
始める前は なんでROMライターは10個も一度に消去できるんだろう? って思ったけど、
自分でやり出したら、すぐに理由がわかった。

その後FLASH ROMになったときは、考えた人スゲエと思った。

オンボード書き込みになった時は、考えた人 天才だと思った。

進歩していないのは、俺だけ。
0168774ワット発電中さん
垢版 |
2021/11/19(金) 07:26:47.62ID:5YgN3YuT
>進歩していないのは、俺だけ。
そうか?
理由がわかったとき、スゲエと思ったとき、天才だと思ったとき、進歩してないと自省したとき、
全部自分をアップデートしてるよ。
0169774ワット発電中さん
垢版 |
2021/11/19(金) 08:44:53.89ID:OXCZlBXy
フラッシュでROMを消去するのがあったから
フラッシュメモリは消去するフラッシュが内蔵されてるんだと
思ったのはオレだけじゃないはず。
0170774ワット発電中さん
垢版 |
2021/11/19(金) 11:29:49.14ID:6LvHt8pi
DRAMが破壊読み込みなのに読み込みでリフレッシュされるという書き方に納得がいかなかったけど、仕組みを見て、そういうことか!と思ったっけな。

UV-EPROMとかフラッシュのフローティングゲートも、そんなんで本当に大丈夫なん??と思ったっけ。
0171774ワット発電中さん
垢版 |
2021/11/19(金) 11:58:46.02ID:WZvH5n/U
なぜ消去すると1と決めたんだろう、別に0でも構わなそうなのに
電子がある=マイナス=0?
0174774ワット発電中さん
垢版 |
2021/11/20(土) 13:27:02.98ID:OXCEivfi
>>173
うまい
0175774ワット発電中さん
垢版 |
2021/11/21(日) 05:08:41.58ID:DeRCLPQE
Pythonでマイコンのプログラムを書くのが流行っているみたいだけど、
I/Oアクセスの記述は、どのように書くんでしょうか?
0176774ワット発電中さん
垢版 |
2021/11/21(日) 10:05:33.36ID:GXU8v5Nw
環境によって違うけど例えばこんなのとか

# モジュールインポート
import board
import digitalio
import time

# ピンの出力設定
led = digitalio.DigitalInOut(board.D13)
led.direction = digitalio.Direction.OUTPUT

# 点滅の繰り返し
while True:
led.value = True
time.sleep(1.0)
led.value = False
time.sleep(1.0)

https://stardust-news.net/research/1199/
0177774ワット発電中さん
垢版 |
2021/11/21(日) 12:56:25.90ID:LkZt03mT
C言語でISR内部で任意のデータを使いたい場合ってグローバル変数を経由するしかない?
グローバル変数がどんどん増えていってイマイチな感じなんだけど・・・
0179774ワット発電中さん
垢版 |
2021/11/21(日) 14:01:42.56ID:LkZt03mT
例えば通信のISRだとポインタと長さとカウンタはISRごとに持たないと仕事にならない
長さとカウンタを終端ポインタにすれば1個節約できるけどスコープ外でデータを保持する必要ある
状況は変わらない
ISRだけでなく非同期的な動作を実装しようとすると同じ状況になるような
0180774ワット発電中さん
垢版 |
2021/11/21(日) 14:10:23.11ID:S8AvjDHA
シグナルでもキューでも好きに実装するがよろし。
0183774ワット発電中さん
垢版 |
2021/11/22(月) 07:02:26.52ID:B11GBBKv
>>177
関数内でstatic宣言してみそ。
0184774ワット発電中さん
垢版 |
2021/11/22(月) 08:39:14.26ID:CyP6Mn2x
>>177が言ってる任意のデータは、「ISR内で使うローカルな任意の変数」ではなくて、
「プログラム全体の中の任意のデータ」のことでは?
0185774ワット発電中さん
垢版 |
2021/11/22(月) 09:11:13.85ID:H7xo4CpU
>>184
>177じゃねぇんだし、単に「ISR内部で任意のデータを使いたい場合」としか
言ってないんだから、そんなこと知らねぇやな。

だいたい、「プログラム全体の中の任意のデータを使いたい」
としたって、「任意のデータ」ってそもそも何だ?

「自分は悪くない、エスパーしてくれないスレ住人が悪い」
とか言い出しちゃうのかな?
0186774ワット発電中さん
垢版 |
2021/11/22(月) 13:54:39.62ID:6g/zWjnY
ひとまずデータを渡す部分と使う部分を同じファイルにして
staticを付けたグローバルな構造体にしてみました

>>183
staticを関数内で付けたら外部からデータを書き換えられなくない?
0187774ワット発電中さん
垢版 |
2021/11/22(月) 14:15:03.76ID:fx1PeWp3
任意のデータ
なんて質問するヤツに回答しちゃダメ
っていう良い例
0188774ワット発電中さん
垢版 |
2021/11/22(月) 16:50:25.50ID:CyP6Mn2x
「任意の」の意味をどうとらえるかだけど、答える立場として範囲やニュアンスが分からないなら質問者に聞けばいいのでは。
双方向のコミュニケーションができるのが掲示板なんだし。

新聞や雑誌のQ&Aコーナーでも、ものによったら Answer の掲載にあたって編集部から質問の意図の確認があるのに。

もちろん回答しちゃダメって思うのも自由だし、そんな人は答えなきゃいいだけで、他の答える気持ちがある人が答えればいい。
0192774ワット発電中さん
垢版 |
2021/11/22(月) 21:27:09.85ID:v1yf+7Fj
教えてください。

最近の自動車のウインカーは「流れるウインカー」が多いです。
右折時は→→→→→、左折時は←←←←← という感じです。マイコンでプログラムしたことがあります。
しかし、今日信号待ちで見た前車のウインカーは、トランクと車体を「またぐように」、
ウインカーが流れていました。下の図のような感じです。
https://imgur.com/a/FJdlKax

これは、どのようにして流しているのでしょうか?
・車体側にあるマイコンの線がトランクに行っているのでしょうか?
 パラレル点灯だとすると何本もの線がトランクの「腕」の部分を通ることになり、現実的でないです。
・トランク側マイコンとボデー側マイコンが、シリアルで繋がっていて、
 どちらかが親になって子に「お前の点灯の番だ、今だ、行け」と指示しているのでしょうか?
・トランク側マイコンとボデー側マイコンが、車内のCANとかLINで繋がって動いているとしたら
 ウインカーのデータ通信で通常のCAN通信の邪魔になりそうです。

どうなっているのでしょうか?
0194774ワット発電中さん
垢版 |
2021/11/22(月) 21:46:13.53ID:v1yf+7Fj
すみません、どこで聞くのが適切でしょうか?
レスを投稿する


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