AVRマイコン総合スレ Part39©2ch.net [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
>>538
マルチコアってコンパイラどうなるの
作るのすげえ大変なんでしょ?知らんけど 16bitレジスタのXmegaがあるだろ?なにいってんだと思いつつ
Xmega のデータシートみたらmegaと同じだったXmega って何が違うの?
全てのレジスタの裏レジと割り込みで裏と表に切り替わる仕組みを乗せて欲しいな xmegaは周辺機能の強化がメインだね。
コアCPUの機能としてはそんなに大きく変わってない。
megaで出た不満の修正を最低限やりましたって感じがする。 > 全てのレジスタの裏レジと割り込みで裏と表に切り替わる仕組みを乗せて欲しいな
私も前に同じような事を書いた。
裏と表だけでも全然違うと思うが、出来れば
32個のレジスタセットを複数組持って、SRB n(select register bank #n)命令で1組を選択
にして欲しい。
Cコンパイラを作る人も、マルチタスクを作る人も喜ぶと思う。。
命令は入力ポートのビットクリア命令<cbi DIxn>の領域に割り当てれば良い。
残念ながら、エラッタ放置厨のマイクロチップには期待できそうも無い。 Nano Pi NEO ¥1,680(税込)
こんなんだからな
正直、今更 上位クラスを作っても勝てるとは思えん。 >>544
今のAVRをより面白くするには、という点に着目して書きました。
8ビットと32ビットのCPUを比べるのは、軽トラと大排気量のピックアップを比べるようなものだと思う。
いつも軽が負けているかというと、そんな事は無くて
軽を「田ンボルギーニ」、「農道のカウンタック」と賞賛する声があり、
実際、米国ではハンティング(ラフロード)用には「これしかない」と軽が大人気です。 マイコンはシミュレーション環境がいまいちだなあ
シミュレータ上で任意の外部端子を互いに接続してループバックできるようにしてくれると
かなりのことがシミュレータだけで確認できるのだが・・・
atmelstudioのシミュレータにそういう機能ついてる? そういうのはプロテウスってシミュレータを使うのが海外ではトレンドみたいよ。 外部端子とレジスタの間にクロスバースイッチが挿入されてて
任意に接続可能なAVRマイコンが欲しいなw >>538 は、ESP32 のことなんだが、(高速I/O は割り当てが決まってるものの) 入出力機能は基本自由に割り当てられるな。
完全に直交してるから、PIC みたいにパズルのようなことにならない。 米粒を3.3Vで使おうとしてるんですが
これもしかして、書き込みは5Vじゃないとダメなんですか データシートにはプログラミング電圧は5Vって明記してますな。 Atmel Studio 7.0.1645がリリース
前リリースの1417はバグが酷いので1188に戻してたが、今回のはどうかな。 秋月のattiny861aって
> ・シリアルI/F:SPI、I2C等
atmegaみたいな回路とは違うよね? バグ? Jungoがなくなって驚いたがLUFA cloneは快適になって○です
インスト不具合は対応したとリリースノートに記載があるしWin8.1ですが
KB2999226だけでKB2975719は不要でした。
あとSupport DeviceにATmega4808/4809が追加されてる(ほかにmega3208/3209)
Tiny817と同じAVR8Xコアのようで、5V Xmegaもどき UPDIです
秋月でICE買う前にUSBaspにでもだれかインプリしてくれないかな。 >>555
使う気が有るならデータシート見なよ。
USARTとSPIは違わないけどI2CはUSIってモジュールを利用して「実現可能」ってレベル。
>>556
ビルド1417は環境依存だがVSの挙動がおかしくなる。
更にICEのファームアップデートを強制するくせに、
そのアップデート自体ができないという爆弾付きだったんだ。
デバイスについては、今後まるっきり新規のデバイスならISPやめるんだろうかね。
debugWIREはハマる人が多いし。
PDIならUSBasp対応してるから、UPDIもそのうち出てくるんじゃないの? 861a、強力な85だと思えば使いやすいけど
2313の代わりに…と思うと使いにくい 暇だったのでArduinoISPをLPC11U35に移植してみた、需要ある?
次は、pickit3かUSB-Blaster移植しょうと思う。 >>562
秋月で最近出したボードありますね
githubあたりで公開よろ 秋月に50円の8pinあるだろ。250円の28pinあるだろ。
必要なのは100〜150円の20pinなのだよ。 20pinも14pinまでAitendoにはある。
300milや20pinのLPC1114もあるのでmega88V150円を20pinにすれば良い シリアル付とADC付きの20pinが欲しい訳で
もう新しく作らなくていいからmega328を20pinDIPパッケージに詰め込んでくれと tiny817 20pin SOIC
tiny441/841 14pin SOIC -- UART x2
こんなところか。 Tiny817は 24pin QFN 、 20Pin SOICならTiny816とかTiny87 LPC11U35をArduinoISPにするソフトを下記に上げました。
とりあえず、バイナリのみです。
https://drive.google.com/file/d/0BzoxMxrr5Xued3NzWERBS24yNEE/view?usp=drivesdk
SHA1 : 2ddae510f0f03f91272883fa4c6d6b5b52dde40e
atmega328p と atmega88v に書込みできることを確認しました。
使用する方は、自己責任で使用してください。 data8<7-0> にdata32<31-00>の中のdata32<07-00>を抜き出して代入したい
data8 = data32 % 256 ;
と書いてもコンパイラが素直に推論してくれません
キャリー処理のコードっぽいものをつけてきやがります
どうしたらいいでしょうか? 素直に
data8=(uint8_t)(data32 & 0x0f)
じゃだめ? %256でOKみたいです
構造体にアクセスするためのインデックス計算の呪文を勘違いしたかも
お騒がせしました PORTB<0>(<0>はbitを示す)をトグル動作させたいので以下のように書いたのだが
if (( PORTB & 0x01 ) == 0x01 )
{ PORTB &= 0xFE ;
}
else
{ PORTB |= 0x01 ;
}
if (( PORTB & 0x01 ) == 0x01 )
370: 28 9b sbis 0x05, 0 ; 5
372: 02 c0 rjmp .+ ; 0x378 <main+0x288>
{ PORTB &= 0xFE ;
374: 28 98 cbi 0x05, 0 ; 5
376: 10 cf rjmp .-480 ; 0x198 <main+0xa8>
}
else
{ PORTB |= 0x01 ;
378: 28 9a sbi 0x05, 0 ; 5
37a: 0e cf rjmp .-484 ; 0x198 <main+0xa8>
わいのif文を使う稚拙な文章力によると冗長なrjmpが付いてしまう
〜をつかって簡潔に表記できる気がするので
もっと素敵な表記方法があれば教えてください C言語なら1行
PORTB ^= 0x01;
アセンブラはコンパイル出力見なされ。 前の質問もそうだが
アセンブラを気にするのになぜか論理演算に対する理解がゼロ。 ありがとうございまする
そういやXORってなものがありましたね
発想できなかったわいやばいかもw PINB=0x01;
でもいけるデバイスはあるね。
出来ないのもあるから要注意だけど。 PINB |=0x01;
にしないと…
ところでAVRでトグルアクションできない
デバイスってあるの? って、俺じゃなかったか。
ちょっと古めのやつには無いんだよ。
mega64とかね。 アンカ付ければよかったな、>>588 のが正しい と言いたかった
PINB |=0x01; <= これだと不要なヤツまでトグってしまう可能性がある(PINB依存)
勿論、いけるデバイスでの話ね 知るのが面倒なんだろう
知ってたら、PINB=0x01; の方が簡単だと言うことは誰でも解かる
下らん事をいちいち書くな、カス PINB=0x01 で出力用PortBのbit0が反転するというのは少し意味が不適切だと思うけど
アセンブラの sbi PINB,0 から来てるのかな >>593
PINB |= 0x01; でコンパイラが吐くコード
sbi PINB,0x00
PINB = 0x01; でコンパイラが吐くコード
ldi tmp,0x01
out PINB,tmp >>598
どちらも同じ結果になる?
>>599
素直に文字列を読むと「入力ポートBに01を設定」に見える
動作内容の「出力ポートのビット0を反転」とは異なる >>600
だから新しいデバイスは
「入力ポートBに01を設定」すると
出力ポートのビット0が反転するんだってば。 アセンブラのニーモニックを実際の動作内容に合わせて
「sbi PInB,0」をたとえば「tbo PortB,0」(toggle bit of output port)とでも
しておいてくれれば分りやすかったのに、と思った 最適化レベルに依存するんで、Cでは記述しない。
デバッグ時に-o0たまに使うからなあ。 もしかしてニーモニックはCPUで決る固有のもので変更できないと思っている?
マシンコードはその通りで変更できないけど、ニーモニックはどうにでもなるよ。 追加
ニーモニックを変更したらアセンブラも変更しないといけない ゴメン、追加2
たとえば(マシンコードは適当)
旧アセンブラ sbi PInB,0 から マシンコード$1234を生成
新アセンブラ tbo PortB,0 から マシンコード$1234を生成
(これで終わりにします) 知らなかったなら「知りませんでした。半年ROMります」って言えばいいことなのに。 >>577
ファイル頂きました。ありがとう。
lpc11u35といえば、
keil pro版があるとcmsis-dapのバイナリ作成できる
買えんから、バイナリほしい cmsis-dapの最新版はDAPLinkに変わりました。バイナリはgithubのリリースにあります。 >>600
はぁ?
データシートにわかりやすく解説してあるのに
自分の勝手な思い込みを一般化するとかキモい >>611
ありました。感謝です。
トラ技版更新してみます >>598
ビット反転の記述は PINB |= 0x01 の方がいいってことか。 >PINB |= 0x01; でコンパイラが吐くコード
>sbi PINB,0x00
そうか。コンパイラって賢いのだな…
でも、6つのビットを反転するときに、
PINB |= 0x3F;
はどうなるんだろう。
sbiを6回繰り返すのだろうか。 >>616
疑問に思うなら、なんでやってみないの? 見下げた他力本願だな。
1000年ROMってろよ。 >>614
記述は PINB |= 0x01 でも動作内容は PORTB |= 0x01 とはこれ如何に?
答え 1枚でも千べいと言うが如し、1個でも万こと言うが如し
うむ、上品なAVRスレにふさわしくない下品さだw PINx反転機能は入力設定+プルアップ→出力設定+0出力の
ダイレクト遷移に利用できるのではなかろうかとw >>618です。
職場のPCにしか入れてなかったので自宅のPCに最新のAVR Studioをインストールして確認してみたよ。
時間が掛かりそうだったので昨夜は寝た。
吐き出された.sはレジスタ名になってないので、置き換えた。
(1)まずは
PINB |= 1;
sbi PINB,0
おー。確かに。
(2)複数ビットへのORは、というと
PINB |= 0x2A;
in r24,PINB
ori r24,0x2A
out PINB,r24
これは予想通り。 指定ビットの反転とは違うよね。
(3)普通に代入
PINB = 0x2A;
ldi r25,0x2A
out PINB,r25
>>614さん本人はわかった上で書いていると思うのだけど、
>>614を見た他の人で、1ビットだけ以外のケースでも |= の方が良いのか、って思う人がいるとまずいかな。 出力になっているポートBのビット0 が 1 であるとき、
PINB|=0x01 を実行すると、
結果が 1 になる。
と考えているとか、かな? >>621 cで書くのにsbiやcbiを意図的に使いたいなら、アセンブラマクロにすべきだよ。
Arduinoのdegitalwriteみたいに1ビット単位でしか指定できない関数にする手もあるが、
誰かが書いたように最適化レベルによっては必ずしもsbiやcbiになるとは限らない。
ピントグルなんてハード依存の変な機能なんだから・・・・ 正確なタイミングが必要なら最初からその部分はアセンブラで書くでしょ。
LED制御程度ならCで適当に買いときゃいいよ。 >>622
は出力設定のときのみPORTxの書き込みは外部端子に反映されるという前提条件がつくが 曖昧さがイヤなら、不安ならアセンブラで書けばいいだけの話しだな。
そもそも、「入力のビットをセットすると出力のビットが反転する」
というCPUの資料の説明に無理がある。
オリジナルのCPUに、ビット値反転機能を無効コード領域に新たに割り当てたときに、
手抜き(資料に上記の文章を追加するだけ)をしなければこんな事にならなかったのに。
羽田飛行場で札幌行きに乗れば沖縄に着きますよ、と言われても困るけどw
残念ながらアセンブラやコンパイラを自作しないかぎり、受け入れるしかない・・・ 入力オンリーだったレジスタに、出力したらビット反転する機能を後付けしたんだよ。 >>632
正確じゃないな。入力レジスタのアドレスへのwrite に 出力レジスタの反転を割り当てた。 この場合、入力レジスタというハードウェアは存在しないですよね… >>635
It is clocked into the PINxn Register at the succeeding positive clock edge. もしシンクロナイザを入力レジスタだとするなら、より正確なのは>>634ですね。 未だにやってんのか…
「ボクちゃんいい事、考えちゃった!」 ■ このスレッドは過去ログ倉庫に格納されています