「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



先日秋月の店頭で見つけたtiny13A。

改めて見てみたら秋月のカタログに載るように
なってた。
http://akizukidenshi.com/catalog/g/gI-02911/

載せるの忘れてたのかな?新商品には載ってない
からなぁ。

で、買っちゃったのはいいんだけど、何に使おう?
SRAMは少ないけど、ADコンも入ってるから
結構使えそうなんだけど、8ピンマイコンに
外部クロックつけるのは無粋だもんな。



コメント ( 2 )




昨日の続き。
jtagice mk2互換を使ってtiny2313をdebugwireで
ICEする時のことについて調べてみました。

(前回までのお話)

PORTxレジスタにデータを出力すると、PC画面上では
その直後にPINxレジスタにもその内容が反映されちゃうん
だけど、内部回路的にはシンクロナイザを通る分だけ
PINxへの反映が遅れるはず。なぜ?


(調べてみた)

まずはデータシート。tiny2313のフルバージョンの
24ページの絵(figure11)を眺めてみました。
クロック源(外部発振にしても内蔵RCにしても)を
マルチプレクサで選択した後に、大きく3つのクロック
に分岐しているようです。
  (1)CLKi/o
  (2)CLKcpu
  (3)CLKflash
このうち、PINxのシンクロナイザに繋がっているのは
(1)で、ICEのブレークポイントとかで停止する
ためのCPUクロックは(2)という具合に分かれているん
ですね。

で、簡単に言うと(2)や(3)はブレークポイント
などで停止するんだけど、(1)を停止させちゃうと
それが原因となってイロイロ弊害も出るだろうから、
基本的にはクロックをカウントしつづける…と。

そのあたりを詳しく書いてあるページがこれとか、
http://support.atmel.no/knowledgebase/avrstudiohelp/mergedProjects/JTAGICEmkII/mkII/Html/JTAGICE_mkII_Special_Considerations.htm
これとか。
http://support.atmel.no/knowledgebase/avrstudiohelp/mergedProjects/JTAGICEmkII/mkII/Html/JTAGICE_mkII_Introduction.htm


要点だけ抜き出すとこんな感じ。

例えば、このページのサンプルコードとして載っている
Example:
 OUT PORTB, 0xAA
 IN TEMP, PINB
っていうのをシングルステップで実行すると、PORTBに
吐き出した0xAAは次の行のIN命令では読めないはずだけど、
ICEで1ステップ動作をさせると読めちゃう。
もしちゃんとしたいなら、間にNOP命令を入れなさいという
感じ?

それと、イロイロ読んでいくと、すべてのI/Oモジュール
が一律動きつづけるって言うわけでも無いみたい。

一つにはtimer/counter。もうひとつはウォッチドッグタイマー。

timer/counterはCPU停止時に動きつづけさせるのか
停止させるのかを選択できるとのこと。
ウォッチドッグタイマーはCPU停止中は一律停止する
とのこと。

そりゃそうだね。うん。よく配慮されたつくりだな。


それ以外にも、リセットピンはdebugwireで使っている
間は他のICなどから制御することはダメとか、
USARTは動きつづけるよとか、ブレークポイントを
設定するとflash ROMに都度書き込みするからflashの
寿命を縮めますとか、いろいろ書いてあるみたいなので、
ご興味のある方は読んでみてください。



コメント ( 0 )




例のKEE electronics製のjtagice mk2互換機。
ようやく接続確認ができました。(^O^)
情報頂いた皆さん、ありがとうございました!


先日ダメだった理由は、どうやらリセット周りの
配線の勘違いでした。アホですな。抵抗値以前の
問題です…(^_^;)

で、実験風景。


tiny2313を実験台にしました。リセット用のプルアップ
抵抗はひとまずatmel推奨の10kΩをチョイス。
この間と同じように配線を実施。

dwenビットを立てる前の状態から始めたので、
debugwire経由のICEに入ろうとすると警告画面が
出てきます。適当に弄ってdwenビットを立てます。
(多分、事前にISPモードで明示的に変更してもいいん
 だと思いますが、今回は手抜きをしてみました)

で、実行してみるとなんだかんだでシミュレータ画面
がいつものように開きます。一見何も変わりません。
(あたりまえ)
ここでステップ実行とか操作してみると実行結果が
坦々とPC画面に表示されるわけです。レジスタとか
メモリ内容とか。

でもこれだけだと普通のシミュレータと何も
変わらないので、tiny2313側にLEDを取り付けて、
実行しているコードにあわせてLEDがちゃんと
点滅/消灯するのか確かめてみます。

まぁ、疑うだけムダなんですが、予想通りちゃんと
点いたり消えたりしました。うーん、なんか気持ち
いいな。(^O^)


一つ気になることが…ピン入力用レジスタ(PIND
とかPINBとか)のシンクロナイザ回路のこと。

山根さん本の98ページによると、PINxレジスタが
変化するタイミングは、実際に変化したタイミング
に対しシンクロナイザを通過する時間の分(2I/O
クロック)遅れると書いてあります。

PORTBやPORTDの各レジスタに出力命令から
2クロック遅れてPINxレジスタに反映されるん
じゃないのかなぁ?

ところが、出力命令の実行直後にPINxレジスタ
の内容が変わっちゃってるんですよね。これって
なんでだろう?
CPUのクロックとI/O用のクロックって
別なの??? うーむ…。

というよりは、CPUは常時実時間で動いているから、
ICEで読み出しする時にはもうPINxレジスタ
に反映された後の状態ってことなのかな?

細かいところが気になるんですよ。私の悪い癖。
(注:右京さん風に)


debugwire経由でPCにデータを読み出すにも
それなりに時間がかかっているはずだから、
やっぱりその間にPINxに内容が反映されて
しまっているって考えるのが自然なのかな?

私の記憶では、ソフトウェアシミュレーションの時は
PINxへの反映は確かに遅れていた気がするんだ
けどなぁ…

ICE中は、ブレークポイントなどで中断中でも
I/Oクロックは動作しつづけるっていう理解を
すればいいのかな?それなら辻褄は合うなぁ。


おまけ。互換機のコネクタ部分のアップです。
atmelオリジナルとはちょっと違うみたい
なので…。ご参考まで。


白いのが本体から生えているコネクタで、JTAG
の配置になってます。(裏表逆に撮っちゃったな…)

手前側にあるのが付録の変換基板。10ピンJTAGを
10ピンISPに変換します。うーん。シルクにATMEL
って書いてあるなぁ。これって純正品?

シルクにイロイロ書いてあるので、迷うことはないでしょう。
親切、親切。

ただ、10ピンISPを6ピンISPに変換しないと
不便だな。これまで作ったCPUボードとかは6ピン
だもんなぁ…。


そういえば、これまで作ったボード類って、リセット周り
のプルアップ抵抗が大抵4.7kΩなんだよな…。
10kΩにしないといけないかな?

というわけで実験してみました。
リセット用のプルアップ抵抗を4.7kΩに変えて再度
接続!

結果:とりあえず普通に動きました。

ただし、ATMEL純正のjtagice mk2とは回路構成が
違うのかも知れませんし、そもそも推奨は10kΩなので、
無理して4.7kΩを使うことも無いと思います。
…既にあるボードはとりあえず今のままで鞭打って
使ってみようかな、なんて思ってますが。

ISPモードからdebugwireモードへの変更は4.7kΩ
で行ってないので、この変更がちゃんと効くのかは
良く判りません。
まぁ、そもそも無茶するより10kΩ使ったほうが賢いな。
絶対。



コメント ( 2 )




オリゲー・フェスタ☆68の運営者の方から
出典のお誘いを頂きました。
http://xps.jp/festa68/of12/

去年、見に行こうかどうしようか迷ったまま
結局行かず仕舞いだったんですが、いしかわ
きょうすけさんの去年5/4の日記
を拝読し、
やっぱり行っておけば良かったかなぁと
思っていたんですが…出典ですか!

今年は割り込みで仕事入るかも知れないのと、
準備の時間が…ねぇ…。既に他の日で埋まっている
ところもあるし…

あと、これまでおいらが作った成果物って言っても、
たいていやりたいところだけ(殴り書きならぬ)
殴り作りっていうやつで、その後は全部放置状態
だからなぁ…

スプライト表示、FM音源、カラーコンポジットが
程よく混ざって1つに合わさったらイイカンジかも
しれないけどな…
それはまだちょっと先になりそうだな…

いずれにしても、作り手の方々とお話してみたいなぁ。
時間が合えば今年は見に行きたいなぁ。



コメント ( 0 )




KEE electronicsからjtagice mk2互換機が届きました。

早速使ってみようと思って繋いでみると、あれやこれや
でなかなか上手く繋がってくれません。

1点目。
AVRstudioのバージョンが少し古いままだったので、
jtagice mk2のファームと合わないとかで警告表示。
とりあえずAVRstudioをバージョンアップしました。
ok。

2点目。
AVRstudioからjtagice mk2が認識されず。
→ケーブルを抜き差ししたり、PCを再立ち上げ
 したり、ファームのバージョンアップ(付録CD
 に入っていたファームのバイナリを使用)したり
 していたら、とりあえず認識されるように。

3点目。
ISPモードからdebugwireモードに変更できません。
TINY2313用に以前組んだプログラムを実機のTINY2313
使ってICEしてみようと思って試してみたんですが…

そのデバイスにAVRISPmk2経由でアクセス(ISPモード)
してみるとちゃんと動く…。
ってことはデバイスは壊れてないはずだなぁ。
配線が間違えているのか?

純正のjtagice mk2とはコネクタ部分の構造がちょっと
違うみたいなんですよね。
KEEのjtagice mk2本体から生えている10ピンコネクタは
jtagの配置みたい。
これに、付属の変換基板を噛ますと10ピンのISP
コネクタに変換できるっぽいです。

で、そのISP10ピンに変換しておいて、ブレッド
ボード上でTINY2313に配線してみたんですが、
LEDは青い点滅のままだし、spienビットが「?」
表示のままだし、デバイスに読み出しも書き込みも
出来ない…

Vcc、GND、RST、MOSI、MISO、SCK
をひとまず全部繋いであるので、ISPモードで
接続できるはずなんだけどな…

コンフィグ画面上で、デバイスに供給されている
電圧を見てみると5.1V。ってことはVccと
GNDの配線は正しいみたい。
やっぱり変換基板でISP10ピンの配置になってる
って事だよな…。その点の間違えは無さそう。
その他の配線も特に間違えていないみたいなんだけど
なぁ。

デバイスから読み出し出来ないし、dwenビットにも
書き込みできないし…。

AVRISPmk2でdwenビットを書いちゃうって言う手も
無いことは無いんだけど、一旦やっちゃうと
AVRISPmk2からは戻せなくなるからな…
やったからって、jtagice mk2で接続できるって
保証はまだ無いわけだし。

やるなら、やっぱりjtagice mk2上で変更したい
よなぁ。

あとでまた弄ってみよう。



コメント ( 5 )



« 前ページ