ラジオ少年の楽しい電子工作、その他

AVRを使った簡単な回路の実験、そして日々のちょっとした出来事を書きます。

100円ラジオ

2013年01月19日 | 日記

もう今は売られていませんが、100円ラジオです。左側がストレートタイプ、右がスーパーヘテロダインタイプです。

ストレートタイプは25mm長のバーアンテナが内蔵されていますが室内でもそこそこ聞こえます、ただ、時々相当ゲインが高いせいか発振してギャーとかプーとか変な音が出てしまいます。音量を上げると出やすい印象。

スーパーヘテロダインタイプはさすがに発振もせずそれなりに良く聞こえます。しかし、100円でよく作れると感心してしまいます。

両方ともmade in China です。

ストレートタイプをばらしてもっと大きなバーアンテナを付けてついでにスピーカも鳴らして見ようかと引き出しをかき回して探しだしました。今は100円ラジオは売っていません。FMが聞こえるラジオもその当時売られていたようです。一人で何台も買って部品取りや別の目的に利用していたようですが、、、、古い話題です。

 

 

コメント (2)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

USBasoLoaderまとめ

2013年01月16日 | 日記

今までUSBaspLoaderについて色々やってきましたが、この辺でまとめたいと思います。

原典は下記URLです。

https://github.com/baerwolf/USBaspLoader

ここにあるUSBaspLoaderは対応deviceが複数あり再現性に優れています。私はATmega168,1248、644,32の4種類のAVR用にコンパイル、書き込みを行い何れも正常に機能しています。

USBapLoaderの特長:

1.selfprogrammingが可能

2.書き込み速度が速い

3.boot領域にbootloaderを書き込む関係でユーザ用のFlash領域がその分とられてしまう。

これが欠点かも知れませんがFlash容量の大きいAVRを使うことでこの欠点は補えるのではないかと思います。

USBaspLoaderを使う上で大事なものはPC上でUSBaspLoaderを操作するアプリケーションプログラムです。これはsenshuさんが作られたavrdude-GUI(YCIT版)の改良、改善が行われてUSBaspLoaderにも対応、非常に使い勝手が向上しました。

http://www-ice.yamagata-cit.ac.jp/forum/viewtopic.php?t=1013&start=0


特長:

1.複数のUSBaspLoaderの使い訳が可能

USB:Device番号、serial番号の指定をすることで任意のUSBaspLoaderを使う事が出来ます。これは大変便利です。つまり、自作のserial番号のないUSBaspLoaderはDevice番号を指定すれば良く、両方を持つ場合はどちらか指定することで使い分けが可能です。

2.avrdude-GUIの画面から全ての操作が出来、DOS窓からのCUI操作をしなくても済みます。

3.F6を押すことでUSB listが表示されますので、接続されているUSBaspが一目で把握できます。

(USB listはUSBaspLoaderを使う上で表示させる必要があります。)

下記がそのlistです。

> usbtool.exe list
# 1 : bus-0:\\.\libusb0-0001--0x16c0-0x05dc "www.fischl.de",       "USBasp"          , Ldr0001
# 2 : bus-0:\\.\libusb0-0002--0x058f-0x6362 "Generic",             "Mass Storage Device" , 058F312D81B
# 3 : bus-0:\\.\libusb0-0003--0x16c0-0x05dc "www.fischl.de",       "USBasp"          , 1234
# 4 : bus-0:\\.\libusb0-0004--0x16c0-0x05dc "www.fischl.de",       "USBasp"
# 5 : bus-0:\\.\libusb0-0005--0x16c0-0x05dc "www.fischl.de",       "USBasp"          , Ldr0220

書き込まれたUSBaspLoaderはprogrammerそのものです。

では一連の操作について書きます。(画像参照)

1.GUI画面を開きF6を押してusbtool listをLog窓に表示させます。

2.使いたいUSBaspLoaderのserial番号又はDevice番号をコピーしてcommand line options欄に貼り付けます。

3.この時、 -P usb:Ldr0220 の様に貼り付けることが必要です。:の後スペースが入っていけません。

4.これで準備OK、画像の赤丸のDevice readをクリックしますと、この例ではATmega32(m32)が表示されます。

画像の例はserial番号無しを選んだ時の表示です。私の場合はATmega1284ーUSBaspLoaderです。

この後はユーザプログラム(xxx.hex)をドラッグ&ダウンでFlashに書き込みます。Boot enable jumperを外してresetを押すことでxxx.hexが起動します。違うプログラムを書き込む場合はjumperを付けでresetをす事でboot modeに入りますので上記手順で書き込むことが出来ます。

実際は何台もUSBaspLoaderをつなぐことはほとんどないと思いますが。

これでUSBaspLoaderは1件落着です。

2013/1/17(木)

ついでにATmega8にUSBaspLoaderを書き込んでみました。全く問題なく使えます。

   text    data     bss     dec     hex filename
   1968       8      52    2028     7ec main.bin

2K以内に収まっています。(avr-gcc-4.7.2使用)

次は何をやろうかな、気圧計が実用的で面白そう、気圧の変化をグラフでGLCD上に表示させれば台風や低気圧の接近の様子が分かりそう、、、、、、、、

 

 

コメント (5)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

初雪

2013年01月15日 | 日記

2013年になっての初雪です。

 

昨日とはうってかわって晴天になりました。冷蔵庫の中に居るようで寒いです。

道は雪と氷で滑りやすく、転ばないようにしないと。しばらく根雪になって残るでしょう。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

USBaspLoader(6) & updater

2013年01月13日 | 日記

updaterの機能を確認してみました。

1.bootloaderを別のプログラマで書き込む。すでに書き込まれています。

2.bootloaderのversionを上げる(つまり再コンパイル)準備が必要。

usbconfig.hの中味を少し替えます。

#define USB_CFG_DEVICE_NAME 'U', 'S', 'B', 'a', 'a', 'a' <ーーーー替える前は”USBasp”
#define USB_CFG_DEVICE_NAME_LEN 6

これを上書きします。

3.この状態でmakeで再コンパイルします。

4.avrdude-GUIを開いてusbasp=loader:にしてDevice read をします。そして、F6でusb device listを表示させます。

# 1 : bus-0:\\.\libusb0-0001--0x058f-0x6362 Desc="Generic","Mass Storage Device" serial="058F312D81B"
# 2 : bus-0:\\.\libusb0-0002--0x16c0-0x05dc Desc="www.fischl.de","USBasp" serial="7777"

5.次に再コンパイル後のupdater.hexをavrdude-GUIにドラッグして書き込みます。

6.PD7のjumperを外してresetを押し書き込んだupdaterを実行します。

7.再びjumperを付けresetを押しboot modeにします。

8.avrdude-GUIでDevice readを行い、F6でusblistをだします。

# 1 : bus-0:\\.\libusb0-0001--0x058f-0x6362 Desc="Generic","Mass Storage Device" serial="058F312D81B"
# 2 : bus-0:\\.\libusb0-0002--0x16c0-0x05dc Desc="www.fischl.de","USBaaa" serial="7777"

USBasp ーーーーー> USBaaa に変わりました。

この時、avrdude-GUIのProgrammer(-C)はusbasp: USBasp,を選ぶ、usbasp=loader:では Device readができません。

どうやらupdater.hexはちゃんと機能している様です。

 

2013/1/13(日) 16:20

updater.hexの確認方法に不完全な所が有りましたのでもう一度やり直しです。

1.usbconfig.hのserial no.を 7777 から 7788 にしてコンパイル。(usbaspからusbaaaの変更はやらない)

2.コンパイル後のupdater.hexをmega168Pへbootloaderから書き込む。

3.updater.hex実行。

4.resetを押してboot modeに入りusblistで変更の確認。

bus-0:\\.\libusb0-0002--0x16c0-0x05dc Desc="www.fischl.de","USBasp" serial="7788"

serial no.は7788に変わっています。

5.avrdude-GUIのProgurammer(-C)の欄に ”usbasp=loader:”を選択します。そしてLOG窓のbus-0:\\.\libusb0-0002--0x16c0-0x05dcをコピーしてCommand line Optionに貼り付けます。下記の様に貼り付けます。

-P usb:bus-0:\\.\libusb0-0002--0x16c0-0x05dc

Device readでmega168が上記画像の様に表示されることを確認する。

5.この状態(boot mode)でled_blink.hexを書き込みます。

6.jumperを外しresetを押すとboot modeからアプリケーション実行modeになりLEDが点滅を始めます。

これでOK、updater.hexに依るboot loaderの変更が出来ました。



コメント (22)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

USBaspLoader(5)

2013年01月13日 | 日記

USBaspLoaderのソースにあるMakefile.incにavr-gcc versionを切り替える為にそれぞれのPathを下記の様に記述してあります。

# Tools:
#AVR8TOOLCHAINBINDIR = C:\program files\atmel\avr tools\avr toolchain\bin/
AVR8TOOLCHAINBINDIR = C:\program files\mhv avr tools\bin/
#AVR8TOOLCHAINBINDIR = I:/winavr-20100110/bin/
AVRPATH = $(AVR8TOOLCHAINBINDIR)
AVRDUDE = @echo avrdude $(PROGRAMMER) -p $(DEVICE)

ECHO=@echo
GCC=@gcc
MAKE=@make
RM=@rm -f

CC=@$(AVRPATH)avr-gcc
OBC=@$(AVRPATH)avr-objcopy
OBD=@$(AVRPATH)avr-objdump
SIZ=@$(AVRPATH)avr-size

firmwareにあるMakefileにPathを表示する記述を追加してこれをコンパイルしたメッセージは下記です。

C:\Documents and Settings\E\デスクトップ\USBaspLoader-master-mod>make
.
.
======>BUILDING BOOTLOADER FIRMWARE
.
make[1]: ディレクトリ `C:/Documents and Settings/E/デスクトップ/USBaspLoader-master-mod/f
irmware' に入ります
In file included from usbdrv/usbdrv.c:12:0,
                 from main.c:46:
usbdrv/usbdrv.h:213:24: warning: 'usbFunctionDescriptor' used but never defined [enabled by default]

.
.
.
!!!ATTANTION!!!
(data+text) MUST fit into your MCUs bootloader section
CC=C:\program files\mhv avr tools\bin/avr-gcc  <----- avr-gcc のPathを表示
.
   text    data     bss     dec     hex filename
   1968       6      54    2028     7ec main.bin
.
.
.
make[1]: ディレクトリ `C:/Documents and Settings/E/デスクトップ/USBaspLoader-master-mod/f
irmware' から出ます
.
.
======>BUILDING BOOTLOADER UPDATER (EXPERIMENTAL)
.
make[1]: ディレクトリ `C:/Documents and Settings/E/デスクトップ/USBaspLoader-master-mod/u
pdater' に入ります
updater.c:52:4: warning: #warning I do not know where new "bootloader__do_spm" is located - assuming
 "NEW_BOOTLOADER_ADDRESS+(funcaddr___bootloader__do_spm % SPM_PAGESIZE)" [-Wcpp]
updater.c:60:4: warning: #warning "TEMP_SPM_PAGEADR" is not defined explicitly - will choose END OF
FLASH ! [-Wcpp]
updater.c: In function 'main':
updater.c:315:29: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
updater.c:328:29: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
updater.c:338:1: warning: control reaches end of non-void function [-Wreturn-type]
.
.
   text    data     bss     dec     hex filename
   3020       2       0    3022     bce updater.elf
.
avrdude -c usbasp -p atmega168 -D -U flash:w:updater.hex:i
.
make[1]: ディレクトリ `C:/Documents and Settings/E/デスクトップ/USBaspLoader-master-mod/u
pdater' から出ます

コンパイルに実際に使われたavr-gccのversionを表示出来ればそれが一番ベターですが下記の様にversionチェックを行うとPathに設定された一番優先度(左側に記述されたPath)の高いavr-gccのversionが表示されます。


C:\Documents and Settings\E\デスクトップ\USBaspLoader-master-mod>avr-gcc -v
Using built-in specs.
Target: avr
Configured with: ../gcc-4.3.3/configure --enable-win32-registry=WinAVR-20100110 --with-gmp=/usr/loca
l --with-mpfr=/usr/local --prefix=/c/WinAVR --target=avr --enable-languages=c,c++,objc --with-dwarf2
 --enable-doc --disable-shared --disable-libada --disable-libssp --disable-nls --with-pkgversion='Wi
nAVR 20100110' --with-bugurl='URL:http://sourceforge.net/tracker/?atid=520074&group_id=68108&func=br
owse'
Thread model: single
gcc version 4.3.3 (WinAVR 20100110)  <----- Pathに設定されたavr-gccのversion

3020 byteのupdater.hexが出来ますが、これはどうやって使うのか?要調査です。

コメント (4)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする