マイコンソフト 悩み事相談室 4
.
∧ ∧
( ´・ω・) < コンフィグって何? 昆布なら知ってる。 ボラチルって何? ボラは魚だよ。
( ∪ ∪ ,.-、 ,.-、 ,.-、 ,.-、
と__)__) (,,■) (,,■) (,,■) (,,■)
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/
では、質問、ドゾ〜 いちおつ。
前スレの
http://rio2016.5ch.net/test/read.cgi/denki/1497806664/998-999
ハードウェアリセットが付いているシステムなら、SRAMへの書き込みで、アドレス不定になるものってあるかな。 シーケンスのわからないバカがまだ何か言ってる。
そこじゃねえんだよ 「書き込みシーケンス途中で落ちるのが悪い」だと?
「任意のタイミングで電源を切ることが出来る」システムが欲しいって話をしてるんだ。
そしてそれを実現するために工夫された回路やプログラムが世の中に存在してるんだ。
それが無駄だってか?
己の無知を恥じろ。 アドレス不定になるから、シーケンスで対処するべき、って主張なんだと思うけど、それは置いておいて、
>>3の条件で書き込みアドレスが不定になるものってあるのかな? って話なんだけどな
ない、は言えないね。悪魔の証明だ。
勘違いしてるようだけど、アドレスが不定にならないならシーケンスやハードでの対処が要らない、って言ってるわけじゃないよ。 ・キャパシタと電圧監視で書き換え完了できる動力が保証できる場合のみ書き換えを開始する
・CRCとかを最後に書くようにして2つの領域を交互に使うようにする
のいずれかになるね
前者は外付け部品が必要になるし、後者はCRCの計算と二倍以上の記憶領域が必要になるから用途で使い分けたらいいと思う 自分がよく使うマイコンのマニュアルを読むと内蔵フラッシュに書き込み中のリセットは
所定のリセット条件を満足すれば問題ないようだ
禁止条件にも書かれていないし書き込み中のブロックが不定になる程度ですむと思われる
とはいえ常識的に考えて日常的にそのよう状況が発生する設計は避けるべきだとは思うが
書き込み中に規定外の電圧への遷移や一部のフラグの変更等はフラッシュへダメージがある
可能性がある理由で禁止されている >>7
> アドレス不定になるから、シーケンスで対処するべき、って主張なんだと思うけど
ここで言うシーケンスって何? >>11
いやいや、シーケンスで「対処」って何よって話 オペコペコペコ、オペランド…今から緊急手術を行う‥‥doctor P 普通の強盗 ・・・・「金を 出せ!」
ポーランド人の場合・・・・・「出せ 金を!」・・・「キン玉じゃない!」 >>16
ポーランド記法・・・・「金を 出せ!」 値+命令
非ポーランド記法・・・・「出せ 金を!」 命令+値
日本語はポーランド記法に近い語順
英語は非ポーランド記法に近い語順 ポーランド記法・・・・金を出せ お前は 俺に
非ポーランド記法・・・・お前は 金を出せ 俺に
逆ポーランド記法・・・・お前は 俺に 金を出せ 強盗の例は分かりにくいので、数字と演算子で教えてください。
hp電卓と似ていると聞いたことがあります。 非ポーランド記法・・・・ (1+2)*3
ポーランド記法・・・・* + 1 2 3
逆ポーランド記法・・・・ 1 2 + 3 * 非ポーランド記法・・・・ (1+2)*3
逆ポーランド記法・・・・ 1 2 + 3 *
非ポーランド記法・・・・ 1*(2+3) の場合は
逆ポーランド記法・・・・ 1 * 2 3 + でしょうか。 >>25
演算子から2つ前の値しか関係しないということですね。 >>25
演算子から2つ前の値しか関係しないということですね。 基本スタックマシンだから
push 1
push 2
push 3
popしてpopして足してpush
popしてpopして掛けてpush
みたいな感じ >>24
逆ポーランドだと312+*でも行けない?
スタック型よね。
fothとかpostscriptとか。 ひとつの袋に黄色いりんご1個と赤いりんご2個が入っています。
その袋を3つ買いました。全部でいくつのりんごを買ったでしょう。
生徒:3×(1+2)=9 です
先生:バツです。 (1+2)×(3+4)は、
1 2 3 4 + ?? 一時記憶? スタック自体が一時記憶だからな。
1に2を足して3に4を足して掛ける。 数字の打ち込みはスタックに積むこと。
二項演算子を「スタックから2つとってきて計算してスタックに戻す」と考えれば理解しやすかも。 なるほど 上2つの数値が対象でしたね。
どんな複雑な四則計算も、それでできるのでしょうか。
(1+2)*(3+4)/( (5+6)*7)
1 2 + 3 4 + * 5 6 + 7 * / ですね 四則演算に限らず(用意されてりゃ)関数とかも使える
sin(√(1 + 2) * 3)
1 2 + √ 3 * sin 関数や演算子のパラメータの数だけスタックから取ってきて、結果をスタックに返すわけだしね。 usin(√(1 + 2) * 3)
1 2 + √ 3 * sin
なるほど、これは簡単だと思うけど、
式の()とか、優先順位を人間が解析した上で 1 2 ...と記述を始めるわけですが、
その解析をしなくても、数式通りに
usin(√(1 + 2) * 3)
と書き込めば、Cとかならコンパイラが計算してくれますよね。
だとすると、ポートランド記号は、どういうときに使用されるのでしょうか。 逆ポーランド電卓を使う時とか8087をアセンブラで書く時とか >>39
> ポートランド記号は、どういうときに使用されるのでしょうか。
逆ポーランド記法な
使うのは Forth とか PostScript を使う時かな
今どきそんな機会があるかどうかは知らんけど 昔の同僚にHPの電卓のファンがいて、逆ポーランドの方がわかりやすいと言ってました。
>>39の感覚は、「通常の数式表現から逆ポーランドに置き換える」というものだと思いますが、
その同僚の感覚は「いきなり逆ポーランドで考える」だったと思う。
俺は、英語の文書を作るときに、いったん日本語で考えてから翻訳しますけど、
英語ネイティブや、そこそこの英語使いなら最初から英語で考えるはず。それに似ているかも。
俺の逆ポーランドに対する感覚は>39に近いけどね。
プログラムの中でユーザーが入力した「通常の式」を解釈するときは、逆ポーランドに置き
換えるか、再帰的に式を解釈したりしていますが、後者もスタックを使っているのは同じ。 >>42
昔、数式のパーサーを作ったけど、確かにスタック操作だったのを思い出した >>41
1+ 2 をアセンブラで書くときも
mov a,1
mov b,2
add a,b
とかやるんじゃないか?
今どきそんな機会があるかどうかは知らんけど >>42
1 と 2 を足した(+) ものに 3 と 4 を足した(+)ものを 掛ける(*)
なので日本語と逆ポーランド記法の順序は似てる
>>44
マシンによるけど
mov a, 1
add a, 2
ってやれることが多いからちょい微妙な気がする >>45
なるほど。
ってか、実際はコンパイラが最適化するけどね。 >>42
RPN電卓は慣れてくると変換とか考えなくても自然と扱えるようになる
特に()とか計算順が関係してくるのはなんも考えずに先頭から入力していけるし
まあ最近の関数電卓は数式入力とか普通だからあまり魅力はないかもしれないが
あとはPOSレジ(加算器)なんかは逆ポーランド的操作だね
値段 +
値段 +
個数 *
値段 +
:
合計
みたいな感じだし >なので日本語と逆ポーランド記法の順序は似てる
Forth系言語の 日本語Mind とか… FORTHってなかなかユニークな言語だよね。
昔、興味が湧いて、使っているCPU用に移植した事がある。
その時に逆ポーランド記法を初めて知ったけど、演算処理が簡単になるので、
その後、あるオリジナルの言語処理系を作った時にも採用した。 ATmega168で「I2C and SPI通信モニタ装置」を製作した時に
データ取り込み開始・停止の条件判定にスタックを使う逆ポーランド記法でやった
Forthを考えついた人は天才だと思う スタックにデータを置くシーケンサ(PLC)にも変数(データ格納アドレス)は存在しない。
格納場所が決まっているので存在しようがないというか、
そもそも存在させないためにスタックに置くというか・・・ 質問です。
マイコンのプログラムは今はCで書いていますが、
Pythonで書くことはできるのでしょうか? >>55
ありがとうございました。
ググったら、いろいろとわかりました。
どうもありがとうございます。 >>57
ありがとうございます。
確かにARMクラスが妥当だと思いますが、デジキーの案内のページを見ると...
MicroPythonはすでに何種類かのマイクロコントローラシリーズに移植されており、
これを出発点として新規プラットフォームに移植するか、
すでにサポートされているマイクロコントローラを選択することができます。
図1に示すのは、MicroPythonのソースコードのメインディレクトリです。
ここから、サポートされているマイクロコントローラデバイスを確認できます。次
のマイクロコントローラが含まれます。
ARM®ベースのマイクロコントローラ
Texas Instrumentsの CC3200
Adafruitの ESP8266
Microchip Technologyの 16ビットPICマイクロコントローラ
STMicrolectronicsの STM32
と、書かれています。 PICでもできるみたいで、興味があります。