水上ドローンの製作、その4
変なタイトルで書き始めたけど、その4.
ロッドをクロスして回転させるやつを3つ作って120度で連結。



上に100均で贅沢して200円で買ったパッキン付きケースを載せてみた。



昨夜の読書は、熱血!アセンブラ入門
高度情報人材教育というのがキーワードになってて、何をどこまで教えるかの議論は結構あるのですが、ハードに近い情報技術者の育成も考えたらアセンブリ言語もちょっとは知っておいた方が良いと思います。
が、いまさらアセンブラなんて不要という情報系の人も多くて、勉強がてら買っておいてちゃんと読んでない本を昨夜は読んでました。
アセンブラやるのはやっぱり熱血!なんですね。


熱血!アセンブラ入門 坂井 弘亮

もう紙版は売られてないようです。
Kindle版がありました。
熱血! アセンブラ入門 Kindle版

そして「熱血! アセンブラ入門」の増補改訂版は、
大熱血! アセンブラ入門 Kindle版です。

-追記-
購入する前に低評価のレビューにも目を通しておくことをお勧めします。
評価が両極端に分かれる本のようです。
2024.02.15 10:53 | pmlink.png 固定リンク | folder.png 本の紹介
過去のラジコン飛行機講座
サイトのアクセスログを見てみたら平成14年に行った公開講座のファイルが直接アクセスされてるようで、ホームページからはリンク張ってないようだけど過去にtwitterでつぶやいたのを思い出しました。
今見ると、2日の公開講座の準備に結構な労力を使ってて、いい思い出ではあるのでトップページのリンクを貼っておきます。
昔の解像度で動画もおいてありました。
個人名称も電話番号も乗ってたので、そのくらいは消しておかないと。
数年、数回はやるつもりで準備したのですが、中学生には難しかったようで、ちゃんと完成できたのは数人でした。でも形だけは大抵できてたので、楽しんでもらえたと思います。
結局1回きりの講座になりました。

R/C飛行機(グライダー)講座

-追記-
PDF編集ソフト持ってないので電話番号消せない。
検索すれば出てくる情報ではあるのでいいか。
真面目な用事があったら電話来てもまあOK.
2024.02.15 00:30 | pmlink.png 固定リンク | folder.png その他・雑談
LED電球の分解、その2
せっかくなので、どこが壊れてるか調査。
LEDをひとつずつ当たっていったけど、特に壊れてなさそう
このLEDモジュールは、1個当たり15V-16Vで光りました。
7個直列なので105Vで光らせることになります。



電解コンデンサも外して容量確認。絶縁はあって10μFありましたので、まあ大丈夫。



テスターで接続を追いながら回路を書いたらこんな感じ。(部品の型番は伏せておきます)
交流100Vをブリッジダイオードで全波整流してピーク値で直流にして、3端子の何かで電流制限をかけてLEDモジュールを直列に光らせてるので、壊れたのは多分3端子の何かですね。



広告↓ なんか怪しい電球
スマート電球WiFiコントロール-フルカラー調光可能RGB携帯電話制御LED電球、音楽リズム時間制御色の変更リビングルームのバーパーティーに最適


一番シンプルなC言語のプログラムのアセンブリ言語変換
Microchip studioでC言語のプログラムを作成して、ビルドでできた .lss ファイルを見るといろいろ長い。
new -project で gcc c executable project で新規プロジェクトを作成するとシンプルなコードができる。

#include


int main(void)
{
/* Replace with your application code */
while (1)
{
}
}

不要なものを入れたくないので、 #include コメント化

これでビルドしてできたHEXは、


:100000000C9434000C943E000C943E000C943E0082
:100010000C943E000C943E000C943E000C943E0068
:100020000C943E000C943E000C943E000C943E0058
:100030000C943E000C943E000C943E000C943E0048
:100040000C943E000C943E000C943E000C943E0038
:100050000C943E000C943E000C943E000C943E0028
:100060000C943E000C943E0011241FBECFEFD8E04C
:10007000DEBFCDBF0E9440000C9441000C940000F4
:06008000FFCFF894FFCF52
:00000001FF


.lssの一部を抜き出してみると...

Disassembly of section .text:

00000000 <__vectors>:
0: 0c 94 34 00 jmp 0x68 ; 0x68 <__ctors_end>
4: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
8: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>
 -途中省略ー
64: 0c 94 3e 00 jmp 0x7c ; 0x7c <__bad_interrupt>

00000068 <__ctors_end>:
68: 11 24 eor r1, r1
6a: 1f be out 0x3f, r1 ; 63
6c: cf ef ldi r28, 0xFF ; 255
6e: d8 e0 ldi r29, 0x08 ; 8
70: de bf out 0x3e, r29 ; 62
72: cd bf out 0x3d, r28 ; 61
74: 0e 94 40 00 call 0x80 ; 0x80

78: 0c 94 41 00 jmp 0x82 ; 0x82 <_exit>

0000007c <__bad_interrupt>:
7c: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>

00000080
:

// #include
int main(void)
{
80: ff cf rjmp .-2 ; 0x80


00000082 <_exit>:
82: f8 94 cli

00000084 <__stop_program>:
84: ff cf rjmp .-2 ; 0x84 <__stop_program>

というわけで、これが最低限のCコンパイラで生成されるアセンブリ言語のようだ。
0番地から68番地に飛んで、なんか省略できない設定をして、
80番地をコールして、80番地で無限ループに入る。
リターンは無いけど、もしリターンがあっても、82番地に飛んで、そこで割り込み禁止して無限ループに入る。
というプログラムになるようだ。



2024.02.13 18:57 | pmlink.png 固定リンク | folder.png その他・雑談

- CafeLog -