AVRマイコン総合スレ Part37
■ このスレッドは過去ログ倉庫に格納されています
だってメガ382とかパッケ大きすぎじゃん
IOピンもっと少なくていいからもっと小さいパッケが欲しいときとか
どうんすのよ? >>629
QFN。更に小さいパッケージが御所望であったのなら申し訳ない。 私はメモリ容量ではなくて、I/Oで決めることが多い。
AVRはDIPの2313、328、1284の何れかをよく使う。
値段はあまり気にしない(値段で迷った事は無い) おれもI/Oピン数で決めるな
たまに40P DIPで、ほとんどの場合20P、28Pで足りる
AD必要ならMEGA328 無しなら2313 Tinyはとにかく小さくしたいときに便利です。
8PINはインドアプレーンなどに使ってます 一度 米粒を使ってみたいが そういう具体的用途がないんだよね
ないなら作るか・・・ 俺も同じtiny10いつか使ってみたいが用途がない
Flash少ないし何ができるかな? 他励式圧電サウンダに発振プログラム仕込んで、自励式にしちゃいなよ。 市販のLEDライトを改造して、PWM制御で明るさを調整出来る様にするとか CPUだからと大げさに考えずに定番タイマー555の代用として
外付け部品1個で、fとか時間幅を決められたら便利かも? 制限つきでもムリか?
555だと最低でもC,R、4個程度必要。 これすら面倒で秋月のキットを買ってしまう性分。 CR外付けで555と同じ動作させてみたら?
555のドライブ能力には勝てないけど。 そうだな。2個でもDuty 50% 発振器作れるか。
まとめてプログラム書き込んでおく。
精度要らないし1K~0.1Hzで大体間に合うから十分だな。 ユーロサイズのユニバーサル基板に部品をガッツリ載せるほうが好きだなw エッジ検出にCPUパワー取られるけどI2Cスレーブ化するとか
tiny13Aと違って16bitタイマー積んでるから色々できる 発振器で思い出したのだが、
先日、生まれて初めてスタックを使わないプログラムを書いた。
スタック無くてもそれなりに作れるもんだなと、我ながらビックリした。
もちろんアセンブラで。
tiny2313で作った電子工作「猫撃退用音波発振器」の仕様
・I/O
入力1点:モーションセンサ
出力3点:赤色LED、緑色LED、発振出力
・動作
センサーオフの期間
>緑色LEDを0.5秒間隔で点滅、赤色LEDを消灯
>発振出力オフ(H出力)
センサーオンの期間
>緑色LEDを消灯、赤色LEDを点灯
>16KHz程度、デューティ比約1:2で発振出力オン(H/L反転出力)
セットアップを除く、メインループが28命令だった。
>>639
アセンブラやってみたら?
趣味ならコストや納期の制約が無いし、キラキラと輝く新しい世界が待っているよ。 >>639
AVRのアセンブラは、やったほうがいい
PICのアセンブラは趣味以外の何物でもないが まあ、どっちも趣味
人に勧めるようなもんじゃない、現代ではな
ジイの世代の認識は知らん CASLできたらAVRはできるが、PICは意味不明だろうな。入門サイトググっても肝心なことが書かれてない。
本人たちはそれが常識で端折ってんだろうが、実は変態の常識なので説明されないと分からない。 >>645
>>646
今はtiny10で作りたい物は特に無いけどやってみようかな
レスありがとう >>636
ライター作って、チャージポンプ作って、ライターにつけた。ほかには冷蔵庫開けっ放しアラームつくったぐらいだな。 >>651
アセンブラとCとLチカの関係について
あなたのご高説をぜひ賜りたいです >>645
光利用はユニーク
要は驚かせればいいのだから効果高そうだね
市販品でも利用されている超音波はいまひとつだった
真似させてもらいます ・I/O
入力1点:モーションセンサ
出力3点:赤色LED、緑色LED、発振出力
・動作
センサーオフの期間
>緑色LEDを0.5秒間隔で点滅、赤色LEDを消灯
>発振出力オフ(H出力)
センサーオンの期間
>緑色LEDを消灯、赤色LEDを点灯
>16KHz程度、デューティ比約1:2で発振出力オン(H/L反転出力)
PSoCだとPSoCブロック(内蔵ハードウェア)だけで全部出来そうだな。 Cypressがwin依存し過ぎだからだろう
開発ツールをOS限定した時点で流行るわけが無い
ルネサスも良い機種出してもWINしか対応してなかったから流行らなかった
技術者はUNIX系OS使用者の方が多いってことに気づくべき。 PSoCはハード屋から見ると分かりにくい。むしろFPGAのほうが見通しがいい。 AVRのアセンブラに興味がある人もいるかもしれないし,
ほんの雰囲気だけになりますが、短かくても完結しているので(長いプログラムの一部ではない)
発振器 >>645 のスタック未使用プログラムのメインのリストを載せます。
何の興味も無い方、スミマセン、読み飛ばして下さい。
発振周波数を決めるLo_period=115、Hi_period=55で、
センサはアナログコンパレータで入力しています。
発振は内蔵OSCの8MHz、緑色LEDの点滅間隔は1秒です。
できれば他のCPU、たとえばPIC24などのアセンブラのリストも見てみたい。 ;***** main loop **********************
;===== sensor OFF: LED_green blink
LED_Blnk:
wdr ;reset watch_dog timer
sbi PInB,_LED_Gr ;toggle LED_green ON/OFF
ldi YH,HIGH(1000) ;delay for 1Sec
ldi YL,LOW(1000)
;
LED_Blnk1: ;delay for 1mS
ldi ZH,HIGH(1989) ;adjusted by oscilloscope
ldi ZL,LOW(1989)
LED_Blnk2:
sbiw ZL,1 ;1mS elapsed ?
brne LED_Blnk2 ;No, wait 1mS
;
sbis ACSR,_ACO ;Yes, then comparator is Hi (sensor is OFF) ?
rjmp OSC_Out ; No, goto output OSC wave
sbiw YL,1 ; Yes, then 1S elapsed ?
brne LED_Blnk1 ; No, wait 1S
rjmp LED_Blnk ; Yes, loop again
;
;===== sensor ON: OSC output
OSC_Out:
sbi PortB,_LED_Gr ;LED_green turn OFF
cbi PortB,_LED_Rd ;LED_red turn ON ;
OSC_HL:
wdr ;reset watch_dog timer
sbi PortB,_AMP ;OSC High period (speaker ON)
ldi YL,Hi_period
OSC_H:
subi YL,1
brne OSC_H
;
cbi PortB,_AMP ;OSC Low period (speaker OFF)
ldi YL,Lo_period
OSC_L:
subi YL,1
brne OSC_L
sbis ACSR,_ACO ;comparator is Hi (sensor is OFF) ?
rjmp OSC_HL ;No, OSC go on
;
sbi PortB,_LED_Rd ;Yes, LED_red turn OFF
rjmp LED_Blnk ;return to LED_green blink
; >>658
FPGAよりずっとハード屋に優しいと思うけど。
ただ、デジタル一辺倒でアナログ回路的な思考ができないと
厳しいかもしれないね。 AVRのアセンブラは良いね
メモリ効率が良くて実行速度が速くてまるで中級言語(?)みたいに分かりやすい
これを命令コード16bitで実現していることに感心する レジスタ番号の若い方半分は、制約がかなり多くてあまり使い道が無い
むしろレジスタ数 半分で、その分アドレッシングの強化にまわしてもらってた方が
俺的には便利だったな
まぁ欲を言えばきりが無いからな、素直な方だと思うよ。 下位チップはメモリがほとんどないからメモリの代わりに使うんだよ。 I/O領域の扱いが不満。$00-$3Fまでの64バイトで収まってるうちは良かったけど
拡張I/O領域(メモリマッドI/O)が追加されてIN,OUT命令が使えなくなり
LD,ST系しか使えなくなった(SBI,CBIは元々I/O領域の前半$00-$1Fだけしか
対応していないのでもちろん使えない)
LD,ST系のメモリアクセスはXMEGAで改善されてるようだけど、それ以前の
Tiny,MEGA等だと2サイクル命令で遅い。 >>665
ループカウンタとか変数格納用途だね R0~7
俺の場合だけど
>>661
CPUのクロック周波数を幾らに設定しているの? 未だにDOSで遊んでいるせいか MOV と LD の使い分けで時々混乱してアセンブラに
怒られています >>668
CPUのクロックは内蔵RC発振器の8MHzです。分周はしていません。 >668
>ループカウンタとか変数格納用途だね R0~7
誰も指摘しないけど、即値系の命令が使えない等の制限があるのはR0〜R15では? 概要に 16 general purpose working registers って書いてあるやつだよ。 >>667
AVRも16bitなんてケチ臭いことにこだわってないで
AVR24上位コンパチ品とか出してくれれば
そういう使いづらいところが解消できたのにね
残念ッ! >678
>AVR24上位コンパチ品とか出してくれれば
それがXMEGAシリーズなのかも・・・。
AVRは最初の90Sシリーズから素晴らしいアーキテクチャだった、その後のTiny,MEGA,XMEGAも
良い出来だとは思うけど素晴らしいアーキテクチャの上にあぐらをかいて改良を怠った感がする >682
使えないと言ってるわけじゃなくてXMEGAに期待が大きかったのにあまりMEGAから改良されてないからじゃないか。
時期的にMicrochipがPIC18からPIC24,dsPICで凄い改良してきた時だし >>671,672
訂正、フォローありがと
そうでした
つい半年前にプログラム組んだのにもう忘れた
>>670
レス、ありがとう
対象物を検出したときの、スピーカーに与える信号は
オン、オフの繰り返しになるのですか?
変調のやり方がポイントという印象ですね >>680
使ってる人少ないけど良いよね
mp3デコード行けるパワー持ってるし
RX62と同等くらいか >>664
AVRの機械語はお世辞にもメモリ効率は良くはないぞ。 WebでAVRのプログラム見てるとほとんどが、フラッシュのアクセスにPROGMEMやpgm_read_byte()使ってるけど、
なぜNamed Address Spaces使わないの?
便利なのに。
https://gcc.gnu.org/onlinedocs/gcc-4.7.4/gcc/Named-Address-Spaces.html >>689
比較的最近実装された機能であるしWebに載ってる記事が新しい機能を
使いこなしてるとも限らないのでPROGMEMで書いてることも多いんじゃ
ないの。
素人に限ればAVRの最大派閥だと思うArduinoがちょい前まで古いGCC
使い続けてたのも大きいんじゃないかと思う。 >>690
CPUの命令やデータのビット数、プログラムの仕様で変わるだろうから
全く同じ条件での比較はできないと思うけど
とりあえず、仕様が書いてある >>661 のプログラムを他のCPUでも書いてみて
必要なバイト数を比べてみたらどうかな? >>688
メモリ上のデータを扱いだすとPICの倍以上にコードが肥大化する コードサイズは概ね32bit<16bit<8bit
要はレジスタ幅と本数が多い程コード効率は良くなるってだけ
例えば8bitで32bit演算なんてしたら4ワード掛かる >>689
古い開発環境だと通らないってのが大きいんじゃない
コピって来るような古いコードは古い環境で書かれてる訳だしな
ついでにputsとかで使う文字列ならPSTRの方が楽かもだし
新しいgcc入れても、新しいライブラリ向けに
リンクスクリクプトとスタートアップコードを変更すれば
古い開発環境でも使えるかもだけど、めんどいし… >>693
AVRにはメモリデータ相手の演算命令は無いからね
(そういう設計方針のCPUだから、と言うしかない)
でも例えばSRAM上の受信リングバッファ処理などでは
アドレッシングも特に問題は無いと思う
私が思うにCPUなんて用途・状況によってどれも一長一短で
8bitが常に32bitに負けるわけでも無いし
どんなCPUでもプログラムを組んでるときに
「あぁ、XXという機能があればなぁ」と思ったりするのでは? >>696
古い環境にこだわるやつがそんなにいるかね?
紹介してるやつがいないから広まってないだけでしょ。
AVRLibcの機能だけでも使ってるの見たこと無いのいっぱいある。 >>698
そこら辺は人によるんじゃね
個人的にはさすがにWin10-x64で動くライタ類は用意したけど
新しい開発環境の構築や学習、練習なんて
ちょうめんどいことは後回(ry
でも文字列定数へのPSTR挿入/削除や
const宣言に対する_flash空間等への追加書き換えとか
統合環境なんだしエディタにマクロ等用意して欲しい…とか思(ry >>689
> なぜNamed Address Spaces使わないの?
C++で使えないからだろ。 タイマをPLLで動かしたいのにPLL対応してるのがtinyばっかで苦労してるよ SDメモリからwav読み出して再生するのにDMA4チャンネル使い切ったりして遊んでるよ。
CPU使用率が限りなく0で何していいかわからん。 中華サイトで1番安いavrisp stk500を買ったらusbシリアル器だった
予備用にと思ったが、高い買い物なり 一方俺はISPシールドを買った
これでarduinoなattinyがお手軽に量産出来るぜ うちは、ミナトエレクトロニクスのユニバーサルプログラマ しばらくUSBBASPを使ってたんだけど何故かマイコンが3個連続で壊れたのでAVRWRTに回帰した
書き込みはメチャメチャ安定してるし、ヒューズビットの設定がラク
しかしただでさえボッタ栗な共立価格なのに、
今のはライタ基板だけじゃなくていろんな物がごちゃごちゃ付いてくるのが難点 Hidaspxばかり使っていますが、壊れたことは一度もありません UNOで焼いてるが問題なし
tiny85便利やね。普通にソフトシリアル使える ソフトシリアルなんかを使わなきゃいけない時点で全然便利ではない 今日もAtmel-Iceに助けられた。
データブレークポイントが無けりゃ簡単には捕まえられないバグだったわ。 デバッグ用のライン引いてる時だけ出ないバグとかあるからなぁ…
おっかねぇよ ATMEGA168用に公開されてるHEXファイルをそのままATMEGA328に書き込んでも
問題なく動きますでしょうか? デバイスなんて2クリックで変えられるもん何で変えないのか解せんがLチカレベルの単純なI/O程度なら動かなくはないはず
割り込みとかしてたら動かんものと見た方が良い >>724
すいません
>デバイスなんて2クリックで変えられる
これはどういうものでしょうか?ちょっと分かりませんでした ふつ〜にエスパーすりゃ
AVR Studioのプロジェクト辺りを前提にしていて
プロジェクトコンフィギュレーションを呼び出してDevice変えてリビルド
って事なんじゃね〜の?
ソースもプロジェクトも公開されてない、手元にあるのはHEXだけってなら
そりゃ無理な話だろうぜ マイコンソフト悩み事相談室スレにTiny2313の並列処理ソフトが紹介されているけど、
誰か動かした人いる? ■ このスレッドは過去ログ倉庫に格納されています