AVRマイコン総合スレ Part38©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
microchipのサイト、日本語にすると404エラー表示のページがあるね。 何か情報提供して損した気がする
もー教えてやんないからな!ヽ(`Д´)ノ tiny2313用の並列処理プログラムです。
>>> 興味の無い方はスキップしてください。
リストが長くなるので準備部だけを載せます。
実行部、切り替え部は「マイコンソフト 悩み事相談室」を見てください。
ポートB(前のサンプルのポートAから変更)、タイマ0の設定は通常と変わりません。
ポートBには2個のSWとLEDとを接続し、タイマ0は5mSのノーマルCTCで動かします。
タスク2のスタック領域には
「タスク2の実行を終って、現在はタスク1を実行中」
の状態を擬似的に作ります。
これでタスク1の実行を開始すれば、5mS後にはタイマ割込みでタスク2に切り替わり、
以後タスク1,2を交互に実行します。
RESET:
;----- Port_B for LED1:bit0, LED2:bit1, SW1:bit2, SW2:bit3
ldi ZL,0b11111111 ;input with pull up
out PortB,ZL ;output High (LED OFF)
ldi ZL,0b00000011 ;bit0,1 output
out DDRB,ZL ;bit 2~7 input
;
;----- timer0 for 5mS interval
ldi ZL,0b00000010 ;simple-CTC mode
out TCCR0A,ZL
ldi ZL,0b00000101 ;prescale OSC_20MHz /1024 to 19.53KHz
out TCCR0B,ZL
ldi ZL,98 ;set compare_A:98 for 199.3Hz
out OCR0A,ZL
ldi ZL,0b00000001 ;enable CTCA interrupt
out TIMSK,ZL
:
;----- setup for task dispatch
ldi ZL,stack2 ;set SP to stack2
out SPL,ZL
ldi ZL,LOW(T2L1) ;push strat adrs for PC_Lo
push ZL
ldi ZL,HIGH(T2L1) ; for PC_Hi
push ZL
push ZL ; dumy ZL
push ZL ; ZH
push ZL ; SREG
in sv_SPL,SPL ;save SPL
;
ldi ZL,stack1 ;set SP to stack1 SP
out SPL,ZL
;
sei ;enable global int.
(ここからタスク1のT1L1を実行開始) (続き)
出力をオシロで見ながらスィッチをSWを押すと、単独で動作していることが分ります。
このプログラムはあくまでもサンプルです、たとえば点灯時間を正確にしたいなら一工夫が要ります。
ここでは使用していませんが、ポーリング間隔が長いときは、
CPUの実行効率を上げるためにソフトウェア割込みで強制的に切り替えます。
動作を理解すればタスク数を増やしたり、他のメーカーのCPUにも応用できます。
うーむ、書き込み長さの新記録を作ってしまった、申し訳無い。 つまり質問じゃなくて○○作ってみたってことだよな。 悩み事相談室ってどこのサイトだと思ったら2chにそういうスレがあるのか。 >>955
良い例えが浮かばないけど
SDセクタ読みながらのオーディオ再生と同じ話だよね
(一発目は空のバッファに割り込んでる) >>961
その喩えはよく分らないけど、「ダミィ」を「空」と入替えても構わないと思う。
タスク1実行中の1発目のタイマ割込みが掛かった時点のスタック2領域は
「タスク2を実行中にタイマ0割込みが掛かって割込み処理を実行した後」
と同じ状態になっている。
つまり、タスク1実行開始前に、タスク2のスタック2領域に実行再開アドレスと共に
保存するフラグレジスタやZレジスタを、あらかじめ
<タイマ割り込みを実行した後かのように>書き込んでおく。
紙にスタック1、2のアドレスと実行再開アドレスPCL、PCHやフラグ、ZH、ZLを積み上げて書いて
タイマ割込みの前後でスタックポインタと内容がどう変わるか見れば分りやすいかな。
tiny2313はあまりこのような処理には向いていないけど、
他のCPUにも使えるし、覚えておいて損は無い(と信じている)(笑) ソースの寄与に対しそこまでいうのは可哀想だろ。
何か思想的な問題が?
素晴らしい感じはしないけど、無駄ってほどではないだろう。 >>966
こいつはIDをコロコロしながら「珍妙」書き込みをして
AVRスレを妨害しているリアル偏執狂(パラノイア)のPIC厨だよ
とにかく1日も早く精神科を受診して欲しいのだが 助けてください
AtmelStidio7で、また何かキー同時に押して
エディタの文字ちっちゃくしちゃいました。
どれ押すと大きくなりますか
エッチネタは雑でいいのでお願いいたします エクセルみたいに下に何%とかタブを発見し
100%にしたら元に戻りました。
お騒がせいたしました。 >>972
altキーかなんか押しながらマウスのホイール転がすと変わる >>973
おおっ
これのせいだったのかな
ありがとう、大好き!! ATmega88でタイマー2の高速PWMでLチカをしたいのですが
1秒に4回くらいの速さで光らせたいです
色々調べて以下の設定でトライしました
DDRB = 0b00001000; //PB3を出力に
TCCR2A = 0b10000011;
TCCR2B = 0b00001101;
OCR2A = 127;
クロック周期を1/24にしてカウンタの最大を256msにしつつ
OCR2Aを127に設定して128msで点滅するようにしています
しかし実際の挙動はずっとPB3ピンがずっとHIGHになっていて
矩形波が出てきません
他に何か設定しないといけないのでしょうか? TCCR2B = 0b00000101;
で無事いけました
ただ計算間違いで全然128ms店頭にはならなかったです
8ビットタイマーだとキツいんですかね クロック元はデフォの1MHzですか?
それならPWM周期は1MHz/プリスケーラ128/カウンタ周期256=約30.5Hz
これをプログラムで1/24したと言うなら約1.27Hz
4Hzなんて数字にはかすらないから計算違いですねぇ プリスケーラを1/1024にしたつもりでデータシート読み違えたのかな? クロック1MHzだとしてタイマー1周でだいたい1/4秒にしたいなら
プリスケーラを1/1024にするだけだし
それならTCCR2Bは>>976であってるから
クロックが変えてあるんじゃないの ごめんあってないわ
1/1024は
TCCR2B=0b00000111;
だわ
すまんこ atmel start projectから作成するとADCが動かないのだけど PICってメモリ空間が非線形じゃないですか?バンクメモリだったか。
AVRって線形じゃないですか。
なんでPICが人気あるの?AVRの方がC言語でつかいやすいやん。。
明解な答えを求む。 Atmelのやる気が全然なかったから…
日本では…… みんな使ってるからやろなぁ日本では
今ではArduinoがそのポジションに行きつつあるが 32bit使えば解決
色々と楽
PIC32MMとか安いし アドレスを1レジスタで保持出来るのがいい
ARM Cortex M
MIPS microAptiv でも、その32bitマイコンは4GBのメモリを内蔵してないんでしょう?
ぜいぜい32KBぐらいじゃないんですか?
いろいろ楽といいますがハンダ付け大変じゃないですか? 8bitマイコンでもなんとかなることに32bitマイコン使っちゃいけないの?
DIPの選択肢もあるし、QFPを変換基板にはんだ付けするくらい趣味の範疇でも十分できるんじゃないかな。
EAGLEやKiCADで基板作ってる人もいっぱいいるだろうね。
自分基準でモノ言っちゃいけないな。 構やしねーがあんちゃん、そういうのは32bitスレでやりな。ここはAVRスレ。
AVR32でもない、ARMだのMIPSだのPIC32はスレチ、マナー批判だぜぇ。
荒らし扱いされても文句は言えねぇな!!! >>993
それを>>991で書けよw
自分もマナー違反の一人になってるのに、そんなことも忘れるほど恥ずかしいことでもあったのかい? 私がAVRを使う理由は一言で言えば「楽しいから」かな。
命令の種類が多い+命令に制約がある、汎用レジスタ方式などの理由で
「トリッキーで小さくて早いアセンブラ・プログラムを書きたい」
という私の電子工作の目的にはピッタリのCPUだ。
PICをアセンブラで書くのはつらい。 いかにも後付けな理由だな
1個のレスの中ですら一貫性がまるでない 自分の使っているプロセッサの品種が「人気がない」とそんなに困る物なの?他品種を僻む程に?
AVRもMicrochipに移管されてdisconの心配はない筈なのになんか不都合あるの?
明快な答えを求む。 >>998
関連情報が人気があるチップには沢山あるということで人気がある方がいいなぁと思う。
てか、次スレだれか立ててる? このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 287日 6時間 26分 22秒 2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.2ch.net/
▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。