_____
/ /|
/ ( ゚∀゚) /.∠フ 個人でも手軽に使える
/ /.∠フ || . Atmelの8-bit RISCマイクロプロセッサを
/ __ o/.∠フ || 中心に語るスレッドです。
∠| ̄ ̄凵 ̄ ̄|∠フ || *AAは「AVR H8 etc. マイコン総合スレ Part3」からいただきました。
.|| |_____|/||
Atmel AVR 8-Bit RISC
http://www.atmel.com/products/avr/
AVR-wiki復活してずいぶんたつし、(廃業)は取ってもいいのでは?
前スレ994 手持ちのAVRでの話になりますが、 25MHz辺りまでは特に工夫しなくても問題なく動くと思います。 AVRのオーバークロックは30MHzを超えた辺りからが本番です。
HIDaspxって16MHzや20MHzでも動くじゃん。 12MHzなのは3.3V対応のためだったのか。
>>7 USB部分はV-USBだからそうでしょうね。
クロック速くした結果。 USB-HUB経由(hidmonでのbench) 12MHz hid ping 1000 times ... 37.109 kB/ 2.634 = 14.089 kB/s 20MHz hid ping 1000 times ... 37.109 kB/ 2.313 = 16.044 kB/s USB-HUBなしではほとんど変わらなかった。 一応効果はあった。 当然かもだけどusbdrv/usbdrvasmXX.incは20MHzまでしかなかった。 あっちの人もマイコンのオーバークロックってやらないのかな。
オーバクロックを試したとしてもそれを公開はできないでしょう。
AVRって炙りの略?
油
13 :
774ワット発電中さん :2009/12/18(金) 21:10:11 ID:Kx8un5rd
国内ではPIC、H8におされてるよね・・・ 高専じゃH8一択だし 海外だとどうなのかな
自分の高専ではPICですね。自分は猛烈にAVRをお勧めしてますが。 アドレスがリニアじゃないせいでそこで詰んでいるのでシュールです。
H8かぁ、昔しか知らないけど規模大きい気がしなくもないな。 AVRなりの工作くらいならH8じゃちょっと役不足(本来の意味で)。 XMEGAとか使うようなところならH8か比較できそうだけれど。 今後はARMとかになっていくのかのぉ(遠い目
長い間業界の動きを見ていても8bit→32bitといった移行が目立ちます。 8bitのアップサイジングと32bitのダウンサイジングで、16bitの居場所は 既に無いような気がします。 ちなみに、趣味ではまずAVR、それで足りなければARM。
Cortex-M3とかM0のマイコンでDIP-28とかでもでればうれしいんですけどね・・・。 けどほんと価格的にはだいぶ下がってますね>ARMマイコン LPC1113 LQFP-48でDigiKeyで281円くらい
>17 LPC1113 (Cortex M0) て、コンパイラあるの? それはともかく Cortexファミリを32bitというのはなんか間違ってるとおも。 命令語長、ROMの読みだし幅いずれも16bitで、すっかり16bitに染まってしまって。 かつて16bit関連命令だけ命令ビットパターンが虐待されていたARMとも思えんひより具合。
>>18 Cortex系はまだ試してないので自身はありませんが
codesourceryのLite版が使えなかったかな。
×自身 ○自信 typoった・・・orz
PICなんかちょっとしたテーブルを配列で持とうと思った時点でアウト
Cでプログラムする場合PIC16F876 PIC16F886等の ROM8kword RAM368byte 物のPIC16Fでは 配列とか文字列定数使わなくてもROM4kword分のプログラムで RAM368byteをほぼ使い切ってしまっていた もう少し機能を追加したいのにという段階でいつも限界に達してしまっていた だから俺はatmega328Pに乗り換えることにしたんだ
わっふるわっふる
>>25 それで変換基板にでものせれば。とは思うんだけど
それだとQFPで変換基板でも同じかな。とも思うんですよ(汗
>>26 QFP変換だとブレッドボードが使えないけどね.
SOPならハーフピッチのユニバーサルに乗せられるんじゃね?
>>27 なるほどSOPの方がちょっとは楽になりそうですね。
Arduino IDEのCortex-M3用パッチ(従来のAVRと共存可能)ってのも
あるようですし、今後はARM系も流行るかもしれませんね。
(ボードもいくつか開発されているみたい)
とスレ違いスマソ
前スレの764です。 328pと32.768kHzの水晶で時計を作ったときに誤差が大きい問題について原因がわかりました。 168pと328pで試したところPORTDのPD5(PCINT21/OC0B/T1)から出力すると時計が進んで 入力すると遅れるみたいです。LCDのEをPD5につないでいたため表示させると 時計が進んでいたようです。 データシートを見ても見つけられなかったのですがPD5を使うときの特別な手順とか あるんですかね?
配線が悪いんじゃね? 信号のエッジで発生するノイズで誤動作してると見た。
>>30 厄介な問題みたいですね。またどつぼにはまりそうなのでPD5を
使わない方向でやるほうがよさそうですね。
ちなみにブレッドボードやパスコンについて指摘されたのでパスコンを近づけたり
ユニバーサル基板で組んだりしたのですがだめでした。
>>25 今Digikey見たら、検索結果の一覧に画像のカラムが追加されてる。けど、
なぜか検索した一覧で表示される単価と詳細ページで表示される単価が違う。
詳細ページの値段が1.5倍くらい高い。 アバクロかっ! 正月価格かっ!
試しに1個カゴに入れてみたら、詳細ページの単価だった。
>>13 自動車みたいな日本設計のものには当然使われているけれども、
海外で設計された基板で日本のCPUが載ってるものは一回も見たことがありません。
それに日本のCPUについてくる純正Cコンパイラは糞過ぎて全く使えない。
ルネサスがいい例だが、もともと大企業の日立や三菱という財閥系グループ 企業という思い上がりからか、国内サポートさえ満足にできないのに、 そもそも、英語圏や他言語向けに開発環境のサポートとか充実していない ような気がする。 競合製品の整理統合も進んでいないし、元々のマイコン製品のラインナップ や周辺回路も、なんら設計思想というものがが感じられない。
>>33 レゴマインドストームのRCXにH8が使われていたのはみたことあります。
けど最新のNXTにはATMEL ARMとAVR…
>や周辺回路も、なんら設計思想というものがが感じられない。 全く同意ですね、回路として接続されているだけで、ポートマップがデタラメだったり、 割り込みハンドラで処理できないクリティカルが発生するなゴミ仕様だったり、 純粋にハード屋がデタラメにでっちあげただけで、ソフト側への配慮に欠けていますね。 今では海外製品の方が圧倒的に優れているというシャレにならんレベル。
H8は車とかエアコンなど用途が決まっていて、ついでに販売している感じ。 だから目的外では使いにくい。
H8はファンが多いので、結構いろんなとこに使われてるよ なんていうかPICを憎んでいる率はAVRよりも高い
>>39 基板の管理番号とか見ました?
ソフトごと丸パクリされただけかも試練。
それはない。 あとはAVR使っているのもあったし、NECの78Kのも有ったな。
洗濯屋のけんちゃんてのがあったな
アナログコンパレータで簡易AD変換をやってるんですが、 2次多項式近似で線形近似よりもより正確な電圧を取得したいと思います。 サンプリングしたデータからexcelで2次多項式近似を出力したら、 以下の式になりました。 y = -0.0193x^2 + 15.582x + 11.191 xはTCNT0、yはmVです。これを元に、tiny2313でmV値を求めたいのですが、 普通はどうするべきでしょうか? y = - (x * x * 19 / 1000) + 156 * x / 10 + 11; だと、どうしてもx * x * 19の時に16bitを超えてしまいます。
>>43 > 普通はどうするべきでしょうか?
普通はADCをもってるチップを選ぶ。
まあ、テーブル引きとかでいいんじゃないの?
y = - (x * x / 50) + 156 * x / 10 + 11; でいいことに気付きました。 テーブル化は考えましたがサイズが・・・
>43 一般に、多項式ってのは y = ((-0.0193/15.582 * x) + x) * 15.582 + 11.191 という風に計算するもんだ。 0.0193 も 19/1000 じゃなくて、5 / 256 とかにしような。 あとは有効桁をながめながらシフトの位置を勘案してがんばる。
眠い頭で書くんじゃなかかったがな。定数と変数の組は (a + x ) * x + b ) * x ... の順な。
ありがとうございます。 つまりy = (-0.0193 * x) + 15.582) * x + 11.191が元なわけですね。 256のくだりもわかりました。
正確さを追及してるんだから浮動小数点にするかビット数を増やす
何を目指しているのか判らないけど、どのみちコンパレータじゃA/D速度は 期待できないし、AVRはそこそこ速いから、とりあえず考えるより浮動小数点 演算なり、DWORDで固定小数点なりを使ってみればいいんじゃなかろうか? 丸め誤差が気になる場合、固定小数点でDWORD値の下位ワードに小数点以下 が入るようにシフトして計算して、最後に0x00007FFFを足して上位ワードを 使うとか(少数点以下の四捨五入)するといいと思う。
小数に1バイト使うと、最小分解能は0.0039だから 小数第2位までは保証される
マイコンで実数計算のうまいやり方は、floatをなるべく使わないことだ。 ただ、固定小数点は誤差の累積が読めないのがアレだけど。 //WinAVRのdoubleってfloatと同じ精度なのな。
>>46-47 を踏まえて、各所で16bitを超えないよう注意して以下の式にしました。
((- (x * 5 * 16 / 256 ) + (uint8_t)(15.586*16)) * x + (11 * 16) + 8) / 16
四捨五入もしたいので、最後に+8して全体を16で割りました。
割り算はシフトへ、掛け算はxの2箇所まで縮みました。
>>53 > 四捨五入もしたいので、最後に+8して全体を16で割りました。
コンパイラのコード最適化を過信しないで、
(x * 16) は (x<<4) と
(x / 16) は (x
>>4 ) と
やらないか?(AA略) いや、書いたほうがよくないか?
C言語の算術シフトと論理シフトは実装依存だった気が 大抵は実害無いと思うけどさw
>>54 xはunsignedなので、最適化で論理シフトが期待できます。
実際のコード
uint16_t x = TCNT0;
x = ((- (x * 5 / 16) + (uint8_t)(15.586*16)) * x + (uint8_t)(11.191 * 16) + 8) / 16;
gccの出力
in r18, TCNT0
mov r24, r18
ldi r25, 0x00
ldi r22, 0x05
ldi r23, 0x00
rcall __mulhi3
ldi r19, 0x04 ; / 16
1: lsr r25
ror r24
dec r19
brne 1b
ldi r20, 0xF9 ; 249 ((uint8_t)(15.586*16))
ldi r21, 0x00
sub r20, r24
sbc r21, r25
movw r24, r20
mov r22, r18
ldi r23, 0x00
rcall __mulhi3
subi r24, 0x45
sbci r25, 0xFF ; - 187 ((uint8_t)(11.191 * 16) + 8)
ldi r18, 0x04 ; / 16
2: lsr r25
ror r24
dec r18
brne 2b
26ワード+__mulhi3の18ワード = 88バイト
57 :
54 :2009/12/20(日) 22:13:40 ID:3HIxzPmj
>>54 書いた時に思ったんだけど ...
>>53 の
> (uint8_t)(15.586*16)) * x
という部分の「(uint8_t)(15.586*16))」は、実際には
>>56 の
> ldi r20, 0xF9 ; 249 ((uint8_t)(15.586*16))
にあるとおり、「249.376」の小数点以下が切り捨てられ、結果的にxあたり
-0.15%の演算誤差(xが255の時に四捨五入で最大誤差-6)が出る。
多少の速度を犠牲にしてもそれなりの演算精度を期待するのなら、ここは
「156*16*x/10」とした方が、よくはないか?
誤差は残るが、誤差の絶対値はほぼ半分(+0.089%/x,xが255の時に最大
誤差+4)になる。
割り算かましてWORDの上限超えるならと、「1559*16*x/100」にすると、
誤差はさらに減ってxが255の時に最大誤差+1。
58 :
774ワット発電中さん :2009/12/20(日) 23:12:31 ID:l6HVmzsO
RSでATmega16とATmega162、どちらを買おうか迷っているのですが、 どちらがおすすめですか? また、表面実装パッケージで底面をグランドにハンダ付けしろと書かれているチップは、 どのように対処していますか?
>57 数値計算の教科書どこかで読んできたほうがいい。そのセンスは問題ありすぎる。 それを除くとしても、tiny2313で割算させる気か? -0.15% を問題にするなら /10 でむりやり整合させず せめて 9/65536 (= 0.00015) だけ引くようにすべき。
数値計算の教科書で問題にする誤差と 今回のAVRで問題にしてる誤差のレベルが違いすぎて涙出るからやめとけ 二次式の数値積分ってのならともかく一回計算するだけなのに・・・
>>57 156 * 16 * xの時点で16bitを超えてしまいます。(x=255で636480)
32bitを許すなら 15.586 * 16 * 8 で1995.01ですね。
この場合足し算の相方も8倍する。
また、その相方のx*5の部分も
256 * 0.0193 = 4.9408 ≒ 5 (差 -0.059)
よりは、
4096* 0.0193 = 79.0528 ≒ 79 (差 +0.0528)
の方が誤差が少ない気がするので79に修正して、式を改めると、
x = ( (uint16_t)((uint32_t)(- (x * 79 / 32) + (uint16_t)(15.586*16 * 8)) * x) / 8 + (uint8_t)(11.191 * 16) + 8) /16;
ややこしいので式を分けると、
uint16_t x = TCNT0;
uint16_t x2 = (- (x * 79 / 32) + (uint16_t)(15.586*16 * 8));
x = (uint32_t)x2 * x / 8;
x = ( x + (uint8_t)(11.191 * 16) + 8) /16;
ですかね。__mulsi3が追加されて+80バイトです。
>>13 高専じゃH8ってどこで聞いた情報だよそれ。
by高専卒
とりあえずPIC+アセンブラってのがどっちも時代にそぐわない。
片面板PCBってのも全く実践的じゃない。
なんかオナニーを感じる
>>59 PIC16とか90S1200とかならともかく、tiny2313での割算と、例えば
mega8で割算させるのって具体的に何が違うの? どこに問題が?
ROMは1Kだけど、整数の除算で増えるコード量なんてたかが知れて
いるよね?
遅くてレジスタ数が少なく汎用もない、4MHzのZ80で割算させるより
簡単で早いと思うけど? 除算は引き算のループで代用できるので、
10000未満になるまで10000が引ける回数をカウント、10000未満に
なったら引けた回数をx10、序数を1/10の1000にして同じことを行い、
次に100で...と繰り返せば、除算命令がなくてもそこそこな速度は
出せる。(というか、Z80とかの時代は実際にそうやってた)
> -0.15% を問題にするなら
問題にするかはともかく、-0.15%/divだね。xが最大値の255で四捨
五入含めた換算後のx値で、.376が切り捨てられなかった場合との
差が「6」になる。
> せめて 9/65536 (= 0.00015) だけ引くようにすべき。
割り算を使って? というか、除算をシフト演算やレジスタのスワ
ップを使うにしても、xが取りうる値の範囲が0〜255なのだから、
(x*9/65535)の結果は常に0にしかならんのだが?換算後のxの値を
使ってx=x-(x*9/65535)するつもりなら、算数からやりなおすべき。
Z80より古い時代でもシフト使った割り算くらいあったよ(´・ω・`) 賢いコンパイラは定数割り算を組み込み命令があれば掛け算で やってくれたりもする(´・ω・`)
>>62 そういう書き込みをするときはな、実際には何が使われてるのかを書くもんだ
でないと単なる煽りになってしまうぞ
>>65 PICだよ。PIC。言いたくなかったんだよ。
>>66 その通りです
RISC時代だったのにアセンブラってのは。読めることは重要だけど、
まず真っ先にってのはなんか違うと思う
マイコン+アセンブラって教材としては問題無いと思うけどな 学校は実用よりも主に基礎や理論を習うところだし、 オームの法則から始まって、半導体の原理からトランジスタの動きを理解して それを組み合わせて論理回路が出来ることを知り、 これら論理回路の組み合わせで実現した機能がまさにアセンブラの命令と対応している ハードとソフトがつながった瞬間でオレは感動したけどね
>>68 ソフトばっかやってきたからそういうの感動したい
良いサイトないっすか?本でもいいよ。
トランジスタってもうスイッチとしてしか使われてない 増幅するならOPアンプだし
>>58 用途による。
M162はS8515やM8515の上位バージョンで
DIP40p品だとほぼi8051ピン互換、外部バスが使える。
まぁSMD品で構わないならTQFP68だけどM162よりも
秋月で128買った方が安くてメモリ多くて高機能。
大学の電子工学科行けば一通り勉強できる
オペアンプも単一素子じゃなくてトランジスタの組み合わせなんだけどな fetは原理が違うけど動作は似てるし
>>71 んなぁこたぁ無い。
真顔でそんなことをハード現場で言ったら、お花畑認定w
>>70 CPUの創り方は読みましたけどさっぱりわかりませんでした。
AVRWRTってmega328pに対応していないのね(´・ω:;.:...
>>71 増幅=オペアンプはオーディオ領域までだろ。
そもそもオーディオでも限界を感じるのに。
>>68 ,70
あの本は感動する。CPUが凄い身近に感じる。ハードとソフトが一致する瞬間
でも高専は即戦力重視で育て上げるっていう観点からすれば、
多層板も扱えないしCでマイコンもかけないってのはちょっと違うと思うってだけ。
そりゃ原理が重要ってのは理解した上での発言
usbRS232って、USB2.0ハブ経由じゃ使えないけど、 もしやと思い、USB1.1ハブ経由にしたら使えました。 これってご本人には既知の話かな。 1.1ハブ捨てなくて良かった。
オレらは世間からみたら同じ異端者なんだから仲良くしようぜ その中でもPICでもH8でもなくAVRを選んだ仲間なんだしな
>>79 LowSpeed CDCに未来はない。
HIDspxのように、PCとはHIDのまま繋げて、
専用のソフトウェア仮想シリアルドライバをそのHIDデバイスに
接続するようなトリックを使えば、バルク転送による
高速通信ができるかもしれない。
高速といっても12MHzの場合はUSARTの誤差の関係で
57600bps程度が限界だし、LowSpeedではUSB-HUBの
有無も影響する。そこまでするならUSB付きマイコンか
専用USBシリアルICを使った方が、ということに。
>>78 Cであっても自力でスタートアップ書くためには結局アセンブラの世話になる訳で
どちらにせよアセンプラいるし環境依存だし。
そこまでの時間が無い、というだけでは無いかと。
Win-AVRだとスタートアップを意識する事は少ないけど。
ってかAVR-Studioだと返って判りにくくなってるようなww
まぁ細かい事やるよりは
C++等で、より上位設計…UMLやパターンになれておく事の方が重要というのなら、同意。
>増幅=オペアンプはオーディオ領域までだろ。 ビデオオペアンプとかな まぁ・・マイコン(ワンチップマイコンではなく)ボード作って, 命令表のビットパターン見ながらハンドアセンブルして, スイッチパチパチしてRAMにプログラム書き込んで動かしていたりな >Cであっても自力でスタートアップ書くためには 今はデバイスのコンフィグレーションをGUI上で行って,自動生成された スタートアップを使うっていう方向だけどね
>>81 なんか誤解があるね。CDC はバルク転送だよ。
だから USB 2.0 ハブが使えない問題がある。
HID は、コントロール転送。
ちなみに、ボーレートも USB の転送自体には関係しない。
>>84 HIDはコントロール転送もしくはインタラプト転送だと思いました。
>>85 すまん、そのとおり。
ついでだが、元の
> USB付きマイコンか専用USBシリアルICを使った方が
というのは俺も同意なんだな。
すまんかった。自分も実装できる程詳しいわけではないので。 話を整理すると、 HIDaspxで2.0USB-HUBかますと速くなるのは、 2.0のマイクロパケット転送(1ms→0.125us化)のおかげ。 CDCはバルク転送を使うが、USBのLowSpeedでの バルク転送はUSB規格外動作。 1.1HUBだと制限が緩いためかたまたま使えるが、 2.0HUBではしっかり弾かれるってことかな?な?
×マイクロパケット転送 ○マイクロフレーム転送 ×0.125us ○125us
それで、
>>81 を補足すると仮想PCやソフトMIDI、ソフトEther辺りのトリックで
良く使われるソフトウェア仮想配線技術でCDC仮想ブリッジドライバを作って、
AVR→(マイクロフレーム)→HID→(仮想バルク転送)→仮想CDC
にすれば速いよね、ってこと。
作る側からすれば無駄に複雑だけど、使う側からすると2313+αで済むと。
USBが内臓されているAVRはどれですか?
>>90 AT90USBなにがしとかMEGAシリーズでもいくつか
>>89 いくら仮想化ドライバを使ったところで、VUSBじゃ2.0の速度には対応
できないと思うが、「使う側からすると2313+αで済む」とは如何に?
まともに2.0の速度が出せる実装にはUSB(2.0)対応の内蔵周辺を持っている
MCUか、FT232みたなUSBシリアル変換を使う必要があるが、であればわざ
わざドライバ周辺で面倒なことを抱え込んで複雑化すべき理由がない。
そもそも、FT232を使ったところでシリアルにFIFOを持たないAVRじゃ、仮に
AVRのUARTのボーレートをFT232RLの上限(3Mbps)まで上げても、隙間無く
連続で全二重の送受信が発生した場合に追従できないのでは?(送信はデータ
の間にアイドルができで実効速度が出ないだけだが、半二重で受信に専念し
ても、20MHz動作でさえ66.6CLK毎に受信割込が発生するので、オーバー
フローする可能性がある)
2313が(秋月@100)に、FT232RL(秋月@450)相当を外付けしていらぬ苦労を
するくらいなら、USBターゲット内蔵のmegaなりARM系デバイス探す方が
賢明でわ? ROMやRAMの容量も倍増するし。
>>90 ATMELのサイトでセレクションガイド見るか、Digikeyでキーワードに「AVR」
とか「ATmega」と入れて検索して、「マイクロコントローラ」のカテゴリを
選んで、「内蔵周辺」で「USB」を含む項目をSHIFT押しながらクリックして
全部選択して絞り込む。
候補が多い場合、「在庫あり」「パッケージ」「梱包」などで絞り込めば、
手に入る候補がかなり絞り込める。
>>92 Mbpsなんて期待してるわけでもないし、出るわけもない。
元のハードウェアはただのHIDデバイスなんだから。
後はPC側でごにょごにょすればって事。
今のAVR-CDC実装とは違って、
USB規格内でUSBシリアルが実現できるよねって話。
メリットは ・規格内動作だから今の2.0HUBが使える+高速化できる。 ・HIDaspxの回路が(恐らく)そのまま使える。 デメリットは ・HID-シリアル仮想ブリッジドライバを入れる(実装者は作る)必要がある。 CDCでも最低限.infは入れるわけだから、手間はあまり変わらない。
Linuxなんかは元々LowSpeedのバルク転送はできないんだし、 ハードウェアの規格に添う事で状況は良くなるはず。ドライバさえ作れれば。 そういう意味でCDCよりは将来性がある。
>>94-96 > HID-シリアル仮想ブリッジドライバを入れる(実装者は作る)
> 必要がある。
低学歴なせいか、歳のせいか、何が言いたいのか、どんなメリット
が得られるというのかさっぱり判らん。
LowSpeedである限り、コントロール転送やインタラプト転送しか
使えない点においては変わらない。
(Windows標準の)仮想シリアルドライバは上りと下りそれぞれ1本の
エンドポイントとバルク転送を使う仕様だったはずで、これをコント
ロール転送やインタラプト転送に手直ししたドライバを苦労して開発
しても、特に使用上の改善はなく、一方でHID標準のメリットが失わ
れる。
CDCはLowSpeedでもバルク転送を許可するようにパッチを当てた
ドライバを配布して差し替えているはず。 本来の標準のクラス
ドライバであれば、ドライバ自体は(Windowsに標準で入っている
ので)配布しなくていい。
まさか、USBの下位層まで手を入れるつもり?
>>96 ドライバ作る前提なら、単に バルク転送の代わりにインタラプト転送が使えるやつがあれば良いんじゃないかな。
HID にこだわる必要もない。
>>97 パッチってlowcdc.sysのことですよね。
うちの環境ではxpvista7/lowcdc.sys入れた瞬間にBSOD(0x0000007E)
が出るのでraw/の方しか試せてません。
XPSP1からのアップグレードなのでちょっと原因は判りません。
もしそのパッチで2.0USB-HUB経由でも使えてるならこの件は忘れてください。
>>98 そうですね。
USB規格内でCOMポートとして認識できれば何でもいいと思います。
digikeyみたらAT90USB162が過去の品種になりかけてた 今はflash 32KBが主流なのね
>77 mega328pはデジットでも売ってるし、avrwrtは現行商品なので 対応してくれるとうれしいんですけどねえ。
105 :
774ワット発電中さん :2009/12/24(木) 22:10:45 ID:HJJ5kSTY
お前らイブの夜にマイコンが恋人とか超ウケルwww
超ナケルwww
この道はメイドロボに繋がっている
PIC16F877用のあるCで書いたプログラムをatmega644P用にwinavrで移植したら PIC16F877用が1305word(14bit/word) RAM144byte使用だったのが atmega644P用では570word(16bit/word) RAM16byte使用だった RAM16byteは表示用の16バイトの配列分だし 父ちゃん嬉しくて涙でてくるよ
gccの力だな
ついにTQFPのmega64に手をだした。 マイクロファンのmega162が送料含めると+変換基板よりも 高かったのが理由だけど。外部バス機能を使ってみたかった。 ダイセンの0.8mm変換基板は2.54側のランドの穴が小さくて 普通のピンヘッダは刺さらないらしい、ということで他を探したら 同価格のaitendo変換基板はOKだった。サンハヤトは、スルー。
変換基板側をピンソケットにすればいいのに。 ピンヘッダだと金属むき出しで単体で保存するとき静電気が怖くない?
ピンなら伝導スポンジに挿せるか
>>111 もしかしてソケット側のピンだとダイセンの穴にも入る?
長いのから切っていけるヘッダしか考えてなかった。
だったら2x8が4つで済むダイセンの方がいいじゃん。
失敗した?
アイテムラボの変換基板が穴が大きくて安くてオススメ。 基板より送料の方が高かったりすることがあるのでまとめ買い必須だけど。
>>108 少し前のおれがいる!
さあ浮動小数点演算でタンジェントを計算したり液晶に浮動小数点の結果を表示するんだ!
除算命令があるAVRはありますか
ありますん
>113 うん、入るよ。 自分は秋月の長いピンソケットを切って使ってる。 必要分の数のその次の金属端子をペンチで引き抜いて、そこにカッターで切れ目を 両側に入れてからペンチふたつでへし折れば、変な割れ方になって必要な端子まで 外れておじゃん といった失敗はまず起きない。 秋月ピンソケットの値段 > 秋月ピンヘッダの値段 だから、ベースボードを複数作って、マイコン(LSI)on変換基板を使いまわす 予定なら ベースボード側をピンヘッダにした方が安くなるというセコい理由もある。 だから、自分はアイテムラボの変換基板を使う時もピンソケットにしてる。
>>119 なるほど。
ソケットも割って使えるんだ。参考にしますね。
いっそのこと連結フレームで上下差せるようにしようかな。
倍の値段だけど。
そこはすずめっき線でw
>>119 自分はピンを抜くまでは同じ(2列だと2本)で、ベース部分のプラスチックは
ピラニアソーという刃が薄い小型のノコギリで切ってから、断面は平ヤスリ
で仕上げています。 ぱっと見はモールド断面と変わらない。
基本、買ってストックしておくのは(ピンあたり単価が安い)一番ピン数が
多いやつ。
除算命令があるAVRはどれですか
皆さん、リセット用のICには、どんなものを使ってますか? DIPのAVRの場合限定で。 DIPのAVRでは、PST600みたいなタイプが使いやすいけど製造中止品だから?値段が高い。 秋月のは安いけど、パッケージが・・・
ソケットだったら札幌貿易に全部あるぞ。 2x3〜2x40までw
>>124 市販のマイコン応用製品では、ミツミや三菱、セイコーあたりのリセット
ICを使っているのをよく見かけるけど、AVRに限らず最近のデバイスは
リセット回路が入っているから、わざわざ外付けする必要はないんじゃ
ないのかな? 10kΩのプルアップだけで済ませるとか、0.1〜数uF前後の
コンデンサを付けてパワーON時だけ長くリセットが掛かるようにする
くらい。
ピラニアソーは、ガラエポの基板や、アルミ板も切れて、刃が薄いので、
切り代も少なく、切断面もヤスリがけがいらないくらい綺麗に仕上がる
からお勧め。
ソケットは、ピン数のバリエーションより、ロープロ対応の製品が欲しい。
秋月とかで扱っている汎用タイプを組み合わせて基板をスタックすると、
基板同士の内面間が12mmも開いてしまう。 これはこれで便利な場合も
あるが、もっと薄く仕上げたい場合に選択肢がない。
127 :
124 :2009/12/27(日) 11:55:49 ID:vT+Dr1Qp
>>126 レス、ありがとうございます。
なるほど、確かに。商品だと確実に動作するのは大前提ですが
趣味の設計なら、そうこだわる必要もないですね。
>>124 WDTで電源投入時に一回リセットする方法。
WDTは電源不安定時でも動作してる可能性が高いので、
これで問題が起きたことはない。
RCリセットよりも確実。(つーかAVRではRCのやり方で安定した試しがない)
#include <avr/wdt.h>
// mcusr_mirrorはリセット要因を後でユーザープログラム側から調べるための変数
uint8_t mcusr_mirror __attribute__ ((section (".noinit")));
void get_mcusr(void) __attribute__((naked)) __attribute__((section(".init3")));
void get_mcusr(void) {
mcusr_mirror = MCUSR;
if (!(mcusr_mirror & (1<<WDRF))) { // WDリセットしてなければリセット
wdt_enable(WDTO_15MS);
for (;;) ; // リセットを待つ
}
MCUSR = 0; // リセット祭り防止
wdt_disable();
}
自分はちゃんとリセットかかるけど、周辺をリセットする為にやっぱりリセットICが要る
周辺のリセットはマイコンがやればおk リセット解除が遅すぎて問題になるようなのってあったっけ?
外部RCリセットで安定しないって状況がよくわからん。 内部リセットを持っているデバイスなら、基本的に外部のリセット解除が 短くても、内部リセットが働くし。外部のリセットが長すぎると、リセット 解除とプログラム開始が遅れるだけ。 可能性があるのは、リセット端子がIC内部でプルアップされていなくて、 外部プルアップ抵抗の値が大き過ぎて、ノイズ拾ったり、指でピン触ると 静電気でリセットが掛かるとかか? あと、空中配線やブレッドボードで組んでいるとか、イモ半田とか、もっと 別なところに原因があるんでないの?
>>131 原因といえばUSBのバスパワー給電でよくコケる。
RCリセットはパワーONリセットのとき有効だけど 瞬停や電圧低下にはブラウンOUTリセットが有効じゃないかな。
動作電源電圧範囲の狭いタイプのAVRだと、電源電圧が
5Vに達するまでの時間が(相対的に)長いから、もしCR時定数が小さいと
CR時定数の立場からはもうリセット解除したつもりだけど、
AVRとしては、まだ正常動作に必要な電源電圧に達してない
なんてことにならない? CRかつPowerOnリセット限定だけど
そうしたことは踏まえた上での話なのかな?
>>128 さんとか
>>129 さんの場合。
>>135 失敗するときは数秒ぐらい遅延してもだめなんで、
正直よくわからない。(初期化に失敗して変なループを
形成してしまうらしい。LED点滅で確認)
ただ、上のWDTリセット後なら起きないのでそのまま。
3.3V動作させてるtiny2313に5Vでフラッシュメモリ書き込むとまずいよね? レベル変換どうしよう
>>137 ISP用の信号のレベルが5Vって意味ですか?
想像だけど、RCだと長時間、中途半端な電圧が印加されてしまうのが良くないのでは
シュミットトリガのバッファでも入れてみたら・・・って、そんなことするならリセットIC用意した方が早いか
>>137 面実装なら5VトレラントのロジックICがたくさんあるけど・・・
一番手抜きなら、抵抗分圧?
>>135 もし外部リセットの時定数が短くても、内蔵リセットがあるのであれば、
問題ない。 でも余程小さなコンデンサや抵抗を使わない限り、十分
なリセットは出ると思うけどな。
負荷容量が合っていなくて、電源投入から水晶の発振が安定するまでに
かんり時間が掛かるとか、内部が完全にリセットされるまで時間が掛か
る、32kHzとかの低速なクロックで動かしているとか、そんな可能性は
ないのかな?
内部リセットの回路構成を詳しく見たことはないけど、大抵はCPUに供給
される動作クロックのパルスを数えていて、低いクロックでも内部の初期
化に必要なリセット時間は確保されるはずだけど、クロックに関係なく
固定の内部時定数でリセット時間が決まるタイプだと、まずいかも。
ただ、その場合、Vcc電圧のレベルを見ているだけなので、(同じリセット
パルス幅であれば)外付けリセットICを使っても、結果は同じはずなん
だよね。
あるいは、リセットはまったく関係なくて、例えばシリアル(UART)を
割り込みで使っていて、割込処理ルーチンのコードや、割り込み許可
するタイミングに問題があって、電源投入時に不完全なゴミデータを
受信すると、無限に割込が発生するループに陥っているとか。
>>137 RESETは保護ダイオードが無いので2.2kと3.3kぐらいで抵抗分圧して
--2.2k--
|
3.3k
|
SCK,MOSIは2.2kぐらいをかませば書けそう。
スレの流れと関係ないけど、AVR Studioのフォルダ内にあるシミュレータ 用に作成されたデバイス定義が入ったXMLファイルを、MSXML使った自作の ソフトで読み込んでいるんだけど、幾つかバグってる(定義が矛盾)ファ イルがあるな。 これはやっぱりATMELにメールしとくべきなのか?
バグがあるなら報告するべき。 フォーラムに書き込んでも見てくれてるみたい してくれたら、みんながハッピーになれる
コピペで作成しているのか、とりあえず、内容に矛盾があるデバイスが 10個以上あるので、整理したらまとめて送っておくよ。 とりあえず、バグを見つけたのは、XMLを実際に読み込んでみたヒューズ 関係ね。
>>126 初歩的な質問だと思うのですが、リセットピンを直結せずにプルアップするのは何故ですか?
例えば信号線はピン同士を直結したりしますよね?
プルアップするしないの使い分けはどういうふうにすればいいのでしょうか?
>145 それはそもそもプルアップ(抵抗)の意味が分かってないってことじゃないかな。 プルアップ抵抗とは何か、何のために付けるのか、ってことを調べればよし。 それが>145の答えでもある。
天井に釘打ちするのが電源直結。間違えると天井か吊った物を壊す。 バネでびょーんと吊るのがプルアップ。体重かけても安心。 それぞれ用途が違う、適材適所
入力ピンは入力インピーダンスが高いので、本来ならばプルアップ抵抗を入れなくても問題ないはずだが、 実際はノイズがあり、入力ピンに高電圧がかかる可能性があるのでプルアップ抵抗をいれる。 また、信号線も理想的な状態ならば、入力ピンと出力ピンを直結するだけでよいが、 こちらも実際にはノイズがあるのでその影響をなくすためにプルアップ抵抗を入れる。 という認識で合っていますか?
モード切替のスイッチを付けるとして、 3端子のトグルスイッチを使って、抵抗なしで電源とグランドを切り替えるのと、 トグルスイッチを2端子として使って、off時にはプルアップ(orダウン)しといて on側でグランド(or電源)に繋ぐ回路と、 どっちがいいと思う?
入力ピンを抵抗介して電源に吊るのは、外部から信号を与える可能性を想定した場合が主。リセットは書き込み時に使うしね。 入力ピンに出力機能が内蔵されている場合は、その出力機能を壊さないために抵抗で優しく吊る。 AVRには内蔵プルアップがあるから、実験回路で処置が面倒なときはそれで済ませてるよ。出力データレジスタに1書いておけばいいし。
>>149 プルアップで抵抗かまさないと外部からもローにできないよ
入力インピーダンスが高いからこそノイズの影響がでる
>>150 普通は二端子
必ずハイかローで浮くことがないから
ワイヤードオアとかなら三端子
ついでにリセットは内部プルアップをプログラミングする以前の話だから外でつる
>>148 ばねで吊っても釘で直付けしても体重かけたら天井にかかる荷重は同じじゃ?
>>156 さん
ありがとうございます。
シリアルライタとUSBライタを接続し、
hidspx -pb1 -rにて確認してみたところ、
COM1との接続ができていない結果になりましたので、
シリアルライタ側を精査してみようと思います。
ありがとうございました。
>>150 断線したりより線からヒゲ出たりしたら電源ショートするから
操作スイッチに電源直結するのはお勧めしない
プルアップ/ダウンは入力ピンそば、と考えると、プルアップしといてGNDに落とすのが妥当
もちろん、設計の都合とかでそれ以外も使うけど、ちゃんとメリット/デメリットを考えた方がいい
なんだかやたらと丁寧なスレに戻ったね
>>160 その鶏卵は回路図を見ての通り、一方的に送りつけるだけだから認識はできない
最悪ヒューズを半端に書いてターゲットを破壊する可能性もある
仕組みを理解せず確実にやりたいなら純正を買ってくるか
AE-UM232Rでこのスレを検索
>>160 省略しないで、何をどうやって、結果どうなったか、ちゃんと書かないと、
誰も答えられないし、正直言って相手にしたくないと思う。
HIDspx(ソフト)自体は、シリアル接続のライタにも対応しているけど、
HIDspx(ライタ)は、USB接続のHIDデバイスでしょ。
回路どおりに組んでも、買ってきたままの何もソフトを書き込んでない
2313をICソケットに挿しただけじゃ、動かなくてあたりまえ。
そもそも、書き込みソフト以前に、USB接続ライタの場合、PCにちゃんと
USBデバイスとして認識されてなきゃ動かない。
「-pb4」はシリアル(COM4)ポート経由のSPIブリッジ仕様のISPライタを
使う指定だから、それと違う種類のライタを繋いでいたら当然ながら
認識はされない。
>>161 さん
ありがとうございます。
シリアルポートを追って考えていたときに、
あ、RxDを受け取ってないので、認識は無理かなと
思っていましたが、予想通りでよかったです。
シリアルのライタは、データを送りつけているところまでは
オシロを当てて確認できたので、
恐らく動いているものと思っています。
USBの回路を間違えて作ってしまっている点ですね。
ちなみに、このリセット解除を押すタイミングは、
egg_chikne.batをエンターする前に押して、離していなければならないのでしょうか?
USBの回路ももっと見直してみます。
ありがとうございました。
>>164 ヒューズの書き込みに失敗しているんじゃないのかな? そうでなければ、
USBの信号線(D+/D-)と、XTAL発振、リセット、電源、GNDまわりかな。
特にUSBの配線は短く(数cm以内)したほうがいい。
あと、個人的には2313だと、マイコン自体は5V(USB電源)で動作させた方が
いいと思う。
USBに関しては、D+/D-に直列に入れる抵抗や3.3Vツェナーは、「おまじ
ない」くらいで、経験上あんま関係ない。
実はD-ラインが1.5kΩで3.3Vへプルアップされていれば、AVRをソケットに
挿していない「能なし」状態でも、USBコネクタを挿すだけで、ホスト(PC)
側がデバイスが接続されたと思って初期化しようとしてくる。(実際はデバ
イスが応答しないので、初期化&ドライバ組み込みに失敗)
ライタとして動くかどうか以前に、USBデバイスとして機能している状態
であれば、デバイスマネージャでの確認もできるかと。 ここまでは、
ターゲット(書き込み対象)を繋いでいなくても、確認できる。
リンク先回路図の「パワーLED」は、別の回路図ではReadとなっている
ので、デバイスの読み出し中にのみ点灯する仕様ではないかと思う。
単に、電源が入ってるかどうかの確認用のパイロットランプが欲しければ、
LED(A:+/K:-)に1kΩを直列に繋いで電源(VUSB)-GND間に繋げばよい。
上でも書かれてるけど初心者ほど素直に純正品の AVRISPmk2買って使用した方が良いかと。 今となってはそれほど高い買い物でもないんだから >HIDspx(ソフト)自体は、シリアル接続のライタにも対応しているけど、 >HIDspx(ライタ)は、USB接続のHIDデバイスでしょ。 大文字と小文字で分けてるらしいから同じに書くと製作者様が怒るぞ(笑
167 :
165 :2009/12/29(火) 12:17:54 ID:a0Z44Oeu
>> HIDspx(ソフト)自体は、シリアル接続のライタにも対応しているけど、 >> HIDspx(ライタ)は、USB接続のHIDデバイスでしょ。 > 大文字と小文字で分けてるらしいから同じに書くと製作者様が怒るぞ(笑 そうなん? というか、avrsp/avrppから派生したライタの相関図ってどこ かにないの? avrspx(x付き)みたいに1文字違いで別物だったりなんだか よく判らんな。初心者は余計に混乱するんじゃなかろうか? そもそも、usbspx, HIDspxの他にもメジャーな派生品ってあるんだっけ?
AVRISPmk2買おうと思ったら秋月品切れだた
AE-UM232R + ブレッドボードが入門ライタとしては最安かつお手軽だと思う今日この頃
170 :
774ワット発電中さん :2009/12/29(火) 23:44:23 ID:AnvL9LoZ
HIDaspx(文字の並びと大文字小文字に注意)はファームウエアを間違いなく 書き込まれたATtiny2313が必要です。 これを手に入れられない、または、確実に書き込めない人は製作が極めて困難 です。 手に入れる方法をまず考えてください。
>>169 何よりまともな高速シリアルポートとして使えるからなあ。
serjtag使えばHIDaspxより速いし、
AVRに関してはわざわざライタ作る意味がない。
と言いつつHIDaspxは2つ作った。
どのライタにもいえることだけど、
RESET=HIでハイインピーダンスになるバッファをかますと便利
>>171 そうそう、USBでデバッグもどきが出来るからHIDaspxを作った後でも
有効活用が出来る。
デバッグするのにUART実装しないといけないのが玉に傷だけれど。
そんなわけで最近はICEが欲しい今日この頃。
しかし体感ではプログラム書き込み速度はAE-UM232R<HIDaspxなんだが
何か違うことを言っているのか?
>>172 こっちもちゃんと計ってるわけじゃないから体感でしかない。
素のavrdudeだと遅いんじゃなかったかな。
HIDaspxはハブかますと速くなるし。
AVR ONE!ってつおい?
Chanさんのサンプルを参考にコーディングしてたらほぼパクりになった・・・orz
>>167 基板にもファームにもソフトにも似たような名前付いててややこしいからな。
これらを組み合わせるとまた名前が変わったりするし
実のところ、ずっとパラレルポート接続の(STK-200互換)ライタを使っていて、 特に不自由していなかったんだが、HIDaspx(tiny2313,12MHz)を作ってみた。 USB 2.0ハブ経由(hidmonのbenchで、16.845 kB/s出ている状態)で、20MHz動作 のmega328Pからのフラッシュメモリ(32KB)読み出し「hidspx -ph -rp」の処理 が、16.44s (1.95kB/s)ってのは、正常? 以外にも、ライタ以外全く同じ条件で、パラレルポート接続のライタを使って 読み出した「hidspx -pl1 -rp」場合、12.59s (2.54kB/s)よりもわずかに遅かっ たんで、こんなもんなのかなと思って。 ちなみに動作環境は、Windows XP(32bit) SP3, Athlon X2 5200+でつ。
178 :
774ワット発電中さん :2009/12/30(水) 18:16:04 ID:QMV4SVyi
ライタの話ばかりじゃなく、 何かAVRで作った作品の話をしようぜ
6pinのATtiny4,5,9,10って使ったことある人いる?
いるよ
6ピンを何に使えと。
182 :
MONOYA :2009/12/30(水) 19:12:28 ID:VeI+Qov4
皆様のご要望におこたえして
赤字覚悟の20%OFFセール開催中!!!
シルバーアクセサリーからクロムハーツ登場!!!
当店専属工房で忠実に再現されました。
時計も新商品が続々とご紹介!
┏━━┓‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
┃\/┃ ♪♪♪♪♪全商品20%OFF♪♪♪♪♪
┗━━┛‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
※特別企画は対象外になります。
♪セール期間中も新商品、続々UP♪
↓↓↓今すぐクリック↓↓↓
URL://monoya.main.jp/index.html
お問い合わせ等、お気軽にお問い合わせください。
サイト上にてご紹介していない商品もお気軽にお問合せください。
┏┓┏━┓ ★★★
┏┻┻┛□┃┏★★★★┓┏━━━━┓┏━━━━┓┏━━━━┓
┃ ┃┃★★★★┃┃★ご注文確定後、1週間ほどでお手元に★
┗◎━━◎┻┻◎━━◎┻┻◎━━◎┻┻◎━━◎┻┻◎━━◎┛
皆様のご来店、ご注文心よりお待ちしております。
ご質問、お問い合わせのメールはこちらまで
[email protected]
183 :
774ワット発電中さん :2009/12/30(水) 19:18:52 ID:7MiLdqhW
>>177 速度が適正かどうか知らないけど、ソフトUSBだし動いてるなら正常と判断できる
秋月の2313って何で100円なの?
セカンドソース品だから。 ATMEL純正が欲しけりゃ他でかいな。
186 :
jh7ayn :2009/12/31(木) 00:25:34 ID:JoPzqeQd
>177 >mega328Pからのフラッシュメモリ(32KB)読み出し「hidspx -ph -rp」の >処理が、16.44s (1.95kB/s)ってのは、正常? ターゲットのクロックにあわせて、-d1のようにしていすれば、速度が 向上すると思います。私の環境では、4〜5kB/s程度の速度です。
よく読むとAMETLだったりATEMLだったりする
釣られて手元のブレッドボードに刺さっている2313を見てしまったぞ
8pinのAVRとか印字が細かくて見えなかった。MよりTの方が先に書いてあるようには見える
秋月どんだけ技術力あるんだよ
192 :
177 :2009/12/31(木) 10:31:16 ID:LpUlAxRl
>>186 >>処理が、16.44s (1.95kB/s)ってのは、正常?
>
>ターゲットのクロックにあわせて、-d1のようにしていすれば、速度が
>向上すると思います。私の環境では、4〜5kB/s程度の速度です。
試しに「-d1」を追加してみたところ、
>>177 と同じ条件下で4.59s
(6.97kB/s)出ました。 確かにこれだけ速いといいですね。
193 :
774ワット発電中さん :2009/12/31(木) 15:16:22 ID:E/H6HPpr
ライタ作って終わりかよ
194 :
774ワット発電中さん :2009/12/31(木) 15:41:15 ID:LpUlAxRl
口だけ番長か?(w
195 :
fhaircut :2009/12/31(木) 15:41:57 ID:MT9Kml+d
はじめまして,いろいろなモデリング,モデルタイプとユニ-クなヘマスタイルがあリます, 元日と成人の日を祝い ,贈り物を贈りますよ! かわいい人がたくさん,方法がかんだんですよ~! ようこそwww.fhaircut.com へ どうぞよろしくお願いします.
>>193 よその分野にしゃしゃり出てきて自分の立場利用して他人に
ソース公開を迫ったり自分のプログラムのマニュアルを作らせたり
かったるい検証作業をさせられても困るんでむしろずっとライタで
とどまってて欲しい
197 :
774ワット発電中さん :2009/12/31(木) 20:11:58 ID:KdoDqaea
正月暇だから、すぐ作れておもしろそうなの紹介してくれ
じゃあ御神籤なんてDo-Dai
あけおめ。 いきなりオーバークロックネタだが、秋月のattiny2313が40MHzで動いた。 クロック源は水晶振動子。 とりあえずUSART、AC、タイマー0、1で動作確認。 ダブルスコアはすごいな。
コンデンサ何pF入れた?
>>200 8pFがちょうど良いらしい。
しかし4個中1個は文字化けが出た。
多分その固体も発振器ならOKだと思う。
結局8個試して、USARTで文字化けが確認できたのは1個だった。 ともかく40MHz水晶振動子で起動できるのがすごい。 atmega328pだと水晶振動子では32MHzが限界だった。 PやPAが付いてない無印の方がOC耐性があるのか、 それともSRAMとかが小さいためか、時期によるものか。
吾輩が644Pで試したときも32MHz程度が限界だった クロックのduty比が50%に近い方が高い周波数まで耐える印象 28MHz程度までなら特に気にすることなくクロックアップ可能というのが個人的印象 そうする必要性が今後でてくるのかはともかく
たしかに、AVRをオーバークロックするぐらいなら、 最初からもっと速いマイコンを使えばいい
205 :
774ワット発電中さん :2010/01/01(金) 17:25:22 ID:mty29eTs
XMEGAシリーズが高機能で内蔵メモリも多いにも関わらず、何気に同等の megaシリーズより安くて...。ただ、使い道が思いつかない。 ところで、2線式の新しいISPのPDIだっけに対応した、90USB162だったかで 作るオープンソースのライタがあるらしいけど誰か知ってる?
DIPでないと基盤起こしたり半田付けが面倒だからねえ
基板起こすのはDIPの方が面倒だと思うけど。
半田も表面実装のほうが楽じゃん
老眼にはきついよ
ホビーだったらSMDの半田付けよりランドの穴開けの方がよっぽど難しいと思う。
確かに久しぶりだなw顎ネタ
誤爆スマソ
ごだびん乙
155です。 昨年は大変お世話になりました。 件のライタですが、無事作成することが出来、 やっとスタートラインに立てた感じです。 結局、LEDが点滅するサンプルをシリアルで焼いて、 その動作を確認してから、ファームを焼きつけ、 Hidspxの回路に2313を搭載して動かしたところ 無事動きました。皆様には大変お世話になり、ありがとうございました。 本年も皆様にとって良い年でありますように。
>>205 xmegaおいくらですか?本当に安いならmega88のリプレースでまとまった数使いたいんだけど。
217 :
205 :2010/01/05(火) 02:12:03 ID:UfWF6Y/n
>>215 どの程度の値段を期待か判らないけど、mega88の置き換えならmega328P(250円
@秋月)あたりでいいのでは?低消費電力(Pico Power)だし。 そもそもxmegaは
上位版という位置づけなんで、そのクラスの置き換え製品自体がない。
安いと言ったのは、同じDigikeyで同等内蔵メモリ容量のmega64/128(最大16MHz)
などと比較しての話。まぁmega64/128は秋月価格が異様に安いので、それと比べ
たら、同ピン数のATXMEGA128A3で@570.28円/25個〜と大差ない価格だけど、最大
32MHz動作だし、UARTやSPIと切り替え可能なポートブロックが4セット入って
いる。(∴ピン割り当てが楽)
>>216 いろいろググってみたら、どうやらこれがそうらしい。
ttp://www.fourwalledcubicle.com/AVRISP.php > Features:
> Supports both ISP (AVR8) and PDI (XMEGA) Programming Protocols
> Download:
> The current firmware is located in the latest LUFA Download
> Package, under the Projects/AVRISP folder.
ただし、何も変更しないかソース公開すれば済みそうな気もするけど、LUFA
(USBスタック)の商用利用は、US$1500払えと書いてある。xmegaの仕様書を
読む限り、PDI自体の送/受信はSPIと大差ないし、Atmel純正のUSBスタック
を使えば同等のことはできそう。
AVRISP mkII Cloneでぐぐったら、秋月でも扱ってる汎用USBコントローラの
USBN9604とmega32を組み合わせたAVRISP mkII Cloneライタを見つけた。
ttp://www.embedded-projects.net/index.php?page_id=169
218 :
205 :2010/01/05(火) 03:25:46 ID:UfWF6Y/n
>>216 書き忘れたが、自分もavrfreaks.netでそれ見て知った。
で、その後ちょいと調べたが、リンク先から「LUFA xxxxxx.zip」をダウンロード
して、解凍したフォルダの「./Projects/AVRISP」内にあるmakeファイルのコメ
ントを読むと、デフォルトのmake設定で秋月でも扱っている「AT90USBKEY」用の
バイナリができるっぽい。実際「make clean」後「make all」で「AVRISP.hex」
と「AVRISP.eep」ができたけど、AT90USBKEYの現物がないので未確認。
ISP/PDI接続に使うピンの説明が見当たらないけど、おそらくAT90USBKEYの
JTAGコネクタを(本来と逆にターゲット接続向きに)使うようだ。
makeファイル内の
「MCU = at90usb1287」
「BOARD = USBKEY」
「F_CPU = 8000000」
あたりを書き換えると、他の評価ボードやターゲットにもそのまま対応できそう。
標準で対応している評価ボードは「./LUFA/Drivers/Board」内にヘッダがある。
俺みたいな電子工作初めてなんてヤツでも、どうにか動くものが作れるって素晴らしいなぁ。 信号を拾ってモーターを回せたりするだけでニヤニヤできる。
次のステップはPWMで回転数調整だな
いや、PWMとLCフィルタでDAC
そして「できた!E231系墜落インバーターの音を再現したぞ!」 という本末転倒で数日を費やすw
なんであえてIGBTの周波数なんだ
オフ会したいなあ
オフ?AVRで作った作品を皆で持ち寄るとか? オフ板で募集してみたらどうでしょう? 秋葉原とかそういうスレで募集すれば人が集まるかもね。
!
227 :
774ワット発電中さん :2010/01/07(木) 00:02:17 ID:qatbnNSU
!
最初の一個のAVRを焼けない人のためのオフとかはいいかもね
tiny2313のUSIの3線動作って、 MOSIとMISOを見るんじゃなくてDOとDIの方か。 まるっきり逆じゃないか。 megaと同じだと思ってはまったorz
>>229 やはり何は無くともデータシートですね
そんなオレはwinavrの最適化にやられてこんな時間に・・・
かといって最適化無しだとコード膨れすぎだし、どうすりゃいいのかな
明日会社いけるかな・・・
USIコーディングめんどくさすぎだからUARTで代用したよ……
とっかかりはMODチップだろ
>>228 秋月とかで最初の1個のAVRを買ってもらい
ファミレスとかで焼き焼き?
面白そうだね。
それが目的だけになってもいいけど、掲示板以外で相談できるコネ(相談される 側はちょっとアレだがw)が直にある安心感も得られるんじゃないかな。 とはいえ、敷居下げればそれだけアレな事になるのも見えるけど。 面白ければOKという意味では(すべてに無責任であって)試みとしてはよさげ。 実際最初の1個の出費(ライタを買うか否か)よりかは、安心感があっていいかと。
通販で書き込みサービスでもあればいいねー
>掲示板以外で相談できるコネ ここまで期待されると困るかも
>>235 千秋ゼミで実費のみでやってませんでしたっけ??
でもあんまり要望無いのだとか、今のところ1件しか要請が無かったと
書いてあったように覚えています。違うサイトだったらすいません。
自分で言い出して置いてアレだけど、自分で予防線のつもりで書いたw>頼られる ずいぶん昔PIC始めた頃は掲示板もNetの情報もロクなものが全くなく、 秋月のサードパーティ品ライタ(秋月じゃないもの)と変なアセンブラ(非純正)に 慣らされて標準的なニモニックを知らずにコーディングしてたよw というかそれはそれで使いやすかったんだが、後で困ることになったりした。 一匹狼で頑張るのに疲れたのもこの頃だったな(遠い目 今は逆にAVRの先達によってめちゃくちゃ楽させてもらってる、ある意味感謝。
USARTのマスタ側から0x00を送信する為に UDRレジスタに0x00を書くんだけど送信してくれない・・・ 0x00以外の値は正常に送信できるんだけど こんな症状で思い当たる人いませんか?
>>239 送信ルーチンがヌル止めを意識してるってオチは?
送信されないということをどうやって確認したのか興味がある
「送信してくれない」とは、出力をロジアナとかで見て、 信号がずっとHIレベルなのを確認したって事じゃないかね。 送信してるかどうか、ぐらいはロジアナが無くても出力を 空きポートに繋げて、ピン変化とタイマー割り込みで追えば 自身で確認できる。まあロジック側のバグだろうけどさw
>>242 ロジアナ若しくはそれに類する物を持ってる奴は
会社で使ってる人除けば少ないだろw
きっと、連続してUDRにx0とxffとかを交互に出力しつづけるコードを書いて
fカウンタ付きのテスタかオシロで見てみるとかじゃね?
まぁ100%ソフト側の問題だろうけど、UARTによる通信なら、必ずスタート ビットとストップビットがあるから、連続で0x00を送信しても、出力には パルスが出る。 110bpsとか極端にボーレートを下げてやれば、通信する ビットパターンによっては、LEDの明滅でもある程度判るのでは? おおかた、 UART0_putstring("\0"); などと、文字列送信する関数(NUL文字(0x00)が文字列の終端を示すが、NUL 文字自体は送信の対象外)を呼んでいるんだろう。
>>241 自分自身を誇るのではなく、組織や共同体に誇りを持てる人間かどうか
求められる人材は昔も今も同じです。難しい事は要求しません
学生なんだから、使えなくて当然なんです
だから資格や経験などは全く気にしなくて結構
経験なんか無くて当たり前なんですから
社会人として、そして何より国民として一流の人間でいられる考え方を持っているかどうか
見ているのはそこだけです
学校の勉強だけ一流の人は要りません
そのコピペ流行ってんの?
AVR最近始めました HIDaspxというライターは12Mhzの水晶でないと作れないのですか 10Mhzの手持ちがあるのでできればそちらで作りたいのですが。
USBのクロックとの関係で12MHz以外は無理、ソフトが頑張れば不可能じゃないかも しれないが…それは248が頑張ってくれるはずだよね
セラミック発振子じゃ駄目なの
>>250 HIDaspxの回路図にはセラロック不可と書いてある
不安定でよければ利用できるかもしれないが、自分でやってみたら?
252 :
239 :2010/01/08(金) 23:16:31 ID:toimF58d
皆さんアドバイスありがとう御座います 送信の有無については当然ロジアナなんて無いので PC側のターミナルとTxにアクティブローのLEDをつけて確認しました 0xFFを送った場合はLEDは全く点灯しないかと思いましたが薄暗く付くのを確認してます 0x01の場合は明るく付きました もちろんターミナル側でも確認できました ところが0x00についてはLEDも付かず、ターミナルも反応無しでしたので・・・ 皆さんのアドバイスを参考に連休頑張ってみます
pickit 2だったら 簡易ロジアナついてたんだけどね・・・
>>250 レスありがとうございます
12Mhz買ってきます
>>252 attiny2313でハードウェアのUSARTで送信して、
ソフトウェアUARTで受信するループバックを試したけど、
0x00はきちんと送れるし受けられるよ。(この逆はPC側モニタ)
送る側の問題だと思うよ。
ところでAVRの型番はナニ?
>>254 hex作り直す気があるなら16MHzや20MHzでも動くよ。
詳しくはusbdrvフォルダ下参照。
12MHzって使い道が少ないので一応。
ATtiny2313で7セグLEDをダイナミックドライブで3桁点灯する回路をくんだけど 最後の桁だけ薄暗い、具体的にはDポートでTrに繋いだコモンアノードをドライブ Bポートで抵抗に繋いだカソードをON・OFFさせる回路 Trが悪いのか、LEDが悪いのか、AVRが悪いのかソフトが悪いのか散々悩んだ挙句 結局はDポートを一つ出力設定できてなかった、しかし入力モードでもPORTDに1をセットすると 内部プルアップがONになって、微弱電流でTrがONになってたとさチャンチャン なんという巧妙な罠orz
USBキーボードを作ってみようと思って、事始めにAT90USBKEYを買ってみたが便利だな。 マイコンボードとUSBケーブル1本で繋ぐだけでプログラムできてライターいらず。 電源もUSBから供給してもらえるので、用意する必要が無くてらくちん。 唯一不満なのは、90USB1287は石単品での入手が困難な事だな。 秋月あたりで気軽に購入できるとありがたいのだが。
結局この辺のマイコンて入手性と安さだよね 秋月に2313辺りがなかったらきっとAVRやらなかったし ライタも自作しなくても950円のやつでいいしPICより入りやすい tinyでUSBなやつ欲しいね 型番がAT90止まりってことは多分Atmelやる気ないんだろうけど
PS2キーボードの規格が簡単でいいぞ
>>257 それ、めちゃくちゃ典型的な例だから。
LEDが1つだけほのかに光ってる→入力モード、プルアップ電流がシンク/ソース
っていうパターン。まぁ誰もが一度は通る道さ・・・多分。
>>259 megaのはあるでそ。AT90で止まってないよ。
>>260 USBでも1日ぐらいで完成しちゃったよ。
サンプルコードも分かりやすくて良かった。
>>262 秋月あたりで売ってるようなATMEGAでUSB内蔵しているのってあるの?
チップ外部にUSBとRS-232Cを変換するチップを付けるのは面倒だから嫌なのだ。
USB内蔵のはマイクロファンで売ってるのしか知らないなぁ
>>263 >秋月あたりで売ってるようなATMEGA
これがどういう意味なのかわかりませんが
>>262 は型番がAT90では止まってないよって意味です。
特別な書き込みソフトがいらない ライターでも作ってください
>>264 おお、AT90USB162-16-TQFP32が577円で売ってた。
情報ありがとう!
>>265 あ、なるほど。じゃあ、ちょっと勘違いして読んでました。
>>267 これ面白そうだな。
RAMがちょっと小さいのが気になるけど。
>>262 ATmega32U4てのが存在するのね
通販はdigikeyにも在庫なかった
SRAM2KでPLLの64MHzがタイマと繋がってるから
遊ぶにはちょうど良さそうなんだけど
271 :
774ワット発電中さん :2010/01/11(月) 18:57:17 ID:jTHmEhIa
AVRISPが緑ランプ状態なのに(何もしていなくても)ときどきオレンジ色に5回点滅するんだけど・・・。 HEX自体は普通に書き込めるんだけど,壊れてるのでしょうか?
272 :
774ワット発電中さん :2010/01/11(月) 19:24:19 ID:jTHmEhIa
パスコン手抜きせずに付けたら・・・. 基本は大事ですね・・・.
完全同期設計だから電源にはスパイクノイズが出るよね。 (オシロで見たことないけど)
>>273 電源のスパイクノイズは素人には分かりにくいよね、
俺んちの安い10MHzのオシロじゃ観測できなかったよ。
コモンモードトランス
チョークコイルの入れ方は意外と面倒だから 素直にパスコン貼れ。 ブレッドボードだと無理だけど、アレはもともとが低速実験の為の物なんだから無理すんな。
コモンモードチョークとか、FBとか3端子コンデンサとか、トラ技で話題になるけど イマイチ使い方が分からない部品の一つ。 産機の制御機器にはノイズフィルタ(コモンモードトランス?)を付けなけりゃいけないみたいだけど。 (内製なんで付けてないです。外販なら付けるかなぁ。) メーカーの営業マンに聞いたら、「おまじないです」って言ってた。
EMI環境に置いてみるとその差歴然
>EMI 産機のセンシング・制御機器、駆動機器って、個々がノイズ対策されてるので大丈夫なんだと思ってました。 ウチは殆どがエア・油圧系なので、ノイズ源と言ったら200V系の電動機の電源ラインぐらいかな・・・
パスコンもおまじないです
おまじないかあ。 メーカーの営業マンがそんな事を言ってちゃいかんと思うが、売り込み相手に使いこなすノウハウが無いと判断したら、迎合してそんな言い方をするのかもね。 ノイズ対策部品の使い方を一から説明できる程の知識も暇も無いだろうし。
個人の趣味で作ってるのでEMIなんてそっちのけっしょ普通は、 コモンモードチョークは機器のノイズを外部に放出しない意味の方が大きい訳だし。
俺の感覚 パスコン : 無いとAVRでも誤動作したりする。マジ効く。 FB : アナログ混在の時は目に見えて効く。デジタル一本ならいらんだろ その他のノイズ対策用スペシャル部品 : おまじない。入れたことに意味がある
>>277 FCC Class Bを通らないとかでEMI測定室に缶詰めになってあらゆる手持ちのノイズ対策部品を試してみるとかの経験が無いと分からないだろう。
理屈ではなくてむしろ泥臭いノウハウの塊なので。
>>285 セットばらした時、ケース内のあっちこっちにアルミテープが貼ってあったりすると
「あぁ、苦労したんだろうなぁ・・・」って思う
そもそもそんなノイズを見れる計器持ってないし オレの机の上の動作確認で通ればOK 再現性の無い現象は困るけどしゃーない
回路設計やってる東大生がパスコンを知らなくて困ったことなら昔あった
そのうち某マジコン仕分け人みたいに必要論言いそうだ>パスコン
EMI対策部品か・・・最初からちゃんと考えて入れたら効く 後から泥縄式に付けてもほとんど効かない
研究室入ったらパスコン程度の知識すら積みあがってなくてワロタ。
>>287 機器が放射するノイズなら、機器を短波ラジオやFMラジオに近づければある
程度は判る。
ホンダ系列の電装品メーカーで『車載のラジオの受信にECUからのノイズが
乗るってことで、マイコン(SH7055)の動作クロックをちょっとだけずらして
対策しました』なんてことがあった。
確かマイコンの動作クロックが40MHzで、高調波ノイズが80.0MHzの東京FMに
バッチリかぶるので、ちょっと低い発振周波数の水晶に交換して「対策」(w
ウソのような本当にあった話です。
家電やコンピュータに比べたら、車載の電装品は野放しの無法地帯みたいな
もの。 レクサスが暴走(マットが原因とされているが)するとか、プリウス
のブレーキが抜けるとか、あってもなんら不思議ではない。
>>293 >ウソのような本当に・・・
周波数にわざとジッタを発生させてピーク値を誤魔化すのはトレンドなんですぜ。
295 :
293 :2010/01/13(水) 13:47:31 ID:E/+f/KcI
>>294 > 周波数にわざとジッタを発生させてピーク値を誤魔化すのはトレンドなんですぜ。
それは特定の周波数にエネルギーが集中するのを分散させる目的だよね。
>>293 はそういう対策じゃなくて、単に40.000MHzの水晶を、例えば39.995MHz
とかに交換しただけって話。 FM東京の80.0MHzに高調波は出なくなるけど、
周波数をずらしただけで、電磁波放射の対策にはなっていない。目くらまし。
当然、FCCやVCCIは周波数帯毎で電界強度が規制しているから基準をクリア
できないけど、車載の電装品FCCの規制対象外で野放し状態ってこと。
実際、ラジオへの影響なんて距離を10cm離せば済んだ問題でもあるだろから そんな神経質になる程でもなかろー
>>297 ん? ほとんどなにもしてないじゃん。
プリスケーラーの設定と
オーバー割り込みで+1してタイマーをセットし直してるだけだし。
メインループとは関係なく、正確に指定時間後に指定関数を実行できればいいんだけど、 まさにその機能のライブラリがあるのに ATTINY2313 で使えなかったと言う 今後も使えるし、汎用ライブラリとして持っておきたいけど、それだけの知識がなくて四苦八苦です
タイマー割り込みで調べれば良いと思うよ。
>>299 初期設定なんかで浮動小数点演算かましてるから2313ではROMを無駄に消費するので
そのままの移植ではなく、一旦固定小数の演算に置き換える必要はありそうだね。
302 :
301 :2010/01/13(水) 15:29:20 ID:7VMZQOtU
あ、ごめん関係ないや。
TCNT2 = MsTimer2::tcnt2; この部分と、この「::」ってたぶん C++ 特有の表現が分からないです NAMESPEACE とかと関係あるのかしら
>>299 128バイトのRAMでFuncを実行するのはちょっと危険な気がするな。
コンパイラ通すだけなら協力してもいいけど。
>>303 Cにするのは左側のクラス名(MsTimer2::)を外しちゃいます。
void MsTimer1::set(unsigned long ms, void (*f)()) { float prescaler = 0.0; OCR1AH = 0b00000000; OCR1AL = 0b11111111; cbi(TIMSK,TOIE1); cbi(TCCR1B,WGM13); sbi(TCCR1B,WGM12); cbi(TCCR1A,WGM11); cbi(TCCR1A,WGM10); cbi(TIMSK,OCIE1A); if ((F_CPU >= 1000000UL) && (F_CPU <= 16000000UL)) { cbi(TCCR1B,CS12); sbi(TCCR1B,CS11); sbi(TCCR1B,CS10); prescaler = 64.0; } else if (F_CPU < 1000000UL) { cbi(TCCR1B,CS12); sbi(TCCR1B,CS11); cbi(TCCR1B,CS10); prescaler = 8.0; } else { sbi(TCCR1B,CS12); cbi(TCCR1B,CS11); cbi(TCCR1B,CS10); prescaler = 256.0; } tcnt1 = 256 - (int)((float)F_CPU * 0.001 / prescaler); if (ms == 0) msecs = 1; else msecs = ms; func = f; } void MsTimer1::start() { count = 0; overflowing = 0; TCNT1L = tcnt1; sbi(TIMSK,TOIE1); } void MsTimer1::stop() { cbi(TIMSK,TOIE1); } void MsTimer1::_overflow() { count += 1; if (count >= msecs && !overflowing) { overflowing = 1; count = 0; (*func)(); overflowing = 0; } } ISR(TIMER1_OVF_vect) { TCNT1L = MsTimer1::tcnt1; MsTimer1::_overflow(); } こんな感じに変換 正しい方向に進んでるかもよく分からないし、ネームスペースの変換が不明です
>>305 外した場合、MsTimer2.h が意味をなさなくなるのですか?
うーん、マイコンに C++ つかうとか意味不明だ
>>307 そうですね、hに入ってるのはプロトタイプ宣言ですから意味無くなりますね。
>マイコンに C++
LANなどのプロトコルスタックとか実装する際にはクラス分けされていた方が便利ですけどね。
>>307 コンパイル通してみたけど要る?
うpロダ教えてくれれば放り込むけど。
ネームスペース使うのはライブラリで関数名などが 被らないようにするだけなのかな…。 これくらいのものならベタに書き直してもいいような気も。
AVRWRT売りつけるつもりなら328P対応しとけよ
わざわざ共立のライタなんか買わなくてもAVRISPは3000円も出せば買えるだろ そんなとこでケチってどうするんだよと
偶数倍の高調波って、あんまり出ないんだけどなー
12mmのスペーサ扱ってる秋葉の店か通販ショップ教えてくれ 10mmとか15mmとかいらねーんじゃあ
3年ぶりぐらいにAVRでマイコンの練習を再開してみようと思うんです 中古でそれ用にWindowsのノートパソコンも買ってきました シリアルもパラレルも付いてないけども それでdigi-keyでAVRISPを買おうと思うんですけど そこで買い物するならついでにこれも買っとけってものあります? 上の方で話題に出てたUSB-keyとかおすすめですか
>>318 秋月のAE-UM232Rがおすすめ。
>>306 arduinoのライブラリのコードは汎用化し過ぎて、
大雑把でいい加減だから、参考程度に留める事。
特に(*func)()の箇所、
TINY2313は無駄にスタックを食い潰す様な真似はできない。
割り込み中のコールバックは避けてフラグに逃がす事。
OVF割り込み中にソフトでTCNT値を更新する方法は、
正確とはとても言えないので、比較一致割り込みに変更。
OCRn値は1msecが欲しいなら20MHz時8分周で2499。
式は0.001秒/(8分周/20MHz)-1=2499。
最後の-1は0オリジンのため。
8ビットタイマ0で249で100usecの周期を作り、
割り込み中に10回カウントしても良い。
周期はハードウェア生成なので正確さは供給クロック次第。
>>314 ですよねー、矩形波は奇数倍で構成されていますからね。
>>322 >>319 の言うとおり、タイマーの精度はいい加減だし、スタック消費には要注意な。
動作がおかしくなったら、2313以外のRAMの多いのに切り替えた方が吉。
あくまでお試し的なプログラムなので気を付けれ。
タイマーごときライブラリにするほどのものでもない
>>324 泳げないやつに泳ぎを教えるより、浮き輪を貸した方が早いのでな。
ID:CtlsYKG0 ありがとうございました 難なく目的のものが作れました これは便利なライブラリだ
>>325 うまいこと言うなぁ。
AVRでもリアルタイムOSってあるのかな?
う〜む。組込系MCUのベテランが居わしますなぁ。 ところで、このスレってAVRの神様ことchaNさんは見てるのだろうか。 ちょっと気になる。
>>329 神はいつでも高いところから我々を見守っていらっしゃるが
我々の前には姿を現すことは無いのだよ
>>327 AVR freaks内にも比較的しきいの低そうなRTOSが公開してあったと思う
そういや無理矢理2313にRTOS乗ってるのがあったな。 でも2313だったらソフトの書きやすさはそこまで恩恵うけられなさそうだけど。でも俺もやってみたい
どこかにプレステコントローラ を PS/2マウスのコネクタに変換するAVRはありませんか ゲームでパッドが対応してないものがあって、キー割り当てソフトもきかず、 マウスの代わりに使いたいのです
2313だと非プリエンティブなら現実的かな 各タスクはステートマシン化してnクロック以内にかならず制御を返す感じで
>>333 やりたい事がよく判らんけど、PCのPS/2マウス端子に
プレステコントローラーを繋いで使いたいって事?
そのままの物はないと思うよ
AVRからプレステコントローラーを使う方法と
AVRからPS/2を使う方法はググれば見つかると思う
>>334 2313にのせたってやつも、手動で返してたな。
>>335 逆じゃねPS2のゲームでPS/2マウスを使いたいんでしょ。
>>333 需要があるなら作ってもいいけど。
けどワンチップで対応できるかはやってみないと分からないな。
338 :
337 :2010/01/15(金) 22:10:41 ID:/rFzCFJM
あ、PCゲームでPSコントローラーを使いたいのか俺が読み違えしてた。 PS/2のホスト側は書いた事あるけど、デバイス側はやったことないや。
>>328 ,331
ありがとうございます。書きこんでからググれかすといわれるのを覚悟していました。
結構種類があってびっくり
90USBKEYのハーフピッチの拡張コネクタ、誰か実際にハンダ付けした人いる? 千石で買ってきた80ピン(40P×2列)のコネクタを、刃の薄いレザーソーで 10ピン毎に切り出したまでは上々の首尾だったのだが、ハンダ吸い取り器で 埋まったハンダを取り除いてスルーホールを貫通させた状態で、ピンヘッダを 押し込んだものの、スルーホールの穴径がギリギリらしく、奥まで入らず。orz コテ先を横にして全ピンのハンダを溶かしながら、机に押し当ててかなり強引 に押し込んで、なんとか2個はハンダ付けした。 残り4個どうしたものか。
千石の1.27mmソケットの方は基板の穴にすんなり入りました(同じく80Pinなんで5列ずつ切って小分けにした) 長い間コヤシにしてましたがaitendoのSPI接続の液晶と合わせてブログのネタには出来そうです。>AT90USBKEY
>>342 前に、V-USBつかって、USB-赤外線つくったよ。
東芝のレコーダ制御用なのでNECフォーマットしか対応してないけど。
要望あるなら公開するけど、需要ある?
>>343 直接的に使うわけじゃないけど、USBの部分も赤外線の部分も興味ある
是非お願いします
適当にストレージ持たすのはどうかな、FileSystemがちと面倒かもだが SDあたり使えばPCでファイルを用意して与えられるし。
347 :
342 :2010/01/17(日) 20:45:33 ID:v/nFuPIR
>>347 たった3バイトか
何か楽しくなってきた
こんなんまで市販されてるのかー 工作者の楽しみを奪うなよ
デバイス側にリモコンコードのテーブル持たせて、PC側からはテーブル のインデックスを指定する形式なら、1バイトで任意の256通りのコマンド を送ることもできるよね。 実装次第でどうにでもなる。 chan氏のサイトにも、赤外線リモコンのサンプルソースがある。 トラ技の2009年10月号,201p〜に、赤外線リモコンのコードに関する解説が ある。たぶんCQのサイトに登録すればソースはダウンロードできる。 自分は、とりあえず3種類(NEC,AEHA,SONY)のコードに対応した受信側の デコード処理だけ作ったけど、手元のにあるリコモンを片っ端から試した ものの、全てNEC仕様の製品ばかりで他のリモコンコードは検証できず 仕舞いのまま。
>>350 俺もWinAVRでNECコード用だけ作った。
受信部の材料は秋葉液晶工房で売ってた\300円の受信素子+送信機のセット。
受信したコードを液晶に表示する奴を作って
家にあるリモコンを色々試したのだ。
で、NECコードでは無い奴は、ソニー製品除けばWindows-MCE用のマウス機能付きリモコンとか。
>351 基本的に、SONY製品は却下なので、もともと糞ニー製品など手元にはない のだが、ずいぶん昔、たまたま確か100円くらいで売ってたサードパーティ 製のプレステ用赤外線リモコン(受光部はゲームパッド用コネクタに挿す)が あったので試してみたけど、やっぱりNECフォーマットだった。 あとレアなやつで、あきばおーで売ってた中華製小型液晶テレビや、MOVIE COWBOY(HDDメディアプレーヤ)とかのリモコンもNECだった。 そういえば、糞ニーは無条件に却下なので、当然プレステ本体もないのだが、 PS2用ゲームパッドの受信処理はAVR用に書いたのがある。 昨日液晶工房で買ってきた7セグのLED、カソードコモンのが欲しかったのに、 家に帰って点灯させてみたら、アノードコモンだったよ。orz
国内ではNEC 以外のフォームに「家電協会規格」があるようです。
>>353 それがAEHA
> とりあえず3種類(NEC,AEHA,SONY)のコード
最近のPanaってどこ? なんか糞長かった気がするけど>Viera
でも国内は9割がたNECであるのも事実かな。 パイオニアとかYAMAHAが若干違った記憶もある。
どうでもいい知識かもしれんけど、30年くらい前にNECのリモコンチップが シェア高かったせいでTVのリモコンでエアコンONとか色々あったため 共通フォーマットが開発された経緯がある。 今では逆に中華製造のせいで誤動作とかありそうだが。
ありそうというか,現実に起きて問題になったでしょ? シナ/チョン製品なんて買うものじゃないという理由のひとつになってる
リモコン受信のコードだけど書き方はどんなやり方が楽に書けるのか… 本来なら、それこそRTMかマルチタスクモニタ使って別タスク化、 受信監視はI/O状態変化割り込み、だろうけど。 リモコン受信は結構な時間がかかるので ベタ書きするとCPU時間の無駄だよね。 自分が書いた時はタイマーは適当に廻しといて ソフトでの監視にしちゃったから 受信時間だけ待たされる…orz
調べたうちではパナとSHARPはAEHA、ONKYOとPIONEERはNECだったな。 SONYは当然SONY。
自作のリモコンは送信側をRS232にしちゃったので、 受信側はセンサーをRS端子に入れただけのお手軽仕様。 普通のリモコン信号を拾うのは面倒だよね。
ぶったぎり悪いんだけどADC前段にかましたOPアンプの電源はAVCCのが良い? AVCCは一応DVCCからローパスかましてある AGNDはユニバーサル基板でベタは無理?っぽいのでDGNDと直結
セオリー通りだとGNDを1点アースだっけか。 オシロあるなら動かして各点で計測した方が早い気がする。
>>364 データシート無視してくれとか言われたらもうw
セパレート仕様でもGNDを共有するのは自由だからいいんじゃね?
データシートどころか製品自体にミスがあったりするから困る
製品を製造している会社に、大した測定器もデーターシートを作れる人材も無いという不思議
>ADコンバータのDGNDピンをシステムのAGNDにつないだ方が良いなら、 >マイコンのAGNDとDGNDはどうなんだ?って迷ってしまう。 それが理解できるようになったら,アナデバのおっさんの話も理解できるよ 頑張って考えるべし
370 :
774ワット発電中さん :2010/01/20(水) 12:36:20 ID:G02iYGn4
まだAVRスレあったんだw
>>370 おまいの巣スゲー過疎ってるじゃんwww
AVR ってメモリーを使えば使うほど不安定になるのかしら
373 :
774ワット発電中さん :2010/01/20(水) 18:46:21 ID:clkuIDIh
>372 スタックを食いすぎてヒープ領域を潰しているだけでは?
自分の糞ソフトの問題をCPUのせいにする奴って多いよねw
simavrってwinavrで使える? ソースを取ってくるところからよくわからんw
>>374 不良品とかコンパイラが悪いとか疑ってこのかた、400戦0勝
>>376 お前はよく戦ったよ(´;ω;`)ブワッ
379 :
774ワット発電中さん :2010/01/21(木) 04:36:59 ID:4kvdAMHu
ATmega8のADCで、データ読み込みを10bit精度で行おうと思っているのですが、 A/Dデータレジスタを見ると、ADCH、ADCLといった8bitデータが格納されているのと、 ADCDという記述が有りました。 このADCDというものは詳しく書かれているところがなく、推測ではADCHとADCLを既にあわせている16bitデータだと 思うのですが、いかがでしょうか。
データシートにはそう書いてあるし、アドレスも隣り合ってるな まぁCだとどうコンパイルされるかわからんから、 8ビットずつADCLから先に読んでおいたほうが無難だとは思うが
二桁の数字から一桁目だけを取り出す一番効率的な方法って何かないかな int a int b int c a = 56 b = a / 10 c = a - b * 10 これって非効率的だよね
>>383 効率の話してるのでは? %使ってもコンパイル結果は一緒でしょ。
385 :
774ワット発電中さん :2010/01/21(木) 10:15:48 ID:tR1xX9Ty
>>381 10進数としてだけ扱い、バイトで2桁以内、ワードで4桁以内と決まっている
なら、値をPacked BCDで入れておけ。
>>379 >>380 AVRWikiのGetting Started→ADCにその辺書いてあった
>avrgccではADCWというペアレジスタとして16bit値を取得できる。
>データシートにはペアレジスタとしての名称をADCDとも書いてある。
avrgccでADCWから取得すると、ちゃんとADCL→ADCHの順に読んでくれるはず
他の読み書き順のあるレジスタ(16ビットタイマのTCNT1やOCR1Aとか)も
ちゃんと処理してくれる、っていうかその辺気にせずに使ってる人も多そう
気にする人の方が変かも
>>381 int a, c ;
a = 56 ;
for ( c = 0 ; a <= 10 ; c++)
c = 0 ;
while( a > 0 ){
a -= 10 ;
c ++
}
石投げないでw
>>388 あ、ごめん書いてる途中で送信しちゃった・・・二重に石投げないでwww
int a , c ;
a = 56 ;
for ( c = 0 ; a >= 10 ; c++ ) a -= 10 ;
>386 そういうところでの「はず」は期待しない。 見通しの悪いところでは信号が青でも速度は落とすもんだ。 実際 TYNY2313向けの初期実装はバグってたわけだしな。 >389 ループ変数いらんだろ。 for ( ; a>=10 ; ) a -= 10; c = a; でいい。
>>389 int a;
int b;
a = 56;
c = a % 10;
これより速そうです?
なんか、こういう計算を最速でできるアルゴリズムというかテクニックと言うか、そんなのが知りたいです
>>391 b を c で置き換えてください (;´Д`)
コンパイラが最適化して b=6 になるよ ってか、% ってあったっけ?
>>393 > ってか、% ってあったっけ?
おいおい! そんなんでコンパイラの最適化がどうとかうんちく語るなよ?
>>393 え? %演算子の使えないAVR用コンパイラがあるのか?
2桁ならcharにして、ループ前に軽く処理加えたらよいかも char a,c; (もしくは演算前にキャスト) a = 56; if (a >= 50) a -= 50; for ( ; a>=10 ; ) a -= 10; c = a; 50引かないと、、平均4.5回ループ 引くと平均2回ループ+引く分の1回で3回 演算時間の差も小さくなるからタイミング取りやすくなるかも
る・る・る〜、charがsignedでハマる予感...。
おとこオオカミ宣言
あれgccってcharはsignedだっけ? Windowsはsignedだけど
10進2桁限定だったからsignedで良いかと思ったけど、unsignedのほうが良かった?
>>390 やっと気づいた orz
欲しかったのは一桁目だったんだ・・・てっきり二桁目(10の位)が欲しいんだと思ってたよ。
吊ってくる
% が「使えねー」という感じがしないのだけど、誰か % を使った場合と使わない場合で 生成コードを比較してもらえまいか。 片方だけでもいいけど。
>二桁の数字から一桁目だけを取り出す const char dat[100] = {0,1,2,3・・・(中略)・・7,8,9}; a=56; c=dat[a];
>>386 ところで16bitの一時レジスタって、タイマーとADCは共有なのかね?
データシートのADCのページには、特に一時レジスタについては
書かれてないようなんだけど、もし共有なら、
割り込みで両方使う場合は要注意じゃね?
mainでADCW見ながら割り込みでTCNT1を更新したりする場合、
割り込み禁止しないと一時レジスタの取り合いが発生する?
あ、取り合いというか、割り込み側が一方的に書き換えて ADCW読むときに禁止しとかないと値がまともに読めないという 状況を想像したんだけど。
>>402 % だとライブラリ呼ばれて終わりみたいだよ。
>>404 読み込み専用だしタイマ値書くときに使う一時レジスタとか関係なくね?
あと、
ADCLが読まれると、A/Dデータ レジスタはADCHが読まれるまで更新されません。
ってデータシートに書いてあるから、L→Hで読めばいいだけかと。
あーそっか。 書き込みに対してだけ使われるのか。
一時レジスタが機能ブロックで共有とかありえませんw ファミコン時代ならありえますが、今の設計ルールでそれやったらキチガイです。
機能ブロックで共有 × 機能ブロックを超えて共有 ○
ソフトで言えば、関数内で使うループ回数とかを、スタティック変数に割り 当てて、複数の関数で共有するみたいなもんだな。 シリコン上の配置設計に与える制約や配線長とそれに伴う遅延を考えれば、 何のメリットもないような。
ってか、ソフトだろ。だれも配置配線なんてしないよ。
>>412 ASICレベルならやらんでも済む場合があるけど、
100万個以上の量産品は歩留まりや生産性の観点から人手が必ず入る。
>>412 え、ICはプリント基板と同じようなノリで作られてるのに
配置によって設計にも制約うけちゃうのは普通だと思うけど
おおかた、HDL言語の切り貼り作業だけの、論理設計レベルしかやらない (できない)自称「IC設計者」でしょ。 いや、自称だと「ウィザード」とか「アーキテクト」かもしれんケド。(w
アナログICはオール手作りだ
>>412 ならICチップの落とし込みに数億円掛かる根拠をkwsk
大量生産するときはマスクで作るんじゃないの
じゃあ、少量生産の時はちっちゃなジム・キャリーが作るのか? 緑色のマスクはソルダレジストだったりしてな。
配置、配線、マスク生成が完全無人化なら数百万で済むだろJK
アクセスタイムが55nsと70nsのSRAMが手持ちにあるのですが、 これらをmega128とかの外部バス付きのAVRに繋げた場合、 16MHz(1t=62.5ns)では、どちらも1waitが必要で、 この場合外部SRAMに対してのldやst命令などは4クロック掛かる という解釈でよいでしょうか? またデータシートの外部メモリタイミング特性によると、 tRLDVが1.0tCLCL-50ということなので、16MHz時は 62.5-50=12.5ns以下のSRAMでないとwaitなしにはできない?
>>422 1waitなら4クッロクになると言う解釈でおk
16MHz時は…
SRAMのアクセスタイム若しくはサイクルタイムの規定は
CS(CE)基準の場合が意外とあって、RD/WR信号だけなら、もっと速くアクセス出来るSRAMもある…とか色々。
データシートを良く見て、工夫と健闘を祈る。
ありがとうございました。 とりあえず動くようにがんばります。
>>425 ヒントとしては、TRISIOを操作してること。(AVRの場合DDRx)
プルアップ無しの入力は外から見たらHi-Zってことだな。
>>425 写真の奥からLED1 ... LED5 として
+----------------------------------------------+
| GPIO0 | GPIO1 | GPIO2 | 点灯 | PORTx | DDRx |
|-------+-------+-------+------+-------+-------|
| Hi | Lo | Hi-Z | LED1 | 001b | 011b |
|-------+-------+-------+------+-------+-------|
| Lo | Hi | Hi-Z | LED2 | 010b | 011b |
|-------+-------+-------+------+-------+-------|
| Hi | Hi-Z | Lo | LED3 | 001b | 101b |
|-------+-------+-------+------+-------+-------|
| Hi-Z | Lo | Hi | LED4 | 100b | 110b |
|-------+-------+-------+------+-------+-------|
| Hi-Z | Hi | Lo | LED5 | 010b | 110b |
+----------------------------------------------+
かな? しかし、電流制限抵抗が入ってないな。
PICのGPIOって定電流出力にするモードなんてあったっけ?
日本製のエレキ商品がダイソーに並ぶ日も近そう。
3ピンなら本当は6つまで可ですね。
IOピンとLEDの本数の関係は (IO-1)*IO = LED数
>>429 動画見ると3つ抵抗入ってるからそれじゃないかと。
431 :
425 :2010/01/23(土) 16:48:43 ID:n0qO9ffw
>>426-430 アドバイスありがとう!!
Hi−Zを使うこととかCharlieplexingも調べてはあったあんだけど、できないんですよね
でもそのへんのやり方を使うことは間違いなさそうなんで、もう一度考えてみます。
ちなみに1ポート1LEDでの試作は実施済みで、そっちは問題なく出来ました。
あと、ぜんぜん関係ないのかもしれないけど、たとえば
>>429 の表の一番上の状態にしたとき、
LED1が光るのは問題ないとして、LED3とLED4を通る回路も成立しているように思うんだけど、そこが光らないのはなぜなんだろう?
LEDって逆電圧かけると劣化しなかったっけ
>>432 V_R=5Vくらいまでなら、ホビーなら無視できるって考え方なんじゃない?
>>431 > LED1が光るのは問題ないとして、LED3とLED4を通る回路も成立しているように思うんだけど、そこが光らないのはなぜなんだろう?
LEDの順方向降下電圧が2V以上(特性がほぼ揃っている直列だとその2倍)
あって、電源電圧が3Vと低いから。
電源電圧が4V以上あって、電流制限抵抗の値が小さく、使用するLEDが少ない
電流でもよく光る赤色の高輝度タイプの場合、薄っすら光るかもしれない。
∴
>>428 > このへんはアクロバティックな方法。
拡散剤入りの半透明樹脂ではなく、クリア樹脂に封入されたタイプは、
ちょっと光った状態も判りやすい。
USART(RS232C)通信にてAVRとPCとで通信させているのですが、250kbpsなどボーレート を高くするとたまに値が変になってしまうことがあるのですが何故でしょうか? 20MHzで250kbpsだと誤差は0のはずなのですが、19200bpsなどの誤差があっても 低いボーレートの方が値が変にならないです。
ドライバICに何使ってる? データシートでスピード足りてるか調べてみるんだ
230.4kbps?
受信した後の処理が25文字/1mSに耐えられないとか
ありがとうドライバICのせいっていうのが一番有力な気がしてきた 今度調べてみます
それくらいの速度になると、PC側のトランシーバICが対応しているかと
いう問題もあるし、ケーブル長さや芯線の太さ、シールドの有無によっても
違ってくるからなぁ。
秋月で売ってるインターシルのMAX232互換は、安くて低消費電力だけど、
速度上限がアナデバのヤツより低い。
そもそも当初の232Cの規格上で25mまで通信可能なのは、20kbps以下で使用
するって前提だし。
>>438 PC内蔵のシリアルポートやUSBシリアルは、送/受信ともFIFOを持ってるから
問題ないけど、AVR側はバッファは1個しかないからね。 ただ、取りこぼし
なら、受信ステータスレジスタのオーバーランエラーが立つ筈だし、化ける
というよりデータが消える。
PCが115kまでしか設定できん
HiSerial.sysで230k以上も使えるようになるよ。 パソコンのチップセットによっては使えない時があるので その時はUSB/シリアル変換器を追加するとOK。 5Vで230kできても3VだとダメなドライバICもあるよ。 後、パソコン側はFIFOがあるけど何重ものファンクションコールで 毎秒25,000バイトの表示処理などが追い付かないソフトがあるかも。
windowsの表示は重いからな 受信だけなら、Gbpsとかあるけど
DDRで出力に設定してるときにPINレジスタを読むと、 何が返ってくるんでしょうか?
出力した時に設定した値
>>444 厳密にはI/Oピンの現在の状態。 汎用IOピンとして使っている時、出力に
設定されていれば、通常はPORTxを読み出した値とPINxを読み出した値は
同じ。
ただ、PORTxのビットに1を書いて'H'を出力していても、外部ピンが(GNDに
短絡またはそれに近い状態で)'L'レベルになっていれば、PINxの値は0が
読み出される。
また、UARTやタイマ等の周辺機能と兼用のI/Oピンで、周辺機能を有効にする
とPORTxに書いた値と、PINxを読み出した値は一致しなくなる。例えばTxDと
兼用のピンは、、UARTの送信機能を有効にすれば、PINxを読み出した値はシリ
アル出力されている送信データの内容によって逐次変わる。
よくわかりました やりたいことは8ピンの2つのAVRを繋いで、 1つのピンで信号をやりとりする事でした 出力同士がかち合うとまずいので、 オープンドレインとして考えてDDRを出力にしたローレベルと、 DDRを入力にして内部プルアップでハイレベル とすればよいと思ったのですが、 LO→HIとHI→LOにするときのレジスタの設定の 順番はどっちにすればいいんでしょう DDR=1 PORT=0 出力→LO DDR=0 PORT=1 入力内部プルアップ→HI のとき、 LO→HI、HI→LOに切り替えるには DDR=0 PORT=0を経由するか DDR=1 PORT=1を経由するか 前者は一瞬信号レベルが不定になる 後者はHIレベルで相手の状態により一瞬大電流が流れる どっちもまずいような
抵抗一本くらい付ければいいじゃないか
>>447 1-wireプロトコルをそのままパクればよろしいかと・・・
>>447 後者で短絡は論外、素直にプルアップ外付けするのが良いんじゃね
内蔵プルアップだけでは不定状態通過せざるを得ないし。
ソフト的に何とかするのもありだけど(複数回読んで多数決とか、切り替えコマンド送信してウエイトするとか)
短絡はまずいですよね 外付け抵抗付けることにします よく考えると前者でも片方が受けに回ってればプルアップは されてるのでいいかなとも思うので影響が出るか試してみます ありがとうございました
値の範囲はデータシートに記載があると思うけど、内部プルアップは抵抗の 値が大きく、誤差も大きいので、あまり過信しないほうがいいよ。 例えばベース入力に直列とB-E間にそれぞれ4.7kΩ〜10kΩの抵抗が入ったごく 一般的なNPNのデジトラを繋ぐと、内部プルアップ抵抗よりも、デジトラ内部の 2つの抵抗を経由してGNDに繋がっている方が抵抗値が小さいので、分圧された I/Oピンの電圧レベルは'L'になる。 あと、プルアップ抵抗値が大きいので、容量を持つ負荷がぶら下がっている 場合はCR時定数で立ち上がりが遅れる。 MOSFETのゲートをドライブする等 なら、内部プルアップは使わないほうがいい。
丸ピンのピンソケットが上手く折れない・・・orz 高確率で樹脂の端が欠けて金属が露出する ニッパーで切ったりラジオペンチで折ったりしてるんだけどダメ?
>>453 内部プルアップは20〜50kΩとなってるから、それほど大きいとは思わんが・・・
にしてもAVRって昔からI/Oピンのプルアップに比べてResetのプルアップ抵抗が大きいのは何故?
確かAT90S1200の時代なんか500kΩぐらいあった気がする
>>454 俺は一ピン分無駄にしている。切りたい所の一個隣のピンを被覆している樹脂を割ってから
金属ピンを抜き取って、ヤスリで仕上げてる。
ただ面倒な時(わりとどうでも良い物を作っている時は)ピン-ピン間のくぼんでいるところを
ニッパで切り離すこともある。(結構失敗確率高いw)
>>454 ピン数が減るのを覚悟で切断面の部分のピンを抜く(半田ごてあてて熱で溶かしつつ)
そして切る。
カッターの刃をコテであたためて(コテにネジ固定でもいいが)切るという手があるけれど、
それは匠の技がいるw
ほぼ同じ事を言われてたorz まぁそんな感じで。
半分だけニッパーで切って折ると大抵うまく行くけど
刃の断面の角度が大きいニッパーだとうまくいかない
カッターで一周跡深めに付けて折れば平気だよ
よし、次はAVRのパッケージを削ってどこまで小型化できるか……さすがに無理か。
昔レベル変換ICの両端切断してシリアルのコネクタに内蔵させてるのあったなw
DIPのPICをICソケットに実装しようと思ったら、他の部品と干渉したから 1mmぐらいやすりで削り落としたことならある。
超軽量飛行機だっけ、あの手の自作erはパッケージ削るのはデフォらしいよ 1g減るなら何でもやるっぽい(もっと小さい単位かもしれんが)
1gって1円の重さだよな。。。
小売価格が300円程度のCPUなんてどーせ4^2mmも無いんじゃないかな
ATMELはチップ単体でも供給できるよって言ってるんだから チップだけ売ってもらって自分でボンディングすれば…
ベアチップを買って個人でボンディングしてたら凄いなw
トランジスタガールの再来である
今時LED並べるとか珍しいな・・・ LEDはリードが長いのでユニバーサル基板2枚使って縦横で配線すると楽にはなるけどさ
>>476-479 もう30年近く前になるか、高校生の頃に当時のラ製の記事を参考に10素子
のレベルメータICとLS-TTLのカウンタとデコーダIC等を組み合わせて、100個
(10×10)並べた赤色LEDをダイナミック点灯させて、オシロ組んだのを思い
出す。
当時、地元(といっても電車で1時間くらい離れている)唯一の部品屋というか
アマ無線屋で2SC1815が@100/個だった気がする。 もっぱら、信越・千石・
藤商の通販を利用していた。
それより前、当時NHKの教育TVで木曜に放送されていた「みんなの科学」の、
8個並べたフォトインタラプタで、紙テープに書いたASCIIコードを読み取って
>>476 のようにドットフォントのキャラクタを表示するボードなんてのも
組んだ。(S52年度、IC電光表示器)
ttp://www.geocities.co.jp/Technopolis/4764/alltitle.htm 当時はインターネットはもちろんビデオとか便利なモノもなく、放送中に
テレビ画面にアップで映される回路図を、必死で広告のチラ裏に書き写す
も、すべてを書き写すことができず、ずいぶん悔しい思いをした。
ブラウン管表面にサランラップを貼ってなぞってみたりしたが、この頃には
ロジック動作を理解できるようになり、ブロック図やIC型番だけ拾って、
あとは自分でアレンジしたり、再構成できるようになった。
>>481 ああ 俺もメモった
なんの回路か忘れたけど 7432使った回路だったのは記憶してる
483 :
476 :2010/01/27(水) 00:09:15 ID:ISQKXM/e
>>476 抵抗が8本あるってことは無茶しないで一個ずつ光らせてるのか
485 :
774ワット発電中さん :2010/01/27(水) 06:46:16 ID:4TWw/HwU
話断ち切り申し訳ありません。 最大で5分程度の分秒タイマーを作りたいのですが、仕組みは以下のようであっていますか? チップはmega8(無印)、クロックは1MHz、タイマ部は8bitタイマ0です。 1.タイマ起動 1024分周 2.カウントが溢れたら(MAXになったら)TOV0を使い、割り込みをかける この時点で 割り込み回数(1/(1M/1024)*255) であるはずなので、0.26112秒ごとの割り込みになっている 4.8bitで制御されているため、int型に入れこのまま単純にプラスしていったら約66秒でカウントできなくなるので、 230カウントで(60.0576秒)別のint型に1を足し、元のはクリアする うまく伝えられず申し訳ありませんが、ご回答、お願いいたします。
>4.8bitで制御されているため、int型に入れこのまま単純にプラスしていったら約66秒でカウントできなくなるので、 AVRGCCのintは16ビットじゃなかったか
>>483 配線は非常に楽で頭いいと思うけど・・・、そんな回路のソフトなんかヤだなぁw
>>485 クロックを32.768KHz にすると、消費電力は下がるわ、
バイト先のJKにチョコレートもわうわ、
宝くじ当たるわ、もう大変なことになる。
>>489 ちょっとクロック 32.768KHz にしてくる
大筋ではあっているのでは ただ割り込み回数(1/(1M/1024)*256)でしょう 1MHz = 2^6 * 5^6 2^6=64分周で消化 timer1を使用すればコンペアマッチ割り込みで5^6=15325を一気に消化 これでちょうど1秒ごとの割り込みに ただクロック1MHzに精度がないとこだわっても意味ないけど
>>489 クロックを32.768kHzにしたら、消費電力が下がるとか一秒のカウントがすごく楽とか
そんなことはどうでもいいけど、そのJKとFFできるのか?
AVRStudio4.18SP1試した人います?
まずお前が試せ
496 :
485 :2010/01/27(水) 18:48:04 ID:4TWw/HwU
みなさんありがとうございます。
今回は余裕もあるので
>>491 氏のようにさせていただきます。
親切に回答していただき、ありがとうございました。
最後になりますが、クロックは内蔵1MHzです。
3%ということなので、5分でも最大9秒のずれなので、そこは目を瞑ることにしました。
約1MHzのシステムクロックを64分周した信号が出力ポートから出力されるようにして その信号の周波数を測定して例えば16345Hzだとしたら timer1を使用したコンペアマッチ割り込みで設定値として16345(OCR1AorICR1=16344) を設定すればかなり正確な1秒間隔の割り込みを発生させられる 16345Hzの信号を16345回数えたらちょうど1秒ということ これは俺が好きな約1秒の作り方 tiemr1の16bitの範囲内に収まるように分周すればどんな周波数のシステムクロック でも適用できる 2^6=64分周された信号のポート出力は 例えば 2^3=8分周で残り2^3で 2^1は timer1 CTCmodeの出力トグルで消化して残り2^2は設定値4(OCR1AorICR1=3) で消化とか
カウント値を現物合わせで微調 内蔵クロックなのでクロック補正値を変更する
ATTiny2313のデータシートの 図132. 校正付き8MHz内蔵RC発振器周波数 対 発振校正(OSCCAL)値 のグラフはどう見たらいいんでしょうか? ATTiny2313 5V 内蔵8MHzでOSCCAL=0x55(85)と出ました。 USARTで38400bpsで通信できることから8MHz付近のはずで、 グラフと大幅にズレてるのが気になります。
>>499 正直あのグラフがなんの為に存在するのか分からん、
ほんの一例が記載されてるだけじゃないのか。
RC発振ので個体差が無ければ公正レジスタなんて設ける必要がない訳で。
俺がatmega328pを12個まとめ買いしたときにチェックしたOSCCAL値は 8E AE 98 AD 9D B3 A8 AE A1 90 9A 9B だった 2313はOSCCALが7bitだから単純比較はできないけど
内蔵クロックに精度とかもとめちゃいかん とりあえずタイミング関係なくて、自分自身だけ動けばいい時しか使い物にならんよ 校正したって温度でズレるし、手間かけるならXTALつけたほうが早い それで足が足りないなら多い石を使う ・・・といいつつ、制約の中でどこまでできるか知恵絞るのが楽しいんだけどね
アライグマOSCCAL
8×8の2色ドットマトリクス12個使って24×32の時計使ったけど 595を11個つかっても意外とチラツキ無く作れるもんだね 部屋が真っ暗の時は省電力化も考えて少し暗くするようにした
アンドレ
506 :
774ワット発電中さん :2010/01/28(木) 05:15:42 ID:KnxFuJel
32kHzで低消費電力(バッテリ駆動可能)で精度2.5ppm(選別で±0.5ppm) という発振器持ってるけど,もうずいぶん昔に製造中止なんだな. (もちろん,中の水晶は音叉型じゃないよ)
折角選別されても、もう経年劣化で精度落ちてるんじゃね?
音叉型じゃない32kHzの水晶ってどのくらいの大きさ??
厚さ5cmだと・・・ ゴクリ
ちゃんとオーブンに入れておけよ
あとめすれっず?
>>512 シンプルやね。
でもその構成で十分な環境もわりとあるんじゃ無かろうか。
>>512 コンテキストスイッチにクリティカルで発生するバグがあるなw
スタックスイッチ(2バイト書き込み)時には少なくとも割り込みがマスクされていないとダメだな。
516 :
515 :2010/01/28(木) 13:55:40 ID:umy4Ut/F
あーごめん、スレッド切り替えの全域で割り込みマスクが掛かっているのか、マスク期間長すぎるだろこれ・・・
スレッド切り替え中に割り込み入ったらまずいだろ。
面白そうなネタでたね レポート期待
タイマーによるコンテキスト切り替えだと、AVRの能力では 自分でタイミングを取る用途がほぼ使えなくなるんだよ。 例えばリモコン受信やPS/2キーボード入力のような外部の 信号と同期した処理は、コンテキストスイッチ期間が長すぎると 困難になる。必然的に、できる事は用意されたペリフェラルの 範囲になってしまう。専門処理をサブMCUでやらせるとかなら 使い道はなくもないけど、それなら他のマイコンでもいいし、 AVR的にはあまりおいしくない。
そういうクリティカルなタイミングが必要なところに使うものじゃないやろう キースキャンやA/Dを行いながら受信バッファを監視しつつ、 LCDをリフレッシュとか、タスクシステムが意味ある用途に使わないと
>>520 逆に、その程度の内容ならプリエンティブである必要はないよね?
わざわざタイマー1つ潰してまで使う意味もないし
むしろ割り込みを妨害しないイベントループの方が使いやすい。
TCP/IPスタックぐらいの複雑性なら裏で動いて欲しいけど。
裏で動かすくらいなら、AVRをもう一個使え
それをいいだしたらアセンブラでOK
新しくハード作って、張り切ってAVR乗せたらhidaspxから認識しない 何度も回路チェックしても間違いない 石が悪いかと思って、手持ちと交換したら動くのと動かないのがある ライタが不調?とか思って他のライタに変えてみたりと、あーだこーだやった結果、 ライタソフトの-dオプションの数値を変えて戻してなかったとさ、ちゃんちゃん 認識にしなかったら自動で段階的に遅くしていくとかしてくれてもいいのに・・・まぁオレが悪いんだが
>>524 > 認識にしなかったら自動で段階的に遅くしていくとかしてくれてもいいのに・・・
そのアイデアいいね。 本家じゃないけど頂いていい?
オート フォ−ルバック
>524 認識しなかったらハードがおかしい可能性があるからな… リトライして傷を深くするよりはさっさと諦めてくれたほうが吉という説も。
>>517 もう少し工夫できる筈だけどね、リソースやらスタック深度からかかなり妥協してる内容で残念だった。
書き込みクロックが速すぎるとデバイスIDとかfuse値が全ビット1で読み出されるから 意味ある値が読み出されるまでクロック落としていく処理はやろうと思えば簡単にできる でもクロック落としたまま書き込み開始するとすごい時間がかかったりするから 自動フォールバックしたらその旨の警告表示とFUSE値の表示で止めるとか 現在の書き込みクロックの設定で書き込み可能なシステムクロックの最大値の目安を表示するとか 色々考えられる
そういうのは簡単なシェルスクリプト書くか、個人の改造だな。 hidaspxは、今のシンプルさがいい。
俺はあえて遅くして使ってる。 128KB書き込む場合は別として、クロックが1MHzの時でも書き込めるくらいにしてる。 早すぎるとなんか書き込んだ気がしないんだよなぁ。
>>446 それって上手く使えば、自分の制御が正しく出力されてるかの正当値チェックにつかえないかね
AVRの内臓RCってそんなに信用できないものなの? AVR053だったかのアプリケーションノートには1%に保障するとか書いてあったけど
電子オルゴールを幾つか作れば体感できるよ
温度安定性に関してはPICなんかと比較して遜色無いと思う ドライヤーで極限まで炙っても1%も変動しないし ただPICの場合狭い補正範囲を12bitだかのより高いビット数で補正するのに対して AVRはより広い補正範囲を7bitとか8bitで補正するので 出荷時補正のばらつきが多いというのはあると思う 実測で3%とかずれてるのがざらにある(PICの場合実測0.5%以内の補正精度)
つ クリスタル
>>529 いくら工夫したところで、タイマー割り込みから切り替え完了の間に割り込みが入るような実装はリアルタイムとは言えない。
時計を作ったとき、RCだと1日で20分遅れたりした。(ATtiny2313/1MHz) 誤差1%なら14.4分以内のはずだから大体当たってるけど、時計にはならないな。 クリスタル発振子でも1日で1〜2分遅れた。早くはならないもんだな。 クリスタル発振器は正確。1カ月で1秒以内。
思い出したんで一応修正。 RCのとき、比較一致で-1するの忘れてた。 正しい記述だったら14.4分以内の誤差に収まったのかもしれない。 時計の役には立たないってことには変わりないけど。
542 :
499 :2010/01/29(金) 14:14:06 ID:svbm5FTh
>>534 -
ATTiny2313でOSCCALを変えて内蔵RCの周波数を計ってみました。
内蔵USARTは±500KHz程度の誤差範囲を受け付けるようで、
この固体の0x55(8.35MHz)はたまたま動いていたようです。
ためしにOSCCALを0x56にするとデータ化けが発生します。
見ての通り大雑把にしか調整できないので時計用途には向かないと思います。
負荷によっても100KHz前後変動します。
4c 7566192 Hz (4b以下は調べてません)
4d 7664336 Hz
4e 7752160 Hz
4f 7855376 Hz
50 7853504 Hz 60 9435696 Hz 70 11777376 Hz
51 7959184 Hz 61 9573456 Hz 71 11982688 Hz
52 8050496 Hz 62 9709072 Hz 72 12195056 Hz
53 8166432 Hz 63 9855424 Hz 73 12417968 Hz
54 8244080 Hz 64 9985472 Hz 74 12621104 Hz
55 8350128 Hz 65 10152800 Hz 75 12888992 Hz
56 8463872 Hz 66 10277904 Hz 76 13135824 Hz
57 8564432 Hz 67 10433296 Hz 77 13390520 Hz
58 8592864 Hz 68 10463920 Hz 78 13432864 Hz
59 8690064 Hz 69 10635616 Hz 79 13752784 Hz
5a 8801904 Hz 6a 10813472 Hz 7a 14000208 Hz
5b 8920624 Hz 6b 11019808 Hz 7b 14287088 Hz
5c 9005056 Hz 6c 11144192 Hz 7c 14602912 Hz
5d 9130336 Hz 6d 11330480 Hz 7d 14907664 Hz
5e 9258160 Hz 6e 11547904 Hz 7e 15278240 Hz
5f 9405984 Hz 6f 11734576 Hz 7f 15601632 Hz
543 :
499 :2010/01/29(金) 14:27:25 ID:svbm5FTh
4fと50の周波数に差があまりないのは記録違いではなく、 所々こういう場所がありました。(5fと60、6fと70も同様) この固体で8MHz相当として使う場合はOSCCALを0x51〜52に 設定し直す必要があります。 内蔵RC発振を使うなら周波数カウンタがないと厳しいです。
544 :
774ワット発電中さん :2010/01/29(金) 14:38:26 ID:seraSv7J
内蔵CRは精度よりジッタが気になる 分周したのを無線機に突っ込んだらクリスタルだと綺麗なピーって音に聞こえるのに 内蔵CRだとびよよよよよって聞こえる
内蔵RCは微調整できる段階でアレな発振だと思わないのかなw とりあえずISPが何もなしでできるくらいしか個人的にはメリットを感じてない
なんで聞いたかというと、部屋で通信が動いてたものが外で動かなかったから。 25度でAVR053のRC校正バッチファイルで8MHzにあわせた時に 実際何℃でどの程度ズレるのかがデータシートを見てもわからない 25℃の部屋で、STK500でOSCCALのデフォ値を計算してEEPROMに書いてやったら それさえ読めば-40から80℃まで2%程度のズレで動作してくれるなら、それで問題ないんだけど。
>>545 水晶無しで動くならそれにこしたことないだろうに。
なんでもタダじゃないんだぞ。
まぁ書いたあとで思ったのは、俺はピンを限界まで使って無い (使う可能性があるなら上位のものに変更)とかOSCは常備してるしなぁとか。 多分そういう反応もあるだろうなぁと思ったけど、外付け何もなしで頑張るテーマ とかだと厳しいかなとは思うよ。
>>539 ん? そんなこと無いだろw どうせスレッドの間という判定はできない訳だし。
タイマー割り込みの精度がゆらぐのは制御系で使い物にならん。
>>544 電源にでかいコンデンサー入れるとマシになるんじゃない?
>>549 ディスパッチャに割り込み入るようじゃ、切り替えまでの時間が一定でなくなるから
タイマ割り込みの周期がいくら正確でもプロセスのタイミングが揺らぐ。
>>どうせスレッドの間という判定はできない訳だし。
とか書いてる所をみると、実際に制御なんてした事ないんじゃないか?
AD、DA等の一定周期で実行される必要があるプロセスは、ディスパッチャから呼ばれたら次のタイマ割り込み迄に
時間を気にする部分の実行を終える必要がある。そうする事で、ディスパッチャの実行時間が一定なら
タイマ割り込みの周期から毎回一定の時間で処理出来る。
割り込みを許可したヘタレディスパッチャでは、実行時間が毎回揺らぐから
いくらタイマが正確でも、AD、DAの周期はバラつく。
Atomethreadsは禁止してるからOKでFA?
>>552 ソース見てないから判らないけど、下手に割り込みハンドラを書かなきゃ大丈夫だと思う。
モーターとかなら大抵、数ミリ秒周期で十分だし。
>>551 熱弁乙! タイムスライス割り込みでTCB替える方式でも行けるだろJK
RTOSは多分君よりも実装をこなしてるw
>AD、DA等の一定周期で実行される必要があるプロセスは、ディスパッチャから呼ばれたら次のタイマ割り込み迄に >時間を気にする部分の実行を終える必要がある。 この書き方はAD/DAをスレッド内でポーリングしてるんですかね。 割り込みハンドラもTCBへ登録してコールバック風味にした書き方を俺は好んで使うけど?
>>554 >RTOSは多分君よりも実装をこなしてるw
その割には訳わかめなレスですな。
TCB替える方式ってなんだ?
>>551 は、タイムスライス割り込み発生から、TCBを元にプロセスを切り替える迄の間に割り込みが入ってしまうと
タイミングが揺らぐと書いたんだが…
アトメスレッド(Atomethreads)!
どちらにしろ割り込みを使う以上、複数がかち合えば揺らぎます。 基本的にディスパッチの優先度は他の割り込みよりも低いので、 揺らぎを最小限にするためにレジスタの入れ替えが終わったら 即座に割り込みは許可した方が良いと思いますが。 それとAtomethreadsじゃなくてAtomthreadsですよ。(eは記者のtypoです)
ところで、どの辺のクラスからRTOS使うと便利なんだ?
>>559 タイムスライスだからスレッド内でポーリングしててもオーケじゃまいか?
>>560 ボタン入力一つとっても、RTOSの方が楽だけど、元々自作のディスパッチャで
スケルトンが出来てるから、8ピンデバイスでさえRTOSっぽい使い方をする事が多い。
汎用品だと高機能過ぎる可能性もあるから、自分が何をしたいかで判断するしか無いのでは?
>>561 ポーリングするという事は、ループの何処で次の実行権を持つかわからないから、ループ実行に
掛かる時間だけジッタが生ずるし、無駄にループするより、ディスパッチャに実行を戻して他のプロセスに
実行時間を割り当てた方が良いと思う。
取り合えずそんなに高度な精度を要求される用途を教えてくれ
ドットマトリクスを大量に動かしてたら時々暴走するから セラロックから水晶に変えたら問題なくなかった やっぱ水晶のが信頼性あるな・・・
>>565 >>セラロックから水晶に変えたら問題なくなかった
原因は別にある
なんか違う気がする。
セラロックと水晶を似たもの同士と考えている時点で間違ってる。
負荷容量を付けてなかったと
avrとセラロックには相性問題があってうまく発振しない場合には3端子の 両端の端子に1MΩ程度の抵抗を接続するといいという話しもあるね
>>551 元々、割り込みマスク期間が長すぎて弊害が多いって話だった筈なんだがな。
もう少し建設的なレスはできないのかねー。
俺の作ってるのはロボットで協調性と自立がテーマなので、 AIと無線通信とモーター制御をマルチタスクでこなしています。 実際AVRではなくARMだけどね。
>>551 正確性を要求するなら、RTOSなんぞ使わずに、タイマ割り込み処理内でA/Dや
D/Aを処理した方がいいと思うんだが?
タイマ割込ハンドラ内で処理しようが、(タイマで駆動されているに過ぎ
ない)RTOSのディスパッチャ経由で呼び出そうが、どこかで割込が禁止
されていれば、当然タイマ割込もRTOSのディスパッチャも影響を受ける
わけで、なんら違わないと思うが?
どのみち、処理に要するクロック数とオーバーヘッドが増えるだけなのに、
RTOSやディスパッチャが特別な魔法だとでも思っているのだろうか?
>>573 どこらへんがすごいのかわからん。
AI=ユビキタスと同様、理系詐欺師がよく使う。
無線通信=CPUでベースバンド変調するならともかく、UART接続なら
普通のシリアルと何ら変わらない。
モータ制御=ふつう。
CPUで直接汎用I/Oポート叩いてPWMパルスを生成するならともかく、タイマ
等のハードウェアが持つPWM機能を使ってPWM制御しているんだろうから、
PWM制御自体にシビアなリアルタイム性なんて要求されないと思うが?
それに、毎パルス周期とか頻繁にPWMパルス幅を変えたところで、モータの
回転子や負荷の慣性があるから、それにすぐ反応するわけじゃない。
まぁ、もともと処理能力のあるARMなら下手糞なプログラム書いても、
それなりの速度で動くわな。
試しにmega328(20MHz)の内蔵タイマを1本だけ使って、約80us周期でタイマ
割込を発生させて、フルカラーLEDのRGB各端子を1/256分解能の可変幅パルス
で駆動させて輝度と色調を変えるプログラムを書いてみたけど、あっさりと
動いて拍子抜けしたよ。
家電でAI内蔵とか宣伝してる製品もかなりあったね、AIってつくのっていろいろと酷かった記憶しかない。
家電はファジー理論(笑だろ。
ここはくだらない自慢スレでつか?
はい。土曜限定自慢スレです。 誇らしげに蘊蓄たれていってください。
口だけならいくらでも言える
>>572 マスク期間は何μ秒位かかって、それは割り込み周期の何パーセントに相当するんだい?
せめてそこまで考慮するか、使ってみて不具合があるならレスすればいい。
しったかして、バグがあるだの工夫が足りないなどと>515から
非建設的な事言ってるから突っ込まれてるだけだと思うぞw
いくら工夫しようと、現状のCPUでディスパッチャ実行中に割り込みが入ってしまえば
プロセスの起動にジッタが生ずるのは事実だしな。
WinAVR20090313とAVRStudio4.16を使っています。 皆様は最適化オプションを使っておられますか? 自分はvolatile修飾をしても、思ったような動きをせず、 気持ち悪かったので、ずっと-O0オプションです。 ちなみにWinARMを触っていたときも-O0でやってました。
>>574 適材適所。必要なら使えばいいし、使いこなせなかったり目的に適わなきゃ使わなきゃいい。
俺は別にRTOSを特別薦めてる訳じゃ無いよ。もしかして日本語駄目な人?
>>575 8ピンPIC、内蔵4MHzのクロックで5個のLEDを256段階で変調した事がある。たいして難しくは無かったよ。
>>575 >どこらへんがすごいのかわからん。
仕方が無いよ。モーター制御=PWMとか言っちゃうレベルだと
制御を語るには100年早い。
>>584 それはアセンブラで? まぁ8ピンPICじゃアセンブラ使わざるを得ない
だろうけど。
>>575 は、Cのみで特別に最適化を意識せず書いて、ソフトによるPWM処理
も、タイマ割込内から登録されたユーザ関数を呼び出すというかなり冗長
なやり方でもできたので、あらためてAVRの性能に関心した。
>>583 割込禁止期間の長さが問題になるかどうかは、個別の割込毎の割込周期や
処理時間に対する%比より、複数の実際に処理する割込要因の、それぞれの
割込処理時間の最大値の合計を超えないかどうかだと思う。
これを超える割込禁止期間があれば、発生頻度の差はあれ、割込の発生条件
が重なると、確実に処理落ちする。
RTOSを使いこなせないというより、そもそも使うメリットが見当たらない。
ROM/RAMの制約が厳しい上にメモリ保護機構もないのに、ファイルシステムの
サポートさえないようなRTOSが必要ないしメリットを見い出せる用途って、
RTOSを使うという手段が目的の教育用となどを除いて、例えば具体的にどんな
ケースが?
ここはRTOS不要論者が暴れるスレか?
>>583 が言っているのが結論だろうに
>使いこなせなかったり目的に適わなきゃ使わなきゃいい。
用途が思い浮かばない(=不要)なら、使わなきゃいいだけのこと
知ったかを語りたいだけでしょ?
だからおまえらの気にする重箱の隅が影響する 具体的な用途をあげてくれよ 俺のレベルだとイメージがわかない 目指す先に何があるかしりたい
好きなように使えばいいんじゃないの? 目的の動作がちゃんとできて不具合なければ問題ないんだし。
>>575 近代制御理論勉強してみたら?
実装するのは楽しいよ。
↑現代 恥ずかしい・・・
594 :
774ワット発電中さん :2010/01/30(土) 16:26:34 ID:LuZeDJ5P
以前作ったものだと,たとえばUSBからの割り込みを受けると何の 割込みだったのかを判定して,デバイスリクエストならデバイス リクエスト処理タスクを,他のエンドポイント入出力ならそれぞれ データ入出力を行うタスクを起動して・・という具合にやったな。 主だった処理をタスク分けしてそれぞれを独立したプログラムとして 動かすことで全体の見通しが良くなるのと,各処理の独立性が高まるので ある処理に手を入れたときに他の処理の動作に影響を与えにくくなる というのは利点かな? ごく単純な例で言えば,25msのタイマ割り込みを使って3つのLED をそれぞれ200ms,300ms,500msの周期で点滅させたいとして, もちろん,それぞれのLED用にカウンタを用意しておいて,タイマ 割り込みの中でそれぞれのLEDの点滅のためのカウントと点滅処理 をするという考え方もあるけど,マルチタスクOSを積んでおいて それぞれをタスク化して, while(1) { LED_ON(); Sleep(200); LED_OFF(); Sleep(200); } みたいなのを3つ用意してタイムスライスで走らせておくと, ひとつのLEDの処理を考えている時に他のLEDの事を意識しなくて良いし, ループの中にやたらと時間を食う処理が入ってきても他のサービスが 停止してしまうようなことはないから気が楽。 LEDのほかにも何かを追加したいなと思ったときにも, それを処理するタスクを一本作って追加すれば良いだけで, LEDの点滅処理をやっているところには一切手を加えなくて良い (そういう処理があること自体考えなくて良い) まあ,要するにこういうのは「楽をしたいから使う」ものであって, 使った方が面倒臭くなるようなら使う必要は無いんだよ。
俺もアトメルスレッド使ってみようかな
>>592 古典制御以外の制御はみんな現代制御だってサークルの勉強会で習った
<丶`∀´> 現代制御はウリナラ起源ニダ!
>>597 確かにそうだな!
しかし、いちいちトヨタ制御とか三菱制御とか呼ぶのは面倒だと思うぞ
>>594 が言っているように、モジュール化による保守性の向上も利点の一つだな
ちなみにTCP/IP Stackを動かすのにRTOSを利用させて貰っている
「楽をしたいから使う」の通り
なんだか、重箱の隅つつくようなクリティカルな処理や、タイマ割込の ジッダなんかを問題にしておいて >> 594 > それぞれをタスク化して, > while(1) { > LED_ON(); > Sleep(200); > LED_OFF(); > Sleep(200); > } > みたいなのを3つ用意してタイムスライスで走らせておくと, > ひとつのLEDの処理を考えている時に他のLEDの事を意識しなくて良いし, と言える理由がわからん。 LED_ON()や、LED_OFF()内部の処理時間によ る処理の遅れやばらつきは「0」ではないけど、気にしないの? > ループの中にやたらと時間を食う処理が入ってきても他のサービスが > 停止してしまうようなことはないから気が楽。 創価? ループ内にやたら時間を食う処理が入れば、この例で言えばLEDの 点滅周期は目に見えて遅れるのは変わらないと思うけど? ループに時間が 掛かる処理を追加してもLEDは200(ms?)のON/OFF周期で点滅すると? こんなプログラムで時計とか組んでいたら致命的。 そりゃ、プリウスも 暴走するわな。 > LEDのほかにも何かを追加したいなと思ったときにも, > それを処理するタスクを一本作って追加すれば良いだけで, プログラムの組み方次第では? とぐろ巻いた一本糞みたいなプログラム しか書けなくてRTOSに頼らざるを得ないのなら判る。 仕事で何年もプロ グラム書いていて、Cもできると言いながら、引数でパラメータを渡したり、 戻り値を返すソフトが書けず、グローバル渡しやってバグ出しているのは よく見る。 やっつけでそこそこ動くまでが早いので、素人目には優秀と 映ったりして始末が悪い。 MMUを持たない組込系CPUに関しては、タスクもスレッドもサブルーチンも 概念的な違いだけで、実質的な違いはないに等しいと思うで。
そりゃ気にしないんじゃないの? LEDが点滅するタイミングがms単位でぶれても気にならないよ。 急ぐけども遅延がOSのコンテキストスイッチに任せてて許せる物は優先度高くしてOSに、 許容できないものはISRで自分でハンドルし、可能な限り一瞬で処理を終える。 んで、大まかな時間があってれば良いものは適当に低い優先度で。 自分がAVRでRTOS使うときはこんな感じで行う。 HWレベルで優先度のついた割り込みがあるわけじゃないから、 この実装での遅延が許容できないならプロセッサ変えるとか、 外部のHWに応答させるとかなんか根本的に変えるしか無いんじゃないん? 切り詰めればRTOS有りより早く応答出来るだろうけど、 それが必要な場面ってのはあんまり想像できないね。
論r(ry
>>601 > LEDが点滅するタイミングがms単位でぶれても気にならないよ。
7セグLEDの8桁ダイナミック点灯だって、桁あたり2ms以下、1周で
16ms以下で廻さないとちらつくんだけど? ms単位でぶれるよう
なら、とても使い物にならない。
> HWレベルで優先度のついた割り込みがあるわけじゃないから、
プライオリティが固定なだけで周辺I/Oの割込優先度はあると思うが?
それとも68Kみたいなレベル指定の割込マスクの話? 8259みたいに
ラウンドロビン等で割込入力の優先順を切り替えが必要ってこと?
(AT互換機は使ってないけど)
> 切り詰めればRTOS有りより早く応答出来るだろうけど、
タイマ割り込みを使わずに、タスクの切り替えを実装しているプリ
エンプティブなRTOSってあるの?
コンテキストスイッチが実際に何をやっているかわかってるの?
タスク切り替えのタイミング毎に、CPU内部のレジスタを入れ替え
ているんだが、そのオーバーヘッドを考えたことないの?
「OS」という「CPU派遣業」が仲介するだけでCPU能力のマージンは
確実に食われるんだよ?
604 :
601 :2010/01/31(日) 01:07:54 ID:S4MHf9d8
>「OS」という「CPU派遣業」が仲介するだけでCPU能力のマージンは 確実に食われるんだよ? 当たり前やん。 LEDの件は元になった話は400ms周期の点滅でしょ? 点滅の周期が仮に1%揺らいでもたいていの人にはわからないんじゃないかって話。 そこで、7セグのダイナミック点灯にもRTOSを使うのはわりと変わり者。 だけど7セグに標示する内容を切り替えるのはRTOS上で動くスレッドの精度でも概ね足りる。 そういう実装ならスレッド上では set_7seg(10); wait(500); set_7seg(9); ~ とかを呼び出して、 実際のダイナミック点灯自体は余ったタイマーを1本使うとかしてやる。 んで、そこはOSに影響しないように気を使って短く書く。 OSからの影響も割り込み禁止でマスクしてるスイッチの時間位だと思うけど、 普通に考えてそのくらいならLEDのダイナミック点灯には問題ない。 もちろん、そのOSの制御に起因する遅延が許容できない時は当然OS使わないけど。
>>587 勿論アセンブラだよ。LEDは目的では無く実験で、実際はある目的で使う為だったから
Cなんかじゃ例えクロックを20MHzにしたって無理な用途だったのもあるけど
1MIPSのpicと20MIPSのAVRでpicの方が高性能なら、安いpicで作るのは当然の事。
まあ、LED遊びで一個作るならAVRとグダグダなCで書いても良いかもしれないが。
>RTOSを使いこなせないというより、そもそも使うメリットが見当たらない。
>>586 にも書いたけど、「モーター制御=PWM」、程度の知識なら
制御を理解してるとは言えないので、RTOSにメリットを見出せないのも無理は無い。
>>603 ようは「使いこなせません」って事じゃん。
606 :
774ワット発電中さん :2010/01/31(日) 03:20:31 ID:4yAkvFz3
>>600 漏れはそんな重箱の隅のようなタイミングには興味は無いんだけどね。
>ループ内にやたら時間を食う処理が入れば、この例で言えばLEDの
>点滅周期は目に見えて遅れるのは変わらないと思うけど?
他でいろいろ書いている位の知識があるなら,当然
リアルタイムOSの場合にはスリープ(ウェイトと言ったほうが
いいかな?)といっても,コールされた時点を基点にするものだけじゃなくて
定周期起動モードもあるという程度のことは知ってるはずなのにスルー
してるのはずるいんでない?
>タスクもスレッドもサブルーチンも
>概念的な違いだけで、実質的な違いはないに等しいと思うで。
サブルーチンだと,そこを実行している間,他のサービスが出来ない
というのが大きな違いだよね。
時間のかかる処理Aが一個入っただけでその処理中に他がまったく
動けなくなるということは避けたいなと思うことはあるでしょ?
>「OS」という「CPU派遣業」が仲介するだけでCPU能力のマージンは
>確実に食われるんだよ?
というのは大前提で,その食われる能力とプログラム上で楽をするという
トレードオフだよね。
本当に厳しい部分ならCPUなんて遅くてしょうがないから,ハードウェア
で片付ける事を考えるなりするでしょ?
たとえば点滅周期のブレが問題になるようなら,それぞれに点滅用の
タイマをつけてやるなりするよね?
一人だけで作ってるならなんでもアリ
いつまで続くんですかこれ
PICのスレでC対アセンブラのごたごたがあったけど、形を変えて こっちに来たんじゃないの。
ずっとROMってたけどうんざり
使った方がいいのか、使わないのがいいのか、はっきりしてくれ
612 :
774ワット発電中さん :2010/01/31(日) 07:36:21 ID:4khPcIcM
ごねてるの見ると学生の頃の俺を思い出してウンザリする
レジスタ32*2*2 + 優先度検索とかで数十サイクルで おそらくスイッチは150〜200サイクルぐらい。 200サイクルは20MHzで10us、40MHzで5us、80MHzで2.5us。 速いにこしたことはないが、要はAVRのレジスタ数や命令セット、 動作クロックで見積もると使いどころが難しいってことだね。 ARMとかスイッチを意識したMCUならもっとサイクル数は短くなる。 どのみち禁止期間の影響が出ない範囲で使うしかない。
使いたい人は使う 使いたくない人は使わない お互い干渉しない それでいいじゃないか
ジャマイカ
>>586 ココはハード設計もできないプログラマが集まるスレですかw
>>600 このスレの癌はおまい一人だけだな、
能無し君
618 :
603 :2010/01/31(日) 09:59:50 ID:dZw6L4qD
>>604 > そこで、7セグのダイナミック点灯にもRTOSを使うのはわりと変わり者。
> だけど7セグに標示する内容を切り替えるのはRTOS上で動くスレッドの精度でも概ね足りる。
>
> そういう実装ならスレッド上では
>
> set_7seg(10);
> wait(500);
> set_7seg(9);
> ~
> とかを呼び出して、
>
> 実際のダイナミック点灯自体は余ったタイマーを1本使うとかしてやる。
ホントに実装したことあんのかな? タイマ表示更新と同期は取らないの?
普通は、モード毎に表示バッファ領域を設けて、表示対象のフラグを変更
するなどすると思うけど?
表示のリフレッシュ周期と同期せずに、表示内容を変更すれば、チラツキが
出るよ。 まぁ、7セグくらいならあまり目立たないけど、ドットマトリクス
表示のLEDやCRTでこれをやると、確実にチラツキが見える。
> んで、そこはOSに影響しないように気を使って短く書く。
内容が同じならコード自体は、割り込み処理内に書こうが、タスク化しよ
うが、CPUの時間占有率は変わらない。RTOSを使う方が、余計な処理が増え
る分CPU性能が食われ、より潜在的に性能が高いCPUを要求する。
RTOS論議は、昔からある収束しない論争 続けたいなら別スレで!
620 :
603 :2010/01/31(日) 10:44:40 ID:dZw6L4qD
>>584 =603
> 8ピンPIC、内蔵4MHzのクロックで5個のLEDを256段階で変調した事がある。
> たいして難しくは無かったよ。
> 勿論アセンブラだよ。LEDは目的では無く実験で、実際はある目的で使う為だったから
> Cなんかじゃ例えクロックを20MHzにしたって無理な用途だったのもあるけど
> 1MIPSのpicと20MIPSのAVRでpicの方が高性能なら、安いpicで作るのは当然の事。
> まあ、LED遊びで一個作るならAVRとグダグダなCで書いても良いかもしれないが。
「変調」って表記が気になるが ...
いくらアセンブラで書いたところで、4MHz(1MIPS)のPICじゃあ、80us(msではない)
周期のタイマ割込を拾うことさえ難しいと思うけど、こちらが想定している内容
とは違うのかなぁ?
実際は輝度に対する人間の目の感度が対数的なのはおいといて、内蔵タイマの
PWM機能を使わず、I/OポートのON/OFFのみで、ちらつきが見えない最低の点灯
周期50Hz(20ms)で、出力パルスの最小可変幅をその1/256単位(256段階)で制御
する目的で、20ms÷256≒約78us(msではない)周期でタイマ割込を発生させた。
割込応答のオーバーヘッドを無視しても、たった80ステップしか走らないPIC
で、しかも5個のLEDを制御できるとは思えん。 タイマの割込回数(現在の
輝度レベル)のカウントを除いても、計算上はLED毎に設定された輝度値との
比較および、比較結果によるI/Oポートのビット操作(ON/OFF)を、1個のLEDに
つき16ステップ以内に処理しなければならない。 しかも、CPUはタイマ割込
処理でほぼ占有され、非割込状態のプログラムはほとんど走らない。
もちろん、同様の処理は内蔵タイマのPWM機能を使えば簡単なんだが、1本の
タイマで使えるPWM出力は2本(TOCxA/TOCxB)でピンも指定され、RGBの3出力
を制御するのに16bitと8bitのタイマ両方を使った上に2つのタイマを同期
させるのは面倒だったので、可能かどうか試してみた。
おまけで、簡単なモニタ機能を内蔵して、UARTに繋いだ外部コンソールから、
個別のLEDのON/OFFと輝度レベルの設定、および周期的に色と輝度が自動で
変わるモードを用意して、これらの処理も割込内に実装した。 UARTの送/
受信もリングバッファを介して割り込みで駆動。
>
>>586 にも書いたけど、「モーター制御=PWM」、程度の知識なら
> 制御を理解してるとは言えないので、RTOSにメリットを見出せないのも無理は無い。
いまどき「えぇ愛」なんて言ってるくらいだし、フィードバック制御やPID
制御とかのことを言いたいお年頃なのかな? いやファジー制御とか、1/f
ゆらぎとかかな?
どんな演算したところで、結果的にモータをPWM制御したりするのはハード
ウェアでソフト的にシビアな要求はないでしょと言いたかったのだが?
とりあえず透明あぼんしとくか
別に論争でも何でもないんだけどね。 シングルタスク無限ループから,割込みの併用,単純時分割処理などから はじまって,段階はいろいろあってどこで躓くかだろうね。 「理解できないものは不要に思える」というのはある程度はしょうがない けど,得てしてそういうのに限って声だけはでかいから荒れやすい。 スパコン蓮舫ちゃんみたいなものだと思えばよろしいかと。 PICスレなんかだと「割込みなんて邪道だ」とまで言い切るのがいて それでしばらくスレが荒れたりするね。 今回はそこまでは酷くないみたいだけど,現象としては似たようなもの。
最初にAomethreadsネタを投下したヤツが (ry
624 :
774ワット発電中さん :2010/01/31(日) 11:04:40 ID:dZw6L4qD
>>622 蓮舫はともかく、スパコン予算は事業仕分けで切るべきだった。そもそも
予定より遅れているから予算100億追加とかドンブリ勘定杉。 要求する
予算の算定根拠くらい示せと。
それと、外国人参政権も理解できません。 不要だと思いますがね?
625 :
774ワット発電中さん :2010/01/31(日) 11:09:37 ID:4khPcIcM
レンホウのスパコンネタ書く奴は 事業仕分け見てなくて報道の煽りに乗っかってるだけなのがすぐわかるな
んだ。必要でしょう?って助け舟すら出してたのに。
そういう瑣末な言葉の餌に食いつくことしか できなくなったということで,このネタも終了だな。
だからAVR使った高度な制御でドライブしたモーターでなに作るか教えてよ モーターとLEDは手段だろ 目的は何なんだよ
大人は肝心なことには答えないって利根川先生が
○○コンは大事よね 注:好きな文字を入れましょう。
つまんね
ズバコン 壊れて回転が止まらなくなった遠い日のおもいで
電子レンジのチンの高調波で回転した遠い日の夕食時
ロリコンだろjs
>>620 割り込み周期は確か、60マイクロ秒位だったと思う。80マイクロ秒だと256ステップで50Hz以下になるから
そんなに遅くは設定して無いはず。ソースは残ってるので、必要ならちゃんと調べるけど。
用途は16ビット5チャンDAの予備実験での8ビット実装なので、最終的には
1ピンをソフトUARTの入力とし、5チャンのDAとして使った。なので、Cなんかで
のほほんとプログラムしたらまともな精度は出ないし速度は遅いし碌な事は無いので
アセンブラ一筋。Cなんてアウトオブ眼中(死語)
>どんな演算したところで、結果的にモータをPWM制御したりするのはハード
>ウェアでソフト的にシビアな要求はないでしょと言いたかったのだが?
何度も書いてるけど、君の能力じゃ無理だよ。PWMはハードで実行する事が多いけど
今回の流れでそんなレベルの話を持ち出すって事は、上位レベルのFB制御やその他について
その時点で思い浮かばなかったんだろう?言われてきが付いたのがミエミエ。
>>620 >いくらアセンブラで書いたところで、4MHz(1MIPS)のPICじゃあ、80us(msではない)
>周期のタイマ割込を拾うことさえ難しいと思うけど
実力不足。
PICの汗オヤジの悪寒
学生の頃は無駄に熱かったなぁ
641 :
774ワット発電中さん :2010/01/31(日) 22:33:25 ID:dZw6L4qD
60us周期で割込だと、割込処理は5個のLEDで1個あたり9〜10ステップくら
いか? PICって遅いという印象なんだけど、分岐命令で食うステップを
嫌ってコード量には目をつぶってループを展開し、単に変数の比較と結果
のビットON/OFF処理だけならLEDあたり6〜7命令で実装できなくはないか。
メイン処理側で数ステップほど割込マスクしたら、確実に処理落ちする
けど。(w
8bitの68系,Z80、x86系まではアセンブラもかなり書いたけど、もう何年も
前から、C/C++言語でいいやってかんじ。 外部に出さない自前のライブラリ
のチューニングははともかく、ソース渡すようなソフトでバイト単位でコード
詰めても見合う対価が支払われないからね。
だからPICじゃなくAVRを使っている。
ところで、ステップ数が増える故に実行速度はともかく、アセンブラも
C言語も精度は変わらん(遅延によるばらつきは固定)と思うが? アセン
ブラ一筋って、ホントはPICスレのCやC++が判らない人?
>>636 実力ねぇ。(w
当然タイマ単体で割込は掛かるけど、他の割り込み処理とバッティングする
ことを考えたら、客から見たら一発で動いて当然が前提なので、安易に危険
な橋は渡りたくないなぁ。
ところで、FB制御とか古典的制御理論の範疇じゃないの? どこらへん
からが近代(ゲンダイ)?
>>637 失礼。コピペのミスですな。
ってかPWMは制御と言うかドライブ方法であって フィードバックとかPIDとはベクトルが違う気がする 比較的するならインバーターとかだろ
>>642 インバータというかVVVFとかPAMとかだな
まぁ制御量を計算する部分と、実際に駆動する部分で同列に比較ってのは、プッって感じはする
まぁ近代制御理論では同じ土俵なのかもしれんけどw
れんほうさんに叩かれたスパコンの部品を今作ってる
ポシャらなくてよかったと皆で喜んでる。
スパコンの部品をAVRマイコンで?
中止にならなかったのはマジコン?w
今回のスパコンもFJTだよね?
無職の俺でもこの流ならあきれても許されると思う
simavrをUbuntuでコンパイルできたが、いまいち使い方がわからん。 コンパイルするとrun-avrという実行ファイルができて、 ./run-avr *.axf(*はファイル名)とやるとなにやらダンプらしきものを 吐き出すので動いているらしい。 このaxfファイルはHEXファイルとは違うものなのか? ほかにもアルディーノのシミュレータも入ってるみたいです。 WinAVRが入っていればmakeはとりあえず走る(ライブラリが足らないけど)ので、win上で動くか試してみます。
WinAVRで自作ライブラリをリンクすると、使わない関数までリンクされるのどうにかならないかな? オプションとかでナントカなりそうな気がするけどオレの力では無理だった・・・orz
>>651 -ffunction-sections -Wl,--gc-sections あたりのオプション指定はどうでしょか?
653 :
774ワット発電中さん :2010/02/02(火) 20:47:05 ID:zXwRjXWZ
>>651 ライブラリ(というかobj)を作成する段階で関数をソースレベルで、別の
ファイルに分割しているよね?
gccに限らず、ライブラリは単にobjを1ファイルにパックしたもので、ライ
ブラリは、obj間の未解決の外部参照を解決するだけで、objを分割する
ことができないのは普通だと思うけど?
>>652-653 回答ありがとう御座います。
652さんのオプションを調べたところよさげな感じでしたが、実際試したところダメでした。
ファイル分割はしていません。
結局、関数一個にファイル一つという単位まで分割しないとダメってことでしょうか?
>>653 > gccに限らず、ライブラリは単にobjを1ファイルにパックしたもので、ライ
> ブラリは、obj間の未解決の外部参照を解決するだけで、objを分割する
> ことができないのは普通だと思うけど?
gcc は知らんけど、きちんと作成されたライブラリファイルは、ちゃんと使うものだけを
抜き出してリンクしてくれるものだと思うが。
てか PC アプリじゃないんだから、ソースレベルで切り貼りすればいいんじゃないの?
まとめたい気持ちはわかるけど、ファームウェアぐらいの規模なら、ライブラリにするのも
手間なだけじゃない?
その昔、リンクレベルで最適化かけるリンカが付属するコンパイラがあってな、 そのライブラリファイルは巨大な単一のobjファイルだった。 リンク時にリンカががしがし中身を削ってリンクしてくれることを期待するという壮絶な動作。 逆に言や、ライブラリとオブジェクトファイルが異なる形式になっているリンカは そういうことをしていない。 >654 newlibやらなんやら、適当にライブラリソースひろってみればわかるが、 ほとんど一関数一ファイル。
657 :
653 :2010/02/03(水) 08:27:42 ID:5Wf/savl
>>655 その「きちんと作成されたライブラリファイル」は、まさに関数単位や、関数
グループ(使うヘッダファイル[=例えばstring.h]で定義された関数群)毎にソースが
分割された状態から作成されたものだと思うけど?
658 :
653 :2010/02/03(水) 08:44:03 ID:5Wf/savl
>>656 > その昔、リンクレベルで最適化かけるリンカが付属するコンパイラがあってな、
聞いたことないな。 libはobjの集合で、リンカの内部処理上、基本的に同様に扱わ
れるので、gccのリンカに限らず、たとえobj(.o)ファイルを指定してリンクしても、
関数単位で切り出してくれることはない。
> 逆に言や、ライブラリとオブジェクトファイルが異なる形式になっているリンカは
> そういうことをしていない。
まったく同一ではないが、一般的なコンパイラ環境(基本的にほぼ全ての言語環境)の
リンカ/ライブラリアンでは、.lib(.a)は、.obj(.o)をまとめたアーカイブに過ぎない
ので、LZHやZIPと同様に、libからobjを切り出したり、削除したり、objを差し替え
たりということができると思うのだが?
経験論や一般論で結構ですので、アドバイス頂けると助かります。 ホビーユースでPICで遊んでるんですが、PICC-Liteでコンパイルすると2KWORDオーバーでNG、最適化有効でコンパイルすると若干余裕を残して入る。 って状態で困っています。 コンパイラを別のにするか、AVRに移行するか考えているのですが、AVR+WinAVRなら余裕って可能性はあるでしょうか?
>>659 AVRだと命令数が多いからか1wordが2Byteなせいなのかは知らないけど減ったような気がする、そもそもWinAVRにword制限ないし限界感じたなら乗り換えてみるのもいいんじゃない?
個人的にはPICだけで終わらずいろんなマイコンに手を出してみてほしい。
>>659 元々8bitのPICはCに不向きな命令セットという制約を抱えてるので、
AVRに換えるだけでだいぶ短くはなる。
ただしavr-gccでも状況次第で冗長コードを吐く場合があるので、
サイズを気にする状況では(インライン)アセンブラを使った方が良い。
AVRはアドレッシングモードでワード数が変わる。
相対アドレッシング(ldd、std、rjmpなど)は1ワード、
絶対アドレッシング(lds sts、jmpとか)は2ワードになる。
これを意識して書くとかなりサイズに影響が出る。
PIC16F84Aとattiny2313は共に1kWだけど attiny2313+winavr(最適化付)だと3倍ぐらいの分量の プログラム書ける感じするよ 俺が使っているPIC16用のコンパイラがクソなのもあるれど
663 :
659 :2010/02/03(水) 23:00:43 ID:40Ob1H4P
>>660-662 レス大感謝祭です。
乗り換えてみる価値が大いに有りそうなので、前向きに検討致します。と言うか乗り換えます。
PICCで三項演算子使うとバイナリが増えやがって、全部if elseに書き換えるのに嫌気が差してたので、良い機会かもしれません。
AVRのライタをどうするか…
>>664 案外、検索の上位にヒットしないんで、地道に探そうかな…と言う所です
自分で作るのはちょっと勘弁
秋月のPICライタ使ってるので、AVR仕入れに行った時に、AVR用のアタッチメントも一緒にレジへ持って行ってそう(微妙な値段なんだよな)
バカにされそうだけど良いんです。
三項演算子の部分のPICCのコンパイル結果見てびっくりしたことがあるな どう書いてもあんまり減らせなかったからそのままにしたけど かなり短く書けるアセンブラの正解はあるのに、Cでどう書いたもんか
PICを批判するわけではないがフリーで一応無制限な開発できるというだけで相当な魅力。 前8ビット系のPIC使ってたけどメモリがページとかコンパイラ泣かせだろあれ。。。
>>667 PIC のアーキテクチャーは、アセンブラで書いてこそよく分かる。
ああ、なんて味のあるプロセッサーなんだ。
泣けてくるぜ。
>>667 あの規模だったらアセンブラ上等!!!だから
下手にC前提のアーキテクャを持ってくる方が変わってると言われる時代だっただけの話。
量産価格が下がる方が良かったからね…。
つまりAVRは変態www
まぁAVR程度で済む程度の規模でもARM入れようとしてる時代だしね〜。
>>667 ちなみに私もPICから引っ越しました、在庫の16F88がなかなか減らないです。
2kwordの制限とかATmega128の128KBのROM使うと戻れなく!
mega168で浮動小数点使ったりいろいろできますよ。
ライタは74HC126をシリアルポートにつないだだけのライタから始めましたよ。
attiny2313が楽しい石過ぎてあと30個は欲しい USI機能も味わい深いし
328も使ってみてね
90S1200はなかったことに……
>>670 > まぁAVR程度で済む程度の規模でもARM入れようとしてる時代だしね〜。
ARMだったかどうか知らないけど、以前、組込系なのに開発言語はPerlか
PHPだかという話があったな。 なんだか、付いてる無駄な贅肉の方が
多そうだった。
上位の PSoC はARMだよね。 ARM にもいろいろあるけど。
677 :
774ワット発電中さん :2010/02/05(金) 16:50:34 ID:0cX05cuq
1.6mmのチップLEDをAVRのピンに直付けしようとしたけど 何度やってもだめだった 次は2mmで挑戦
申し訳ないが、それはヘタクソだと思う
>678 いやいや、相手のAVRは、0.5mmピッチのQFNパッケージかもしれないぞ。
680 :
774ワット発電中さん :2010/02/05(金) 21:24:35 ID:aKdnzahE
>>679 2mmじゃQFNには直付けできないだろうから
やっぱり、ヘタクソだろ
681 :
774ワット発電中さん :2010/02/05(金) 21:29:55 ID:aKdnzahE
工エエェェ(´ロ`ノ)ノェェエエ工
1608 ルーペとピンセットつかえばなんとかできないか そんなおれもやっとだけど
チップLEDってハンダコテで半田付けできるのか 昔やったときは一瞬で溶けたからできないもんだと思ってた
685 :
774ワット発電中さん :2010/02/05(金) 21:57:54 ID:aKdnzahE
でける、でける (と胸を張る08のサーミスタの半田付けに どうやっても成功しなかったワタスであった)
クリーム半田買え
なめたり手に塗ったりお尻に塗ったりする以外に使い道が・・・ない
接着剤併用とか。
>>680 いや、LEDを立ててハンダ付けしたり、チップの角をハンダ付けすれば、
可能では? 隣接するピンに並べることはできんけど。
1608チップは普通にハンダ付けできるけど、青色のLEDチップは、ゆっくり
ハンダ付けしているとすぐに熱で死ぬみたいね。
小さな部品同士や、小さな基板が相手だと、片方は両面テープなどで作業台に
仮固定してから作業した方がいいと思う。
チップのフィルムコンデンサを手半田できる人は神w
実装機がやってることを真似すればいいんだよ 型紙作ってクリーム半田塗って、部品置いて熱をかける そんだけ
>>691 な〜るほど、リフロー・ソルダリングを真似するわけか。
でも、何を使って熱をかけるの?
オーブントースター
>>690 パナのECPUとかECHUとか普通に付けてるぞ。
チップ抵抗と変わらんだろ。
温度調節器付きの低出力コテで低めの温度にして 細いハンダ使え…
>>695 見た目は問題なくても、容量変化起こしている
発振回路で周波数ずれとか
低めの温度でやるより高めの温度で短い時間でやった方がいいんじゃねーの フィルムコンデンサはたしかに熱に弱いよね 弱い弱いと言われてるから10個くらい用意してどんだけ弱いのか試してみた事あるけど 半田ごて当ててた時間に比例してどんどん容量が減ってったんだったきがする
手でクリーム半田盛る手間を考えたら手でハンダ付けした方が早くて簡単で確実なんではなかろうか
1500Wヒートガン、通販で2000円くらいだしな。 俺もそれ買ってフラット剥がしまくってるけど。
>>701 剥がしたフラットICは観賞用? それとも収集用?
ヒートガンびっくりするほど熱いのな 空気って気体だから、いくらでも温度上がる
>>702 収集用ですね。
マザボひっぺ返すとあの高いMAX232互換ICが絶対取れるので
ドライバーとして使わなくても、チャージポンプICとして使ったり・・・。
1500Wのやつは最大550度くらいかな。
マザーボードのシリアルってまじめに昇圧してたのか あれもう全員で一斉に0V-5Vに規格変更しちゃえばいいのに
今どき232Cがついてるマザーなんて少ないでしょ
バックパネルにはのって無くてもマザーボード上にピンが出てたりするよ
ノートには無いけど大抵のデスクトップには付いてるんじゃないかな パラレルは無いのが増えてきててピンチ
今製造してるのだと、パラレル搭載はATOMのっけられるマザーだけじゃないか?
WS向けとかちょっと高めのM/Bならパラレルも付いてるよ。
安いのでも普通に載ってるよ 最近買ったのがそうだし
今日からマイコンデビューすることになりました。 取りあえずマイコンで簡単な計算(c=a+b; 程度)をして、 windowsに戻してログとして取得ということを考えています。 都合上USBはHIDデバイス、 windows側はvc++ 2008(無料版)です。 AT90USBKEYを取りあえず買ってきました。 付属の資料は一通り目を通したのですが、 初めてで何から手をつけていいのかわかりません。 先輩諸兄、何からやればいいのかアドバイス頂けないでしょうか? 現在winAVRとFLIPをダウンロード中です。
>>712 AVR道はライタ作りに始まってライタ作りに終わる
途中にLEDピコピコ
>>712 USBに限らないけど、
(1) とりあえず何かサンプルに目を通して、実際にビルドして動かしてみる
(2) ディスクリプタ等を返すだけで何もしないHIDデバイス(ドライバ不要な為)
(3) 出力のみに応答するHID出力デバイス(例えば、LEDをON/OFFなど)
(4) 定期的に文字を出力するHID入力デバイス(1秒毎に'A'や、'A'〜'Z'の繰り返し等)
(5) 出力した文字をエコーバックで返す標準COMクラスデバイス
みたいに段階を踏みながら、徐々に機能を拡充していった方がよいかと。
HID以外の独自デバイスのソフトを作成するなら、libusbのWin32版を手に
入れるとよい。
716 :
712 :2010/02/07(日) 22:52:54 ID:izoqypzp
>>713-715 ありがとうございます。
まずは
>>714 の通りにダウンロードして読み始めている所です。
その後で
>>715 の通りにサンプルをビルドして動かしてみようと思います。
簡単なわかりやすいサンプルが見つかるといいなあ。
>>716 AVRはwikiが強い。サンプルもそこのGetting Start Noteみりゃ大体つかみにはなるかと。
ポートの設定周辺を理解するためにLED→SWでスルーみたいな事やってみれば?
1.とりあえず CAN 通信であそんでみる 2.車内ネットワークに介入してみる 3.車の挙動がおかしく鳴る
哀れなオレに慈悲の心ので教えて欲しい tiny2313とtiny2313Aって何が違うんだ? (低電圧版と普通版が有るのは知ってるけど)
低電圧版が普通版と統合された。
tiny2313 : 最高クロック 20MHz, 電源電圧範囲 2.7-5.5V tiny2313V : 最高クロック 10MHz, 電源電圧範囲 1.8-5.5V tiny2313A : 最高クロック 20MHz, 電源電圧範囲 1.8-5.5V で、最近のtiny2313のデータシート眺めてたらtiny4313っていうのがあるんだな。 予想通りflasy, ram, eprom全て2倍。まだdigikeyにも出てない(ってより2313Aすら出てない)
>>719 USARTがSPIマスターになる
これによってPORTBが丸々空く可能性が
どうせならUSIもPORTDに引っ越してくりゃいいのに
>tiny4313 胸が熱くなるな!
724 :
774ワット発電中さん :2010/02/08(月) 17:10:43 ID:B5K19oR2
ATiny45とか85とかはどうなん
>>720-722 thx
と言う事は、無印とAでは同じバイナリじゃダメってことやね
つーか、現状でAが流通して無いと言う事で、心配する必要すらないと分かりました
>724 メモリがあっても8ピンじゃ何もできやしない。
727 :
774ワット発電中さん :2010/02/08(月) 20:41:31 ID:B5K19oR2
ああそうか、AT2323(8ピン)と勘違いしてた
2313もpicopower化か。 でも20pinで大容量フラッシュで先に出てるtiny861…安くならないな… まぁこれぐらいメモリあると多少はI/Oも増えた方が良い場合が多いだろうし Mega328Aで良いか…。
pic16f886に対するpic16f887みたいなのが atmega328Pにあったらなと思う300円位で
730 :
774ワット発電中さん :2010/02/08(月) 21:28:07 ID:B5K19oR2
Mega644が安くなってるよん
メモリが増えるのはうれしいけど、無駄に高機能になるのもなぁ 結局、10年もしたらAVRが今のペンティアムクラスの性能とかになってて 新しいショボマイコンが出てきたりして 隅々まで目が届く程度の規模がホビーユースには丁度良い
DIP20のペンティアム...なんか用途ある?
そのころにはバスがみんなシリアルになってるとか?
あればあるだけ使い切るからな そして100万倍になっても足りない足りないと騒ぐのが人間
>>721 素直にMEGA使ったほうが安いんじゃ?
20ピンがいいんですぅ って用途が俺にはあった
>>735 出てみないと判らないけれど、おそらくATtiny2313AとATtiny4313 の価格差は僅差だと思うよ。
俺にとっては、flashが4kに増えることよりRAMが256byteになる方が大きい。
脆弱な根拠w
ATtiny261 20PU : 280円
ATtiny461 20PU : 295円
ATtiny861 20PU : 303円 @digikey
メモリが倍になったところでせいぜい20円アップ
物さえ出回れば秋月あたりで150円ぐらいで出てるんじゃない?
>737 実はそれはちょっと前に各系統の一番下が壮絶に値上がりした結果だったりする。 tiny24やら261やら、一気に1.5倍くらいになった。 4313にあわせて2313Aが上がると思ったほうが良いぞ。
>>728 tiny26 の系統も tiny167/tiny87 なんてのがあるね。
>>736 20ピンだとフリスクのケースに
縦にピッタリ入るよね
2313AってAVRStudioで2313と間違って指定してデバイスチゲーよって良く突っ込まれた記憶が 秋月でフラットパッケージのAVRを安く売ってくれないかな マルツで2313のフラットパッケージ見かけて欲しかったけど、高くて買えなかったぞ
DIPの足を切ってフラットにするとか
>>742 障害認定でその分だけ安くなるというオチか?
手首があればラーメンに入れてリサイクルできるかな?
なにこのひときもちわるい
tiny2313はメモリは今のままでいいから ADCを2chだけでも入れてくれたバージョンがあれば嬉しい
それならもうmeg168でいいじゃん。
数いらないので苺でmega8LのTQFPで我慢してる
tiny2313ってADC無いんかいっ! 16F88の代わりに使おうと思って20個買ってもうた 泣きそう
↑あくまでスペック調べてない自分の責任ですので
A/Dなくても使える用途はいろいろあるから大丈夫!
20個買っても2000円か 2313オソロシス
2313はGPIOが綺麗に並んでるから、AD使わないならむしろ使いやすい
簡単にUSBホストになってくれると嬉しいんたけどな そうすれば合法的に無線lan使えるかもしれないし
2313のUSIでハマってて、自分で色々試したりネットで調べたりした結果 結局データシートの誤記っぽいとのことだった 疲れた・・・
ゴキッ
ゴキ→昆虫→虫→Bug
>>759 ひとつ見つけると30個はあるんですね。
わかります。
763 :
774ワット発電中さん :2010/02/10(水) 23:05:21 ID:Pty+eUDE
俺はAVRでPS/2の信号を作って ネトゲでチートしてやる
USBのドングルを作って売りさばく
弐寺の自動演奏機でも作ろうか
766 :
774ワット発電中さん :2010/02/11(木) 20:03:27 ID:RucnCjT0
質問です。 ATmega8や88の系列で、グランドが2本あるのを、どちらかを浮かすような使い方をしてもいいのでしょうか。
だめ。 ちなみにVddもね。VrefはVddに接続せずキャパシタでデカップリングした方が良いと思う
そうなの? 使いやすい方に繋いでね、という意味だと思ってた
100円も変わらないのにtiny使って開発するのって わざわざ使うデバイス制限して目的達成するのが趣味になってるのか?
>>769 月産100万個ロットの製品を脳内で量産しているのではないかにょ?
お前らと違って俺は趣味でやってんだよ 制限のあるモノでどれだけやれるかってのが重要なんだよ
tiny2313でUSB接続できるのとかすごいよね
でも、ROM/RAMの空きが少なくて、まともなプログラムが作れないと思うのは私だけ?
アセンブラで遊ぶ分には全然大丈夫だけど、Cだと厳しいかもね。
とはいえ、色々書いてたらすぐに埋まる感じはするが。
RAMが狭いのもちょっとね、まぁレジスタが多い分どうにかだな。
まともな、という定義がどのへんかによる
>>774
少なくとも、「まともなプログラム」というものが容量に左右される定義でないのは確かだけどね 逆に「まともにプログラムが書けないから容量が足りない」ならわかる
いや、キャラ液晶付けてUI作ると、リソースだけでもそれなりにFlash食うから、一概にテクニカルだけの話で無くなる
>>776 容量1byteでまともなプログラムが書けるとはさすがプロだ
どうやったら1Byteでとか極端な話になるんだ。 そもそもAVRは1word=2Byteでしょうに、1Byteでどうやって動くか詳しく。
うざいからズルズル引っ張るなよ
Cでもプログラムだけで1Kword埋めようとすると結構大変だと思うが
1byte でプログラムを書ける天才が居ると聞いて
なんだかなー(笑)
PICスレがどうしようもないと思ってたが、こっちも大して変わらんなw
所詮2ちゃんの屑w
これぞ2ch(笑)
後半まで読むと何やってるか載ってたな
>>787 EE times って、紙版からいきなりWeb版に変更になったね。
よっぽどキビシイのかな?
なかなかいい記事書いてるのに惜しいね。
PSコンを無線にするやつが型番削られてるけど、どう見てもmega8でちょっと嬉しかった
AT90USB1287買ってきたんだけど、 windows7 64bitだとデジタル署名うんぬんで ドライバが入れれない。 これって公式で情報見つからないんだけど、 ツール使ってデジタル署名無視させるしかない?
USBKEYじゃなくてチップで買ったってこと? USBKEYもってるけどドライバいれた記憶ない。ubuntuだけど。 windowsはドライバって必要なん?
>>792 Flipで書き直すときに必要
Flipのディレクトリにドライバが入ってるんだけど、
署名が無いから64bit版だと怒られる
テストモード用の署名作ってごまかすことで
取りあえず解決しました
wikiが昨日から見れないんだけど 頻繁に落ちてるもんなの?
前にもサーバークラッシュか何かで落ちっぱなしの時があった。
このスレで聞くことじゃないけど、おまいら鉛フリー半田使ってる?
60%半田
鉛入りが基本。鉛フリーも巻きで買い置きあるけど使ってない。鉛入りの
ストックが終わりそうなんで、ネットで値段を調べたら以前の2倍くらいに
値上がりしていて驚いてる。
>>795 1週間くらい前も落ちてたよ。
>>797 仕事ではPbフリーで、趣味だと鉛入り。
会社の半田ゴテ使うときはPbフリーを使う。
鉛の素晴らしさと害(鼻の粘膜がしみる)が分かる
>>798-800 ありがとう
オレのヘボい道具と腕で、鉛フリーだと半田下手すぎワロタになるからどうしようかと・・・
趣味レベルだったら鉛入りで良さそうね
やっぱ鉛入りがいいよね、鉛フリーのツヤの無さが泣ける。
本当は環境にも人にも害があるから、ISO14001取得企業社員の立場からは 鉛入りは薦めちゃいけないのだけど、フツーの半田ゴテではやり辛いし半田不良が起きやすい。 熱量があって温度が高く保てるコテや、温調のコテがあると良いね。 何となくなんだけど、趣味で使ってるコテより、会社のコテの方が酸化が酷くて 駄目になりやすい気がする。鉛入り半田だとコテ先が長持ちするのかな?
>>802 確かにそうだな。温調コテなので、鉛フリーでも使い勝手は別に気にならないが
くすんだ銀が萎える。
>>803 半田の鉛が体や環境に与える影響なんて無視できるレベルだよ。
あれもエコ詐欺っていうかヨーロッパによる非関税障壁の一つ。
事実、本当に鉛による汚染が深刻なら真っ先に規制されるべき車のバッテリーや
医用器具用トランスジューサは「代替技術が無い」と言う理由で規制対象外
(特に鉛バッテリーを規制すると、電池技術で遅れを取っているヨーロッパが困っ
ちゃうからねぇ・・・)
806 :
774ワット発電中さん :2010/02/14(日) 21:04:10 ID:l/6jreCt
鉛フリー品は、振動で半田にヒビが入り、間欠的な接触不良になるね。 自動車屋の制御回路不良で事故多発の予感。64半田でも半田量や半田盛形状 によってはヤバイが・・ 鉛が多いと柔らかく、加重されているとクラックがふさがる良い材料なのにな。 ところで、RS232Cからデータが来た時に、データを取り込んで割り込みさせる プログラムは、どう書んでしょうか? RS232C単独だと上手くいくんですが,MainのDo/Loopを動かしながら 割り込みさせる方法が判りません。BASCOM試用版です。よろしく。 'main Do Loop Rs232c: INPUT A B=val(A) return
実際、瞬間湯沸し器の安全装置が気温変化で壊れて死者が出てるし 故障した家電品が大量に廃棄物になってるし エコエコ詐欺もいい加減にしろ、だな
しかし、まぁあれが本当の外交力だよな。 日本の政治に国益って言葉はあるのかな。。。 素直にC言語でやった方が人が多いと思う。
8bit程度の組込MCUをBASICでやったら、 自分なら もどかしさで発狂寸前になりそう。
鉛フリーは、熱が足りてても足りなくても表面がさがさなので、 ちゃんと付いてるのかよく判らん
811 :
774ワット発電中さん :2010/02/14(日) 23:54:23 ID:l/6jreCt
var,voidや;;+>は言語障害になりそうなんでBASICコンパイラでね。 タイマーでデータが来たかどうか頻繁に見に行くのも 何なんで、データが来た時に割り込みが掛かる様に したくてあれこれやっているですが。 郵便配達は2度ベルを鳴らす様ににね。 そんな命令はありませんかのう。 はんだの鉛が雨水に溶けて水質汚染して害を及ぼすとしているが、 鉛はんだで作業している人は、ヒュームや蒸気を吸って鼻粘膜から 手に付いたものを口に運んで体内に吸収されて鉛中毒になりますよ。 マスク、局所排気、専用石鹸での手洗いしてね。
>>805 他の重金属ならまだしも、鉛に関してはそんな事は言えないと思うが・・・。
>>800 鉛の毒がそんな使ってすぐ出る即効性だとは知らなかったよ
鼻が痛くなるのはフラックスのせいじゃないか?
鉛が本当に毒なら釣りの重りを規制すべきだと思うんだが。
毒なのは間違いないので本当に毒ならと言うのはあんまりだと思う
521万件鉛の水道管使ってるんだけど被害聞かないよね 直に飲んでるよな? 文字通り浴びてるよな
狩猟や競技で使うの散弾は規制されたんだよね。
鉛が含まれた顔料で彩色された絵皿を使ってて鉛中毒になったってドゥギーハウザーでやってた
鉛中毒の話はJINの原作で読んだな、まぁ肌に塗り続けるよりは たまに自作半田ごての蒸気を吸うのはどっちもどっちな気がしなくもないが。
>>817 通常は酸化皮膜が作られるので漏出しない。
毎日内側に傷がつくような状況だとまずい。
釣りに使う「噛み潰し錘」なんてあったっけ. だいたい,散弾だのに使ったり,劣化ウランなんてものまで 大量に環境にばら撒いておいて何がPbフリーだか. 武器類を使った後で全部回収しているっていうなら褒めてやるけど.
>>816 常識的な生活をしていて寿命の間に影響が出ないなら「ほぼ無害」といっていいのでは?
極論すれば、この世の全ての物質は(たとえ水や空気でさえも)有毒だよ。
DHOの出番です
レンズまでPbフリーで、こっちは良い迷惑だよ
827 :
774ワット発電中さん :2010/02/15(月) 11:49:34 ID:4MedzgUy
>>819 ありがとう試してみます。
鉛管はもう使われていないが、鉛管の中に水が滞留しているとき
に溶け出すんでね。
まあ、ウランも鉛も他の物質も濃度が濃いと毒になる。元々
地球に存在していた濃度なら問題が無かったものだのだが・・・
中高年に多いアルツハイマーは昔アルミ弁当箱に梅干を入れていた
から溶けたアルミの影響だし、金銀でも抽出して形になると目の毒になる。
鉛管の家は朝水道を使うときに数分間流すと少しは違うかも。
829 :
774ワット発電中さん :2010/02/15(月) 12:21:25 ID:4MedzgUy
>>819 割り込みOKでした。ありがとうございました。 通信もON INTERRUPTで行えるとは思っていなかったです。
大仏でアルガム中毒
そろそろよそでやってくれよ
833 :
830 :2010/02/15(月) 13:31:16 ID:20MUxwZu
× 禁煙 ○ 近年 煙草も害を撒き散らして他人に迷惑をかける事には変わりないが一応。
834 :
774ワット発電中さん :2010/02/15(月) 13:38:00 ID:4MedzgUy
白人は、権利だ正義だと言って都合の良い理屈をこねる早く死ね。 鉛も鯨も遣りたい放題してから、規制だ何だと言ってくる。 WTO、IWC,ISO、ICE、ITU、オリンピックだって自分達に有利になる様にしているし。
835 :
774ワット発電中さん :2010/02/15(月) 13:40:17 ID:4MedzgUy
間違えたICEではなくIECだった。
>>834 先陣を切って実験台になってくれたと思えばよろしい。
他山の石として自分はそうならないようにな。それが本来の日本人。
文句ばかりで自分が被害者だ、謝罪と賠償するニダと主張するのは三国人www
アルミの毒性とかまだ信じてるやついたのかよ
アルミ缶の上にあるミカンとかまだ言ってるやついたのかよ。
839 :
774ワット発電中さん :2010/02/15(月) 16:03:37 ID:oIi2G/Vd
脳障害乙
アルミに毒性あるならアルミ鍋やアルミホイルの販売やめないといけないね。
PICスレに比べて有意義な議論が多い良スレだと思ってたのに 馬鹿のバーゲンセール状態になっちまった
セールならそのうちに終わるな。
毎日が閉店セールです
そろそろPb談議は止めよう。 自分も引っ張ったから人のことは言えないけど。 それよりArduinoって面白いのかな。 学研からJapaninoってのが出るけど、アレはATMELの石は入ってないの?
初めて知ってググったら表紙には「互換」という文字があるな。
案外安いFPGAにフリーか何かのIP乗っけてAVRのコード互換にしてるとか? まぁそれはそれでアリかもしれない、FPGAもいじれれば最高かもしれないw
いや、学研の今までの付録の流れからすると、 中国で安く調達した”何か”かもしれない。 AVRもチップはアジアのどっかで安く作ってると思うけどさ。
そのうちfilipino がでてきそうだ
AVRはじめてみようと思ってるのですが,HIGH,LOWの値の閾値ってどのくらいなんでしょうか? ArduinoのHIGH>3Vというのが今つくってるものでは少し使いづらいんです.
どれでもいいからAVRのデータシート見れ 細かく具体的に書いてあるから
>>851 何Vなら嬉しいの? A/D使うっていうんじゃだめなの?
コンパレータで解決
どんな電圧でも駆動できて外付け抵抗1本でしきい値が決められる8素子コンパレータアレイとか無いの?
ATTINY26Lを使用しているボードがあるのですが、作っている業者から「ATTINY26L」が 入手困難になったので「ATTINY2313」に変更する。ついては開発費をこれだけよこせ、 と言われて困っています。 ATTINY26Lが入手困難というのは本当ですか。秋月通商では現在取り扱ってないと 言われました。ATTINY26Lとのピンコンパチのマイコンはないでしょうか どなたか教えてください
>>858 入手難なのかは代理店かATMELに確認するのが良いと思いますが
ATMELのサイトを確認すると「ATtiny26 Not recommended for new designs: replaced by ATtiny261A」
ってなってますね。ざっとデータシートのピン配置をみた感じではピン互換があるようですが
周辺機能をどのように使っているか不明なので内部レジスタ含めご自分でデータシートで確認してください。
早速ありがとうございます!
ATTINY26LからATTINY2313に移植できる程度のプログラムなら 261で行けると思うよ。 しかし、そんな仕事ならはじめからATTINY2313をつかえって言いたくなる・・・ ちなみに、幾ら請求されたの? 聞きたい。
>>861 今は2313安いけど、秋月が扱うまでは26の方が安かったからじゃね?
今の商品展開にしたって、PicoPower化やメモリバリェーション展開も26系の方が先だし。
海外ではADC付きな26系の方が人気あるみたいな話も聞くけど。
ATTINY26L → ATTINY2313 の移植だけで何万も取られるならボッタクリもいいところだけどね 開発費なんてほぼ 0 円だし、それを口実にイニシャル費稼ぎたいだけかと
うちの感覚だと数万だったら格安だな。
内容次第だろ。 26から2313に移植できる = ADCもPWMも使ってない、 ならほぼピン配置のいれかえだけだな。基板の密度が高いと ほぼ一から書き直しではあるけど。 26のPWM使いまくり〜を2313上で超絶技功でなんとかする、だと数万だと割に合わん つーか261行け、かもだが。
ATTINY26L → ATTINY2313 の移植、ADCが必要だとコンパレータで代用するのは面倒そう。 ピンアサインも違うから、基板のレイアウトもやり直しだし。 ATTiny261,461,861に行った方が、移植は楽でしょ。
>>863 物によるけど相当額取られるでしょ。ピン配置が違うから回路から起こしなおしになるし、
当然、動作検証も一からやり直し。そのパートについて、ほとんど新規開発と同じに
なると思うよ。
ただ、常識的には>859の言うように26からの移植だと261が普通なので、業者の開発
能力(情報収集能力)に問題のある可能性も捨てきれないけどね・・・
こんなのでA/Dコンバータ11chってw
しかも、差動+アンプ付きだぞ! 温度計も内蔵してたはず。
配線ミスってAC100Vを直に掛けてふっとばした やっぱ商用電源は迫力が違うな 一発で酔いが覚めた
酔っぱらって配線して通電かよ、危ねーなw
迫力とかそうゆう話じゃないからw
ADよりDAつけてほしい PWMは高周波出すから嫌い
>>858 まともなルートから調達してれば、ディスコンになるときは、必ずラストオーダーって
のがあるから、そのとき将来の必要数を見込んで発注すればOK。
何千台分も発注すると、ちょっと費用がかさむが大した数じゃないんだろ?
そんなことで、開発費を請求してくるなんてボッタクリ業者だよ。
下請けは大事にしてやってください
>>875 チップ抵抗ででっかいラダー作るのが楽しくなってきた
ラダーは抵抗の誤差で歪みが出るし ピンもいっぱい使うからなあ
抵抗20本から8本選別、くらいで十分奇麗だよ
嘘だッ!!
手持ちの抵抗はみんな同じロットだから選別で精度を高められるほど都合良くバラついてない件
それなら都合よく行くように思えるけど、気のせいか?
上位の2ビット分以外やる意味あるのか
温特も忘れてもらっちゃこまる
部品とかにある 102 や 223 を 1000 や 22000 に変換するルーチンを作ってるんだけど、 これより高速で容量の少ないプログラムってないかな? unsigned long N_convert(unsigned int Number) { int n; long i; n = Number % 10; switch (n) { case 1: i = (Number - 1) / 10; break; case 2: i = Number - 2; break; case 3: i = (Number - 3) * 10; break; case 4: i = (Number - 4) * 100; break; case 5: i = (Number - 5) * 1000; break; default: i = Number / 100; } return(i); }
容量で節約したいのは、プログラムを入れるフラッシュ?変数を入れるSRAM? SRAMは、関数終了後に開放されるから、たぶんフラッシュの方だと思うけど、 2313とかでSRAMカツカツになってると、そっちなのかも? あと、速度と省容量のどっちが重点とか。 というか、一桁ずれてない? 今のプログラムだと102が100になるよね?
>>888 一桁違うのは、このルーチンを使う他の処理の利便上そうなってました
修正するのを忘れてた、すみません;
コンパイル結果を、より短いコードにできるかという質問でした
思い出しました データ型(long)の範囲で、320000 まで扱うために、あえて 1/10 で出してます int32 が使えると良いのですが...
>>890 intのサイズは環境で変わるけど、shortが16bit整数、long型って32bit整数
じゃないの?
>> 891 int1 = short int8 = int int16 = long int32 = ? float char って認識だったんですけど、もしかして根本から何か間違って覚えてるのかな
>>892 typedef unsigned char uint8_t;
typedef unsigned int uint16_t;
typedef unsigned long int uint32_t;
元のコードに int main(){ while(1); } をくっ付けてコンパイル、もろもろ込みで294バイト unsigned long N_convert(unsigned int Number) { int n; long i; int j; n = Number % 10; i = Number - n; for(j = 0;j<n;j++){ i *= 10; } return(i); } これに直して260バイト unsigned long N_convert(unsigned int Number) { int n; long i; int j; n = Number % 10; i = Number - n; for(j = 0;j<n;j++){ i = (i << 3)+(i << 1); } return(i); } これなら210バイトまで減ったけど、掛け算ルーチンを無くしたせいなので、 他所で掛け算使ってるなら、意味なしw
894は コンパイラ WinAVR-20081205 デバイス attiny2313 最適化オプション -Os です。
>>894 おおthx!
他で掛け算思い切りしてるので、2番目が一番最適化されたコードなのかな?
3番目のビット演算は、僕の頭ではついていけません orz
でも、よく考えたら 100 が 10 にならなくないです?
すまそ、最初に10で割らんといかんね。 i=(Number - n)/10; これで、割り算ルーチンも復活して270バイト 速度的には、必ず割り算ルーチンを通り、 何度も掛け算ルーチンを通るから不利かも。 ビット演算は、(i << 3) が8倍した奴(i << 1)が2倍した奴、それを足しただけ。 速度的には、こっちが有利かな? と思ったら、unsignedじゃないからシフト命令使わずに、 自分自身を足し算+3回ループになってる(^^;
>>887 おそらく、102 や 223 って数値は人が入力したものでしょ。
それをそのまま文字列で受け取れば割り算はいらないと思うのだが。
あとは文字列のパースと乗数の処理だけになる。
というか、全体的にプログラムメモリが足りないなら、 変数のサイズを見直したほうが良さそう。 char:1byte, int:2byte, long 4byte だから。 倍のサイズを使うと足し算、引き算のプログラムサイズも、いちいち倍になる。 テストプロジェクト作ってビルドして.lssファイルのアセンブルリスト見るといいよ。 898の最後の件、たぶん自分自身の足し算とシフト命令は、同じマシンコードだっけか(^^;
47pFとかあるから、最初に入力値が2桁ならそのまま返す処理がいるんじゃね 現状だと1/10で返してるから、その辺は仕様ということで対応しないってのもありかもしれないが
>>882 秋月100円でやったことあるが、そうは行かなかったなぁ・・・
>>884 そう思ってMSB側に繋がってる抵抗に気を使ったけど、
あの回路はそんな単純じゃなくて、もっと魔法じみてる
いまだに原理がもやもやしてる
ソフト補正とか
出力バッファの内部抵抗分引いて選別するとか
最初から精度高いのにすれば
907 :
774ワット発電中さん :2010/02/22(月) 21:39:17 ID:05b/54l5
ATMEGA1284P-PUは入手できないのかな・・ 買えた人います?
MEGAx8と比べて、ピンが増えただけで別に新しい機能があるわけじゃないし、 俺は別に必要ないけどな
どちらもあるに越したことはないけど、EPROMの4Kはまぁどうでもいいが、 RAMの16KBはそれなりに魅力に思える。 ただ、後発のARM系やXMEGAの周辺 機能と比べると、存在自体がやや微妙かな。
RAMが大きいと表示器が豪華にできるから好き
RSコンポーネンツや千石でRAM8KBなAVRは買えるから、 それで我慢するか、RAMを外付けするか xmegaはA/D、D/A以外は5Vトレラントでもないし DIPやUSBもあるPIC24系に比べて魅力があんまりない
RSって個人で使えるんかね
RSは個人で買えるよ
>お客様へのお願い >・RSは個人のお客様には原則として販売を致しません。企業名・住所でのご登録をお願い致します。
企業名・住所で登録したら個人でも買えるってことだな いいか悪いかは別として 因みにチップワンストップも似たような条件だけど 個人事業主や営利目的なら個人でもいいことにするさー って書いてあったと思う。
あり? 最近はそんな事書いてあるのか もう何年も前から個人名で買ってるけどなー
いまアカウント情報みたら企業名欄に個人[コジン]て書いてあるわ
「個人」登録ではカタログは送ることが出来ない、って電話が来たことがある。<RS そもそも不要だったので何の問題もなかったんだけど。
>>917 喧嘩売ってるに等しいなw
大丈夫なの?それ
オレはデフォルトでデジキーだな。 ただ、7500円以上送料無料に吊られてつい余計に買ってしまう。
>>922 かつ10,000円未満を狙う。合計が9,998円になった時は「勝った!」と思った・・・
1万近くの部品って個人事業者さん?
大人買い
そのうちいいとものコーナーで、秋月の部品全種類買ったらいくらか当てさせる
928 :
774ワット発電中さん :2010/02/27(土) 12:06:50 ID:nfB/VBWF
16bitタイマーで0.1秒ごとに割り込みをかけようとするとき、 クロックが1MHzなら、32分周でカウント3125とするとうまくいくとおもうのですが、どうでしょう
>>928 どうでしょうって言われても・・・。やってみればいいじゃん。
精度いらないんならウォッチドッグでいいんじゃない
32分周って一部のタイマーにしかないよ(大抵は1、8、64、256、1024の5段階) 16bitタイマーで7段階の品種ってあったっけ
外部で10Hzのバルスを作ってINT0に・・・
それなら10Hzのパルスも内部で作ってしまえ
手動でクロック作れ
>>935 鉄定規等のチート使わないなら16Hzが限界
が、達成できれば「名人」の称号が得られる
指4本を往復させて、光センサーを遮るともっといける
モータ+ギアとかでハンドルぐるぐる回すとさらに行ける!
パルス出力のロータリーエンコーダの軸を手で回せばいいだろ
940 :
最初に戻る :2010/02/28(日) 23:21:25 ID:4LBCbGMM
手回し式発電機で電気で起こして、それを適当なマイコンにつっこんでパルス出させろよ 電電板なんだからマイコンくらい使えw
復旧した?
943 :
774ワット発電中さん :2010/03/02(火) 23:56:54 ID:Drx7EzG0
復旧〜
色々やろうとmega644Pとかmega328Pとかtiny861とかtiny45Vとかtiny13Aとか各種買ってあるのに 2313以外まったく手付けられてねえ アイデアばっかりで体が動かん
そこでライターですよ
644P使いやすいよな
さっきフラグを直接見れて感動 if(UDRE) ってフラグを直接読めるの知らなかったw UCSRAと1<<UDREを比較してなんちゃらとかしてたわ AVRstudioの話
俺大丈夫か
もうダメかもしれんね
お疲れのようですね
>>952 握手じゃなくて抱きつきOKなら是非買いたい
着ぐるみに抱きつくのが好きw
そんな事をするならADB48とかappleがやりそうだなw
FreeScaleのフリス犬みたいにグッツ作ってくれれば良いのにな AVRロボ(って名前だっけ?w)
ATMELグッズのダサさは異常
AVRと関係ないがこの流れなら言える! ピンソケットを切断するときにピンを抜いて、そこを切っている。 Y字というか音叉というか、そんな形のピン。 抜いたピンをなんとなく取ってあるんだが、なんか上手い使い道ない? 貧乏性ってやーねー
あれは抵抗とかコンデンサ、水晶、ジャンパ線(端子に利用)を抜き差しするのに再利用してる。 というか、あまり使い道もないのも確かだけど。
そんな用途向けにマックエイトだったか?端子売ってるよね。 溜まれば欲しがる人もいるかもしれないよ。
>958 ん、、、イメージがわかなくてスマン。 具体的にはどこにピンを取り付けて、何と抜き差ししてるんだい?
>>948 単にUDREに定義してある定数で条件分岐してないか?
<avr/io.h>で呼ばれているチップ別のヘッダの中身を確認のこと。
ためしにif(UDRE){hogehoge;}else{fugafuga}でコンパイルしたら、
最適化されて、fugafugaに飛ぶコードは吐かれなかったが。
>>958 -Y--(赤黒茶 金)--Y-
こんな感じか?
ヒューズのソケットのようなイメージですか
なるほど、足が短くなった部品に使うのか。
>>964 違うだろ
基板にYのピンを立てておいて
回路定数を変更するのに抵抗とかをとっかえひっかえするのに使うんだよ
>965 そりゃ>962>963でわかるよ。 足が長かったらピンが無くてもブレッドボードでできるけど、 足が短かったらピンがより活かせる使い方だなと思ったってこと。
>>959 マックエイトの穴に挿すシリーズは異常w
マジで何でもあるから困る
968 :
774ワット発電中さん :2010/03/04(木) 21:29:47 ID:6oB8+NM6
いきなり話が変わるが、debugwireって頻繁に死なないか? ヒューズ設定する時とかドキドキするわ。 R8Cの安定性とは比べ物にならないほど不安定。 JTAGついてるマイコンは高いし、ポートも食うし。 正直、そこだけは直してほしい。 リセットピンのコンデンサはずせとか、無茶な要求。
>968 すさまじくまぎらわしいが、 円マークはCHY(1CHY = 13日本円)で日本円換算約10000円、 ブツがKEEのクローン品(115 USドル)だから、ほぼ定価販売なんだね。
元をゲンと読むから変に思うかもしれないが、 元の正しい読みはエンだ
日本の「円」と言う通貨単位が元々は中国からの借り物らしいからな。 発音が同じなのも当たり前っちゃ当たり前。
エンというか、イ゛ェンというか
へー、それは知らなかった。JPYに対してCHYなんだな
圓
ジュシーポーリーイェイ
回路図にCSTCE10Mて書いてあるじゃん 村田製作所の10MHzのセラロックみたいだぞ
980 :
774ワット発電中さん :2010/03/05(金) 22:55:56 ID:TMy01v/c
10MHz持ってないんですが、他のクロックでもいけますか
>>980 回路図とかソース読めないなら、判らない定数変更をしてはならない。鉄則だ。
USARTの速度設定を他のクロック用にすればいけそうですね 他にクロックに依存するような処理はなさそうなので
読めますし理解もできますが、見落としていただけです 見落とすというのは、認識としては書いてないことと同じ意味になります したがって質問することが最善の解決策だと考えただけです
でも質問する相手の機嫌を損ねるような言動は最善の解決策とは言えないんじゃね?
>したがって質問することが最善の解決策だと考えただけです じゃぁなんでELMサイトの掲示板に書かないの? 作った本人のサイトにあって今も生きてる掲示板だよ 掲示板があることを見落としてました、ってか いい加減にしろよ
>見落としていただけです 書いてない筈のない「定数」だと思う
>>982 他にもUSIとかシステムクロック使ってる様だが…。
自力で書き直せるなら良いんじゃね?
クロックは、アセンブラソースの先頭付近かMakefile等に書いてある事が多い、という事を覚えておくと良い。
都合の悪いものは見えないものです。
掲示板で質問しても答えを教えてくれないし。
答えを知ってて、書き込む暇があってちゃんと説明できる奴がいるとは限らない 運が良ければそういう奴がいるってだけ
"教えて君"か もしくは只の釣り
手持ちの発振子がないからソフト修正でなんとかしようという発想がすごいよね。 おまえはどんな無人島に住んでいるんだと(ry
>>992 仕事してるとそんなんばっかだぞ
回路のミスはソフトでカバー
回路見るとFT232使ってるし、セラロックを使う意味が
1.内臓オシレータが8Mまでしかないけど処理速度がほしい
2.精度がほしい
のどっちかだと思われ。ソース読んでないけど。
1ならOSCCALをいじって10Mにしたら?
>>863 かつて C言語のprintf文の出力桁を一桁増やしてもらったら10万だった
絶望した!
863は労働を知らない人間の発言なので
まあ、出力桁をひとつ増やすのでも開発システム使って、変更して、 副作用が無いか確認して納品ってやってたら10万くらいはコストが掛かるわな。 それをもろにすべて請求するかどうかはその会社の方針だけど。
リピートの数が少ない顧客ならふっかけるのは当然だろ 世の中実際そうなってる
高いとかいってるやつらは社会経験ないか外注虐めだな
それくらい払ってやれよ。みんな持ちつ持たれつなんだ。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。