AVRマイコン総合スレ Part40
■ このスレッドは過去ログ倉庫に格納されています
枯れ木も山の賑わい、という事で許して貰って・・・
別スレで紹介したtiny2313用の最高速パルス出力プログラムを少し変えてみた。
リセットすると2種(カウンタで5MHz、ビットセット・リセットで2.5MHz)のパルスを
13、12番ピンから出力する。
https://i.imgur.com/j7dI0GL.jpg
;----- Port_B
C:000000 e0e6 ldi ZL,0b00000110 ;output bit2: CTC_A, bit1:sbi/cbi instruction
C:000001 bbe7 out DDRB,ZL
;----- timer0 for CTC_A
C:000002 e4e2 ldi ZL,0b01000010 ;simple-CTC mode, toggle output to OC0A:PB2 bit
C:000003 bfe0 out TCCR0A,ZL
C:000004 e0e1 ldi ZL,0b0000001 ;no pre_divide
C:000005 bfe3 out TCCR0B,ZL
C:000006 e0e1 ldi ZL,1 ;compare_A:1 for 5MHz
C:000007 bfe6 out OCR0A,ZL
MainLoop: ;total clock 2+1+1+2+2=8
C:000008 9ac1 sbi PortB,1 ;50nS*8=400nS=2.5MHz
C:000009 0000 nop ;adjust delay for duty 50%
C:00000a 0000 nop
C:00000b 98c1 cbi PortB,1
C:00000c cffb rjmp MainLoop
; 用途が全く分からん
システムクロックをプリスケーラで分周してCKOUTから出すだけでもいいよね? mainloop:
sbi PINB,1
rjmp mainloop
用途はとにかくループ内はこれで済むな xmegaのタイマカウンタにロータリーエンコーダの自動計数やらせるのは便利に使ってる。
CPUパワー全く要らないのでプログラムとしてはつまらんけど。 >>305
用途なんか考えていない。スレを埋めるためのただの遊びネタだよ。
最高速はCKOUT=0でクロックを出力すれば終わりだけど、それじゃ面白くないし、
分周だと周波数が細かく変えられないし、
そもそもシステムクロックを分周するのと、
出力周波数をプログラムを実行して変えるのとでは少し意味合いが異なると思う。
>>306
私が使用しているFuse・Lockビットのシリアルの読み書きプログラム(部分)
もちろんmega328などCPUを選択すればテーブルも自動的に変わる。
これを作ってから書き込み時のミスが無くなった。
https://i.imgur.com/lnnCGVV.jpg
パラレルのリセッタも作った(各種CPU用アダプタの画像は省略)
https://i.imgur.com/zd42iyG.JPG
>>307
「入力ポートのビットをセットすると出力ポートのビットが反転する」という
意味不明ニーモニックの命令を忘れたわけでは無い。
実を言うと、このSBIとRJMUPの2つの命令の組み合わせでも2.5MHZで変わらなかったんだよ。
(クロック2+2個で20MHz/4の5MHzを期待したのに何故?)
SBI命令よりもセット・リセットの方がデューティを変えられるという点も考慮して
セット・リセット方式を採用した。
よううやく少しだけレスが進んだなw >>310
xmega32E5だけど、エンコーダの初期化だけならこれだけ。
void enc_init(void){
// ポート設定
PORTA.PIN5CTRL = PORT_ISC_BOTHEDGES_gc; // A相
PORTA.PIN6CTRL = PORT_ISC_BOTHEDGES_gc; // B相
// イベント設定(フィルター 2x512 clk)
EVSYS.DFCTRL = EVSYS_PRESC_CLKPER_512_gc;
EVSYS.CH0CTRL = EVSYS_QDEN_bm | EVSYS_DIGFILT_2SAMPLES_gc | EVSYS_ROTARY_bm;
EVSYS.CH0MUX = EVSYS_CHMUX_PORTA_PIN5_gc;
// カウンタ設定
cli();
TCC4.CNT = 0;
TCC4.PER = 0xFFFF;
sei();
TCC4.CTRLD = TC_EVACT_QDEC_gc | TC_EVSEL_CH0_gc;
TCC4.CTRLA = TC_CLKSEL_DIV1_gc;
}
設定後は勝手にカウント値TCC4.CNTに入れてくれるので、適当に読みだせばいい。
周辺機能だけで動作するのでCPUは全く関係ない。
こんなエンコーダ使ってる。500CPRなんで1回転2000カウントもする。
回転軸を指でブンブン回しても1カウントもこぼさないよ。
https://jp.rs-online.com/web/p/rotary-encoders/7967840/
秋月のこれもたくさん使ってるなあ。
http://akizukidenshi.com/catalog/g/gP-05773/ xmega-A1はPWM出力が24個もあるので大量のサーボを使えてお気に入り。 >>313
こういう技を気まぐれでも公開してくれるといざって時の解決の糸口になって助かるわー xmegaは面白い機能いっぱいあるけどユーザー少ないからね。
FatFsのSPIをDMA使って16Mbpsでアクセスすると読み出し爆速になるんだけどニーズ無いか。 ここにいないだけで使ってる人は多いでしょ
コケたUCシリーズも今から見るとそうなってるだけで
10年以上続いて動画再生や昔のゲーム機移植とかYoutubeにあるし
話題が出ないのはDIPがないってだけで、このスレの
年齢層にニーズがないんじゃいかな。
5V系って理由は今どきのIO考慮すると考えにくいし。 FatFsのSPI?
16Mbpsで爆速?
なんか色々とイミフ こんな場所でネタや作品を晒してもどうせケチしかつかないから
ニーズがあると思っても他所でやったほうがいいよ
ここは大喜利と愚痴と世間話だけにしとき fatfsをdmaって技術的にも内容的にも興味深いのに
出来ればこんなとこで馬鹿相手にしないでブログとかで書いて下さいm(__)m
xmegaは色々拡張してあってすごいパワフルな感じするけどxmega使うならarmって感じな流れなのが可哀想な子な感じ FatFsのSPI
fatfsをdma
高圧電流と同じような違和感 アホがたむろしているこんな所で人の反応を気にしてもしょうが無い
何を言われようと「天上天下 唯我独尊」の信念に従って我が道を進むだけだよ
ところで >>311 >(クロック2+2個で20MHz/4の5MHzを期待したのに何故?)
について誰も言わないから私が言うけど「SBI PinB,1」命令は出力反転だから
1周期はクロック8個の400nSで2.5MHzは合っている レイヤを分かってない人はよくこういう表現して技術者がキレる。 最新作でレイヤ姫が再登場したけど劣化していた
過去の美しいイメージが壊れたw どんな美女も年をとれば劣化する
結婚はよく考えてからするように もう亡くなったなぁ 姫
耳の所にドーナツ付けてたのが印象的だった >>327
そもそも電電板に来る奴の大半はしたくてもできない >>328
安心しろ、銀魂の神楽で復活してるからw 宇野壽倫(葛飾区青戸6)の告発
宇野壽倫「文句があったらいつでも俺にサリンをかけに来やがれっ!! そんな野郎は俺様がぶちのめしてやるぜっ!!
賞金をやるからいつでもかかって来いっ!! 待ってるぜっ!!」 (挑戦状)
■ 地下鉄サリン事件
オウム真理教は当時「サリン」を作ることはできなかった。
正確に言えば 「作る設備」を持っていなかった。
神区一色村の設備で作れば 全員死んでいる。「ガラクタな設備」である。
神区一色の設備を捜査したのが「警視庁」であるが さっさと「解体撤去」している。
サリンは天皇権力から与えられた。
正確に言えば オウム真理教に潜入した工作員が 「サリン」をオウムに与えた。
オウム真理教には 多数の創価学会信者と公安警察が入り込んでいた。
地下鉄サリン事件を起こせば オウムへの強制捜査が「遅れる」という策を授け「地下鉄サリン事件」を誘導したのは
天皇公安警察と創価学会である。
天皇は その体質上 大きな「事件」を欲している。
オウム科学省のトップは 日本刀で殺された「村井」という人物だ。
村井は「サリン」授受の経緯を知る人物なので 「日本刀」で殺された。
http://d.hatena.ne.jp/kouhou999/20150224 >FatFsのSPIをDMA使って16Mbpsでアクセスすると読み出し爆速になるんだけど
>ニーズ無いか。
てか、普通にやるでしょ。
ディスクリプタ読みながら動作するタイプのDMAとか内蔵したマイコンもあたりまえなご時世だし。 >>333
割と使われている用途で傾向から考えれば、
「FatFsでSPI接続のSDカードを使う」じゃないのですかね… 聞きたいことがあるなら
聞いたほうがいいと思いますよ。 >FatFsのSPIをDMA使って16Mbpsでアクセスすると読み出し爆速になるんだけど
この意味不明なレスをエスパーするとだな。彼女ができたと言いたいのだと思う。 > fatfsをdmaって技術的にも内容的にも興味深いのに
> 出来ればこんなとこで馬鹿相手にしないでブログとかで書いて下さいm(__)m
> アホがたむろしているこんな所で人の反応を気にしてもしょうが無い
> てか、普通にやるでしょ。
> 聞きたいことがあるなら 聞いたほうがいいと思いますよ。
> >>335さんはどこで躓いてるのかな?
> 何がわからないのかもっと明確に質問しなきゃな
> もしかして冗談じゃなく本気でわからないの?
これ、全部本人だろ。本人が説明する気がまったくないのだからスルーしたほうがよい。 本人ではないが何も説明してもらわなくても何を言ってるかすべてわかるし・・・ FatFsのSPI
fatfsをdma
わかりませんねえ 十分わかった上で言葉尻遊びしてるだけじゃない。
楽しいか? xmegaよく使ってたけど特有の機能はあまり利用してなかったな
ピン数あるからパラレルモジュールを気にせずぶら下げてた
megaから強化されたのってクロック・割込み・スリープとか
システム管理周りだっけか
バッテリ動作とか狙わないならmegaとあまり変わらないって
言われてた気がする >>344
してるわけじゃないのか
してるわけじゃないのか分からない FatFs、SPI、DMAがわからんって話は当面無視します。 DMA、つまりハードウェア処理は天下無双に強力だよね。
AIもハードウェアで実現出来ればとんでもないものになるだろうな。 xmegaの多段割込みは気に入ってるな。
割り込み処理の中でcliやseiを使うのに最初は違和感だけどw megaやtinyはできないんだから、それにくらべりゃあね。 megaやtinyでも多重割り込みは出来る。
megaやtinyに多段割り込みの機能は無い。 AVR用語か?
一般的なソフトウェア用語じゃない方言は
ちゃんと定義してから使ってくれ すまんな、多重はMultiple interruptで、多段はMultilevel Interruptの事だ。
詳細はxmegaのデータシートでも読んでくれ。
>>352はそれが便利だと言っているし俺もそう思う。
xmega独特な機能の話の流れなんだから空気読んでくれよ。 Atmelのxmegaのデータシートを見たけど
普通の多重割り込みに見える
どの辺が特別?
多段割り込みで検索しても出てこないし >>361
それでイベント取りこぼして重大事故ですね、わかります。 多段割込みを使った事がないけど、
自分で割込み処理の優先順位を決められるって事じゃないか?
ラウンドロビンも出来るみたいだし。
でも私としてはそんな事よりレジスタを複数組み持つとか、
1命令で全レジスタを退避できるとかそういう機能を付加して欲しい。
できれば10進演算命令も。 ゴメン、少し言葉足らずだったかな。
ラウンドロビンも出来るみたいだし。
→逆に優先順位を付けないラウンドロビンも出来るみたいだし。 >>363
そこまで行っちゃうと、tinyのコア4個入チップとかの方が
安上がりだったりして… 優先順位を設定出来ない多重割り込みってあまり意味が無いよな xmegaのタイマーと言えば1usの32bitカウンターが
割り込み無しで作れるのには感心したな。イベントシステムは面白い。 SPI通信を利用するDDS用IC AD9833の設定を手動スイッチで行いたいのですが、
可能でしょうか?
ICの反応が全然なくて困っています。 >>373
理論上可能だろうけど、
チャタリングがあるから相当に難しいと思う
その労力考えたらMCU入れた方が、遥かに楽だと思う スイッチをAVR通してデバウンスしてポチポチ送るんですね 手動スイッチをトリガーにしてAVRから送る
って事だよな?
本当にスイッチで1ビットずつ送るつもり?
そんな事をしなくても
デバッガのステップ実行でゆっくり動作できるけど >>378
ステップ実行って、ハードもゆっくり動かせるのか・・・ センターオフのトグルスイッチ使ってラッチ通して入力したなぁ
SPIじゃないシリアル入力のPLLだったが しかし、手動でゆっくり送ると何かいいことがあるんかね?
とりあえず配線確認して、プロトコルアナライザーで見たほうがいいよ。 道具が無いときには意味がある
テスターでもLEDでもわかる >>383
せっかくのマイコンなんだから
それぞれの時点でポート読み出しして
シリアル出力するとか考えようよ。 >>384
おれに言うな
お前が買ってやれ
>>385
SPIもまともに動いてない状況で
他が正しく動いてるっていう発想がそもそもおかしい >>386
さすがに非同期シリアルはステップ実行できないからな。 皆さんに原理的に可能だと教えてもらえたので、上手くいかない原因は自分にあると確信を持って、
問題解決に当たったところ、チャタリングが原因でした。
TTL信号を送る回路にシュミットトリガインバータとローパスフィルタを入れてから、
スイッチをカチカチ押してSPI通信したところ、上手くDDS ICを制御できるようになりました。
ありがとうございました。 チャタリングは、そういう現象があるんだって最初から知ってる場合以外は、わりとハマるよね チャタリング除去って割と基礎的で重要なことだと思うんだけど、
アマチュアではあんまり触れる人いないよね。
仕事でやってる人でもCR任せでソフトで全くやらない人いるし。 仕事でやってて
数ms〜数10ms オーダーをCR任せにする人がいるとは
本当?それ 適切な回路で(R×2+C)、ちゃんとしたスイッチなら
十分にいけるよ
ただし、経年劣化でスイッチの接点がへたると危ないけど… そんな所にわざわざ金と面積をかける
競争の少ない業界は良いねえ 回路設計とファームは自社でやって、基板のアートワークと製造は外注というところはたくさんあると思う。
タクトスイッチ数十個をマイコンのポートにつないだ基板と言うのも良く来る。
キーマトリクスなんて使わずに多ピンマイコンを使う。
全キーにCR入れる。ダイオードは入れない。
値からして明らかに静電気対策ではなくチャタリング対策。
しかも交換しやすいようリード品指定するところもある。
>>393
スキマ製品だと思うだろう?
大量生産品からインフラ機器までどこにでもあるんだよ。 そうなのか勉強になった
ありがとう
うちはまともな方だってこともわかって良かった まともならハードとソフトの両面で対策すると思うぞ
ソフトでどうとでもできるからと、たかを括った結果、
大量の不具合発生で「特別キャンペーン」やらざるを
えなくなった棒アジとかあるからなぁ
(あれって、韓国メーカーのOEMでしょ?) ほほう、ソフトで対策のできないチャタリングってどんなものがあるの? セットリセットのラッチ使って
セットに入ってバウンド起こしても
セットはセットなのですから
チャタリングしようが何しようがセットでラッチ
リセットに入れたら、ラッチ解除で
即座にOFF!コレ最速最強。是非お勧め♪
by単極双投無双 (6 lゝ、_ .ノ ヽ、__ノ |!/
| ,.' i、 |}
', ,`ー'゙、_ l
\ 、'、v三ツ /
|\ ´ ` , イト、
/ハ ` `二 二´ ´ / |:::ヽ
/::::/ ', : . . : / |:::::::ハヽ
https://twitter.com/ibuki_air
09058644384 スィッチも色々あるので、これでOK、と言うような万能の解決方法は無いと思う。
たとえば、単純なプッシュSWでもオルタネートとモメンタリがあるし、
使い方としても、プッシュオン(立ち上がり)でA処理、長押しでB処理、
プッシュオフ(立ち下がり)でC処理など組み合わせるときがある。
私はハードのCR積分回路と、自由度が高い(応用範囲が広い)ソフトのシフトレジスタ方式で
チャタリング除去している。 ピンポイントな例でも構わないので、
CR積分回路が無かった場合の不具合例を教えてくださいませんか? ■ このスレッドは過去ログ倉庫に格納されています