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/

  では、質問、ドゾ〜
0002774ワット発電中さん
垢版 |
2020/09/11(金) 12:06:20.87ID:oj7dDQPt
>>1
0004774ワット発電中さん
垢版 |
2020/09/12(土) 09:52:38.39ID:k1hy3rAa
シーケンスのわからないバカがまだ何か言ってる。
そこじゃねえんだよ
0005774ワット発電中さん
垢版 |
2020/09/12(土) 10:27:50.48ID:FbNjUiO5
説明できないなら黙ってればいいのに。
0006774ワット発電中さん
垢版 |
2020/09/12(土) 10:38:15.05ID:k1hy3rAa
「書き込みシーケンス途中で落ちるのが悪い」だと?
「任意のタイミングで電源を切ることが出来る」システムが欲しいって話をしてるんだ。
そしてそれを実現するために工夫された回路やプログラムが世の中に存在してるんだ。
それが無駄だってか?
己の無知を恥じろ。
0007774ワット発電中さん
垢版 |
2020/09/12(土) 10:53:09.47ID:FbNjUiO5
アドレス不定になるから、シーケンスで対処するべき、って主張なんだと思うけど、それは置いておいて、
>>3の条件で書き込みアドレスが不定になるものってあるのかな? って話なんだけどな
ない、は言えないね。悪魔の証明だ。

勘違いしてるようだけど、アドレスが不定にならないならシーケンスやハードでの対処が要らない、って言ってるわけじゃないよ。
0008774ワット発電中さん
垢版 |
2020/09/12(土) 14:51:57.19ID:HAjJe11P
・キャパシタと電圧監視で書き換え完了できる動力が保証できる場合のみ書き換えを開始する
・CRCとかを最後に書くようにして2つの領域を交互に使うようにする
のいずれかになるね
前者は外付け部品が必要になるし、後者はCRCの計算と二倍以上の記憶領域が必要になるから用途で使い分けたらいいと思う
0009774ワット発電中さん
垢版 |
2020/09/12(土) 23:20:39.88ID:ioZIeKlC
自分がよく使うマイコンのマニュアルを読むと内蔵フラッシュに書き込み中のリセットは
所定のリセット条件を満足すれば問題ないようだ
禁止条件にも書かれていないし書き込み中のブロックが不定になる程度ですむと思われる
とはいえ常識的に考えて日常的にそのよう状況が発生する設計は避けるべきだとは思うが

書き込み中に規定外の電圧への遷移や一部のフラグの変更等はフラッシュへダメージがある
可能性がある理由で禁止されている
0010774ワット発電中さん
垢版 |
2020/09/13(日) 14:40:15.67ID:4A2ATnUY
>>7
> アドレス不定になるから、シーケンスで対処するべき、って主張なんだと思うけど
ここで言うシーケンスって何?
0014774ワット発電中さん
垢版 |
2020/11/21(土) 03:30:56.98ID:mvJwl4hr
逆ポーランド記法 知ってますか?
0015774ワット発電中さん
垢版 |
2020/11/21(土) 08:21:59.31ID:V+CW9NwU
オペコペコペコ、オペランド…今から緊急手術を行う‥‥doctor P
0016774ワット発電中さん
垢版 |
2020/11/22(日) 16:13:13.32ID:uM/r69n4
普通の強盗     ・・・・「金を 出せ!」
ポーランド人の場合・・・・・「出せ 金を!」・・・「キン玉じゃない!」
0017774ワット発電中さん
垢版 |
2020/11/24(火) 02:16:18.76ID:kvg4LDH+
1 2 + [ENT]
0018774ワット発電中さん
垢版 |
2020/11/24(火) 17:01:25.01ID:CaOWg8bP
>>17
1に2を足す
Mind
0019774ワット発電中さん
垢版 |
2020/11/24(火) 17:08:32.13ID:CaOWg8bP
>>16

 ポーランド記法・・・・「金を 出せ!」 値+命令
非ポーランド記法・・・・「出せ 金を!」 命令+値

日本語はポーランド記法に近い語順
英語は非ポーランド記法に近い語順
0021774ワット発電中さん
垢版 |
2020/11/24(火) 17:43:54.72ID:ca7tlGoM
 ポーランド記法・・・・金を出せ お前は 俺に
非ポーランド記法・・・・お前は 金を出せ 俺に
逆ポーランド記法・・・・お前は 俺に 金を出せ
0022774ワット発電中さん
垢版 |
2020/11/25(水) 14:11:24.88ID:pPjiI1i3
強盗の例は分かりにくいので、数字と演算子で教えてください。
hp電卓と似ていると聞いたことがあります。
0023774ワット発電中さん
垢版 |
2020/11/25(水) 14:21:45.85ID:YYDWch3M
非ポーランド記法・・・・ (1+2)*3
 ポーランド記法・・・・* + 1 2 3
逆ポーランド記法・・・・ 1 2 + 3 *
0024774ワット発電中さん
垢版 |
2020/11/26(木) 11:19:42.31ID:DbBodVXO
非ポーランド記法・・・・ (1+2)*3
逆ポーランド記法・・・・ 1 2 + 3 *

非ポーランド記法・・・・ 1*(2+3)  の場合は
逆ポーランド記法・・・・ 1 * 2 3 +  でしょうか。
0026774ワット発電中さん
垢版 |
2020/11/26(木) 23:24:19.53ID:NmCuEJ4d
>>25
演算子から2つ前の値しか関係しないということですね。
0027774ワット発電中さん
垢版 |
2020/11/27(金) 00:50:46.93ID:qOCkykOf
>>25
演算子から2つ前の値しか関係しないということですね。
0028774ワット発電中さん
垢版 |
2020/11/27(金) 10:47:23.62ID:Fat6lDrP
基本スタックマシンだから
push 1
push 2
push 3
popしてpopして足してpush
popしてpopして掛けてpush
みたいな感じ
0029774ワット発電中さん
垢版 |
2020/11/27(金) 17:43:17.37ID:+rvsAsbY
>>24
逆ポーランドだと312+*でも行けない?
スタック型よね。
fothとかpostscriptとか。
0031774ワット発電中さん
垢版 |
2020/11/28(土) 08:25:49.19ID:69g8Kycs
ひとつの袋に黄色いりんご1個と赤いりんご2個が入っています。
その袋を3つ買いました。全部でいくつのりんごを買ったでしょう。

生徒:3×(1+2)=9 です

先生:バツです。
0032774ワット発電中さん
垢版 |
2020/11/28(土) 10:34:28.01ID:5R63qc+W
(1+2)×(3+4)は、
1 2 3 4 + ?? 一時記憶?
0034774ワット発電中さん
垢版 |
2020/11/28(土) 17:52:39.84ID:GdAiT2g5
スタック自体が一時記憶だからな。
1に2を足して3に4を足して掛ける。
0035774ワット発電中さん
垢版 |
2020/11/28(土) 23:15:28.05ID:69g8Kycs
数字の打ち込みはスタックに積むこと。
二項演算子を「スタックから2つとってきて計算してスタックに戻す」と考えれば理解しやすかも。
0036774ワット発電中さん
垢版 |
2020/11/29(日) 01:40:40.38ID:3zVdwsWE
なるほど 上2つの数値が対象でしたね。
どんな複雑な四則計算も、それでできるのでしょうか。

(1+2)*(3+4)/( (5+6)*7)

1 2 + 3 4 + * 5 6 + 7 * / ですね
0037774ワット発電中さん
垢版 |
2020/11/29(日) 08:13:29.64ID:uy969WVb
四則演算に限らず(用意されてりゃ)関数とかも使える
sin(√(1 + 2) * 3)
1 2 + √ 3 * sin
0038774ワット発電中さん
垢版 |
2020/11/29(日) 09:08:54.37ID:4bTjHEFc
関数や演算子のパラメータの数だけスタックから取ってきて、結果をスタックに返すわけだしね。
0039774ワット発電中さん
垢版 |
2020/11/29(日) 23:53:42.49ID:pHDP89rc
usin(√(1 + 2) * 3)
1 2 + √ 3 * sin
なるほど、これは簡単だと思うけど、
式の()とか、優先順位を人間が解析した上で 1 2 ...と記述を始めるわけですが、
その解析をしなくても、数式通りに
usin(√(1 + 2) * 3)
と書き込めば、Cとかならコンパイラが計算してくれますよね。
だとすると、ポートランド記号は、どういうときに使用されるのでしょうか。
0040774ワット発電中さん
垢版 |
2020/11/30(月) 00:21:05.84ID:+Rk4LA/f
逆ポーランド電卓を使う時とか8087をアセンブラで書く時とか
0041774ワット発電中さん
垢版 |
2020/11/30(月) 06:02:05.38ID:s3QaQSrG
>>39
> ポートランド記号は、どういうときに使用されるのでしょうか。
逆ポーランド記法な
使うのは Forth とか PostScript を使う時かな
今どきそんな機会があるかどうかは知らんけど
0042774ワット発電中さん
垢版 |
2020/11/30(月) 08:39:09.36ID:ZNwvj6Aj
昔の同僚にHPの電卓のファンがいて、逆ポーランドの方がわかりやすいと言ってました。
>>39の感覚は、「通常の数式表現から逆ポーランドに置き換える」というものだと思いますが、
その同僚の感覚は「いきなり逆ポーランドで考える」だったと思う。

俺は、英語の文書を作るときに、いったん日本語で考えてから翻訳しますけど、
英語ネイティブや、そこそこの英語使いなら最初から英語で考えるはず。それに似ているかも。

俺の逆ポーランドに対する感覚は>39に近いけどね。

プログラムの中でユーザーが入力した「通常の式」を解釈するときは、逆ポーランドに置き
換えるか、再帰的に式を解釈したりしていますが、後者もスタックを使っているのは同じ。
0043774ワット発電中さん
垢版 |
2020/11/30(月) 09:43:22.99ID:lX/n2/Yk
>>42
昔、数式のパーサーを作ったけど、確かにスタック操作だったのを思い出した
0044774ワット発電中さん
垢版 |
2020/11/30(月) 10:05:34.37ID:oGFM/dvN
>>41
1+ 2 をアセンブラで書くときも
mov a,1
mov b,2
add a,b
とかやるんじゃないか?

今どきそんな機会があるかどうかは知らんけど
0045774ワット発電中さん
垢版 |
2020/11/30(月) 10:23:06.04ID:s3QaQSrG
>>42
1 と 2 を足した(+) ものに 3 と 4 を足した(+)ものを 掛ける(*)
なので日本語と逆ポーランド記法の順序は似てる

>>44
マシンによるけど
mov a, 1
add a, 2
ってやれることが多いからちょい微妙な気がする
0047774ワット発電中さん
垢版 |
2020/11/30(月) 12:06:20.48ID:+XkoxYuh
>>42
RPN電卓は慣れてくると変換とか考えなくても自然と扱えるようになる
特に()とか計算順が関係してくるのはなんも考えずに先頭から入力していけるし
まあ最近の関数電卓は数式入力とか普通だからあまり魅力はないかもしれないが

あとはPOSレジ(加算器)なんかは逆ポーランド的操作だね
値段 +
値段 +
個数 *
値段 +
 :
合計
みたいな感じだし
0048774ワット発電中さん
垢版 |
2020/11/30(月) 18:20:03.84ID:ZNwvj6Aj
>なので日本語と逆ポーランド記法の順序は似てる

Forth系言語の 日本語Mind とか…
0049774ワット発電中さん
垢版 |
2020/12/22(火) 15:19:08.99ID:QjT9JRVE
FORTHってなかなかユニークな言語だよね。
昔、興味が湧いて、使っているCPU用に移植した事がある。
その時に逆ポーランド記法を初めて知ったけど、演算処理が簡単になるので、
その後、あるオリジナルの言語処理系を作った時にも採用した。
0051774ワット発電中さん
垢版 |
2020/12/29(火) 13:30:15.19ID:8Q+qtXT+
そうなの?
0052774ワット発電中さん
垢版 |
2020/12/30(水) 17:32:15.95ID:KLCtju1g
ATmega168で「I2C and SPI通信モニタ装置」を製作した時に
データ取り込み開始・停止の条件判定にスタックを使う逆ポーランド記法でやった

Forthを考えついた人は天才だと思う
0053774ワット発電中さん
垢版 |
2020/12/31(木) 12:06:57.06ID:IvvwJueg
スタックにデータを置くシーケンサ(PLC)にも変数(データ格納アドレス)は存在しない。
格納場所が決まっているので存在しようがないというか、
そもそも存在させないためにスタックに置くというか・・・
0054774ワット発電中さん
垢版 |
2021/04/26(月) 16:16:08.19ID:YyDQmy1c
質問です。

マイコンのプログラムは今はCで書いていますが、
Pythonで書くことはできるのでしょうか?
0056774ワット発電中さん
垢版 |
2021/04/26(月) 17:14:41.23ID:YyDQmy1c
>>55
ありがとうございました。
ググったら、いろいろとわかりました。
どうもありがとうございます。
0058774ワット発電中さん
垢版 |
2021/04/26(月) 23:08:30.38ID:YyDQmy1c
>>57
ありがとうございます。

確かにARMクラスが妥当だと思いますが、デジキーの案内のページを見ると...

MicroPythonはすでに何種類かのマイクロコントローラシリーズに移植されており、
これを出発点として新規プラットフォームに移植するか、
すでにサポートされているマイクロコントローラを選択することができます。
図1に示すのは、MicroPythonのソースコードのメインディレクトリです。
ここから、サポートされているマイクロコントローラデバイスを確認できます。次
のマイクロコントローラが含まれます。
ARM®ベースのマイクロコントローラ
Texas Instrumentsの CC3200
Adafruitの ESP8266
Microchip Technologyの 16ビットPICマイクロコントローラ
STMicrolectronicsの STM32

と、書かれています。 PICでもできるみたいで、興味があります。
0061774ワット発電中さん
垢版 |
2021/04/27(火) 07:18:15.83ID:6ZWoBj2F
>>58
>>57みたいな奴は相手しなくていいよ
単に知ったかしたいだけだしその知識も往々にして間違ってたり古かったりするから
0062774ワット発電中さん
垢版 |
2021/04/27(火) 07:18:47.60ID:qHu0luAM
アセンブラなど甘え
基本ほバイナリエディタで機械語プログラミング
0063774ワット発電中さん
垢版 |
2021/04/27(火) 07:41:29.86ID:yKAKIVsE
>>61
普通のPICで使えるやつあるの?
PIC18とか。
きっと皆が知らない新しい情報持ってるんだろうね?
0065774ワット発電中さん
垢版 |
2021/04/27(火) 08:04:39.07ID:Hj0vmFWK
5V対応不用でホビーならRaspberry Pi picoがお手軽じゃないかな
MicroPythonはPythonと言っても仮想マシンだし、速くないし
メモリの使用効率は良くないし、コンパイル用にPCがいる
0066774ワット発電中さん
垢版 |
2021/04/27(火) 08:11:17.74ID:6ZWoBj2F
>>63-64
恥の上塗り乙
>>58
> Microchip Technologyの 16ビットPICマイクロコントローラ
って、誰でも調べられる普通の情報として書いてあるけど?
0071774ワット発電中さん
垢版 |
2021/04/27(火) 12:13:32.13ID:AEf7qmNp
現状、PICで使えるのはdsPIC33だけってこと。
だからSAM使ったほうがいいって書いた。
0072774ワット発電中さん
垢版 |
2021/04/27(火) 16:15:09.88ID:LxpeQz0T
>>65
>5V対応不用でホビーならRaspberry Pi picoがお手軽じゃないかな
550円で安いですね。I/Oも周辺機能もあるしいいですね。

>MicroPythonはPythonと言っても仮想マシンだし、
これはどういう意味でしょうか。直接PythonでI/Oピンの H/Lができないのでしょうか?

>速くないし メモリの使用効率は良くないし、
133MHzで動いているのに、遅いんですか?

>コンパイル用にPCがいる
PCなしでできるんでしょうか?

C言語の代わりにPythonで書いて、ICSPで書き込めば自立で動く、
普通のPICマイコンとして使いたいのですが難しいでしょうか。
0073774ワット発電中さん
垢版 |
2021/04/27(火) 16:36:10.84ID:a+kjGvLV
人のことを知ったで知識が古いとか言うのにこういう間違いは指摘しないような連中しかいないからここでは何も得られないよ。
0074774ワット発電中さん
垢版 |
2021/04/27(火) 17:25:18.84ID:LxpeQz0T
ありがとうございます。
でも、いろいろな話聞いて、私には情報になると思っています。
0075774ワット発電中さん
垢版 |
2021/04/27(火) 17:42:27.16ID:Bo2yxrLc
普通のPICマイコンとして使いたいなら
素直にC言語で組めば
0076774ワット発電中さん
垢版 |
2021/04/27(火) 18:55:26.08ID:D4ng2Xcw
>>72
MicroPythonやmruby/cなどはPCでソースコードをバイトコードにコンパイルして
マイコンにバイトコードとバイトコードを実行する仮想マシン(実質インタプリタ)を書き込んで動作させるからね
Pythonコードが直接マイコン上で走るわけではないし、JITなわけでもないし、仮想マシンが使用する分のメモリが必要
効率はArduinoより悪いかも

以前にちょっと検討したことあるけどメリットを見いだせなかった。この辺を載せるくらいなら、もうちょっとがんばって
Luaインタプリタを載せた方が使えそう。セルフ開発可能になるし
0078774ワット発電中さん
垢版 |
2021/04/27(火) 20:02:06.51ID:5Ib5o0sa
>>72
> これはどういう意味でしょうか。直接PythonでI/Oピンの H/Lができないのでしょうか?
サポートされてればPythonコードだけでできる
https://micropython-docs-ja.readthedocs.io/ja/latest/library/machine.Pin.html

> 133MHzで動いているのに、遅いんですか?
C言語とかのネイティブな奴に比べたら当然遅い
Lチカぐらいなら問題ないけどそれなり処理をしようとしたら問題になるかも
あとガベージコレクションするからタイミングがシビアなものは色々知識が必要になる

> PCなしでできるんでしょうか?
基本無理

> C言語の代わりにPythonで書いて、ICSPで書き込めば自立で動く、
> 普通のPICマイコンとして使いたいのですが難しいでしょうか。
最低限そのボードにC言語のプログラムを書き込んで自立して動かせるスキルは必要
0080774ワット発電中さん
垢版 |
2021/04/27(火) 21:16:27.69ID:LxpeQz0T
>>76
ありがとうございます。

>(実質インタプリタ)を書き込んで動作させるからね
マイコンにROM BASICを載せて、
1行1行読み込んで実行するようなものですか?

>>78
ありがとうございます。

>>直接PythonでI/Oピンの H/Lができないのでしょうか?
>サポートされてればPythonコードだけでできる

>> 133MHzで動いているのに、遅いんですか?
>C言語とかのネイティブな奴に比べたら当然遅い
>Lチカぐらいなら問題ないけどそれなり処理をしようとしたら問題になるかも

>最低限そのボードにC言語のプログラムを書き込んで自立して動かせるスキルは必要
それは何度もやって来たので大丈夫だと思います。

皆さんの話からすると、マイコンにはちょっと・・・という感じですね。

学校の授業でもPaython、本屋さんにはPaythonの本がたくさん。
Paythonの何が嬉しいのでしょうか。
初心者に分かりやすいからでしょうか。
アルデーノみたいに、他人の作ったモジュールを組み合わせると
簡単にできてしまうとか、そういうことですかね。
0081774ワット発電中さん
垢版 |
2021/04/28(水) 00:45:53.25ID:EXN7mB1X
>>76
USBやシリアルでつないでREPLが動くでしょ。
PC側でコンパイルなんてしないよ。
0082774ワット発電中さん
垢版 |
2021/04/28(水) 05:51:00.29ID:UlMVDS4S
>>80
> マイコンにROM BASICを載せて、
> 1行1行読み込んで実行するようなものですか?
そこまで原始的じゃないよw
コンパイルはするけどネイティブコードじゃなくて仮想マシン用のコードを生成するって話
古くはUCSD PascalからJavaやC#などでも使われてるやり方
ネイティブコードを吐くとか定数を定義するとかで高速化の方法はいくつかあるよ、詳しくは↓
https://micropython-docs-ja.readthedocs.io/ja/latest/reference/speed_python.html
ただ、Pythonは言語仕様的に速度を重要視しておらずC言語とかに比べたらオーバーヘッドはかなり大きいのでホントに速度が重要なら素直にCで書いた方が楽だと思う

>> 最低限そのボードにC言語のプログラムを書き込んで自立して動かせるスキルは必要
> それは何度もやって来たので大丈夫だと思います。
ならやってみてもいいと思うよ

> Paythonの何が嬉しいのでしょうか。
オブジェクト指向とかコードがわかりやすいとか>>81が言うインタラクティブに使ってハードのテストするとか色々あるけどあるけどぶっちゃけ流行りかなw

>>81
MicroPythonでもREPL使えるんだな
これは知らなかったわ
0083774ワット発電中さん
垢版 |
2021/04/28(水) 07:37:45.56ID:Xrk11elf
>>81
てことはFlashAirみたいに生のソースコードを自力で解析して実行できるの?
0084774ワット発電中さん
垢版 |
2021/04/28(水) 08:38:24.12ID:EXN7mB1X
>>83
PythonのコードをFLASHに置いて実行するのが本来の使い方。
テストする時はREPLが便利。

>>82 は何で VM にこだわってんの?
.mpy を実行するのが VM だって言うならPCのPythonもVMだよ。

Micropyhon は単なるインタープリタ。
結構重いからマイコン側の能力が必要。だから下記が推奨される。
256KB以上のフラッシュ
16KB以上のRAM
80MHz以上のCPUクロック

まあ、8bitマイコンでもメモリあれば実装は出来るかもな。

>>77 がいるからもう書かない。こいつはMicropython使ったことないだろ。

自分で実機いじったほうがいいよ。
ESP32オススメ。
0085774ワット発電中さん
垢版 |
2021/04/28(水) 08:55:19.90ID:6oG64p5i
>>84
> >>82 は何で VM にこだわってんの?
どう理解したらこだわってるように思えるんだろう…

> Micropyhon は単なるインタープリタ。
仮想マシンとインタープリターの違いは?
てか、むしろインタープリターにこだわり過ぎかと

> >>77 がいるからもう書かない。
何が間違いかも書けないならそれが正解
とっととROMっててねw
0087774ワット発電中さん
垢版 |
2021/05/01(土) 18:10:03.52ID:WlFJPGgI
C言語の基本で、教えてください。
typedef と初めて接するのですが、分からないことがあります。
以下は、ネットにあったソースです。(作者さん、勝手に引用と改変すみません)

#include <stdio.h>
#include <stdlib.h>

typedef enum{
RUNNING   = '1',
STOPPED   = '2',
FAILED    = '3',
HIBERNATING = '4'
} MACHINE_STATE;  // (a)

int main(void) {
int input1;
MACHINE_STATE state;   // (b)
// char state;         // (c)

printf("type [1-4]: ");
input1 = getchar();
state = input1;       // (d)

switch (state) {
case RUNNING:   printf("running\n");  break;
case STOPPED:   printf("stopped\n");  break;
case FAILED:    printf("fail\n");    break;
case HIBERNATING: printf("hibernated\n"); break;
default:                  break;
}
  while(1){}
}

typedef unsigned char UCHAR と書くと、以降のところで 
UCHAR c; と書けば、unsigned char c; と同じ作用になると本などに書かれていました。まさにtypedefだと思います。
ところが上記のソースだと、typedef〜(a)までの間に、unsigned int とかの文字が書かれていません。
そして(b)で、MACHINE_STATE型でstsusという変数を取る、ということをしています。
ここまでの行でMACHINE_STATEが unsigned char なのか、intなのか、型のことに触れていません。
1. この場合、MACHINE_STATE は、何型になるのでしょうか。
2. このようなtypedefの使用は、(c)のように普通に取るのと比べて、どういうメリットがあるのでしょうか。
3. また、(d)の点で、input1を あえてstatusに入れ直していますが、これは、なぜなのでしょうか。
宜しくお願いします。
0088774ワット発電中さん
垢版 |
2021/05/01(土) 18:43:26.08ID:/bstjqti
>>87
enum は 整数値。
char や int で宣言しないのは、変数の意図をわかりやすくするためじゃないですかね。
コンパイラや設定によってはワーニングを出してくれるのかな?

ここに書かれている範囲だったら、いきなりstateにgetchar()値を入れても問題はなさそう。
でも、あとあとwhile(1){}の中に書き込んでいく意図があるとしたら、
その中でプログラムのステートを管理するstateはgetchar()でいきなりいじるのはしたくないはず。
getchar()は習慣的にいったんinput1みたいな変数に入れているのでは。
0089774ワット発電中さん
垢版 |
2021/05/01(土) 19:13:54.75ID:WlFJPGgI
>>88
ありがとうございます。

>char や int で宣言しないのは、変数の意図をわかりやすくするためじゃないですかね。
確かに本にもそのようなことが書いてありました。
ただ、メンバーの名前では、unsigned char なのか unsigned int なのかがわからないと思うのです。
というか、unsigned int 一択で、unsigned charは無いということでしょうか? でしたら、納得しました。
いつも型ばかり気にしているので、型が分からない宣言は、とても心配でした。
なんだか unsigned int 一択が正解な気がしてきました。

>その中でプログラムのステートを管理するstateはgetchar()でいきなりいじるのはしたくないはず。
>getchar()は習慣的にいったんinput1みたいな変数に入れているのでは。
たしかに、直接は嫌ですね。入力値の評価をしてOKを確認してから採用ですね。

どうもありがとうございました。
0090774ワット発電中さん
垢版 |
2021/05/01(土) 20:02:08.13ID:iIkZG58X
enum の型は基本intと同じ扱い

ただし、
intの範囲を越えたらより大きな型になる

コンパイラやコンパイラの設定によっては
charから拡張していく物もある
また、型を指定出来る物もある
詳細はコンパイラの仕様書を見て

enumはenumとして別の値に直接キャストしない
特定の値、特定のサイズを仮定しない
のが本来だけど
効率を考えるとそんな正論ばかりは言ってられない

単なる値の#defineの代わりにenumを使うこともある
0091774ワット発電中さん
垢版 |
2021/05/01(土) 20:50:43.94ID:WlFJPGgI
>>90
ありがとうございます。

>単なる値の#defineの代わりにenumを使うこともある
そうですよね。僕は逆でしたが、enumで並べるの代わりに、
#defineで数字を定義して使っていました。
数字の大小に意味は無いと思うのです。

>intの範囲を越えたらより大きな型になる
そうなんですか。65535の次は42億....とか。
それででしょうか、状態遷移などのとき、enum で、
idle, wait, start, stop などと列挙して、if()で比較するときに、
if( さきほどの例のstatus == enumのメンバ ){
という比較をしている例がありました。
型の大きさが同じもの同士の比較なら、問題も起きないですよね。

どうもありがとうございました。
0092774ワット発電中さん
垢版 |
2021/05/03(月) 09:27:09.29ID:pkgzH+PI
>>91
enum をtypedefするのは、その型の変数にはenumで定義した値しか入らないってことを明確にする意味がある

だから、typedefした型の変数にintの数値を代入したり、intと比較するところがあったらおかしいってわかるようになる
0095774ワット発電中さん
垢版 |
2021/05/03(月) 14:33:11.64ID:mqOsL7XC
>typedefした型の変数にintの数値を代入

STM32CubeIDEのgcc(.cファイル)だと設定を厳しくしてもワーニングが出ないっぽい。
適当に書いたから最適化で無視されたかもしれないけど。

gpp(.cppファイル)はキャストがないとワーニングが出る。
0096774ワット発電中さん
垢版 |
2021/05/03(月) 17:18:43.16ID:RSupmAVS
>>92
enumは、もともとint なんだから、
intを入れても問題ない。
何言ってんだか。
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
すみません、どこで聞くのが適切でしょうか?
0197774ワット発電中さん
垢版 |
2021/11/22(月) 21:56:11.04ID:v1yf+7Fj
車板で、こんなに詳しい内容がわかりますでしょうか?
電気以外のスレだと、オーディオ板のように、電気の素人が多い気がするのですが。
0198774ワット発電中さん
垢版 |
2021/11/22(月) 22:16:07.54ID:5FAC8FWx
マイコンスレに車関連の具体的な実装方法がわかる人がいるとは思えないけど

想像で語るだけなら出来ても
0200774ワット発電中さん
垢版 |
2021/11/23(火) 07:51:32.77ID:wCw4F2gj
>>192の疑問は途中で切れている部分がどう連携しているか、じゃないかな。

ウィンカー部分だけでなんらかの通信をしてるのかな?と思ったけど、誤動作が怖い。

↓これに一票。(多数決じゃないけど)
>トランク側マイコンとボデー側マイコンが、シリアルで繋がっていて、
0202774ワット発電中さん
垢版 |
2021/11/23(火) 11:35:05.84ID:qmmASUXK
>>199
ありがとうございます。
W2815が探せませんでした。

>>200
ありがとうございます。
>トランク側マイコンとボデー側マイコンが、シリアルで繋がっていて、
ですよね。
でも、そのために線を1本通さなくても、車内の通信で・・・とも考えたのですが。

>>201
ありがとうございます。
>ボディ側とトランク側をカスケードすればいいだけ
ボディ側とトランク側はそれで行けそうですね。
しかし前の左右、ミラーの左右とも同期する必要がありますので、
どうなっているかな、と思っています。

>ウインカーは保安部品でシビアだからマイコンでもやれるけど結構面倒だよ
ありがとうございます。
こんな専用ICがあるんですね。
LEDの流れる速度を、外部コンデンサで決めているのも意外でした。
LEDの短絡オープンの処理もしてくれるんですね。
ハザードなど、車両全部を同期させるのは、車内通信のECUからの指示で
このICが動けば、人間には同時に見えるかな。
規格を通す労力とかも考えると、マイコンでやるより安価に仕上がるのかもしれませんね。
0204774ワット発電中さん
垢版 |
2021/11/27(土) 13:55:19.48ID:OPe/BU1p
iPhoneとかも、マイコンで動いているのでしょうか?
それともミニPCといった方が適切でしょうか?
0205774ワット発電中さん
垢版 |
2021/11/27(土) 14:08:53.51ID:GYjGtQPk
はい
0206774ワット発電中さん
垢版 |
2021/12/02(木) 04:16:47.97ID:5U3dW78S
>>204
ほぼPCだと思う
0208774ワット発電中さん
垢版 |
2021/12/02(木) 07:33:08.58ID:21P36iK8
>>204
好きに呼べばいいよ
0210774ワット発電中さん
垢版 |
2021/12/02(木) 08:19:56.29ID:9Thtls5T
パソコンは自分で組立てたりできますが
スマホでそういうのってないんでしょうか
0212774ワット発電中さん
垢版 |
2021/12/02(木) 08:44:15.08ID:rCRb4zga
RaspberryPiとセンサで似たような事は出来るが
それはスマホとは言わん
0213774ワット発電中さん
垢版 |
2021/12/02(木) 09:21:41.44ID:I2pTaP+w
Fairphone みたいな試みはあるけれど、それとてFairphone内の自由度でしかない。

>>210が望んでいるのは、いろいろなメーカーのモジュールやケースを組み合わせて
好きなスペックのものを作ることだと思うがそれとは程遠い。

それができるようになるためには、それぞれの部品の切り分けや、インターフェース
形状が高度に標準化されていないといけない。それであっても、違うメーカーの
ものを互いに接続できるようにするためには、電気的にも空間的にも余裕を大きく
しないといけなくなる。結果として、大きくて重くて消費電力が大きいものになるだろうね。
たぶんそれは商売として成立するほどに売れないぐらいにしか、少数のユーザーに
しか支持されないだろう。

というか、パソコンでさえ、デスクトップPCでしか自作PCは普及してないよね。
超軽量薄型ノートPCだと、スマホと同じように、メーカーを超えた自由度の高い部品の
組み合わせは難しくなってるし。
0216774ワット発電中さん
垢版 |
2021/12/03(金) 15:31:13.10ID:JVBr/5u/
>>214
Googleの、懐かしいね。

USB機器とかが本体問わずに使えるみたいに、たとえば手帳型のケースで拡張部分のスロットに自分の好きなものを選んで装着して使える程度でも良いかなあとは思うわ。
0218774ワット発電中さん
垢版 |
2021/12/03(金) 21:15:53.83ID:AWVPNRkF
日本では大しか売れない予感
0219774ワット発電中さん
垢版 |
2021/12/04(土) 17:38:52.65ID:UAXsnQSO
小が今の標準的なバッテリだとしたら。
平野ノラが持ってたようなスマホとか。
0222774ワット発電中さん
垢版 |
2021/12/08(水) 19:42:05.50ID:SDmPhswt
CNCのステッピングモーター制御で、円弧をブレゼンハムのアルゴリズムを用い
1ドット=1ステップでウエイト時間を等間隔で移動した場合、速度は一定になると思われますか?
0224774ワット発電中さん
垢版 |
2021/12/08(水) 23:45:42.33ID:SDmPhswt
ステッピングモーターはステップと言う解像度があるから、結局ブレゼンハムで
ウエイト時間を調整するのがベターだと思うんですが、そう言うわけでも無いのかなぁ
0225774ワット発電中さん
垢版 |
2021/12/09(木) 02:28:14.83ID:oTvPtU3i
お歳暮には、ニッポンハム
0227774ワット発電中さん
垢版 |
2021/12/09(木) 11:37:23.61ID:/XZmfRXS
第二軸のその0.1未満の際がどれほど深刻なのかが用途も知らんし わからん だから
僕は円周率≒3の男だから ほぼ等速「とみなせる」ように見えた(^p^)

※なにもしらない個人の、個人的な印象です。 効能・効果を保証するものではありません
0228774ワット発電中さん
垢版 |
2021/12/09(木) 12:23:03.55ID:SDkFKd1T
>>227
1ステップで何度進んだかで、山はXY同時に斜めに進んだ時出来、底は方軸のみだと思われます

端が1ステップ0.25度強、中心の辺りは0.35度強とすると1.4倍近い差があります
0229774ワット発電中さん
垢版 |
2021/12/09(木) 13:06:45.69ID:/XZmfRXS
そりゃ、45度(π/4[rad])位置は一ドットの対角線、
一辺の√(2)倍なんだから0度や90度の時に比べれば
細かく言えば約1.4倍の移動距離になりますわなぁ。

・・・でも、半径に対して十分に画素が小さく細かけりゃ
無視できるんじゃね?(はなほじ
0230774ワット発電中さん
垢版 |
2021/12/27(月) 16:06:19.16ID:54jlNCKi
マイコンでPCやスマホ向けの画像を扱おうとするとマジでメモリがきついな
PC用のアルゴリズムだとまともに動かないのも少なくないし
リサイザー作るだけで大事だわ
0232774ワット発電中さん
垢版 |
2021/12/28(火) 13:23:08.88ID:us4a63h3
確かにSBC使うかメモリを外付けするのが簡単だけど
ttps://www.stmcu.jp/design/hwdevelop/discovery/51732/
ttps://www.renesas.com/jp/ja/products/microcontrollers-microprocessors/rx-32-bit-performance-efficiency-mcus/rx72n-envision-kit-rx72n-envision-kit
あたりの大画面フルカラー液晶とEthernetと大容量ストレージを接続出来るフラッグシップマイコンはその領域に片足突っ込んでいるのでは

ttp://elm-chan.org/junk/32bit/report.html
ttp://elm-chan.org/fsw/tjpgd/00index.html
あたりの例を見てもアルゴリズム上の問題に見えるし
0233ウルトラスーパーハイパーエターナルライアモンバーストモードGX×9
垢版 |
2022/01/16(日) 20:45:35.68ID:6vcT805j
僕だったら重要人物を再評価するよ。 僕だったら重要人物を再吟味するよ。 僕だったら重要人物を再検討するよ。 僕だったら重要人物を再検査するよ。 僕だったら重要人物を再審するよ。 僕だったら重要人物を再調するよ。
僕だったら重要人物を見直すよ。 僕だったら重要人物を調べ直すよ。 私に於いてはデジタル空間が好きだよ。 私に於いてはデジタル空間が大好きだよ。 私に於いてはデジタル空間が御好みだよ。 私に於いてはデジタル空間を愛好するよ。 私に於いてはデジタル空間を嗜好するよ。 私に於いてはデジタル空間を友好するよ。
勿論ネプトゥーンモンは楽しいよ。 無論ネプトゥーンモンは面白いよ。 当然ネプトゥーンモンは愉快痛快だよ。 一応ネプトゥーンモンは心嬉しいよ。 多分ネプトゥーンモンは喜べるよ。 必ずネプトゥーンモンは斬新奇抜だよ。 絶対にネプトゥーンモンは新機軸だよ。 確実にネプトゥーンモンは個性的だよ。 十割ネプトゥーンモンは画期的だよ。
100%ネプトゥーンモンは独創的だよ。 寧ろ逆にネプトゥーンモンはワクワクドキドキするよ。 他に別にネプトゥーンモンはハラハラドキドキするよ。 例え仮に其れでもネプトゥーンモンはクリエイティブだよ。 特にネプトゥーンモンはドラマチックだよ。 もしもネプトゥーンモンはエキサイティングだよ。
0237774ワット発電中さん
垢版 |
2022/01/26(水) 12:47:13.34ID:6oBp7Ud9
C言語の質問があります。
マイコンは、昔に秋月製のH8マイコンを触ったことがあるだけです。
↓をみてください
https://imgur.com/upXwfNZ.jpg
Microchip社のdsPIC33マイコンの、AD変換器のヘッダファイルの一部です。
共用体はビット幅が合っていないといけないと思うのですが、
bit幅が違っても、また対応するメンバーが無くても、コンパイラが通ります。
実際のハード上ではCH0SAは5〜0の6bitあるのに、下側には5bit目がないのです。
宜しくお願いします。
0238774ワット発電中さん
垢版 |
2022/01/26(水) 13:11:20.19ID:egi8N/Hj
>共用体はビット幅が合っていないといけないと思う
それは何処ソースの情報ですか?
0239参考:
垢版 |
2022/01/26(水) 13:15:34.87ID:egi8N/Hj
ーーー以下引用、邦訳K&R(第二版)P.179 より抜粋>
union u_tag{
 int ival;
 float fval;
 char *sval;
}
変数uには、三つのタイプの内最大値を保持できるだけの十分なスペースが取られる。
<ーーーー 以上引用
0241774ワット発電中さん
垢版 |
2022/01/27(木) 12:19:08.21ID:byrkz19m
周辺機能レジスタのアドレスやビットアサインに対して間違った構造体型でコーディングしてたとしてもコンパイルは通るよ
言語の構文が合ってればね
マイコンで実行したら周辺機能が意図通り動かなかったり不正アクセス例外が発生したりするけど

その画像だと5ビット目を1ビット単位でアクセスすることがソフトウェア上できないってだけ
もしこれがハードウェアの仕様(リザーブビットになってるとか)を反映してるわけではなくコーディング誤りだとしたら自分で修正すればいい
0242774ワット発電中さん
垢版 |
2022/01/27(木) 14:19:32.87ID:FtdRaxKJ
画像の報に質問箇条書きがあったんやな
(1)上位に余りがあっておk
(2)おそらく下位五ビットにしかビットアクセスする必要がないという事なのでせう。
(3)差があっても おっけー
(4)対応するものなんて別になくてもいい。
 必要になったなら、241さんの仰るように、(既存のユニオンのメンバーを編集するなり 別途 三つ目のユニオンメンバーを追加して)定義すればええんやで。
0243774ワット発電中さん
垢版 |
2022/02/12(土) 22:59:39.56ID:Gm8I2xkX
教えて欲しいことがあります。CAN通信のマスクとフィルタについてですが、
なぜマスクが必要なのかわかりません。ハードウェアでやるのですから
マスクを0x7FFで全開にして、フィルタで全部比較すればいいと思うのですが、
ダメでしょうか?
あと、フィルタで0x333を設定して、0x333が来たらデータを付けて
SID=0x333の返信をするのは、自分で自分のの尻尾を追いかけるような動作に
なってしまって、禁止でしょうか?
0244774ワット発電中さん
垢版 |
2022/02/12(土) 23:16:40.96ID:Gm8I2xkX
>>243です。マスクとフィルタの県は、わかました。
以前はマスクとフィルタの機能をCPUソフトウェアで実現していたからですね。
CPUの負担軽減のためにハードでそれらを実行するようになったとのことです。
どうもありがとうございました。
0247774ワット発電中さん
垢版 |
2022/03/10(木) 02:16:58.23ID:hbbWVr09
C言語で、AAA.c とBBB.cという2つのソース間で
AAA.cに実体の uint16_t hoge;  と書いて、
BBB.cにextern uint16_t hoge; と書くとグローバル変数で使えると思います。
#define を両ファイルで使いたいときは、どのような記述になるのでしょうか?
#define hage 10 を両ファイルで使いたいときは、どのような記述になるのでしょうか?
AAA.cで数値を変えれば、自動的にBBB.cでも反映させたいです。
0249774ワット発電中さん
垢版 |
2022/03/10(木) 10:03:14.92ID:Sp3+s9L2
static と extern の話かと思ったが全然違ったな
っていうか include 覚えたニワカが static 書かないと詰むぞ
0250774ワット発電中さん
垢版 |
2022/03/10(木) 14:25:37.42ID:KhHGBysC
>>247です。
>>248
ありがとうございます。
なるほど、#includeすれば ZZZ.h の中の #define 値を変更すれば、行けそうですね。

実は、AAA.c、BBB.cともに、main()の冒頭で #include をしています。

int main(){
#include "AAA.c"
#include "AAA.c"

while(1){
:
:
という感じです。#includeして、あの位置にAAAとBBBを置いてあるなら、
AAA.cの先頭に1度書けば全域で通じると思ったのですが、だめなのでしょうか。

extern unsigned char ... についても
上記のように main.cの冒頭で unsigned char...と
1度書けば、それ以降には全部通じるので各ソースに書く必要は無い、と思っていました。
そもそも #include "CCC.c" とは、
その位置にCCC.cをテキスト的に貼り付けるのではないのでしょうか?

>>249
ありがとうございます。
関数と関数の間に書いた変数は、
暗黙でstatic変数となり、グローバル変数としてずっと値が消えることはないと思っています。
関数の中の変数宣言は、暗黙でauto変数で次回まで保持しない。staticを付けると消えずに値を保持。
0252774ワット発電中さん
垢版 |
2022/03/10(木) 14:57:06.45ID:OAQdURok
>extern
ファイルスコープの話やね。
externを伴えば、外部ファイルに参照先を求めるのでそのファイル内に実体を用意しない。

>include
.cのfileを、メイン関数内でインクルードする人初めて見たYO
2回インクルードしたら重複宣言でコンパイルエラー起こすやろ(ifdefとかで丁寧に避けてれば通るかもだけど・・・)
0253774ワット発電中さん
垢版 |
2022/03/10(木) 15:53:37.87ID:8Y0DuOKe
>>252
>externを伴えば、外部ファイルに参照先を求めるのでそのファイル内に実体を用意しない。
はい、そう思っています。
「コンパイラさん、最後までには、どこかで出てくるので、ここでは見逃してね」と
イメージしています。

>include
>.cのfileを、メイン関数内でインクルードする人初めて見たYO
そうなんですか?
例えば
main(){
  unsigned char ...
  unsigned char ...
  unsigned char ...
  unsigned char ...
  unsigned char ...
  unsigned char ...
  unsigned char ...
  while(1){
と、unsigned char ...が多くてソースが見にくいから、外に出そう。
hensu.c として、その中に
  unsigned char ...
  unsigned char ...
  unsigned char ...
  unsigned char ...
  unsigned char ...
  unsigned char ...
  unsigned char ... を書いて

そして、main内部でincludeする。
main(){
  #include "hensu.c"    // ←すっきり見やすくなる

  while(1){
のように #includeの位置にそのファイルを入れ込んで(置き換えて)くれる、
というように使用するものだと思っていますが、違いますでしょうか?

#include "AAA.c"
#include "BBB.c"

void func1(){
}

main(){
while(1){
とすると、
Global変数と#defineを、AAAの先頭に1回だけ書けば、
BBB.cでもmain()でもfunc1()でも通じる、Global変数、#defineとして使えるので、
BBB.cの中に書く必要はないと思っているのです。
それなのに、まるでxxx.cのファイル単体でコンパイルをするような感覚で
コンパイラーがエラーを出してきます。
私のような使い方は、間違いでしょうか。
0254774ワット発電中さん
垢版 |
2022/03/10(木) 16:00:05.04ID:OAQdURok
そういう使い方なら、
ソースがインクルード部に展開されちゃうんだから多重定義でエラーになって当然でそ。
強要したいならインクルードするファイルの中身は
extern unsigned char ucHoge;
extern unsigned char ucGeho;
とか全部externつけとかなきゃ。externの伴わない実体宣言は、ソースファイルの中にインクルードせず 直に書きましょうや。
0255774ワット発電中さん
垢版 |
2022/03/10(木) 16:13:32.11ID:OAQdURok
絶対こうしろとまでは言わんが、いちおう世間さまの流儀では、
AAA.cで実体を宣言している外部変数へのextern宣言はAAA.hに入れておくんよ。
BBB.cからそれらを参照する場合は(関数ないじゃなくて)BBB.cのファイル冒頭で #include "AAA.h" ってしておくのがポピュラー。
関数内にインクルードする人は少数派だと思うんゴ(^p^;)
0256774ワット発電中さん
垢版 |
2022/03/10(木) 16:27:47.31ID:LcoTsJVq
>>253
>   unsigned char ...
>   unsigned char ...
>   unsigned char ...
>   unsigned char ...
>   unsigned char ...
>   unsigned char ...
>   unsigned char ...
この程度なら別に見辛くないし、実際はもっと多いと言うならその設計を見直した方がいいと思う
0258774ワット発電中さん
垢版 |
2022/03/10(木) 23:02:42.85ID:/G1q21Dn
晴比古本にそんな変なマクロあったっけ?
俺はあの本だけでCを覚えた
大変世話になったな
0259774ワット発電中さん
垢版 |
2022/03/11(金) 06:04:49.57ID:2S/p+YoI
そもそも#includeするなら1つのファイルと一緒だからexternする必要がないじゃん
0260774ワット発電中さん
垢版 |
2022/03/11(金) 06:44:22.28ID:IHKB5Upv
あの、普通の使い方 (*.hをincludeする。)に合わせて話しませんか。
無知な方に合わせても意味ありませんよ。
0262774ワット発電中さん
垢版 |
2022/03/11(金) 08:27:19.12ID:/L6mneX+
make で拡張子で判断してビルドするようにしている(なっている)ことが多いのでは。
そういう場合だと、例に上がっているような関数内のローカル変数を hensu.c に
記述すると、その hensu.c もコンパイルがかかって面倒なことになりそう。

cをincludeしている人は、makeファイルも自分で書いてるのかな。

個人的には最近はIDE任せで、もうここ10年以上、makeファイルを自分で書いてない
ような気がする。
0265774ワット発電中さん
垢版 |
2022/03/11(金) 09:56:29.68ID:/L6mneX+
>>263
すみません、make というか、IDE任せも含めて「make相当」です。
それを含めて「使わない」としたら、バッチファイルでコンパイル、リンクを順次やっているのでしょうか。

それなら、インクルードする hensu.c を単独でコンパイルすることは避けられるかな。
0266774ワット発電中さん
垢版 |
2022/03/11(金) 10:03:24.74ID:RvK288QZ
>>265
>バッチファイルでコンパイル、リンクを順次やっているのでしょうか
そうだよ。

cmake は make じゃないとかそんな糞ではない。
0267774ワット発電中さん
垢版 |
2022/03/11(金) 10:08:51.95ID:bH7AWw2O
Makefileってヘッダも追加しとくんやで
そうするとヘッダが書き換わったのを判断して必要な分コンパイルしてくれる
0268774ワット発電中さん
垢版 |
2022/03/11(金) 11:35:15.27ID:dh4jB/WB
みんなまだコマンドプロンプトつかってるんやな えらいな 環境がLinuxなのかな
Z80使ってた頃はメイクファイルさんのお世話になってたけど
DOS窓自体開かなくなって久しいわぁ・・・
0269774ワット発電中さん
垢版 |
2022/03/11(金) 12:59:45.05ID:IHKB5Upv
操作は全部IDE 内部的にmake ってパターンでない?
0270774ワット発電中さん
垢版 |
2022/03/11(金) 14:06:38.53ID:epunqTDc
ここマイコンスレだろ?
-- common.h --
#ifndef __COMMON_H
#define __COMMON_H
extern unsigned char a;
extern unsigned char b;
extern unsigned char c;
#endif
-- main.c --
#include "common.h"

int main(char * argc ,char **argv){
a = b+c;
}

-- sub.c --
static unsigned char a,b,c;

static void foo(void){
c = b+a;
}

まぁ、こんな感じ?
うーん、書きながら、どういう構造にしたいんだろうか・・と悩んでしまったが。
0271774ワット発電中さん
垢版 |
2022/03/11(金) 14:14:17.11ID:dh4jB/WB
むむ、ああそうか、きょうびのマイコンはRTOS乗っけてて
プログラム呼び出し時に引数が付くのか・・・ 
0273774ワット発電中さん
垢版 |
2022/03/11(金) 23:23:21.70ID:Ahxf/8Qp
>>253です。
みなさん、大変ありがとうございました。

>>255
ありがとうございます。私の勉強不足なのがよくわかりました。
"AAA.h"を作って
extern unsigned char A1;
extern unsigned char A2;
extern unsigned char A3; と書いて
各関数の先頭で #include "AAA.h"と1行書くだけで、それぞれで AAA.cの A1 A2 A3 が読み書きできる。
さらにAAA.h の中に、#define hoge 3 も書いておけば、皆さんも参照できるし、AAA.hのそれを変更すれば、
全体に一気に変更の効果が出るということですね。ありがとうございます。
ノートにメモしておきます。どうもありがとうございました。

>>259
>そもそも#includeするなら1つのファイルと一緒だからexternする必要がないじゃん
ありがとうございます。ひとつの例として、上げました。

>>262
>例に上がっているような関数内のローカル変数を hensu.c に
>記述すると、その hensu.c もコンパイルがかかって面倒なことになりそう。
ありがとうございます。
これも予想していた通りだと思いました。
xxx.cは、それ自体でコンパイルが通らなければならないのですね。そのために、externが存在しているという。
今までよくわからないのでexternを逃げていましたが、そのご説明で納得できました。どうもありがとうございました。

>>270
なるほど、ありがとうございます。
私は、今まで何本もプログラムを書いてきましたが、全部1ファイルのプログラムでした。
#include "xxx.c" は、ただそこに入れ込むだけでしか使ったことがありませんでした。
-- main.c --
unsigned char a, b, c;   // Global変数

void foo(void){      // 関数
c = b+a;
}

int main(){         // main
  a = b+c;
}
と、こんな調子です。これだと、そのうちmain.cがドンドン長くなってしまうので、
関数の機能などでまとめたファイル"DDD.c"を作って、
main.cのファイルのその位置に #include...としていました。
そのincludeを許してくれるコンパイラだったので、
externなど知らなくても済んでいたのです。

みなさん、どうもありがとうございました。
0274774ワット発電中さん
垢版 |
2022/03/11(金) 23:30:13.00ID:RvK288QZ
#include はコンパイラじゃなくてプリプロセッサの作業だし
通らない(広義の)コンパイラはないと思うよ。
0275774ワット発電中さん
垢版 |
2022/03/12(土) 00:00:40.80ID:bt9O6jB2
>>274
すみません。言葉足らずでした。
>#include はコンパイラじゃなくてプリプロセッサの作業だし
>通らない(広義の)コンパイラはないと思うよ。
#include "xxx.c" の、xxx.c内部にexternとか書かなくても、許してくれる、という意味です。
そっか、xxx.c とするから叱られるんで、xxx.txt として#include "xxx.txt" とすれば、
そのまま置き換えができるかもしれませんね。今度試してみよう。
ありがとうございました
0276774ワット発電中さん
垢版 |
2022/03/12(土) 02:35:26.24ID:uITFnnBY
>>275
プロジェクトにxxx.cを入れるから単独でコンパイルされておかしなことになるだけ
#includeするなら単独にコンパイルされないようにしないといけない。
拡張子の問題ではないけどxxx.incとかにしておけば第三者にも分かりやすい。
0277774ワット発電中さん
垢版 |
2022/03/12(土) 10:41:12.76ID:kvgkhtoo
externとはこのモジュール(xxxx.c)にはないけれど外部にあるからそのつもりでコンパイルしてくれっていう意味
当然そこにはないけど最終的にはどっかに存在しないと思った通りに動かない。それを解決するのはリンカのお仕事
変数じゃなくて関数でも同じこと、そこにない関数でもインタフェース部分だけそこにあればコンパイラは納得してくれる
外部にあるはずのものは最終的にリンカが結び付けてくれる、なければ動かないのでリンカがエラーを出して教えてくれる
0278774ワット発電中さん
垢版 |
2022/03/12(土) 11:03:25.27ID:hN7f+XhA
コンパイラのエラーもリンカのエラーも意味知らんと、は?ってなるよね
代表的なのが思い付かなかったけど
0279774ワット発電中さん
垢版 |
2022/03/12(土) 15:07:05.51ID:+TNoybMS
面倒な奴だ、関わりたくないタイプだな
0280774ワット発電中さん
垢版 |
2022/03/12(土) 19:59:56.92ID:2tFg+KQj
あと、マイコンだと
foo(){
unsinged char[2048];
}
こういうのだめだぜ?
マイコンのメモリサイズやスタックに割り当てるサイズにも寄るけど、
スタックサイズ1Kとかだとスタック飛ぶぜ?
0281774ワット発電中さん
垢版 |
2022/03/12(土) 20:24:30.33ID:wMo9/1XP
なにが起きるかとマイコンのことをわかってやるぶんには問題ないけどな。
0282774ワット発電中さん
垢版 |
2022/03/12(土) 20:47:03.34ID:yMfL1rTI
picスレでコメントがつかなかったので、
こちらで質問します。
マイクロチップのコード生成ソフト、MCCで
DMAを構成したら、コンパイルは通るのですが、output画面に「heap領域が0だぞ」というメッセージが表示されます。
調べたらheap領域とはメモリー全体からプログラムとか変数を引いた残りの領域を
スタックと取り合うようです。
私は何か設定しなければいけないのでしょうか?
というか、heapを128byteとか確保するということは、どういうことなのでしょうか?
「おいスタック、どれだけ増えても128byteの俺の領域には入ってくるなよ」ということでしょうか?
0283774ワット発電中さん
垢版 |
2022/03/12(土) 21:01:04.02ID:hN7f+XhA
>>282
マイコンの型番は最低限書こうね
あと、コンパイラのバージョンとIDEのバージョン
0284774ワット発電中さん
垢版 |
2022/03/12(土) 23:37:36.13ID:dc10H+Ih
>>282
俺は使ったこと無いからはっきり知らんけど
任意のスタックが使えるなら8bitラインではないな
おそらくDMAのライブラリがディスクリプタでヒープを使うんだろう
MCCのどこかでスタックとヒープのサイズを指定できるはず
0285774ワット発電中さん
垢版 |
2022/03/13(日) 02:51:12.78ID:+dXzS/4b
IDEからリンカの設定でヒープ領域を確保できる
malloc で動的メモリを確保する時この領域を使う
もしヒープ領域を超えて malloc した場合、他の領域(スタックとか変数とか)のメモリ破壊が起きる

スタックも同じで深い関数呼び出しとかの要因で、確保された領域を超えてメモリ破壊することがある
どっちも、使用量を見積もって十分な領域をリンカに設定しとかないといけない

ちなみに、マイコンによってはスタックオーバーフローをハードで検知できる
0286774ワット発電中さん
垢版 |
2022/03/13(日) 08:11:46.04ID:Z9Wv722C
向こうのスレでは、ヒープには「函数」の呼び出し元が記録されるらしいww
0287774ワット発電中さん
垢版 |
2022/03/15(火) 09:41:08.20ID:CvV27FD9
懐古爺的に言わせてもらえば、
昔はリンカ時点でアドレス割り当てを設定したもんだが
最近のマイコンは統合開発化が進み過ぎてどういう哲学で
アドレスの割り当てを担当させるのか見えにくくなってますわなぁ・・・

当然、答えは知らん!(^p^)
0289774ワット発電中さん
垢版 |
2022/03/15(火) 12:15:02.45ID:F3XqQddj
そこまで分からなくなったら、Arduinoのやり過ぎだろう。
0292774ワット発電中さん
垢版 |
2022/03/22(火) 12:43:44.29ID:+Q/Ya5Ip
ハーバードが非ノイマン型なんだと言ってたヤツがいたなあ。
0293774ワット発電中さん
垢版 |
2022/03/22(火) 21:55:17.98ID:aR9DF62k
>>291
最近のCPUは、殆どがハーバード型見たいな物だからな。
キャッシュからコアまでは、インストラクションとデータのバス独立してる。
0294774ワット発電中さん
垢版 |
2022/03/23(水) 11:31:59.22ID:zSBwD41i
C言語で質問があります。ネットで、enumというのを見つけました。
enumはenumeration(列挙)の略です。

#include <stdio.h>
enum week { Mon, Tue, Wed, Thu, Fri, Sat, Sun };  // enum型の定義

int main(void) {
enum week wk0, wk1, wk2;    // enum型の宣言

wk0 = Mon;           // enum型のメンバを代入
wk1 = Tue;
wk2 = Wed;

printf("Monの値は: %d\n", wk0);
printf("Tueの値は: %d\n", wk1);
printf("Wedの値は: %d\n", wk2);
}
これを見たとき、 if( today==Mon ){... などとできて便利かな、と思いました。

そこで質問なのですが、
1) mainで使うときに、enum weekという宣言をしなくても
unsigned char wk0; とすれば、
wk0 = Mon; と同じなのでは無いでしょうか?
2) さらに言うと、#define Mon 0  #define Tue 1・・・#define Sun 6 として
unsigned char wk0;
wk0 = Mon; としてもまったく同じな気がするのですが、これは間違いでしょうか?
3) enumはどんなときに便利なのでしょうか?
0295774ワット発電中さん
垢版 |
2022/03/23(水) 11:48:28.06ID:jByjxETs
>>294
K&R第二版P239に解説があった。
要約すると、列挙型変数は整数型変数の様に振舞うけど
該当する列挙型オブジェクトに含まれない値を用いるコードを書くと
エラー警告してくれるらしいんよ。
想定外の用法の自由度を、予め殺したておきたい場合に使うという事やね。
0296774ワット発電中さん
垢版 |
2022/03/23(水) 13:19:14.27ID:Qd3f8BDE
あとは
enum flower {Rose, Lily, Tulip, NumberOfFlowerTypes};
const unsigned short price[NumberOfFlowerTypes] = …
みたいに配列の要素に使う場合、メンバの追加時に記号定数マクロと違って値の変更をしなくていいとかもあるかな
0297774ワット発電中さん
垢版 |
2022/03/23(水) 15:34:32.36ID:83FF2x+M
C の enum は辞めて
C++ の enum 使えって
じいちゃんが言ってた
0300おせちもいいけど・・・「モボ」で
垢版 |
2022/03/23(水) 16:14:32.61ID:jByjxETs
                ,-,,,,、                    ,-,,,,_
       ,,,,,,,、    ,,,,,,_゙'-,. "'i、       .,,,,,,,、    ,,,,,,,゙'-、^'i、    .i,¬ー-、
       ゙''i、`\   \.`''-\,,l゙       `'i、 `''i、   ‘'-,`''-\,,l゙     ^'i、 ,)
       丿 ,l,_,,,,,,,― |i、 }         丿 Z_,,,,,,-ヘヽ、゙l        | .|      __
      ,/ ,,-----=@,,,7゙"`        ,/ ,,-----=@,,,)゙″           | |   .,,-'",,,,,,、`'i、
     ,/`./    / 丿             / .,/`   ,l゙ 丿       |゙ヽ,,,―" `゙'ュ‐゙_,/゛  |  |
    .,/.,,/`    /` 丿         ,/ ,/    ,/ 丿          \,,,,-‐,!  '`,/    .|  l゙
  ,,-",,/    丿 ,i´           ,/_,/    丿 ,i´           丿 ,,,i´     ,!  |
 i彡‐"     ,/` ,/`           ィ,ン'"     / ./              ,/  .|       |  |
        ,,i´ ./                ,,‐`./            ,/`.,┤ |       |  |    ./゙|
      .,/ .,/                   ,/ .,/            / 丿 | .|      { {   .,/ ,l゙
     ,,/ ,/`               ,,/ ,/`            / ,、゙'-,| l゙         |  }, ._/.ノ
  _,/゙,,/゛                  _,/゙,,/゛              l゙ .,/`\  |       ヽ,_ ゙"゛,,/
  (ン'"゛                 (ン'"゛                `″  ゙l 丿        `゙゙゙゙゛
0301774ワット発電中さん
垢版 |
2022/03/23(水) 16:43:58.58ID:hJSNl/w6
モダンボーイかなんかだろ
わかってるけどボケてんねん
モブとかホモのほうが面白いだろ
0304774ワット発電中さん
垢版 |
2022/03/26(土) 04:35:35.43ID:Yf8UyIMa
>>303
つまらん。
その顔文字は、説明上必要なんですか?
0306774ワット発電中さん
垢版 |
2022/03/28(月) 10:18:44.04ID:BRZcmaAU
おそらくパレイドリア効果のシミュラクラ現象っていうやつだろうね(^p^)
0307774ワット発電中さん
垢版 |
2022/03/29(火) 07:35:26.49ID:VdojGuwZ
顔文字はスルーするからいいけどそのURLは何なのかな?
大抵エラーなんだけど
0308774ワット発電中さん
垢版 |
2022/03/29(火) 14:27:49.75ID:UjUAJBl3
お絵描き機能で投稿した添付図の事かもしれんな。
0309774ワット発電中さん
垢版 |
2022/06/19(日) 05:40:10.94ID:HhKq90BQ
テラタームのようなターミナルソフトを
RS232経由でマイコンで駆動したいです。
改行は0x0dを送ればよいですが、
画面を消してカーソルを左上に戻すには、
どのような16進数を送れば良いでしょうか?
0310774ワット発電中さん
垢版 |
2022/06/19(日) 05:42:47.56ID:HhKq90BQ
連投すみません。もう一つ教えてください。
ローカルエコーをマイコン側から入り切りの操作は出来ますでしょうか?
0312774ワット発電中さん
垢版 |
2022/06/19(日) 11:31:18.47ID:HhKq90BQ
テラタームのようなターミナルソフトを
RS232経由でマイコンで駆動したいです。
改行は0x0dを送ればよいですが、
画面を消してカーソルを左上に戻すには、
どのような16進数を送れば良いでしょうか?
0314774ワット発電中さん
垢版 |
2022/06/19(日) 18:37:36.19ID:Vm+luhkq
>>313
1キャラクタでできるのかな?
0316774ワット発電中さん
垢版 |
2022/06/19(日) 21:23:05.69ID:q5NwM8SN
シーケンスっていうぐらいだから、連続処理が前提。むしろ1キャラが例外。
0319774ワット発電中さん
垢版 |
2022/06/20(月) 00:33:41.94ID:XrrsCiGz
>>317の表の各モードを使ってみたいけど、
>>318の示す部分の設定で変えればOKですか?
0320774ワット発電中さん
垢版 |
2022/06/20(月) 00:34:44.49ID:XrrsCiGz
VTxxxの数字を変えれば、
モードが変えられるのでしょうか? ということです。
0321774ワット発電中さん
垢版 |
2022/06/20(月) 07:25:35.43ID:afA5DeE3
>>319
試せばわかる話じゃん
シリアル流して画面に表示するテストプログラム書いてやってみよう
0330774ワット発電中さん
垢版 |
2022/07/13(水) 07:32:08.95ID:8j/9ewvk
>>329
4bit の処理は出来ないから、1bit マイコン4個のマルチコアになるんかな?
0331774ワット発電中さん
垢版 |
2022/07/13(水) 07:48:54.88ID:RY7ugGhO
MC14500で作るプログラムは多ビットのリアルタイム処理になる
0333774ワット発電中さん
垢版 |
2022/07/17(日) 07:09:52.36ID:OnE+1m++
そういえば8ビットCPUのPICでPLCをシミュレートした市販品があったな
0336774ワット発電中さん
垢版 |
2022/08/29(月) 22:24:06.55ID:OeWGBxhf
計算速度は欲しいが移植性も確保したい場合ってどうすりゃ良いんだろ
1.32bit前提で書く
 16bitや8bitは最適化コンパイラに頑張ってもらう。別途バイトオーダー対応が必要
2.8bit前提で書く
 全ての環境で期待通りに動くが32bitだと少なからぬデバフがかかる
 最適化コンパイラといえども8bit×4を32bit×1にはしてくれない
3.クリティカルな箇所は32bit用と8bit用をのコードを用意する
 確実に保守が面倒になる。無用なバグの元になりそうだし
う~ん悩ましい・・・
0337774ワット発電中さん
垢版 |
2022/08/29(月) 22:34:56.15ID:gbQNRHMq
8bitと32bitで移植性と計算速度の両立は無理
計算速度だけじゃなくてリソースもコードを分ける理由になる
0339774ワット発電中さん
垢版 |
2022/08/29(月) 22:45:51.25ID:r12A+eCf
速度が欲しいところだけライブラリにしてコードを分けたりはする。
すべてがすべて速度がいるわけじゃないっしょ?
だから3かな。
0340774ワット発電中さん
垢版 |
2022/08/29(月) 23:58:05.99ID:Y/XebzRS
>>最適化コンパイラといえども8bit×4を32bit×1にはしてくれない
メモリ配置の話?
計算速度と関係ないだろ。むしろ遅くなる。
0341336
垢版 |
2022/08/30(火) 00:17:05.73ID:pXmicP5A
一応TJpgDecと言う前例があるんでこれ参考にしながら作っているけどなかなか難しい

>>339
作っているのはライブラリ。マルチメディアデータ用なので扱うデータ量は多め

>>340
8bitロード×4回と32bitロード×1回のどちらが早いかみたいな話
例えばARGB8888を1バイトずつストアするコードを32bitのストア1つには最適化してくれないよね
0342774ワット発電中さん
垢版 |
2022/08/30(火) 06:18:33.81ID:ZjhDawuY
そういうコードでアーキテクチャによってコードを分けたいなら
Arch別にマクロにしておいてインクルードするか、Archごとにifdefで分けるかな?

#ifdef __ARMHF
#include "armhf_xxx.inc"
#elif __H8
#include "h8_xxx.inc"
#endif
みたいな?
と書いてみたものの、自分が担当だったら影響が大きそうな8bit合わせにして終わらすなきっと。
8bitでいけるやつを32bitに持ってったときにそのロスは問題にならんだろうと。
全部gccとかならコンパイラ最適なコードを書くかも。
8bitマイコンのメーカーコンパイラの最適化は糞な印象しかない
0343774ワット発電中さん
垢版 |
2022/08/30(火) 06:21:33.82ID:LJSDRMVi
>>341
struct になってれば 32bit 一度に読み込むんじゃね?
ってか、32bit 使うコードにしとけば 8bit マイコンだと 4回アクセスになるでしょ。
0345774ワット発電中さん
垢版 |
2022/08/30(火) 07:09:09.01ID:iVoGHWCq
8bit環境は非常に制約が多いのが普通
速度だけ考えてコードを書けばいいなんてことは非常にマレ
ROM足りない、RAM足りない、...なんてのは普通

環境が決まってるならそれに最適化するしかない
決まってないなら最適化など不可能
動作するかどうかすらわからん

PIC10F200で動くか?
と考えればどんな環境でも動くなんてのは妄想だとわかる

エンディアン、charのサイズ、負の数の表現、...
可能性の非常に低い環境を考えるのも無駄
0346774ワット発電中さん
垢版 |
2022/08/30(火) 07:25:18.43ID:iVoGHWCq
演算の最適化も
バレルシフタ、乗算命令、DSP命令、FPU命令、キャッシュ、RAMサイズ
などで全く違う
0347774ワット発電中さん
垢版 |
2022/08/30(火) 07:50:12.53ID:oAKRUahl
組み込みの移植性なんて幻想、命ずる側はそれが分からんのですよ。
0349774ワット発電中さん
垢版 |
2022/08/30(火) 08:43:53.18ID:fHeU/d5k
イチゼロ…ジュウじゃなくてイチゼロ・・・つまり、16段階評価という事ですね!
0350774ワット発電中さん
垢版 |
2022/08/30(火) 12:09:20.94ID:50XygaXs
>>348
どうせ移植時に大きな作業が発生するんだから
移植するときに考えれば良い

その方が効率的
0351336
垢版 |
2022/08/30(火) 18:30:26.89ID:5xIM/QaJ
>>342
バイトオーダーの変換とかもだけどそれやると可読性が低下するよね。とはいえ背に腹か・・・

>>343
C言語の構造体のメンバ配置は処理系依存じゃなかったっけ。TJpgDecもFatFsも入出力に構造体を使用していないし
というのと1バイト×4=4バイトの構造体のコピーでもMSVCは4バイトでコピーしてくれるみたいだけど
CC-RXだと4回の1バイトコピーになった。構造体を32bit型にキャストしてようやく4バイトコピーになった
0352774ワット発電中さん
垢版 |
2022/08/30(火) 20:03:31.96ID:fnB8miB2
>>351
ビットフィールドにすれば32bitにまとめられるだろう。
処理系依存とか言い出したらcharが8bitじゃないかもとか
longだって何ビットなんだとか色々あるし。
0353774ワット発電中さん
垢版 |
2022/08/30(火) 20:24:58.54ID:ZjhDawuY
>>351
メンテナー配慮ってことで
#ifdef __ANSI
ごくごくふつーのきれいなコード
#elif __ARMHF
arm超最適化コード
#elif __H8
h8超最適化コード
#endif
みたいに、何をやってるのかわかるようにしておいたり

#コメントよりもきれいなコード派なのですごめんなさい
0354336
垢版 |
2022/08/30(火) 21:02:08.72ID:pXmicP5A
帰宅したんでID変わっています

まだコンポーネント単位で試作して実験している段階ですが
・ロードとストア
・算術右シフト
あたりが処理系の影響を強く受けそうな印象があります

>>352
最初にビットフィールドも検討したんだけど
EXP11-C. ビットフィールド構造体のレイアウトについて勝手な想定をしない
ttps://www.jpcert.or.jp/sc-rules/c-exp11-c.html
らしいのであきらめました
型のサイズはTJpgDec同様にC99前提にしてstdint.hを利用する予定です

>>353
参考までに「きれいなコード」ってどんなコードを指しているんでしょうか
処理系依存を回避していくほどコードが読みにくくなる気がします
0355774ワット発電中さん
垢版 |
2022/08/30(火) 21:15:35.78ID:ZjhDawuY
>>354
教科書的なコードといったほうがいいかな?
説明的なコード?

a=a<<1;
よりも
a = a*2;

*a++ = xxx
よりも
for(i=0;i++)
a[i] = xxxx

みたいな。日本語の文章でコメントを書く的なコード
0357774ワット発電中さん
垢版 |
2022/08/30(火) 21:43:16.85ID:ZjhDawuY
>>356
いや、速度を優先させてarch別に書いて行くと
可読性が悪くなるって話で、
そういう場合、使わないけどANSIでコメント的に書いておくって話。
0358336
垢版 |
2022/08/30(火) 23:09:10.92ID:pXmicP5A
というかググって出てくるCの解説は注意書きもなく処理系依存しているのが多いんだなと痛感してる
Rustを使えるならpackedあるし構造体のメモリ配置で困る必要なんてないんだろうなぁ

>>355
なるほど。そう言う書き方もあるのか
0361774ワット発電中さん
垢版 |
2022/08/30(火) 23:26:33.16ID:iVoGHWCq
>>336の処理の具体的な中身が書いてあればもう少し具体的な話が出来ると思う

規模とか計算量とか演算精度とか

8bitで動くんだから大した規模、計算量じゃ無いんだろうけど
0363336
垢版 |
2022/08/30(火) 23:59:40.72ID:pXmicP5A
必要精度とかに関してはまだ実験中。先日までint長が要32bitでどうしようかと
考えていたけど式とパラメータを調整したら16bitでいけそうかもになっていたり

ちなみに
struct PIXEL{uint8_t r, uint8_t g, uint8_t b, uint8_t a}
struct PIXEL src, dst;
dst = src;
みたいなのをCC-RXに速度優先設定でコンパイルさせたら
パディングされているわけでもないのに1バイトずつ4回コピーしてた
どうしてそうなる・・・
0364774ワット発電中さん
垢版 |
2022/08/31(水) 04:03:17.81ID:mdRW7ZA+
A B C 3人の早押し判定プログラムを作ろうと思っています。
mainでぐるぐる監視して、入力が来たら表示すれば良いと簡単に考えていました。
100 010 001 簡単ですが、
110 101 011 とか
111 の時は、どのようにすれば良いのでしょうか?
クロックをPLLしてガンガン回せば、複数同時は減るでしょうが
ゼロにはなりません。
複数来たら左の人優先とかやると、不公平だし。
0365774ワット発電中さん
垢版 |
2022/08/31(水) 05:53:05.15ID:xQbmLGWO
>>362
ループでコピーしたときに
*a++ = xxx;
より
a[i]=xxx;
のほうが遅いけど見やすいでしょ?って話よ。
for(i=0;;i++){
if(i==50) break;
}
みたいにforの終了条件なしはできるよ。

>>363
32bitでunion切れば1回でコピーされるよ多分。

>>364
マイコンのソフトの話じゃなくね?
111のときは引き分けにすれば?競馬だって100m走だって同着はあるしねなくせないよ。
んでも、今どきのマイコンで作れば同時に押されたってことになることは
ほぼないので実用上問題はないと思うよ。
0366774ワット発電中さん
垢版 |
2022/08/31(水) 06:16:37.94ID:PVPlLuQi
>>362
真ん中の条件省略したら無限ループになるよ(もちろんループ内のbreakで抜けられるけど)
for( ; ; ){ ... } で無限ループを作るのはよくある
0367774ワット発電中さん
垢版 |
2022/08/31(水) 06:19:51.91ID:xQbmLGWO
>>363
>>必要精度とかに関してはまだ実験中。先日までint長が要32bitでどうしようかと

ちょっとまて。
C言語ではintは16bit以上と定義されているので、
32bitが必要ならlongを使わなきゃ、たまたま動いてるだけでコードとしてはバグだよ。
0368774ワット発電中さん
垢版 |
2022/08/31(水) 06:21:24.73ID:PVPlLuQi
>>364
> 複数来たら左の人優先とかやると、不公平だし。
ランダムにするなり優先した回数数えておいて少ない奴にするなりすれば?
そもそも>>365の言う通りそんなことになることは滅多にないしそもそも入力をなにでやるのか知らんけどスイッチとかならスイッチのバラつきのほうが不公平になるわ
0371774ワット発電中さん
垢版 |
2022/08/31(水) 08:11:26.91ID:Yq0Va7Kw
stdint.h が使えるなら、ビット長に悩まなくてもいいような。
0372336
垢版 |
2022/08/31(水) 08:15:39.06ID:FqCsCUJS
>>367
整数拡張の話。入力値が8bitなどint未満の場合intに自動変換されるけど
計算式の途中でintの範囲を超える場合に言語仕様上どうなるのか調べきれなかった
自動的に更に長い型に変換されるという説明は見つけられなかったので処理系依存か?
基本的に長い型へ変換されるらしいのでどれか一つを32bit型にキャストして
おけば安全そうではあるが
0373774ワット発電中さん
垢版 |
2022/08/31(水) 09:16:22.01ID:UBx0QEJD
>>366
#define ever (;;)
ってやつですな。使ったことないけどなんかの技法書で見かけた
0374774ワット発電中さん
垢版 |
2022/08/31(水) 10:04:27.42ID:bCP2wB71
>>364
ABCの順で判別するループ
BCAの順で判別するループ
CABの順で判別するループ
この3つのループを繰り返せばいい
0376774ワット発電中さん
垢版 |
2022/08/31(水) 11:09:38.34ID:jgcahbPi
>>364
if( ABC != 0x00 ){
if( ABC==0x01 ){ printf('A'); }
if( ABC==0x02 ){ printf('B'); }
if( ABC==0x04 ){ printf('C'); }
}
で良いのでは?
0377774ワット発電中さん
垢版 |
2022/08/31(水) 11:21:49.33ID:JGBZXdB7
>>367
int が 16bit 以上って、C99 で決まっんだっけか?
元々処理系依存だったような。

stdint 使おうぜ。
0379774ワット発電中さん
垢版 |
2022/08/31(水) 12:05:32.26ID:UBx0QEJD
>>364
ぐるぐる監視するのはポーリング処理といいます。
割り込み機能を使った割り込み処理の方が見分けやすくなります。
より早く更なる厳密化を図るには、マイコンへの入力段で論理回路で組み識別しませう
0382774ワット発電中さん
垢版 |
2022/08/31(水) 14:21:18.14ID:cU2Cz5Qz
>>376
これだとサンプリング期間内に同時押しが発生したときに'A'が優先で不公平になってしまうんじゃないかな
サンプリングごとに
if( ABC==0x01 ){ printf('A'); }
if( ABC==0x02 ){ printf('B'); }
if( ABC==0x04 ){ printf('C'); }
を順次切り替えてどれか一つだけの判定をすれば「正確ではないかもしれないけれど平等」にはなると思う
0383774ワット発電中さん
垢版 |
2022/08/31(水) 14:36:14.64ID:JGBZXdB7
同時押しなんてほとんど発生しないんだから難しく考えるだけ無駄。
AチェックBチェックCチェック順番にやってグルグル回しとけ。
0384774ワット発電中さん
垢版 |
2022/08/31(水) 15:57:00.88ID:Avg/yhkX
>>364
それぞれのスイッチ入力毎に割り込みをかければ良いだけ。
 その後は、その割り込みの中で、全ての割り込みを禁止して、
たとえばピンポンと鳴らして、スイッチ別のLEDを点灯し、
ある時間経過後に、もう一度スイッチが押されたらLEDを消灯して、
全ての割り込み許可し、次のスイッチ・オンを待つとか・・・色々。
WDTを適当に仕掛けた方が良いかも。
0385774ワット発電中さん
垢版 |
2022/08/31(水) 19:36:03.43ID:zwOJ9pwO
>>374でよい
2つ同時入力されたときに、3つのループのうちのどの処理中であるかがランダムだからだ

当然1つ入力だったらどのループでも同じ
0386774ワット発電中さん
垢版 |
2022/08/31(水) 19:38:06.41ID:xQbmLGWO
>>372
処理系依存
16bit以下のCPUだと、16bitを超えたら0になるんだよ。
処理系に依存しない純粋なC言語として書くなら
longにしておくべき。

>>377
C89でもintは16ビット以上だよ
0389774ワット発電中さん
垢版 |
2022/09/01(木) 07:46:13.69ID:f5GQJvlc
>>387
この場合(3個のスイッチ操作による割り込み待ち)の割込み処理では、
最初に発生した割り込み要因の割り込みルーチンが実行される。
既に発生済みの複数の割り込み要因を順に(ラウンドロビンなど)処理するものでは無い。
0390774ワット発電中さん
垢版 |
2022/09/01(木) 08:07:34.39ID:ipYQJLJr
>>389
> 最初に発生した割り込み要因の割り込みルーチンが実行される。
だから同時に発生したらどれかの割り込みルーチンが「優先されて」実行されるだろ
0392774ワット発電中さん
垢版 |
2022/09/01(木) 09:04:31.33ID:ipYQJLJr
>>391
> PIN毎に別々の割り込みベクターがある前提かな?
そういうのは珍しくないけどだからと言って割り込みルーチンは同時に走らないだろ
見たことないけどマルチコアで同時に走る奴があったとしてもどこかで早押し判定するんだからそこで優先順位をつけるしかないし
0393774ワット発電中さん
垢版 |
2022/09/01(木) 09:08:21.14ID:1TO9jGwS
無理なんだってば・・
クロックが100GHzになったって1マシンサイクル以内に
2つ押されれば同時押し判定するしかないんだから。。

TVとかだったら「おおっと、これは珍しい、同時押しですよ引き分けとしましょう。」
みたいな進行にしてもらうか、右から順番に適当に優先度を付けて不公平にしておくしかない。
0396774ワット発電中さん
垢版 |
2022/09/01(木) 09:17:44.44ID:WqDtDeZF
相当へぼなプログラムでもない限り 全く同時なんてことは 現実的にはほぼ起こらないだろうけど
別に人類の命運がかかっているわけでもなく タダの遊びに使うのなら
同時検知時は 内部的には 処理的にはどっちが速かったかを乱数で決めて 
対外的には 機械がわずかな差をとらえたんですねー ってことにしとけばいいだろう(^p^)
0398774ワット発電中さん
垢版 |
2022/09/01(木) 10:43:45.57ID:hvleZJxq
>>390
説明するまでも無いと思って省略したけど、当然スィッチ別に割り込みが可能な話です。
割り込みトリガ処理はCPUのハードウェアが担当するので(FFなどで)、
ハードウェアレベルで同時に(多分数nS〜数十nS以内に?)事象が発生したら、
CPUの処理順序はクロックのタイミングなど運次第という事になる。

>>396
「わ〜ん、僕の方があの子より5nS早く押したのに、機械のバカ、バカ」とかクレームがつくぞw
0399774ワット発電中さん
垢版 |
2022/09/01(木) 11:11:52.11ID:gMbapYNJ
ケーブルの静電容量や抵抗、ボタンのONストロークやON加重、スイッチのチャタリング等を無視して
判定機のnsオーダーの衝突を議論してもほとんど意味がない
比較的シビアな判定が要求される格ゲーとかでもせいぜいフレーム(16.67...ms)オーダーだし
msオーダーを判別できれば実用上問題ないのでは
0400774ワット発電中さん
垢版 |
2022/09/01(木) 11:45:36.22ID:ipYQJLJr
>>398
> CPUの処理順序はクロックのタイミングなど運次第という事になる。
ハードに詳しくないんだろうけど今時の論理回路はクロックで同期されてるからクロック内で両方の信号が立ち上がったら同時と見なされて予め設定されてる「優先順位」に従って処理される
運次第とかないからw
0402774ワット発電中さん
垢版 |
2022/09/01(木) 12:12:07.51ID:V1wwAQKo
>>391
>>384はそういう前提に読めるし
同一なら結局ソフトで判定する事になる
いずれにしろ>393の通り

それより
座席の位置差による問題音声到達による不公平は
どう解消してるんだろうか
0403774ワット発電中さん
垢版 |
2022/09/01(木) 12:13:09.64ID:WqDtDeZF
早押しにハンデの時間設定機能に挑戦しよう

B選手は強いので早押しに三秒のハンデです 押してから三秒間は他の人の早押しが優先です!!
C選手は2秒のハンデです   ・・・みたいな。
0404774ワット発電中さん
垢版 |
2022/09/01(木) 12:44:04.12ID:1TO9jGwS
それよりも、距離差による電圧降下で、たとえ同時に押しても、
ポートラッチするしきい値まで到達する時間に差が出てしまう。
この不公平をどう解消してるんだろうか
0405774ワット発電中さん
垢版 |
2022/09/01(木) 12:50:15.85ID:p7X030ky
一方ロシアはリレーで先押し回路を組んでCPUに配線した
0406774ワット発電中さん
垢版 |
2022/09/01(木) 15:05:56.52ID:izGKDh1Y
仮にハードウェアで実装したとしても素子の動作には時間が必要なんだし一定間隔以下判別は不可能でしょ
0407774ワット発電中さん
垢版 |
2022/09/01(木) 16:07:41.16ID:WqDtDeZF
同時は同時で表示して
同順の子同士で じゃんけんとかで決めて貰えば良いんでね?
0408774ワット発電中さん
垢版 |
2022/09/01(木) 16:07:50.38ID:GL6YrNvN
どちらが早いかなんて観測者によって変わるんだから全くの公平なんか存在しない

相対論を勉強しなさい
0409774ワット発電中さん
垢版 |
2022/09/01(木) 16:19:37.66ID:WqDtDeZF
ぷぷー
まだ相対論なんて信じてるの?
0410774ワット発電中さん
垢版 |
2022/09/01(木) 16:39:46.59ID:FcqBcwXf
ダークマターやダークエネルギーは
相対論と量子論の綻びだと思うが
将来それらが補強されることはあっても
否定されることは無いだろう
0411774ワット発電中さん
垢版 |
2022/09/01(木) 16:42:01.48ID:WqDtDeZF
特殊〜は 既に信憑性高くて
一般〜は まだ仮説に過ぎないという話を聞いた。しらんけど
0412774ワット発電中さん
垢版 |
2022/09/02(金) 08:48:38.13ID:gMv5gVhp
マニアックになりすぎて質問者がいなくなるという、ありがちなパターン
0414774ワット発電中さん
垢版 |
2022/09/03(土) 13:48:19.14ID:WAHpJzEV
切って切って切りまくった神回

桃太郎侍にも大江戸捜査網にも子連れ狼にも負けてない
0416774ワット発電中さん
垢版 |
2022/09/04(日) 03:39:23.67ID:nsenM16E
>>413
顔文字 ウザ
0417774ワット発電中さん
垢版 |
2022/09/05(月) 11:31:32.95ID:VzKR3EDw
>>404
何で席位置に特化して電線短くするんだよ・・・
各スイッチへの電線長さ同じにしとけばいいだろw

それでも見込まれる電線加工誤差起因の距離バラツキのフェムト秒オーダーの差が不公平だって?
そこまでいけば運も実力の内だ!あきらメロン
0418774ワット発電中さん
垢版 |
2022/09/05(月) 11:32:00.02ID:VzKR3EDw
あ! うっかり顔文字忘れてた(^p^)
0421774ワット発電中さん
垢版 |
2022/09/05(月) 14:49:50.88ID:VzKR3EDw
七廻り半って抵抗値もリアクタンスもシャレにならなさそうやな・・・中継用のリピート局設ければいいのか?
0422774ワット発電中さん
垢版 |
2022/09/06(火) 14:22:40.79ID:TRs53LPB
光は直進するはずだが
7.5回も廻れるほど地球の重力はでかいのか
0423774ワット発電中さん
垢版 |
2022/09/06(火) 15:03:15.08ID:5x52KjlE
比喩表現
0424774ワット発電中さん
垢版 |
2022/09/06(火) 15:07:08.05ID:pon7wDCh
光が直進するだなんて迷信です。

そのメカニズムは、ホイヘンス波(素源波)を持ち出さなくても説明できる。
結論から言うと、東海道新幹線のレールに沿って進んでいるのだ!!(^p^)
0425774ワット発電中さん
垢版 |
2022/09/06(火) 20:18:08.17ID:9tVCLg80
>>424
顔文字 うざい
0427774ワット発電中さん
垢版 |
2022/09/07(水) 16:07:02.51ID:mj1B1d4m
光にまとめると基本通話料が今なら三か月無料キャンペーンなんじゃね?しらんけど
0428774ワット発電中さん
垢版 |
2022/09/16(金) 08:57:42.05ID:RZbdKLa3
ファイルコンペアがしにくい時代になって世知辛いでう;
フリーソフトも怖くてなぁ・・・
0430774ワット発電中さん
垢版 |
2022/09/16(金) 10:53:43.91ID:RZbdKLa3
DOSの頃はfcとか、
VisualCの頃はWinDiffとかでファイルの差分比較がし易かったけど
最近は皆さんどうされているのでしょう? みたいなノリです
0431774ワット発電中さん
垢版 |
2022/09/16(金) 11:31:21.30ID:eR7Rvhck
fcは一致不一致をerrorlevelで返してくれないので使いにくかった
0432774ワット発電中さん
垢版 |
2022/09/16(金) 12:47:14.38ID:rofojeSk
>>430
WinMargeというのがお勧めです。
0435774ワット発電中さん
垢版 |
2022/09/22(木) 21:46:21.32ID:Khb3y+JS
>>430
仮想マシン下でLinuxインストールして
共有フォルダにしてるわ。
Linuxはコマンドラインツールが豊富だしね。
WSLも良いんだろうけど
0438774ワット発電中さん
垢版 |
2022/09/23(金) 09:20:41.42ID:G4vCvJNC
>>436
フリーソフト怖いとか言ってたら、
少なくとも半分のwebサービス使えない。もちろん5chも。
0440774ワット発電中さん
垢版 |
2022/09/23(金) 18:09:53.31ID:itppqrTy
OSSは怖くないが、OSSでないフリーソフトが怖いってのはわからなくはない。
0441774ワット発電中さん
垢版 |
2022/09/24(土) 00:03:39.67ID:4Iihwbt4
確かに怪しいフリーソフトあったな。
昔は入れてパソコンめっちゃ調子悪くなったことある。
今あるのか知らないけど、
晒されるやつとか怖すぎるよね。
0442774ワット発電中さん
垢版 |
2022/09/24(土) 05:00:04.54ID:wLZVeb8U
じゃ全部じまえで作ろうか。
0443774ワット発電中さん
垢版 |
2022/09/24(土) 08:32:34.10ID:QznOtN6n
フグと同じで、最初は一部の人が手を付け、あとから大衆がついてくる。
無難であることを優先する人は、評判を探してから導入するかどうか判断するよな。

セキュリティソフトもある程度は役立つ。
動作が重くなったり誤作動のトラブルとかでデメリットもあるけれど、メリットは見えにくいしね。
0444774ワット発電中さん
垢版 |
2022/09/25(日) 19:59:41.69ID:CM9pjEQY
MPLABXIDEの中に比較機能あったわ紹介してもらったのにサーセン
0445774ワット発電中さん
垢版 |
2022/10/24(月) 23:10:03.96ID:dYp1TtYY
今マイコンで日本語入力を実装するにはどんなアプローチがあるんだろ?
とりあえずPCベースで使えそうな日本語入力エンジンを探してみると
・Qt Virtual Keyboard(OpenWnn for C++)
・Canna
・SJ3
・Mozc
あたり?メーカー提供のコードと衝突しやすいGPLやLGPLは除外した
フットプリント的にDOSのFEP程度が上限だろうからMozc以外のどれか?調べてないけどMozcはでかそう
全てに言えることだが実装の解説やポーティングガイドみたいな資料は見つからない
0447774ワット発電中さん
垢版 |
2022/10/31(月) 16:54:04.49ID:uAlCFgwG
御菓子をくれなきゃイタズラするぞ(英訳するとトリックオアトリートってやつ)って
刑法で禁止されている強要・脅迫行為じゃないかと思うのですが
なんで蔓延っているのでしょうか。少年法かなんかですか? しらんけど(^p^;
0448774ワット発電中さん
垢版 |
2022/10/31(月) 17:07:10.82ID:mqkahj6D
日本にはアホニーチャンやアホネーチャンがいっぱいいるから
0450774ワット発電中さん
垢版 |
2022/10/31(月) 18:35:15.83ID:TFzq/GCt
       彡 ⌒ ミ
       (´・ω・) まったくハゲはしょうがねえな…
   ____(____)__
 / \    旦   __\
<\.※ \____|\____ヽ
 ヽ.\ ※ ※ ※| |====B=|
0451774ワット発電中さん
垢版 |
2022/10/31(月) 20:03:29.51ID:Xrn5ygLT
>>447
お菓子をくれないと(性的な)悪戯するぞ?
こどおじならしてもいいんだよな?w
0452774ワット発電中さん
垢版 |
2022/11/01(火) 09:19:10.45ID:PYkv7ISU
私の禿は生ではありません
殺菌処理済みです
0453774ワット発電中さん
垢版 |
2022/11/02(水) 09:37:20.90ID:v9LTAEGy
おいこら誰が許可した! 全く、勝手に禿げ散らかしやがって・・・
好き嫌いせず、がまんして納豆食え納豆! エストロゲンを補給するんや!!(^p^)
0454774ワット発電中さん
垢版 |
2022/12/11(日) 14:59:13.75ID:D/Y+6WhY
スレ違いですが、適切な場所がわからなかったのでここで質問しちゃう

汎用のマイコンFPGA基板を作るんですが、
出来るだけ汎用的に実験や学習出来る基板をコンセプトに、
モーター制御、カメラ制御、ネットワーク、高速計算、アナログ

質問は
この機能やこのIC載が乗ってると周辺回路の制作手間が簡単に出来て
便利そうなのをあらかじめ搭載しておきたい。

例えば
汎用オペアンプ(計測)
ゲートドライバ(FET付ければすぐ動かせる)
レベルシフター(3V-5V相互とか)
リアルタイムクロック
パワーFET
FPC(フラットケーブル)コネクタ
スリープ時のバックアップボタン電池ソケット
12V電源から受電回路(24Vか?)
0455774ワット発電中さん
垢版 |
2022/12/11(日) 15:04:32.08ID:D/Y+6WhY
など、載せとくとはかどるICや機能ってありますか?
基板作ってから、あーあれ乗せとけば良かったって後悔すると思うので
アドバイスをお伺いしたいです。
0457774ワット発電中さん
垢版 |
2022/12/11(日) 17:36:18.09ID:HM3uWGMx
汎用って言ってもなぁ
普通の評価ボートと同じような感じじゃないの?
マイコンの規模にもよるしなぁ
んでも、usbシリアルとパラシリ・シリパラはのっけとくかな
0458774ワット発電中さん
垢版 |
2022/12/11(日) 18:27:42.93ID:D/Y+6WhY
>>457
レスありがとうございます。
そうです、普通の評価ボードなみのもの、汎用って言ってもその程度です。
raspberry pico と FPGAロジックゲート2万 で考えてます。
シリパラ、パラシリですね、これは必要ですね。
0461774ワット発電中さん
垢版 |
2022/12/13(火) 18:27:07.85ID:Codryg8v
>>459
MAX10なら基板に実装済のが買えると思う。
USBブラスターも互換品なら安いし、もどきなら自作も可能。
0462774ワット発電中さん
垢版 |
2023/02/21(火) 01:28:41.33ID:/JjDnBtb
ドシロートです。
マイコンからTeraTermとかのターミナルソフトに文字を書くとき、
0x41 (右1つ) 0x42 (右1つ) 0x43 と、桁が右に1つ移動する信号を送信しなくても
0x41 0x42 0x43 と 文字の分だけ 3byte送信 すれば、ABC と、1桁ずつ右にずれて
表示されます。これはなぜですか?
ターミナルが桁移動をやってくれるのでしょうか。

そうだとすると、
バックスペースキーで直前の文字表示を消したいときは、
0x08(BS)を送って1文字左にずらしても、ターミナルがすぐに右に1つずらすので、
一生左には行けないということでしょうか?
0463774ワット発電中さん
垢版 |
2023/02/21(火) 02:00:40.24ID:AmA8EbUp
>>462
エスケープシーケンスでググる
TeraTermがデフォルトでどういう端末をエミュレートしてるか調べる
0464774ワット発電中さん
垢版 |
2023/02/21(火) 04:12:07.49ID:yYdstOUk
>>463
VT100ではないか?
0465774ワット発電中さん
垢版 |
2023/02/21(火) 09:28:34.11ID:Hvf5FDmo
>>462
通信端末ソフトは通信データを
ログとして表示してんよ
液晶表示器のドライバが念頭にあるのなら
もちろんそういう管理もしてくれている。

左にカーソルを動かしたいならキャリッジリターンとよばれる制御文字を送ればいいんじゃね?質問の趣旨に適うのかしらんけど(^p^;
0466774ワット発電中さん
垢版 |
2023/02/21(火) 09:50:41.83ID:yYdstOUk
>>465
何言ってんだ?オマエ。
知らんなら黙ってろ。
0467774ワット発電中さん
垢版 |
2023/02/21(火) 09:52:08.55ID:nH5jlCUd
BSバックスペースは大抵は
0x08
0x20
0x08
の3bytesを送信する
0468774ワット発電中さん
垢版 |
2023/02/21(火) 13:13:17.45ID:/JjDnBtb
>>467
ありがとうございます。
ということは、BSの場合は特別に、次の桁に移動しないということでしょうか。
・BS   1つ戻る が、その場に留まる
・' '   スペース1つ書いて、自動で右に行く
・BS   1つ戻る が、その場に留まる
これで、都合1つ前を消したように見える。

関連で教えてください。
RS232は、その昔、電動タイプライターによる通信だと聞いたことがあります。
CR, LF, TAB などは、ヘッドが先頭に戻る、紙が1行分上に移動する、決まった桁数送られるなど、
非常にイメージが湧くのですが、BSはどのように使われたのでしょうか?
ヘッドが1つ左に戻るのはわかるのですが、
スペースを打っても、すでに打刻した文字が消えて無くなるわけではないですし。
'-'でも書いて「訂正だよ」とするのか。
0469774ワット発電中さん
垢版 |
2023/02/21(火) 15:06:42.34ID:d01kFuqe
マイコン以前のタイプライターは
$を打つときは
S+0x08+|
と打鍵していた
しらんけど
0470774ワット発電中さん
垢版 |
2023/02/24(金) 10:18:01.38ID:gSyGlnEW
>>468
>BSの場合は特別に、次の桁に移動しないということでしょうか。

違う
0x00-0x1F の制御コードがそれらの機能を果たした後の位置にカーソルが留まる
0x08 はその一部
0471774ワット発電中さん
垢版 |
2023/02/24(金) 10:37:38.35ID:d1cCbwaT
£を打つときは
L+0x08+=
と打鍵していた
しらんけど
0472774ワット発電中さん
垢版 |
2023/02/25(土) 12:38:21.12ID:HXzwxbtz
>>470
>0x00-0x1F の制御コードがそれらの機能を果たした後の位置にカーソルが留まる
ありがとうございます。
そういうことですか。0x1Fまでは留まり、0x20以上は次桁移動、ですね。
納得できました。
どうもありがとうございました。
0473774ワット発電中さん
垢版 |
2023/02/26(日) 18:16:33.84ID:4/c6qAtz
お願いします。
C言語で、長い数値に L を付けるようです。
#define FREQ 8000000L
このLについて検索したいのですが、検索キーワードがわかりません。
何の意味でしょうか、付けないといけないのでしょうか。
0474774ワット発電中さん
垢版 |
2023/02/26(日) 20:18:11.38ID:S+ttzyRS
>>473
そのLはlong型のL
付けた方が文法的に正しいが、付けなくても今どきのコンパイラなら空気読んでよろしくやってくれる
0475774ワット発電中さん
垢版 |
2023/02/26(日) 22:31:27.72ID:4/c6qAtz
>>474
ありがとうございます。
LongのLですか。なるほど。intはIとでもするのでしょうか。

なぜに こうしなければならないのでしょう。
コンパイラか「Lを付けてくれ」ていうことですよね?
0477774ワット発電中さん
垢版 |
2023/02/27(月) 15:53:58.37ID:3VB/5sXD
釣り臭い質問者だが
デフォがintなのでIは付けない
L付けないとintに代入したとき
オーバーフローしてて困ったりする
L無しからlongに代入は符号拡張も気にしないといけない
最近は善きに計らえでも良いけど知らないのは問題ある
0478774ワット発電中さん
垢版 |
2023/02/27(月) 16:38:40.38ID:5RWzXlIJ
♪L? L!  LはLIPのL!
このくちびるに 燃える愛をのせて
Lはあなたをみつめてる〜(^p^)
0479774ワット発電中さん
垢版 |
2023/02/27(月) 23:01:28.18ID:1b3JMfPn
>>475
多くの場合はコンパイラが空気読んでくれるが、意図しない処理になる場合があるから、型はしてしておいた方が良い。
0480774ワット発電中さん
垢版 |
2023/02/27(月) 23:58:43.60ID:xt4hWSnl
>>476, 477, 479
ありがとうございました。今後は注意するようにします。
ありがとうございました。
0481774ワット発電中さん
垢版 |
2023/03/03(金) 20:00:21.87ID:eo+RrQBr
C言語 サフィックス
で検索したらいいよ
型に関連するコーディングルールはMISRA-C が参考になるよ
趣味レベルなら意識しなくてもほとんど困らないと思うけど
0482774ワット発電中さん
垢版 |
2023/03/05(日) 21:33:30.10ID:cEYjPgXT
シリアル通信での質問です。
PCとマイコン間で通信する手段としてシリアルポートを使います。
大き目のデータをマイコンに送る際、WindowsではTera Termからファイルを送信すれば実現できますが
開発プラットホームがLinuxの場合以下のコマンドは存在しますが、ファイルの送信ができません。

cu:ファイル送信のオプションがない
zmodem:モデムのハンドシェイク手続きが必要?ファイルと関係ない文字が送られる。
screen:ファイル送信のオプションがない

単にhexファイルやelfファイルなどのASCIIコードがまとめて送れればいいのですが
何も言わずにファイルの先頭からシリアルポートへ送るコマンドありますか?
0486774ワット発電中さん
垢版 |
2023/03/05(日) 22:30:24.37ID:ytl+fznw
データ転送は
cat <file_name> > /dev/ttyS0
cat <file_name> > /dev/ttyUSB0
ttyS0,ttyUSB0等はデバイス名

通信速度は
stty -F /dev/ttyS0 9600

らしい、やった事無いけど
0487774ワット発電中さん
垢版 |
2023/03/05(日) 22:59:59.54ID:cEYjPgXT
>>483,484,485,486
おーcatの標準出力先でいいのですねー
単純なシリアル通信エコーバックを実装したマイコンから全部返ってきて成功が確認できました。
ありがとうございます。
Windowsばっかり触って、そういう発想が出ないです。
失礼ながら、みなさんさすがですね。
ありがとうございました~^_^
0488774ワット発電中さん
垢版 |
2023/03/06(月) 00:58:35.70ID:Olfx8QBS
>>487
このスレの人は、結構頭いいと思う。
現場経験に裏打ちされてる感じがする。
0490774ワット発電中さん
垢版 |
2023/03/06(月) 15:09:02.41ID:MXqsyCV5
デバイスをファイルとして扱うのはUnixが先輩。
Windowsが倣っただけ
0491774ワット発電中さん
垢版 |
2023/03/07(火) 09:46:12.94ID:sc2gQref
WindowsというかDOSというか。

DOSの事を UNIXもどき と書こうとして
UNIXもがきとタイポしたライターさんが
面白がってそのままその表現を使った、みたいな話もあったらしいですな・・・

そういえばビルゲイツ猊下の功績はBASIC言語に関するもので、
MS-DOS自体は他人の開発品を買い取ったものだとかいう話を聞きかじりました、いわく、
開発者自体はくいっくあんどだーてぃーおーえすでキュードスとか呼んでいたとかなんとか;ホントかどうか知らんけど
0492774ワット発電中さん
垢版 |
2023/03/07(火) 11:27:51.62ID:h1KNJgMf
digital research ?
0494774ワット発電中さん
垢版 |
2023/03/08(水) 07:56:47.07ID:E7qnVlpg
>>491
当時標準だったCP−Mの互換OSをどっかの会社がつくったのをマイクロソフトが買い取った。

汚い造りとか言うが、当時のコンピューターの性能考えたら、みてくれにかまってる余裕無いと思う。
0496774ワット発電中さん
垢版 |
2023/03/08(水) 08:25:00.05ID:45B+NZus
買い取った製品を熟成させるのも立派な仕事やで。
0497774ワット発電中さん
垢版 |
2023/03/08(水) 08:47:35.11ID:TUEI8WnO
というか多くの産業が他人が生み出したものを単独または複数の団体や個人がブラッシュアップすることを積み重ねてきたわけだし。

悪く言う人の視点って、たいていの場合悪く言うための視点だしね。
0498774ワット発電中さん
垢版 |
2023/03/08(水) 08:59:54.10ID:/25HUXPj
>>497
「マイクロソフト帝国 裁かれる闇」という本にMSの汚いヤリクチが詳しく書いてある
読んだら考えが変るかもしれない
0499774ワット発電中さん
垢版 |
2023/03/08(水) 10:37:52.67ID:4VHH4JZV
任天堂といい マイクロソフトといい いやはや
この世には、神も仏もいないのかと思うよね(^p^;しらんけど

諸宗教の神は ヒトに智慧のみは与えるな、
子供には鞭で訓育しろという価値観だし
逆に人に知性や火を与えるのは悪魔や悪い神という構図構成、
仏教も本来は生老病死という苦痛に満ちたこの世の輪廻からどうすれば脱却(解脱)できるか?を
解いてた宗教なわけでこの世に留まり暮らす事を是とする様な現状の大衆宗教の教えとは真逆な物だし、で。
まぁありていに言って地獄だよね、ここは。しらんけど(^p^)
0500774ワット発電中さん
垢版 |
2023/03/08(水) 12:59:13.09ID:nYm+NkEg
Microsoft傘下のChatGPT
学習内容に政治的な偏りが出ることは必至
価値が下がったように思える。
0501774ワット発電中さん
垢版 |
2023/03/09(木) 10:04:52.24ID:VeOBPgEK
>「マイクロソフト帝国 裁かれる闇」という本にMSの汚いヤリクチが詳しく書いてある

マーガリンはプラスチックと書かれた本を見たらバター派になる、みたいな単純な話。

書かれてなくても、ほかの企業も同様の汚いヤリクチをやってきているだろう、ぐらいの
ことは考えたいもの。(ほかの巨大IT企業に闇がないとでも?)

今の俺たちの快適な生活環境も、たくさんの戦争や幸せな発展や汚いヤリクチや人の不幸の上に
成立してるんやで。それもまた原罪といえば原罪。
0502774ワット発電中さん
垢版 |
2023/03/09(木) 10:07:17.39ID:iyMHjcGd
そのMSといまのMSは違う会社
0503774ワット発電中さん
垢版 |
2023/03/09(木) 12:46:15.54ID:mluhr5Ts
「汚い」にもピンからキリまであるし
白鳳のエルボースマッシュみたいなものもある
0504774ワット発電中さん
垢版 |
2023/03/09(木) 12:46:15.73ID:mluhr5Ts
「汚い」にもピンからキリまであるし
白鳳のエルボースマッシュみたいなものもある
0505774ワット発電中さん
垢版 |
2023/03/10(金) 08:52:30.79ID:7ou7roIk
そういや印度でその名前つかうなといちゃもんつけられて商標訴訟起こされて
裁判に勝って名乗り続けている方のマイクロソフト社はベビー服屋さんだったっけか。
産着出す予定でもあったのだろうか? 印度人もびっくり

ララア専用モビルアーマーの名前変えさせた有名某社も、そんなら
とっととモバイルアーマーの販売をはじめんかい、とも思うが;
0506774ワット発電中さん
垢版 |
2023/03/10(金) 09:14:52.75ID:oIw2f0Vj
かつてマイクロソフトを分割しろと集団で訴えていた会社たちは、
本質的には、マイクロソフト的なものをダメだと言っていたわけではなく、
自分がマイクロソフト的なものになりたいがために、
トップにいたマイクロソフトを引きずり落としたかったんだんだよな。
0507774ワット発電中さん
垢版 |
2023/03/10(金) 16:22:15.68ID:TgbPlhkE
車に轢かれて道路上に転がっているスカンクとMSの弁護士の違い

 スカンクの前の路上にはブレーキ痕があるが、MSの弁護士の前には
 アクセルを目一杯踏み込んだ痕がある。
0508774ワット発電中さん
垢版 |
2023/03/10(金) 16:34:59.39ID:7ou7roIk
戦果が予想外に低かった時に、過大な戦果を見込んで結んだ法外な契約金の
支払いを渋った某社が暗殺を依頼という可能性はどれくらいあるのだろうか?しらんけど(^p^;
0509774ワット発電中さん
垢版 |
2023/03/10(金) 16:51:09.88ID:xjJQmGdW
Winny観てきた
おまいらも観てこい
0513774ワット発電中さん
垢版 |
2023/04/11(火) 23:16:06.25ID:kMvdeFMu
RTOSの比較って使ってみるしかないの?
無償で試せるのだけでも軽く二桁あるんだが
0515774ワット発電中さん
垢版 |
2023/04/12(水) 23:20:37.64ID:Xc6cfLms
>>514
サンクス。読んでみます
最近はRTOSと言いつつリアルタイム処理よりアプリケーション開発基盤として語られていることが多いように感じます
みんな大好きFreeRTOSもアプリケーションの開発関係の記事ばかりで、本来のRTOSや組み込みOSとしての
解説や評価などはほとんど見ないような・・・
時間管理はもちろん、内部構造の把握のしやすさとか、移植性とか、抽象化レベルとか
自作すると面倒くさい問題の解決を支援してくれる機能とか
0517774ワット発電中さん
垢版 |
2023/04/13(木) 14:47:33.37ID:NDSWE/BV
実用性あるもの作ろうとしたらマルチタスク無いとほんと苦労するから。
msecオーダーのユーザーインターフェイス程度のリアルタイム性はRTOSで設計。
計測やナノ秒リアルタイム性求めるアプリなら、FPGAかASICで設計しないと。
0518774ワット発電中さん
垢版 |
2023/04/13(木) 20:08:03.54ID:i+vdzxyn
「リアルタイム性」を理解してない奴がなんでこんなところに居てんの?
0519774ワット発電中さん
垢版 |
2023/04/13(木) 21:37:52.76ID:00gXTBgm
>マルチタスク無いとほんと苦労するから。
複雑な仕様を「割り込み+ポーリング」のシングルタスクで作るのは
プログラムが大きくなって時間が掛かるし、バグも生まれやすくなる。
0520774ワット発電中さん
垢版 |
2023/04/14(金) 01:01:24.81ID:7C3rzM9J
そのマルチタスクのルールやクセも理解せずにプログラムして、
デバッグもできない深刻なバグを作るところまでがセットだな。
0523774ワット発電中さん
垢版 |
2023/04/14(金) 08:38:52.33ID:Gw7/C3AR
自分で作れば理解なんかする必要は無いw
大昔、AVRのTiny2313用のタスクディスパッチャ作ったけど、役に立っている。
アセンブラで言えばアブソリュートでifもmacroも無いようなもんだけど、
こんな原始的ものでも有ると無いとじゃ大違い。
0524774ワット発電中さん
垢版 |
2023/04/14(金) 10:03:25.24ID:lSfmkjYo
出た、タスクディスパッチャさん
0526774ワット発電中さん
垢版 |
2023/04/14(金) 14:11:49.47ID:50JZFw0s
新プラトン派の連中も、「プラトンが言っている事は正しい、が
プラトンは自分が言っている内容を理解はしていなかった」ってことで
プラトン派と たもとを分かったらしいで; しらんけど
0527774ワット発電中さん
垢版 |
2023/04/14(金) 19:00:55.75ID:6KPiKJ0W
「msecオーダーのユーザーインターフェイス程度のリアルタイム性はRTOSで設計。」

www
0528774ワット発電中さん
垢版 |
2023/04/14(金) 19:04:55.33ID:thMiMmbe
>>519
OSを使う方がはるかに複雑でコードサイズも大きくバグも生まれやすい
そもそも、同期の仕組みもなくmsオーダーでしかスイッチできないようなものはRTOSとは呼べない
0529774ワット発電中さん
垢版 |
2023/04/14(金) 19:12:57.43ID:7C3rzM9J
ディスパッチャさんのマルチタスクはすごいんだぞ!
アセンブラしか使えないし、俺ルールだらけで他人には全く使いこなせないんだぞ!
0532774ワット発電中さん
垢版 |
2023/04/14(金) 20:28:39.67ID:JSIOuvbU
今のご時世にマルチタスキングが難しいとか言っている人は
プログラミングのパラダイムがシングルタスクのままなんだろ
「動けばおk」みたいな設計をしていたらそりゃ大変で当然だわ
0533774ワット発電中さん
垢版 |
2023/04/14(金) 21:29:21.34ID:7C3rzM9J
アマチュアにマルチタスクが当たり前なんて風潮があるか?
当たり前に使ってるのって職業プログラマだけだろう。
数十年マルチタスク使ってるけど、話が通じる素人さんなんて見たことない。
0534774ワット発電中さん
垢版 |
2023/04/14(金) 22:02:41.76ID:thMiMmbe
OSレスでもRTOSでも巨大OSでも組めるのがプロ

ディスパッチャ君のはOSでも何でもない
ただのゴミ
0535774ワット発電中さん
垢版 |
2023/04/14(金) 22:07:06.71ID:thMiMmbe
ただのキー処理やLED点滅処理や低速通信の為にマルチタスクOSが必要
なんて言ってるアホ
ソフトウェアの基礎から勉強し直せ
0536774ワット発電中さん
垢版 |
2023/04/14(金) 22:31:00.05ID:GfTc/8WP
それはどうかな?
8x8のLEDマトリックス各ポイントを違うタイミングで点滅させるような場合
OSを使う方がはるかに簡単で正確な点滅ができると思うよ。
遅い通信でも同期通信のような場合、常にtimer使って監視するより
OSのタスクで監視したほうが簡単。

いづれもOS必須ではないけどね。
使えるなら使ったほうがアホでは無いと思うよ。
0537774ワット発電中さん
垢版 |
2023/04/14(金) 23:27:30.11ID:0SQ7gaig
「必要である」と「そっちの方が楽」では噛み合わんよな。

「OS」を「コンパイラ」に置き換えたらわかると思う。
0538774ワット発電中さん
垢版 |
2023/04/15(土) 03:47:55.71ID:Q6zbZW5T
「そっちの方が楽」ねぇ・・・
>>536程度でOS持ち出すかねぇ・・・
100個や1000個の時間監視ごときに・・・
0539774ワット発電中さん
垢版 |
2023/04/15(土) 06:55:23.92ID:Q6zbZW5T
ごく一例なんだけどさ、
ウチの場合、仕事でOS使うのは個人差を無くすためなんだよ。
スキルなんてそうそう身につかないよ。
OSには良くも悪くもルールがある。
それを覚えれば確かにある種のバグは減る。

でもそのルールを全部覚えるのも大変だよ。
OS使ったが故の、理解不足が故のバグだってあるよ。

そして仕事してて「こんなのにOS要るか?」ってのも非常に多い。
もちろん必須な場合だってあるんだけどさ、趣味でそこまでするの?
したっていいんだけど、しなくてもバカ呼ばわりされることじゃないなあ。
決して「楽」だけじゃない。その前に相応の「苦労」と言う代価がある。
価値は人それぞれ。
0540774ワット発電中さん
垢版 |
2023/04/15(土) 08:08:23.30ID:LdxsDLtJ
他人が「自分がやるときはこっちの方がいい」って言ってることに深く干渉することはないよな。
当人しかわからないメリット、デメリットの判断に至る条件っていろいろあるんだし。
0541774ワット発電中さん
垢版 |
2023/04/15(土) 12:35:54.84ID:yLJ6fuHY
そもそもマトリックス状に並んでるLEDの一個一個を個別に制御する必要があるのかから考えてくれよ。

それでも「ある」とか言い出して引かないんだろうな。プロジェクトにいて欲しく無いタイプ。
0542774ワット発電中さん
垢版 |
2023/04/15(土) 13:44:02.32ID:LdxsDLtJ
課題はそういうものだし。
技術を理由に要求を合理化しても、まず問題がないのは自分たちで閉じているプロジェクトだけだと思う。

できない、あるいは、めんどうな場合は、しないという選択もありなわけだし。
0545774ワット発電中さん
垢版 |
2023/04/15(土) 16:53:00.35ID:gKyD+Bo9
>>543
言葉尻だけ捉えて突っ込むなよ。 >536 はマトリックス状の
個々にタイマーリソースを振り当てて制御しようとか頓珍漢な
条件後付けをしてんだわ。
普通そんなのしないよね?個々に制御したいなら送るデータを
加工したり、タイマーの時間を調整するよね?
0546774ワット発電中さん
垢版 |
2023/04/15(土) 18:01:29.68ID:LdxsDLtJ
> >536 はマトリックス状の
> 個々にタイマーリソースを振り当てて制御しようとか頓珍漢な
> 条件後付けをしてんだわ。

>>536がそんなこと言ってるかな?
マイコンのテクニカルな話をする前の問題。

技術者って(ときには専門外の)相手の意図をくみとって、形にする仕事だと思う。
より前向きに書かれていない行間から合理性を拾って合意や落としどころを形成することも仕事の重要な要素だよ。

なのに、書いてあることを誤って解釈してちゃだめだ。せめて書いてあることはよく理解しようぜ。
0547774ワット発電中さん
垢版 |
2023/04/15(土) 18:47:55.47ID:pJ4eYr9+
もっと簡単な例

LED3個をそれぞれ3,5,7msec間隔で点滅させる場合、書けないことはないけどちょっと大変。
OSのタスクを使うと、以下で済む

Create_task(A)

while()
{
ledA_ON;
delay(3);
ledA_OFF;
delay(3);
}


delay時間と対象のLED変えてタスクB、タスクCを同じく作るだけ。
0548774ワット発電中さん
垢版 |
2023/04/15(土) 21:34:41.19ID:pJ4eYr9+
4月だから会社に新入社員が入ってきてるやん。
もし新入りくんが「その処理ならRTOS使えば楽勝っすよ」って先輩さしおいて提案する場面があるかもしれないやん?
技術屋なんて年齢と関係なく知識で逆転されてることなんてザラにあるでしょ。
その時、先輩としてどう反応するの?
「ばーかOSなんか使わないでシングルタスクで作ってろ」 とか言うわけ?
その新入くんは、それ聞いて転職を考え始めるんじゃないか?
0549774ワット発電中さん
垢版 |
2023/04/15(土) 22:00:51.86ID:bygmGLxo
>>547
別々のタスク書くなら別々の関数作ればいいだけじゃね?
それを「ちょっと大変」って思うかな?
0550774ワット発電中さん
垢版 |
2023/04/15(土) 22:24:05.76ID:pJ4eYr9+
>>549
関数だとwhileから抜けられないし、delayで3msec処理止まるやん?
タイマー使って、ONタイミングOFFタイミング作ってってやってるとできるけどさ。
めんどくさくない?
時間とタイミングの処理おまかせで考えなくてもいいから楽だよ。
0551774ワット発電中さん
垢版 |
2023/04/15(土) 22:25:31.46ID:kdwwIGYa
1msでループ回してインクリメンタルカウンタをifで数えるだけじゃね
処理内容的には一番安い数セントマイコンで十分だがそれに搭載できるRTOSは限定されるだろう
0552774ワット発電中さん
垢版 |
2023/04/15(土) 22:33:13.91ID:bygmGLxo
OS使ったほうがやりやすい場合があるのはみんな分かってんだし
くだらない例を出しても仕方ないだろ。
0555774ワット発電中さん
垢版 |
2023/04/15(土) 22:45:30.02ID:eYK5awAh
RTOS使えばいいって言っている人はArduinoクラスでも想定しているのかね
あれだけメモリがあればRTOSも載るだろうが派手なLチカ用にATmega328は結構贅沢だろ
0556774ワット発電中さん
垢版 |
2023/04/15(土) 22:55:22.77ID:pJ4eYr9+
LED3個点滅させるのにOS必須って言ってるわけじゃないよ。
タスク説明するときによく使われる例だから。
0557774ワット発電中さん
垢版 |
2023/04/15(土) 23:32:58.61ID:pJ4eYr9+
>>553

君には550の内容の間違いを指摘できるんだよね?
もちろんその内容が正しかったら間違いを認めるよ
そうやって自分の間違いを修正してきたから、むしろ感謝すべきだと思ってる。
0558774ワット発電中さん
垢版 |
2023/04/15(土) 23:37:46.06ID:kdwwIGYa
>>547
RTOSの本質ではないし組み込みマルチタスクのよくある用法でもない
マイコン入門者に
loop {
PORT1.b1 = 0;
delay(1000);
PORT1.b1 = 1;
delay(1000);
}
みたいな例を教えるとイベントドリブンではない非効率なコードを量産するけど大差ないレベルで有害じゃね
0559774ワット発電中さん
垢版 |
2023/04/15(土) 23:48:27.00ID:eYK5awAh
ついでにそんな覚え方をしてたらマルチスレッドが難しくて当然だな
排他制御とかガン無視だし遠くない未来に破綻して発狂するのは明らか
0560774ワット発電中さん
垢版 |
2023/04/15(土) 23:50:24.71ID:pJ4eYr9+
558
言われてることはおおよそ理解できます。
閉じたループやらdelayを多用するようなコードは良くないです。
タスクの役割がわかりやすいかなという意図から例としただけで。
0561774ワット発電中さん
垢版 |
2023/04/15(土) 23:58:14.40ID:pJ4eYr9+
>>553
日が変わるからIDも変わるし、時間切れな
容赦なしで言わせてもらうと君はハッタリだな。一番はずかしいタイプだな、
そういうやつは技術も身につかねーから。
クリスマスツリーでも作ってろや、な
0562774ワット発電中さん
垢版 |
2023/04/16(日) 00:36:31.24ID:kZ+M/SaK
Rust界隈はむやみに共有リソースを持たない方向に行っているよね
排他制御をしなくていいならそれに越したことはなく事故率は下がり性能は向上する
組み込みも遠からずそうなっていくのでは
0563774ワット発電中さん
垢版 |
2023/04/16(日) 08:37:16.03ID:b7/VIm1w
いろいろとやってみたらいい。
なじんでないものは、たいてい使いにくく、やりはじめはバグ、トラブルの原因にもなる。
なじんでないものを、なじんでいる人が良いというぐらいになじんで使えるようになるには時間も能力も限られている。
世の中のすべて人が、世の中のすべてのことになじむ必要はないし、そんなのありえない。

なじんでない人が、なじんでない技術を、世の中で価値が薄いものだというのは、傍から見ればきつねと葡萄。
なじんでいる人が、なじんでない人をさげすむのは、思い上がり。
ひとつのことを実装するのに、いろいろな方法がある。人によって違う解決があっていい。

価値があるのは、実装方法はどうであれ、求めている人のニーズを理解して形にして世の中に出せることだよ。
0564774ワット発電中さん
垢版 |
2023/04/16(日) 17:17:52.16ID:V7tN8xew
前に作ったiny2313用ディスパッチャのサンプル(タスク2個切り替え)
タイマ0を周期1mSのCompAで駆動、20MHzクロックでオーバーヘッドタイム約1μS
AVRはマルチタスクに何の配慮も無いし、2313はSRAMが128バイトしかないので
マルチタスクは使いづらいが、それでもマルチタスクが有用な仕様もある
C:000015 93ef  push ZL     ;save ZL,ZH & SREG to currrent stack
C:000016 93ff  push ZH
C:000017 b7ef  in  ZL,SREG
C:000018 93ef  push ZL
C:000019 2de1  mov  ZL,sv_SPL ;exchange SP task1 <--> task2
C:00001a b61d  in  sv_SPL,SPL
C:00001b bfed  out  SPL,ZL
C:00001c 91ef  pop  ZL     ;restore ZL,ZH & SREG from next stack
C:00001d bfef  out  SREG,ZL
C:00001e 91ff  pop  ZH
C:00001f 91ef  pop  ZL
C:000020 9518  reti       ;exec. next task
0565774ワット発電中さん
垢版 |
2023/04/16(日) 17:21:05.30ID:9JTomruF
誰も出せとかいってないww
0567774ワット発電中さん
垢版 |
2023/04/16(日) 17:56:51.89ID:V7tN8xew
再登場ッ!w
今まで使ってきた全てのCPUでディスパlッチャ作ってきたけど
ただ一つの例外がPIC16F84
これがPICと別れる理由の一つにもなった
0568774ワット発電中さん
垢版 |
2023/04/16(日) 18:20:34.84ID:V7tN8xew
たまに登場しないと忘れちゃうでしょ?w
私はソフトでもハードでも「自作できるものは自作したいな」でやってます
AVR始めた時もターゲット回路に影響しないシリアルライタを作り
続けてPC側とAVR側のデッバグ用プログラムを作り・・・
できるだけ自分の手の内に納めておきたい
ブラックッボックスがイヤなんですよね
0569774ワット発電中さん
垢版 |
2023/04/16(日) 20:59:52.63ID:1/EDkoOV
>>568は顔文字の人じゃないか?

iny というマイコンは初めて聞いた。
どこのマイコンだろう。
0571774ワット発電中さん
垢版 |
2023/04/17(月) 07:45:37.07ID:Ya2jxXGZ
>>567
NG回避キモっ
0572774ワット発電中さん
垢版 |
2023/04/17(月) 09:09:42.70ID:ye1wxrx8
顔文字さんの名誉のために言っておきますけど、
私(V7tN8xew)は別人で、天上天下唯我独尊、孤高の道を行く、
下天のうちに比べれば夢幻の如くなりw
のディスパッチャ爺です
私の技術力は彼の足下にも及びませんが、
彼の他人の悪口を書かないところだけでも真似したいと思っています。
0573774ワット発電中さん
垢版 |
2023/04/17(月) 15:07:04.94ID:bkdmlzbC
ぼくのぎじつりょくはそんなにたかくないので 誰の事か判らんくなって気だぞ(^p^;
0574774ワット発電中さん
垢版 |
2023/04/17(月) 18:25:34.43ID:FAME4LSI
C/C++で
・規格(C99とかC11とか)に準拠しないコード
・処理系に依存するコード
・未定義の動作を引き起こしうるコード
を見つけてくれるコードチェッカとかあります?
0576774ワット発電中さん
垢版 |
2023/04/17(月) 23:49:33.18ID:L+FCoTWm
>>573
顔文字やめてください
0577774ワット発電中さん
垢版 |
2023/04/18(火) 14:08:44.48ID:aPGgi/bm
>>576
0581774ワット発電中さん
垢版 |
2023/04/27(木) 11:42:56.31ID:/EmB7DJI
Chat GPT は私やあなたのような3流プログラマを駆逐するか?
0582774ワット発電中さん
垢版 |
2023/05/03(水) 23:26:41.14ID:KW8zWTye
これも運命だ・・3Dプリンタで製造業は全滅したしな・・・
0584774ワット発電中さん
垢版 |
2023/05/10(水) 05:21:21.88ID:UpjcfkXG
>>583
車は無いけれどもGEがガスタービンを3Dプリンタで作成しているよ。複雑な形状を削り出し出来ないからプリンタを使った
0586774ワット発電中さん
垢版 |
2023/05/10(水) 17:07:17.58ID:c17EP1xL
イギリス軍がテスト中のフライングスーツのジェットエンジンって
3Dプリンタで作ってるんだよなあ。
0587774ワット発電中さん
垢版 |
2023/05/10(水) 18:27:35.57ID:9O0xiLYo
>>583 は10年寝てたんだよ許してやって
0589774ワット発電中さん
垢版 |
2023/05/10(水) 19:26:12.41ID:ubvaxuJh
この流れ見てると理系の悪い性格が出てるよ。
582の発言に対して583の発言は流れとして車を例に出しただけ。
限定的な知識を出して、他人を無知などとこき下ろしてる。
その厳格さは仕様書を読むときやプログラミングだけにしとけば?って感じ。
chatGPTのほうが人格が上だね。
0590774ワット発電中さん
垢版 |
2023/05/10(水) 21:31:18.68ID:89G1H6tl
まあ、理系板だしな。
でも、ちょっと調べれば分かることを
「プリンタで作った部品使ってる車とか無い」と言い切るのは愚か者としか言いようがない。
ネット上に間違った情報を増やすのはやめてほしい。
それこそChatGPTにも悪影響がある。
0591774ワット発電中さん
垢版 |
2023/05/11(木) 09:09:41.07ID:F/nNXZ20
理系、文系は関係無いよ
ここはゲスが集まって自分のゲスレベルを競い合ううところだからな
「ゲスに交わればゲスになる」 良い子は近づいてはいけませんw
0594774ワット発電中さん
垢版 |
2023/07/10(月) 12:49:00.77ID:jUsC+vJr
秋月スレから移動してきました。

370 名前:774ワット発電中さん[] 投稿日:2023/07/10(月) 08:47:34.03 ID:HXshJPvz
>>368
そもそも、何でinpとoutpがメモリと別にあるんでしょうか?
同一直線上にあっても良いと思うのですが、
当時は何か事情でもあったのでしょうか?

371 名前:774ワット発電中さん[sage] 投稿日:2023/07/10(月) 09:01:27.08 ID:hJ/c4TqK
>>370
メモリとIOデバイスの速度がかなり違ったり
メモリアクセス時とIOアクセス時の処理を分けるのが簡単

372 名前:774ワット発電中さん[sage] 投稿日:2023/07/10(月) 09:03:38.16 ID:2Xm28lZL
>>365
メモリがある程度余裕ある時は使っちゃうなぁ
シリアル経由で機器制御とかの文字列処理
や数値抜き取りしたい時にsprintf()/sscanf()

だって簡単なんだものw

374 名前:774ワット発電中さん[sage] 投稿日:2023/07/10(月) 09:17:07.23 ID:/DJb27v2
>>370
64KB全部メモリのほうが綺麗だと思うけど。
I/Oのためにアドレスデコーダ作るのも面倒だし。
もちろん、メモリマップドI/Oにすることも出来る。
ってか、今でもマイコンだと専用のインストラクションが割り当てられてたりすると思うけど、使ったことないのかな?

375 名前:774ワット発電中さん[sage] 投稿日:2023/07/10(月) 09:41:02.86 ID:zbpt3cNp [1/2]
>>370
周辺回路が作りやすい他にメモリマップ上に速度が全然違う余計なものが入らない方が使いやすいと言う考えもあった
同一線状といってもアドレスラインは16本であまり余裕はないしね
インテルは8080発売後しばらく経ってからマップドIOを勧めだした記憶があるがハード屋の俺は面倒だなと思ったよ


当時はそんなにスピードが違ったんですね。
でも、遅いI/O→速いメモリ→遅いI/O→速いメモリ→ だったら どうせ直列にこなすんだから、
メモリマップトでも良いのでは無いでしょうか。
確かにアドレスデコーダを作るのは面倒くさいですね。
0595774ワット発電中さん
垢版 |
2023/07/10(月) 14:24:46.06ID:Ox3EUrkc
メモリマップトはあたかもメモリ上に見えてるけど、CPUハードの中で処理完結されてる。
なのでINP、OUTPの命令もメモリマップトも実はやってることがほぼ同じ。

質問の的外れ回答ならならすまんちょっと自信ないけど、
FPGA使ってるから自分ならそう設計する。
0596774ワット発電中さん
垢版 |
2023/07/10(月) 14:54:49.25ID:Ox3EUrkc
キーワード:メモリマップドIO 対 ポートマップドIO

INP、OUTPの専用命令があるタイプは
メモリアドレス空間が小さくて制限がある場合みたい。
なるほどね。

今はアドレス空間広いからメモリマップにしたほうがロジック共有できてるのかもしれない

wiki
https://ja.wikipedia.org/wiki/%E3%83%A1%E3%83%A2%E3%83%AA%E3%83%9E%E3%83%83%E3%83%97%E3%83%89I/O
0597774ワット発電中さん
垢版 |
2023/07/12(水) 00:37:23.83ID:l5OVchmT
>>583 ボロクソワーゲンってどの部分に樹脂使ってんの。内装ならわかるけど。
0598774ワット発電中さん
垢版 |
2023/07/12(水) 00:42:26.56ID:l5OVchmT
>>584
>車は無いけれどもGEがガスタービンを3Dプリンタで作成しているよ。複雑な形状を削り出し出来ないからプリンタを使った

サプライチェーンの問題では。日本は米国よりもサプライチェーンの数が多いからな。技術者でも時給1500円で働いているから、
人件費の高い米国と違って、そうそうつぶれない。
0599774ワット発電中さん
垢版 |
2023/07/12(水) 00:49:46.53ID:l5OVchmT
LGBTと一緒で、スクラップビルドの一環だろう。すべて真に受けて振り回されると糖質になるわ。
0600774ワット発電中さん
垢版 |
2023/07/12(水) 18:58:21.19ID:JVJMunbq
#include < >について調べたいのですが、
< や > は、なんと読むのでしょうか?
0604774ワット発電中さん
垢版 |
2023/07/12(水) 23:22:20.25ID:JVJMunbq
みなさんありがとうございました。
しょうなりだいなりと呼ぶことも多いみたいですね。
小なり だと思いますが、右か左かどちらを説明しているのか迷いますね

どうもありがとうございました。
0605774ワット発電中さん
垢版 |
2023/07/13(木) 16:55:36.11ID:YmfvJVTI
どう考えても x > 5 は、小なりじゃないだろ。
0606774ワット発電中さん
垢版 |
2023/07/13(木) 21:46:46.95ID:qEdvlyVX
検索すると
フォルクスワーゲンが樹脂3Dプリンタ部品を量産適応する研究をしてるという
2018年の記事がある
まずテールゲートレタリング、ギアノブ、キーに適応とある

車の開発サイクル20か月前後と考えると、相当昔のことなので
まだ製品化してないならプロジェクト自体がつぶれてるかもね

補修部品を生産するプロジェクトもあるようだが1点物でコスト見合うのかね
0607774ワット発電中さん
垢版 |
2023/07/13(木) 21:47:47.27ID:G5NTb2d9
>小なり だと思いますが、右か左かどちらを説明しているのか迷いますね

小なり は less than から来ている。と考えれば迷いが小さくできるのでは。

もとの表現では、
x < 5 は
x (is) less than 5
だよ。

そこから
x < 5 は
x (は) 小なり 5 (よりも)
と翻訳されていると考えれば。
0608774ワット発電中さん
垢版 |
2023/07/14(金) 03:55:29.28ID:5C+EwxvM
説明上手いな。
自分の言葉で説明しているところを見ると、本人も苦労したのかな。
0609774ワット発電中さん
垢版 |
2023/07/14(金) 11:26:26.61ID:NuRUoYrv
量子コンピューターで掛け算が出来た、みたいなニュースがあったけど、
掛け算は足し算だから、足し算がやっと出来たと言うことかな。
0613774ワット発電中さん
垢版 |
2023/07/14(金) 19:52:38.01ID:NuRUoYrv
掛け算は足し算を何回かやるのだと思っていた。
0615774ワット発電中さん
垢版 |
2023/07/14(金) 22:19:33.32ID:V3jzy0w/
8ビット×8ビットだったら、最大8回の足し算になるのでは。
0617774ワット発電中さん
垢版 |
2023/07/14(金) 23:11:45.88ID:C0EVV+5A
>>616
回路的にも筆算式でビット数分の加算器を段状に並べてるんじゃね?
いや実際知らんけど、それ以外に方法ある?
0619774ワット発電中さん
垢版 |
2023/07/14(金) 23:18:29.53ID:V3jzy0w/
7回といえば順次やっているような印象を与えるし、それを7クロックと考える人がいても仕方がないか。

でも、乗算命令があっても乗算器を持たないマイコンだとたくさんのクロックを必要とするしね。
0621774ワット発電中さん
垢版 |
2023/07/15(土) 08:20:28.16ID:Dg1ot/bA
九九は10進数の世界だから。
2進数の世界だから一一。いちいちがいち。終わった。
0622774ワット発電中さん
垢版 |
2023/07/15(土) 11:03:17.60ID:zzBDrkfs
乗算命令のないマイコンだと掛け算は自分で記述するのですよね?
乗算命令のあるマイコンだと乗算命令を書けば人間の作業は終わりだけど、
CPUは、同じことをやっているのでなないですか?
0623774ワット発電中さん
垢版 |
2023/07/15(土) 12:12:13.30ID:Dg1ot/bA
>>622
乗算器がついていたら「命令を繰り返して」掛け算を実現するのとは違う。
乗算器がついてなくて、乗算命令があるなら、まったく同じとは必ずしも言えないとしても
「命令を繰り返して」掛け算を実現するのと近いことをやっている(と思う)
0624774ワット発電中さん
垢版 |
2023/07/15(土) 14:30:50.39ID:uTt9HRtr
乗算器の中ではどのようにしてかけ算しているのでしょうか。
加算する位置を変えながら、繰り返して足していくのではないのかな。
0625774ワット発電中さん
垢版 |
2023/07/15(土) 14:58:44.90ID:Dg1ot/bA
「位置を変えながら」は時間の進行ととも変えるのではなくて、いっきに1ビットずつ変えたものを用意します。

そのあたりは短い文章だと違う解釈で誤解も入りやすいし、

乗算器 しくみ

で検索するといいと思います。
0626774ワット発電中さん
垢版 |
2023/07/15(土) 15:14:56.96ID:OqJY412T
>>624
ソフトウェア的な手法として、シフトして足してをビット数分繰り返す方法は知ってるのかな。
でハードウェアなら、ビット数分繰り返す代わりに1ビットシフトしたもの、2ビットシフトしたもの ... nビットシフトしたものを一度に用意して、全部一気に足すと言うこともできる。
0627774ワット発電中さん
垢版 |
2023/07/15(土) 16:34:23.20ID:yssG4TLj
もう何十年も研究されてるんだから、そんな素人の考えるような方法は時代遅れだよ。
ちょっと調べればブースの乗算法とかSchönhage-Strassenアルゴリズムとか出てくるだろ。
0628774ワット発電中さん
垢版 |
2023/07/15(土) 19:18:46.01ID:uTt9HRtr
>>625
ありがとう。初めからずらした記憶を一気に足し算。
頭いいなあ。なるほど。
桁ずらしは配線で固定化できるし、
足すのはフルアダーのお化けみたいな回路ですかね。
0629774ワット発電中さん
垢版 |
2023/07/15(土) 23:00:21.81ID:oeqoJSll
>>627
ハードウェア的な掛け算器がそのアルゴリズムで実装される方がメリットがあるってこと?
ほんとかなぁ

というか元の話は、掛け算は足し算で実現されてるか否かということだから、少なくとも足し算で実現されてることは間違い無くね?
0630774ワット発電中さん
垢版 |
2023/07/16(日) 07:01:10.76ID:Hjfm4AOc
>というか元の話は、

元の話は>>609の↓だよな。
>量子コンピューターで掛け算が出来た、みたいなニュースがあったけど、
>掛け算は足し算だから、足し算がやっと出来たと言うことかな。

(1)掛け算は足し算
(2)(1)から考えると、量子コンピューターは足し算がやっと出来たと言うことかな

(1)はそうでもあるし、そうでもない場合があるので正確ではない。
(2)は、ニュースソースを探してみると、足し算はもっと前にできていたという。

結果的には(2)の類推は誤りだったようだ。
「掛け算は足し算を使うものもある」という認識であれば、ひとつだけの類推は導かなかったかもしれない。
0634774ワット発電中さん
垢版 |
2023/07/17(月) 07:28:22.46ID:M7k4D+6S
計算尺、捨てないで本棚に置いてある。
この前、本を整理したときに手にとってみたけど、
使い方思い出せなかった。
0635774ワット発電中さん
垢版 |
2023/07/17(月) 10:12:26.01ID:H+3cgY7A
ヘンミですか?
0636774ワット発電中さん
垢版 |
2023/07/17(月) 14:13:47.95ID:+TWJe0/X
計算尺、7本持っている。
たまに使っているけど、数値が読み取りにくくなったので
眼科を受診したら「老眼です」と言われた。
帰りに老眼鏡買ったが、細かい作業するときに便利だと知った。
0637774ワット発電中さん
垢版 |
2023/07/17(月) 14:24:23.79ID:kSYd2tNj
>>636
自分は元々近眼なので、老眼になった今ではメガネを外すと近くのものがよく見える。
ただ程度が微妙で、半だ付けする時にメガネを外し、工具を探すときにはメガネをかけてで、すげー面倒
年は取るもんじゃないねぇ
0638774ワット発電中さん
垢版 |
2023/07/17(月) 17:28:59.90ID:+TWJe0/X
>>637
近視の人は老眼に気づくのが遅くなるとか聞きましたが・・・
私はその逆で遠視気味だったので、手元が見づらくなって眼科で老眼と診断されました。
近頃の部品はチップ部品が多くなってしまい、馬齢を重ねた人間には辛いです。
0639774ワット発電中さん
垢版 |
2023/07/17(月) 17:45:34.32ID:G/co1Fid
老眼は要するに調整範囲が小さくなるので、
近眼の老眼はたとえば裸眼で20cm以外にピントが合わなくなる。
なので
面実装部品をはんだ付けするときは裸眼。
面実装部品のピンのはんだの詳細を見るときは裸眼にルーペ。
資料や画面を見るときは眼鏡。
みたいなことになる。
すこぶるめんどうくさい。

眼鏡をかけたまま近くを見ようとしたら眼鏡の上からパスするみたいなことになる。
オロナミンCの大村崑さんみたいに眼鏡をずらすか、すごくアゴを引かないといけない。
ちなみに、近眼の度が強いと、境目なしの遠近両用でも、あまり極端なものは作れないと言われた。まあそうだろうな。
0640774ワット発電中さん
垢版 |
2023/07/17(月) 19:12:04.76ID:1FeTcyZv
量子演算は不連続のアナログ
ある意味計算尺にちかいか
量子的に意味のある値は特定の条件を満たすマトリクスだが
0641774ワット発電中さん
垢版 |
2023/07/17(月) 19:32:28.37ID:M7k4D+6S
老眼ごときでガタガタ言うな
俺なんか網膜剥離だぞ
もうハンダ付けはでけんっ!
0643774ワット発電中さん
垢版 |
2023/07/17(月) 22:24:46.06ID:G/co1Fid
>>641
特に強い近眼の人は知らん間に緑内症になってる人が多いそうな。
普段は両目で見るから片目の視野が欠けてきていることに気づかないって。
0644774ワット発電中さん
垢版 |
2023/07/18(火) 04:04:17.82ID:xsJicogW
>>641
俺もなった。入院してレーザーで焼いてもらった。
3週間顔を下にして過ごしたんだぞ。
0646774ワット発電中さん
垢版 |
2023/07/20(木) 16:28:11.22ID:d3zum7IV
チャットGTPに依頼するとプログラムも作れますか?
PIC16F84 Lチカ 500ms C言語とかで
0647774ワット発電中さん
垢版 |
2023/07/21(金) 00:53:23.15ID:hCtjUfMW
C/C++とかpythonは学習してるようだが
該当チップの情報とコードが全ネットに
どの程度存在するかだろうな

先ずは3.5試せばいいのでは?
そもそも正しいくない確率も一定あるから
試すしかないというか
0648774ワット発電中さん
垢版 |
2023/09/14(木) 16:10:01.86ID:wc12w5t+
switch文章について質問です。

switch (a){
case 1: b=3; 関数1(); 関数2(); 関数5(); break;
case 2: b=6; 関数1(); 関数2(); 関数5(); break;
case 3: b=8; 関数1(); 関数2(); 関数5(); break;
default: break;
という文章がありますが、
関数1,2,5がいつも同じなので、
switch文の後に実行すればソースが見やすくなると思ったのですが
defaultの時には実行して欲しくありません。

switch (a){
case 1: b=3; c=1; break;
case 2: b=6; c=1; break;
case 3: b=8; c=1; break;
default: c=0; break;

if(c==1){
関数1(); 関数2(); 関数5();
}
と、書くしか無いでしょうか? 変数も要るし。
何か格好のいい書き方は無いでしょうか。
0650774ワット発電中さん
垢版 |
2023/09/14(木) 21:44:15.19ID:wc12w5t+
なるほど、それはいいですね。ありがとうございます。
やはりswtchの結果を記憶する変数が必要になりますよね。
default:の中に書いてもしょうがないですものね。
ありがとう。
0651774ワット発電中さん
垢版 |
2023/09/14(木) 21:56:36.52ID:e9mWVGId
default に goto を書いて、関数1(); 関数2(); 関数5();をジャンプするとか。イヤイヤ。
0653774ワット発電中さん
垢版 |
2023/09/15(金) 13:00:54.48ID:QEKW46c3
関数x() {関数1(); 関数2(); 関数5();}
switch (a){
case 1: b=3; 関数x(); break;
case 2: b=6; 関数x(); break;
case 3: b=8; 関数x(); break;
default: break;
}
とか
0654774ワット発電中さん
垢版 |
2023/09/15(金) 16:57:05.50ID:a3HYXoe4
何書こうが最適化で一緒にされてしまう可能性。
(明確な間違いでも無い限り)
0656774ワット発電中さん
垢版 |
2023/09/15(金) 22:57:13.10ID:5ZHfS0Y0
>>653
見やすい、わかりやすいですね。いい感じです。
0657774ワット発電中さん
垢版 |
2023/09/19(火) 22:27:08.34ID:o5Ew8Xsq
質問です。
構造体というのがありますが、
あれが出来た経緯はメモリが少なく機長たった頃に、
メモリを無駄なく使いたいから、だと思うのですが、
そうでは無いでしょうか?
誰も aaa.bbb.cc と記述したいわけではないと思うのです。
0658774ワット発電中さん
垢版 |
2023/09/19(火) 23:20:16.21ID:IS9Ii9S8
>>657
>誰も aaa.bbb.cc と記述したいわけではないと思うのです。
むしろ、aaa.bbb.cc と記述できるように、じゃないですかね。
0659774ワット発電中さん
垢版 |
2023/09/19(火) 23:21:15.71ID:gwHCcWze
関連したデータを固めて扱う事で記述性の向上はあるんじゃないかな。
タルいってのはあるかもしれんがツールの進歩て克服しつつあるし。
0660774ワット発電中さん
垢版 |
2023/09/19(火) 23:23:45.99ID:gwHCcWze
むしろメモリはアライメント調整が入るから無駄に見えるかもしれない。
0661774ワット発電中さん
垢版 |
2023/09/19(火) 23:28:46.30ID:IS9Ii9S8
構造体は、自分で必要性を感じて便利に使えるまでは、難解で面倒なものだと思ってた。
0662774ワット発電中さん
垢版 |
2023/09/19(火) 23:40:58.43ID:IS9Ii9S8
プログラミング言語の、いろいろな機能も、なんでこんな分かり難い機能が必要なんだろうと思う前に、
これが便利で分かりやすいシーンがあるのだろう、と、努めて自分に強いて思うようにしている。

「こんなの要らない」「仕方ないから覚える」と考えると、学習効率を下げるよ。
0663774ワット発電中さん
垢版 |
2023/09/19(火) 23:54:46.80ID:IS9Ii9S8
ぼくが学習を始めたときに使っていた言語では、構造体ではなくてレコードだったけど。
0664774ワット発電中さん
垢版 |
2023/09/20(水) 19:30:21.88ID:+2fFq/vC
>「こんなの要らない」「仕方ないから覚える」と考えると、学習効率を下げるよ。
ではなくて、なぜこのような記述方法が出てきたのか知りたい。
歴史を知ることで今が見えるという感じ。
0665774ワット発電中さん
垢版 |
2023/09/20(水) 20:53:03.44ID:3TqQyOqf
>>664
歴史はどうだか知らないけれど、オブジェクト指向の導入でも使われるような話が、
そこそこ構造体にもあてはまると思う。

なぜこのような記述が出てきたかは、その方が楽でわかりやすいからと考えていいと思う。

100人の生徒をコンピュータで管理するとき、含めたいデータが
・名前
・性別
・身長
・体重
とすると、構造体のない世界なら、それぞれを100個の配列にして管理することになると思う。
これを「生徒」という構造体を作って入れて、その構造体の配列を作ると、
配列のインデックス35番目の生徒の情報は、
生徒配列[35].名前
とか
生徒配列[35].身長
とかでアクセスできる。


・別のアプローチ。構造体のない世界をかんがえてみるといいかも。
C言語でファイルを扱うときに、FILE を使うことがあると思う。構造体になっているから、ファイルを扱う関数に
ファイルに関わる情報を渡すのに、FILE を示す *fp みたいなのを渡すだけでいいけれど、もし構造体がなかったら
ファイルを関わる情報をどうやって渡すことになるか。
0666774ワット発電中さん
垢版 |
2023/09/20(水) 21:52:45.16ID:HKE60sE1
Python みたいにファイルオブジェクトにすればいいんでない?
0668774ワット発電中さん
垢版 |
2023/09/22(金) 14:07:54.85ID:tUHm6dVZ
>>663
pascalとかfortranだっけ
0669774ワット発電中さん
垢版 |
2023/09/22(金) 14:08:29.66ID:tUHm6dVZ
>>661
それ入門書の本が悪かったとかの可能性もある
0671774ワット発電中さん
垢版 |
2023/09/22(金) 18:31:18.35ID:OaN/xYuF
カード型データベースみたいな感じ。構造体
0672774ワット発電中さん
垢版 |
2023/09/23(土) 11:43:49.56ID:CBAAPjIw
>>670
FILE構造体の話はC言語の話だよ。ファイルの考え方が異なるものを並べてはいけない。
0674774ワット発電中さん
垢版 |
2023/09/23(土) 18:58:42.64ID:87dPlImm
ポインタ型の変数宣言がわかりません。

bit幅は何bitなのでしょうか?
その変数に代入すると、常にアドレス番地として認識されて、数字ではないのでしょうか?
そもそもポインタの嬉しさがわからないです。
配列a[100]で良いと思うし。
0676774ワット発電中さん
垢版 |
2023/09/23(土) 21:11:13.60ID:CBAAPjIw
C言語そのままのポインタではないけれど、JavaでもC#でもクラスのインスタンスは「ポインタみたいなもの」だしね。

>>674
ポインタ変数そのものはC言語ではアドレスを格納していて、ビット幅はアドレスぶん。

ポインタはいくつかのメリットがあるけれど、そのうちのひとつ。「配列a[100]で良い」という話があったので、
C言語だと構造体(C++ならクラスも)の配列は、次の2種類の管理ができる。
(1)構造体の実体の配列を作る。
(2)構造体の実体はどこかに確保して、その実体の場所を示すポインタの配列を作る。

この2種類のうち、JavaやC#は基本的には
・クラスの配列だと(2)の方法を採る。
・intやfloatだと(1)の方法を採る。
変数のタイプによって変わってくるので、わかっていないとかえって難しくなる。
C/C++なら、書き方で変わるので、そのあたりはかえってシンプルだと思う。

(2)はメモリを余計につかうから無駄なような気がするけど、
任意の条件で、配列内を並べ替えするようなとき、
(1)だと構造体まるごと移動が必要になる。構造体のサイズが大きいほど、入れ替えに時間がかかる。
(2)だと配列で管理しているのはアドレスだけなので、入れ替えがすばやくできる。

嬉しさがわからないのは、ポインタの方が有利になる課題にぶちあたっていないせいだと思う。
JavaかC#でクラスを自分で作るようなプログラムを組んでいたら、C/C++のポインタの雰囲気がわかる
ようになるかもしれない。
0677774ワット発電中さん
垢版 |
2023/09/23(土) 22:02:13.93ID:n/7/fapL
ポインタがない言語はたくさんあります。
むしろほとんどの言語にはありません、
C言語にポインタがあるのは高級アセンブラだからです。
0678774ワット発電中さん
垢版 |
2023/09/23(土) 22:20:18.71ID:87dPlImm
>>676
ありがとうございます。
>ポインタ変数そのものはC言語ではアドレスを格納していて、ビット幅はアドレスぶん。
ということは、16bitマイコンの場合
unsigned char a; aの記憶場所のbit幅は8bit、アドレスのことは知らない。
char *b; (アドレス専門の)bのbit幅は16bit、bで示される記憶場所のbit幅は8bit
ということで良いでしょうか?

C++とかC#はわからないですが
PICマイコンのXC16(16bit用コンパイラ)の場合でも同じでしょうか。
0679774ワット発電中さん
垢版 |
2023/09/23(土) 22:46:26.72ID:CBAAPjIw
>ということは、16bitマイコンの場合
>unsigned char a; aの記憶場所のbit幅は8bit、アドレスのことは知らない。
>char *b; (アドレス専門の)bのbit幅は16bit、bで示される記憶場所のbit幅は8bit

「16bitマイコンの場合は」とパターン化して覚えるのは間違っています。
傾向はつかめても傾向で語るのは多数の例外の前にむしろ害になるでしょう。

もしそのコンパイラのunsigned char が8bitなら、そのコンパイラのunsigned charは8bitと認識すればいいし、
アドレスのbit幅が16bitなら16bitであることが多い。
パターンにもとづく記憶に依存せずに、都度都度、調べればいいです。

一つのマイコンの一つのプログラムの中でも、アドレスのビット幅が一定とは限らんし。

ということで↓は自分で調べるようにしてほしいです。
>PICマイコンのXC16(16bit用コンパイラ)の場合でも同じでしょうか。
0680774ワット発電中さん
垢版 |
2023/09/23(土) 22:48:44.27ID:87dPlImm
ネットから拾ってきた例ソースに、自分で説明を付けてみた。
途中がわからないです。

#include <stdio.h>

typedef struct {    // 以下の構造を持つ変数型を宣言する
int num;      // 構成員1 numという数値変数
char *str;     // 構成員2 その次にstrという名前のポインタ用変数
} strct;        // 上記の構造を持つ「型」を strct という名前で呼ぶことにする。
            // numは数値用で16bit幅、置かれるアドレスはコンパイラに任せる。
            // strは、ポインタ(アドレス用の入れ物)で、そのbit幅は
            // 我々が気にする必要はない。コンパイラが決めてくれる。

int main(void) {
strct entity;    // strct型の変数を1組用意する。名前はentity
strct *p;      // strct型の変数を1組用意する。名前はpでアドレスしか入らない(?)
p = &entity;     // pにentityの先頭アドレスを代入する。

p->num = 0;     // アドレスしか入れられない*pのnum(?)に0を入れる
p->str = "Hello";  // アドレスしか入れられない*pのstr(?)に"Hello"を入れる(?)

printf("num:%d\n", entity.num);  // 「strct型のentity」の構成員のnumの中身を10進数で表示
printf("str:%s\n", entity.str);  // 「strct型のentity」の構成員のstrの中身を文字列で表示

return 0;     // 戻る
}
0681774ワット発電中さん
垢版 |
2023/09/23(土) 23:09:31.79ID:CBAAPjIw
> アドレスしか入れられない*pのnum(?)に0を入れる
「ポインタ変数そのものにアドレスしか入れられない」ということと
「ポインタ変数が指す領域に値を入れる」行為をごっちゃにしてませんか?

「ポインタにはアドレスしか入れられない」とどこかで読んだり習ったのかもしれないです。
「ポインタにはアドレスしか入れられない」こと自体に間違いはありませんが、
あなたはそれをもって、「ポインタ変数に値を入れているのはなぜだ」ってぐちゃぐちゃにしています。
ポインタにはアドレスしか入れませんが、ポインタが指す領域にはその変数の値が入ります。

教えてもらったり読んだ文言を、自分で解釈する表面的な意味に拘ってはいけません。
同様に「16ビットマイコンでは、ポインタのサイズは…」みたいなおぼえ方は、とりわけあなたのように、
「ルールや決まりでものごとを整理してそれに適合しないものに混乱するタイプ」の人は避けるべきだと思います。

自分で決めたルールに反したものを見つけたときにルールのアップデートをしたり、例外を躊躇なく受け入れられる人なら
ルール化して覚えるのはいいかもしれないですが。

int *p;
があるとして、p はポインタ変数そのものなのでアドレスが入りますが、
*p は、ポインタ変数pが指し示す領域なので、その領域が確保されているなら intの値を入れることができます。
0682774ワット発電中さん
垢版 |
2023/09/24(日) 04:28:20.13ID:Ku0AL+tT
ポインターは難しい。
誰でもつまづくんだな。
言葉の意味が分かりにくいから。
0685774ワット発電中さん
垢版 |
2023/09/24(日) 10:18:05.83ID:3fdSyMx4
>言葉の意味が分かりにくいから。
そうなんかなあ。point(指し示す)+er で、「(場所を)指し示すもの」ってそこそこそのまんまだと思うんだが。

>そもそも16bitマイコンって、何が16bit?
そうそう。
主たるアキュムレータのビット数が、という言い方もあるけれど、明確な定義を試みることの意味は薄いと思う。
マイコン分類学みたいな人はやってくれたらいいけどな。

ポインタのサイズでいえば、ハードウェアのアドレスのビット幅が20ビットでも、ポインタ変数のサイズが16ビット
だったり、32ビットだったりいろいろになることがあるし、必要な場合はちゃんと調べて使わないとまずい。

とくに今までポインタについて調べたことがないマイコンで、ポインタのサイズを知る必要が発生したなら、
自分によるルール化、類型化での判断ではなく、マニュアルを見ないと。

>ヌルポ インタに意味持たせちゃったのもマズイよね。
そうなんかなあ。
C++はともかく、C言語なら「ポインター値 0 は未初期化の印」としておくのは悪くはないと思う。
そのせいで、アドレスゼロが、ポインタで指し示せないという問題はあるとしても
0686774ワット発電中さん
垢版 |
2023/09/24(日) 10:20:29.07ID:R9qz7oH6
>>676
全然違う

そんなことより「ポインタが無い」Javaなのに
NullPointerExceptionが多発することが問題
0687774ワット発電中さん
垢版 |
2023/09/24(日) 10:40:00.91ID:3fdSyMx4
>>686
何が全然違うのか書かないと、コミュニケーションも成立しない。

>そんなことより「ポインタが無い」Javaなのに
>NullPointerExceptionが多発することが問題
たしかにこの2行は、矛盾の指摘に見えるけれど、矛盾になるためには1行目も2行目も正しいことが必要です。
Javaにポインタがない、という認識を疑うのはいかがでしょうか。もしその認識を修正すれば、

「Javaにはポインタのようなものがあり、誤った使い方をすればNullPointerExceptionが発生する」
となり、きれいに矛盾も消えると思います。

javaにはポインターがないのですか
↑そのままをキーワードにしてぐぐって。
多様な解釈がでてきますので、どれかを自分のものにするのではなくて対立するものもふくめてなんとなく
受け入れたらいいと思います。
0688774ワット発電中さん
垢版 |
2023/09/24(日) 14:06:36.17ID:R9qz7oH6
Javaにはポインタが無いとは描いていない
「ポインタが無い」Javaと描いている
0689774ワット発電中さん
垢版 |
2023/09/24(日) 14:19:32.44ID:3fdSyMx4
「Javaにはポインタが無い」と「ポインタが無い」Java に、

この件において

どんな意味の違いがあるの?
0690774ワット発電中さん
垢版 |
2023/09/24(日) 14:31:30.15ID:OMO90ysE
・ポインタとはアドレスベースでデータを参照する機能である
・ポインタは今どきの処理系には大抵存在する
・C/C++などの一部の処理系を除き境界チェックされる
0691774ワット発電中さん
垢版 |
2023/09/24(日) 14:36:16.29ID:R9qz7oH6
>>689
君國語の成績悪かっただろ?
0692774ワット発電中さん
垢版 |
2023/09/24(日) 14:39:08.04ID:3fdSyMx4
>>691
>>686において「全然違う」とだけ非難して、何が違うのかの説明はまだだね。

>>688において「Javaにはポインタが無い」ではなく「ポインタが無い」Java だと言いつつ、この件においてのその違いの説明のしないつもりかな。

ふたつとも待ってるよ。
0693774ワット発電中さん
垢版 |
2023/09/24(日) 14:57:04.17ID:3fdSyMx4
>>681
> p->num = 0;     // アドレスしか入れられない*pのnum(?)に0を入れる
の方は説明したけど、
↓の方はこれはこれで別のひっかかりっぽい?
> p->str = "Hello";  // アドレスしか入れられない*pのstr(?)に"Hello"を入れる(?)

この人は「p->str」がポインタであることは認識している。

この文は "Hello"を入れているんじゃないです。
"Hello"という文字列を格納しているアドレスを、p->str に入れています。
p->str = "Hello"; がコンパイルされたら、多くの場合メモリのどこかの領域に Hello\0 の6バイトが確保されます。
p->str に その領域の先頭アドレスが入ります。
0695774ワット発電中さん
垢版 |
2023/09/24(日) 21:42:20.54ID:3fdSyMx4
>>694
>>681で返答している質問の>>680は見たのかな?

> typedef struct {    // 以下の構造を持つ変数型を宣言する
> int num;      // 構成員1 numという数値変数
> char *str;     // 構成員2 その次にstrという名前のポインタ用変数
> } strct;        // 上記の構造を持つ「型」を strct という名前で呼ぶこと

見ての通り、strメンバーは、charのポインタだよ。

なぜ違うと思ったのか説明して。
0698774ワット発電中さん
垢版 |
2023/11/27(月) 23:20:18.84ID:LpF7eOHE
“組み込み用”のファイルシステムやライブラリってないのかな?
・コントローラ付きフラッシュメディア用(データのアラインが出来る)
・読み出し専用
・非同期アクセス可能(FIFO、バックグラウンド読み出し)
・高速エントリ探索
自分で作ってもいいけどすでにあるのならそっち使った方がよさそうだし・・・
0699774ワット発電中さん
垢版 |
2024/01/18(木) 21:05:24.13ID:N2qj1hNp
自分で作れるなら作ったほうが、後々楽よ
0701774ワット発電中さん
垢版 |
2024/02/21(水) 02:38:40.05ID:PoiUZRbV
ちっとも動かずに、半日悩んでしまいました。
同じ変数名をグローバルと関数内で宣言してしまった場合、
関数内の変数の方が優先なんだね。
0702774ワット発電中さん
垢版 |
2024/02/21(水) 12:20:18.74ID:tJ+ZT3Bx
>>1
本当に楽勝でやる人には、本当はそんなやり方じゃダメだとか、俺はもっと良い方法を知っているとか言うのでは?
気にするだけ無駄だと思います。
0703774ワット発電中さん
垢版 |
2024/02/21(水) 13:57:16.12ID:IVX0JOfo
>>701
python使えば良い
0704774ワット発電中さん
垢版 |
2024/02/21(水) 15:11:30.65ID:t3hedltn
Pythonだとグローバル変数が優先されるのか、勉強になるなぁ。
0706774ワット発電中さん
垢版 |
2024/02/21(水) 19:41:33.97ID:ueIcNcGI
グローバル変数は意識して使わないといけないから、なのかな。

でも、関数内でうっかり同名の変数に代入して、同じ関数内の別のところで、
同名のグローバル変数だと信じて参照するケースもあると思う。
>>701さんのだって、
関数内でうっかり同名変数を宣言して、同じ関数内の別のところで、
同名のグローバル変数だと信じて参照してたのかもしれないし。

それ以前にPythonが使えるマイコン環境はむしろ少なそう。
0707774ワット発電中さん
垢版 |
2024/02/21(水) 20:25:44.10ID:ZxC9UuKG
変態命名則 exDwHoge
名前空間に押し込む myglb::hoge
グローバルオブジェクトに持たせる glb.hoge
グローバル変数絶対つかわないマン #define HOGE
0708774ワット発電中さん
垢版 |
2024/02/21(水) 22:27:14.65ID:sMnq/5eu
でも、使いたいグローバル変数が分かってるのにそれと同じ名前の変数を作っちゃうというのも随分なうっかりさんだよね。
あるいはグローバル変数の方を後で追加したんかな?
0709774ワット発電中さん
垢版 |
2024/02/22(木) 01:12:31.52ID:gKe8zB+g
>>708
最初は関数内だけでstaticで使っていたんだけど、
その変数値を関数外でも参照したなり、グローバルに出したのです。
が、関数内の変数宣言を // するのを忘れました。
関数内では正しく処理されているのに、mainで if( hoge==1 ){とやっても
全然1にならない。
0711774ワット発電中さん
垢版 |
2024/02/23(金) 00:51:42.49ID:SqM8iMFD
Rustが使えるマイコンって 何がありますか?
0714774ワット発電中さん
垢版 |
2024/02/23(金) 12:12:19.81ID:XxMmkSd6
Rustマジ面倒臭いわ
0715774ワット発電中さん
垢版 |
2024/03/03(日) 12:23:41.10ID:+3niRoTA
自前のメモリアロケーション管理はイヤ、
ガベコも嫌い、例外もイヤみたいな
欲張りセットがターゲットだしな

クミコではガベコ=害悪、絶対にスコープ縛りみたいな
メモリをドバドバ使った動的管理がクリティカルなケースが限られる

メモリ管理のちょっとしたミスで数百万円のサーバを食い散らかす
サーバサイドアプリの記述なんかは強力なんだろうけど
レスを投稿する


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