Downloading Programming Executive...FAILED! (dsPIC33FJ32MC204)

タイトルのエラーが起きて困ってました(今もすこし困ってる).

前の記事に載せたMicrochip MCLV開発ボードを久しぶりに使ってみたのですけど,プログラムの書き込み時にタイトルのようなエラーメッセージが出て,書き込めなくなってしまいました.


PICkit2とPICkit3の二つを使って試したのですけど,同様のエラーが出て詰んだ・・・
(使っているPICは,dsPIC33FJ32MC204)


公式のフォーラムでも同様の問題を抱えている方が居たようなので,斜め読み.
dsPIC33FJ: Downloading Programming Executive...FAILED! | Microchip


「書き込みのポートを変更すると書けるんじゃん?」という記述を見つけたので

PGC3, PGD3 → PGC2, PGD2

にポートを変更して試したところ,問題なく書き込めた orz



・・・冬場の間にPICが死んでしまったのかな? と思ってPIC部分だけ買い換えたんだけど,買い換えた物もPGx3からPGx2にポートを変更すれば書き込めるという謎現象が起きて,どうにもテンションが下がるねぇ

特に,今まで何も問題が無かったのに,突然に意味不明な問題が起きると尚更ですよ!

Microchip MCLVのサンプルがビルドできない件について

所用でBLDCを動かすことになって,下記の評価ボードを購入したところ,すんなり行かなかった点についてメモ
DM330021 Microchip Technology | 開発ボード、キット、プログラマ | DigiKey

どうやら,コンパイラのバージョンによって挙動が異なるのが原因らしいと海外のフォーラムで知り,下記の点について修正を加えた.
※修正の参考にしたのはコンパイラのインストールフォルダのサンプルです.
 私が使用したコンパイラはv.3.31でした.

まず,AN957で修正した点について


_FICD (ICS_PGD3 & JTAGEN_OFF & COE_ON); //ビルドできない
_FICD (ICS_PGD3 & JTAGEN_OFF);// & COE_ON); //ビルドできる

また,AN1017は上記に加えて更に修正が必要


//ビルドできない
reg_a = __builtin_mac(
x_prefetch,y_prefetch,
&ControlDifferencePtr, &x_prefetch, 2,
&PIDCoefficientsPtr, &y_prefetch, 2, 0
);

//ビルドできる
reg_a = __builtin_mac(
reg_a,
x_prefetch,y_prefetch,
&ControlDifferencePtr, &x_prefetch, 2,
&PIDCoefficientsPtr, &y_prefetch, 2,
0, 0
);

そんな感じでBLDCが元気に回りましたよ

Ether Topの電源コネクタについて

北陽から発売されている測域センサEther Topの電源コネクタについての情報が見当たらなかったので調べてみたところ,JST社のPHコネクタが使用されているのではないかと思う.
日本圧着端子製造株式会社

どうやら千石で手に入るようなので,このコネクタで合っているか試してみよう.
せんごくネット通販

PICkit3で書き込めない

最近はPICを使った開発が多くて,さまざまな問題に出会います.

PIC18F14K50へMPLABを使用してファームウェアを書き込もうとしたところ,以下のようなエラーメッセージが吐かれた.


PICkit 3 detected
Connecting to PICkit 3...
PK3Err0038: Failed to initialize PICkit 3.

Failed to properly connect to PICkit 3

他の記事を見たところ,PICkit3のファームウェアが壊れたことが原因のようだと書かれているが,試しにPIC12F1822に接続したところ問題なく書き込むことができた.
恐らくMPLABとPICkit3の相性が悪いのだろうと踏んでPICkit 3 Scriptingに含まれているPICkit3.exeを使用したところ,問題なく書き込むことができた.

PIC12F1822のAD変換がうまく動かなかった(CCS-Cを使用)

はい,タイトルの通りです.


このPICは32MHzで動作することが可能なのですが,どうも32MHzで動作させると途中で停止してしまうようです.ですが,16MHzで動作させると問題なく動作する様子なので,当面は16MHzで我慢して使うことにします.

その時のプログラムは下記の通りです.
この中の動作周波数を32MHzにすると,私の環境では動かなくなりました.



1 #include <12f1822.h>
2 #device ADC=8; //ADCを8bit変換モードに
3
4 #fuses INTRC_IO,PLL,NOWDT,NOPROTECT,NOMCLR,PUT
5 #use delay(clock = 16000000) //16Mhz
6 #use fast_io(a)
7
8 #define LED_ON output_low(PIN_A5)
9 #define LED_OFF output_high(PIN_A5)
10
11 long int photo(void)
12 {
13 set_adc_channel(2); //AN2に設定
14 delay_us(40);
15 return read_adc();
16 }
17
18 void main()
19 {
20 unsigned char adc;
21
22 setup_oscillator(OSC_4MHZ|OSC_PLL_ON); //内部クロック設定 4 * 4 = 16Mhz
23
24 set_tris_a(0x0f);
25
26 setup_adc_ports(sAN2|VSS_VDD);
27 setup_adc(ADC_CLOCK_INTERNAL);
28
29 while(1)
30 {
31 delay_ms(10);
32 adc = photo();
33
34 if(adc < 128)
35 {
36 LED_ON;
37 }
38 else
39 {
40 LED_OFF;
41 }
42 }
43 }

memcached1.4.2がインストールできない

Ubuntu10.04上でRuby1.8.7を使っていて,memcachedのクライアントをgemで入れようとしたところ,下記のようなエラーが出た.

sudo gem install memcachedBuilding native extensions. This could take a while...
Successfully installed memcached-1.4.2
1 gem installed
Installing ri documentation for memcached-1.4.2...

No definition for _wrap_new_MemcachedAnalysisSt

No definition for _wrap_MemcachedAnalysisSt_average_item_size_set



No definition for _wrap_memcached_select_stat_at

No definition for _wrap_memcached_generate_hash_rvalue

つい先日まで動作していたのだけど,別のgemを入れたときに依存関係が怪しくなったためにmemcachedのgemを入れ直したら,上記の問題に遭遇した.

どうしたものかと悩んだあげく,memcachedのバージョンを1.4.1に下げてみたところインストールに成功した.

undefined method `force_encoding'

タイトルのエラーで困っていたところ,Ruby1.8とRuby1.9の互換性による問題だと分わかり対応策を考えていました.ですが,同様の問題への解決方法を提案している方がいたので,そこのコードを使ってみたところ,エラーが解決できました.

以下のページで詳しく解説してある通り完全な互換ではありませんが,このコードを参考にさせてもらうことで,無事にやりたいことを達成できました.
Ruby 1.8.2 には String.encode メソッドがない!?(パート2) - 自分の歩いた道に落ちてるコード

BaseXへアクセスするためのRubyクライアントのサンプルコードを動作させるためにRuby1.8で走らせた時にエラーが起き,かなり戸惑いました.