teacup. [ 掲示板 ] [ 掲示板作成 ] [ 有料掲示板 ] [ ブログ ]

 投稿者
  題名
  内容 入力補助画像・ファイル<IMG> youtubeの<IFRAME>タグが利用可能です。(詳細)
    
 URL
[ ケータイで使う ] [ BBSティッカー ] [ 書込み通知 ] [ 検索 ]


Re: キャプチャの値が6%ほどずれるのは?

 投稿者:nekosan  投稿日:2014年12月23日(火)15時41分10秒
返信・引用
  > No.696[元記事へ]

matsuさんへのお返事です。

> いつもお世話になっています。
> 困ったときいつも助けていただき,ありがとうございます。
>
> キャプチャについて,教えていただけないでしょうか。どうしても6%ほどキャプチャ値が少ないのです。
> CPUは,pic24fなのですが,



クロック源(原発)は内蔵RCで、PLLの32MHzなのでしょうか?
それとも外付けのクリスタル32MHzなのでしょうか?

RCでも、さすがに出荷時点で6%ずれていると、シリアル通信
すらまともに行えない状態なので、そこまでずれているとは
考えにくいなぁと言う気がするのですが。


ちなみに、1KHz以外の信号を入力させたときに、やはり6%の
ズレがでるのでしょうか?(つまり、比例しているので
しょうか?)

それとも、入力の周波数によらず、ズレる量(時間)が一定
なのでしょうか?

それとも、入力周波数によって、ズレる量が比例でも一定
でもない、中間的な状態なのでしょうか?

そのあたりが見えると、原因の切り分けに繋げられそうに
思えるのですが。


あと、1KHzの波形は、鈍ったり、ノイズが載ったりしては
いないでしょうか?
 
 

キャプチャの値が6%ほどずれるのは?

 投稿者:matsu  投稿日:2014年12月23日(火)01時00分36秒
返信・引用
  いつもお世話になっています。
困ったときいつも助けていただき,ありがとうございます。

キャプチャについて,教えていただけないでしょうか。どうしても6%ほどキャプチャ値が少ないのです。
CPUは,pic24fなのですが,

    IFS0bits.IC1IF = 0; // Clear the IC1 interrupt status flag
    IEC0bits.IC1IE = 1; // Enable IC1 interrupts
    IPC0bits.IC1IP = 1; // Set module interrupt priority as 1

    IC1CON1bits.ICSIDL = 0; // CPUがアイドルモード中もcapture動作継続
    //IC1CON1bits.ICTSEL = 0b100; // captureするタイマ選択,Timer1選択
    IC1CON1bits.ICTSEL = 0b111; // captureするタイマ選択,システムクロック選択
    IC1CON1bits.ICI    = 0b00; // 1回毎のcaptureイベントで割り込む
    IC1CON1bits.ICM    = 0b011; // captureモード,毎回の立ち上がりエッジ毎

    IC1CON2bits.IC32   = 0; // カスケードモジュール動作無効,二つのICで32ビットキャプチャとしない
    IC1CON2bits.ICTRIG = 0; // 入力源を入力キャプチャを他モジュールのタイマとの同期用に使用
    IC1CON2bits.TRIGSTAT = 0; //IC1TMRは未トリガでクリア状態を保持
    IC1CON2bits.SYNCSEL = 0b00000; // どのモジュールとも同期させない

    RPINR7bits.IC1R =17; // RP17にInput Capture 1を割り付ける, p159, PIC24FJ256GB210 Family Data Sheet
    _TRISF7 = 1; // CN18(RP17のポート)を入力,必須
    //_CN18PUE = 1; // プルアップ設定,必須

のように初期化して,32MHzのシステムクロックをキャプチャしています。
割込み関数は,次の通りです。

volatile unsigned short num=0;
volatile unsigned short new=0,old=0,dif=0;
void __attribute__ ((__interrupt__,__no_auto_psv__)) _IC1Interrupt(void)
{
    IFS0bits.IC1IF = 0; // Reset respective interrupt flag
    new = IC1BUF; // Read capture entry
    dif = new-old;
    old = new;
    dat[num++]=dif;
}

それで,RP17 に 1kHz のクロックをファンクションジェネレータから入力しています。
この場合,32MHzを1kHzの立ち上がりでキャプチャするので,
difの値は,32000になるはずなのですが,実際にやってみると,
301??となり,1800位足りません。

整数倍違うのであれば,原因究明もできると思うのですが,6%ずれるというところが不思議です。
どなたかアドバイスいただけませんでしょうか?

FOSCは32MHzで間違いなく動作しているようです。__delay_ms関数の動作からそれは間違いないようです。

また,システムクロックでなくて,timer1を選択しても同じ結果になりますが,分周してやると
分周の結果が正確に反映されます。

クロックの設定は,次の通りですが,OSCTUNbits.TUNをいじると,微妙にキャプチャ値は変化しているように見えます。

    OSCCONbits.COSC = 0b001; //001 = ポストスケーラおよびPLL モジュール付き高速RC オシレータ(FRCPLL)
    OSCCONbits.NOSC = 0b111; //111 = ポストスケーラ付き高速RC オシレータ(FRCDIV),切り替えしないので関係なし
    OSCCONbits.CLKLOCK = 1; //1 = クロックとPLL の選択がロックされる
    OSCCONbits.IOLOCK = 0; //0 = I/Oロックが無効
    OSCCONbits.LOCK = 0; //0 = PLLモジュールがロックしていない
    OSCCONbits.CF = 0; //0 = クロック障害の検出なし
    OSCCONbits.POSCEN = 0; //0 = プライマリ オシレータはスリープ時に無効
    OSCCONbits.SOSCEN = 0; //0 = セカンダリ オシレータを無効にする
    OSCCONbits.OSWEN = 0; //0 = オシレータ切り換えが完了

    CLKDIVbits.ROI = 0; //割込みが発生してもDOZENビットをクリアしない
    CLKDIVbits.DOZE = 0b000; //CPU/周辺モジュール クロック比選択ビット1:1
    CLKDIVbits.RCDIV = 0b000; //FRC ポストスケーラ選択ビット 8MHz(1分周)
    CLKDIVbits.CPDIV = 0b00; //システムクロック選択ビット00 = 32 MHz (1 分周)
    CLKDIVbits.PLLEN = 1; //USB/ グラフィック コントローラ用に96 MHz PLL を有効にする
    OSCTUNbits.TUN = 0b000000; //オシレータ調整レジスタ,メーカー校正結構正確だった

---
今回ばかりは,微妙にずれるという現象に途方に暮れてしまいました。
tuneで調整できる範囲なら良いのですが・・・・
 

Re: メモリが1/3しか使えない?

 投稿者:nekosan  投稿日:2014年12月11日(木)01時28分39秒
返信・引用
  > No.694[元記事へ]

matsuさんへのお返事です。


> ただ,C言語だとめんどくさいことはやってくれるようで,
>
> __eds__ unsigned short dat [32768] __attribute__((eds));//(1)
>
> の様にグローバル変数を宣言して,
> Project Properties の
> xc16-gcc の
> Memory model で,
> Allow arrays larger than 32K にチェック
> を入れておけば,ページ切替は気にしなくても勝手にやってくれるようです。



そうなんですか。

以前のPICだと、ページ跨ぎはC言語でも、もっと
グチャグチャだったので、プログラム書くのに
かなり苦労した記憶がありました。

(その後に触れたAVRの使いやすさで感心して、
 AVRばかり使うように…まぁ、ページだけでなく、
 アセンブラ命令のクセとかもですが)
 

Re: メモリが1/3しか使えない?

 投稿者:matsu  投稿日:2014年12月10日(水)00時37分3秒
返信・引用
  > No.693[元記事へ]

nekosanさんへのお返事です。

いつもお世話になっています。

ページで分割されています。
しかも,スタックの一番後ろは,7fff固定でした。
で,EDS領域は,7fffよりさらに後ろのアドレスの32KBになっていて,
その32KBの窓を通して,各ページを参照します。
ただ,C言語だとめんどくさいことはやってくれるようで,

__eds__ unsigned short dat [32768] __attribute__((eds));//(1)

の様にグローバル変数を宣言して,
Project Properties の
xc16-gcc の
Memory model で,
Allow arrays larger than 32K にチェック
を入れておけば,ページ切替は気にしなくても勝手にやってくれるようです。

リニア空間に全SRAMが存在すれば,スタックの一番後ろが,SRAMの
一番後ろになるだけの話しで,でかい配列も自由に取れて楽ですね。そうあって欲しいです。

でも,そうなってないので,(1)の下に同じくグローバル変数として,
char test[1000];//(2)
とかすると,この(2)は,bbsセクションになります。

Data Memory  [Origin = 0x800, Length = 0x18000]

section                    address      alignment gaps    total length  (dec)
-------                    -------      --------------    -------------------
.bss                         0x800                   0           0x3e8  (1000) ここが(2)
.data                        0xbe8                   0            0xf0  (240)
.bss                         0xcd8                   0             0x8  (8)
.data                        0xce0                   0             0x2  (2)
_039B5D80548715be           0x8800                   0         0x10000  (65536) ここが(1)

                        Total data memory used (bytes):        0x104e2  (66786) 67%

Dynamic Memory Usage

region                     address                      maximum length  (dec)
------                     -------                      ---------------------
heap                             0                                   0  (0)
stack                        0xce2                              0x731e  (29470)

                        Maximum dynamic memory (bytes):         0x731e  (29470)


といった感じになります。
(Code model, Data model, Scalar modelは,Largeとしています。)
 

Re: メモリが1/3しか使えない?

 投稿者:nekosan  投稿日:2014年12月 9日(火)23時50分8秒
返信・引用
  > No.692[元記事へ]

matsuさんへのお返事です。

> 何度も済みません。
> auto変数は,スタック領域なので,ダメです。エラーになります。
> すみません。いい加減なことを書いてしまいました。
>
> >  __eds__ unsigned short dat [32768] __attribute__((eds));
> > のように宣言(Global変数でもauto変数でも大丈夫なようです)して,
> >
> > dat[32767]=32767;
> > char temp[100];
> > sprintf(temp,"%5u  ",dat[32767]);
> > lcd_putstr(temp);
> >
> > としたら,無事に32767が表示されました。
> > 64KBの配列確保に成功しました。
>



PIC24シリーズは使ったことが無いので、詳しくわかりませんが、
このクラスのPICのSRAMって、ページで分割されていたり
しないんですかね?

リニア空間に全SRAMが存在するなら、staticでもautoでも、
問題ない気がしますが、autoだと駄目というのは、
このサイズの配列だと、ページを跨いでしまうから駄目、
というような制約に引っかかっているとか…

そのあたりが気になるのですが。
 

Re: メモリが1/3しか使えない?

 投稿者:matsu  投稿日:2014年12月 9日(火)22時35分52秒
返信・引用
  > No.691[元記事へ]

何度も済みません。
auto変数は,スタック領域なので,ダメです。エラーになります。
すみません。いい加減なことを書いてしまいました。

>  __eds__ unsigned short dat [32768] __attribute__((eds));
> のように宣言(Global変数でもauto変数でも大丈夫なようです)して,
>
> dat[32767]=32767;
> char temp[100];
> sprintf(temp,"%5u  ",dat[32767]);
> lcd_putstr(temp);
>
> としたら,無事に32767が表示されました。
> 64KBの配列確保に成功しました。
 

Re: メモリが1/3しか使えない?

 投稿者:matsu  投稿日:2014年12月 9日(火)22時23分12秒
返信・引用
  > No.690[元記事へ]

また自己レスで恐縮です。

http://ww1.microchip.com/downloads/jp/DeviceDoc/jp559023.pdf
を参照して,

__eds__ unsigned short dat [32768] __attribute__((eds));
のように宣言(Global変数でもauto変数でも大丈夫なようです)して,

dat[32767]=32767;
char temp[100];
sprintf(temp,"%5u  ",dat[32767]);
lcd_putstr(temp);

としたら,無事に32767が表示されました。
64KBの配列確保に成功しました。

__eds__ int var_a __attribute__((space(prog)));
__eds__ int var_b [10] __attribute__((eds));
__eds__ int *var_c;
__eds__ int *__eds__ *var_d __attribute__((space(psv)));

の様にサンプルがありましたが,space(prog), space(psv)は,
同意身になりますでしょうか?





> 自己レスですが,
> http://ww1.microchip.com/downloads/jp/DeviceDoc/39733A_JP.pdf
> を見ると,32KB EDS Windowを介して切り替えてアクセスような・・・。
> とすると,C言語では扱うのは難しいでしょうか?
>
>
> > nekosan様,
> > いつも丁寧に教えていただき,ありがとうございます。
> > また,アドバイスいただけませんでしょうか。
> >
> > PIC24FJ128GB206
> > Pins 64
> > Program Memory 128K
> > SRAM 96K
> >
> > を使用しています。
> > RAMにデータをとりためて,USBで転送するプログラムを開発中です。
> >
> > それで,グローバル変数で,
> > char temp[80000];
> > などとして,大きなメモリを取りたいのです。
> > プログラムそのものは大きくなく,使用するメモリもその他は
> > ほとんどありません。
> >
> > それで,
> > Project Properties
> > を開いて,
> >
> > XC16-gcc
> > Memory model
> > を選択し,
> >
> > Code model   Large
> > Data model   Large
> > Scalar model Large
> > Allow arrays larger than 32K にチェック
> >
> > にしたところ,
> > char temp[30450];
> > 位までは,グローバル変数を取ることができました。
> > しかし,下のように,ほとんどstackエリアがなく,これではプログラムが
> > 動作しません。見ると,スタックエリアの最大アドレスは,7fffになっている
> > ようです。つまり,32Kバイト。メモリは0x18000バイトつまり,96Kバイトも
> > あるのに,メモリエンドが全体の1/3ということになります。
> > (下のように,RAMは31%しか使用できていません)
> > なんとか,大きなグローバル変数の配列を確保したいのですが,
> > ご教授いただけませんでしょうか?
> >
> >
> >
> > CLEAN SUCCESSFUL (total time: 650ms)
> > make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
> > make[1]: Entering directory 'L:/MPLABXProjects/141118 matsu/usbhost_test_for_chassisdynamo_easy.X'
> > make  -f nbproject/Makefile-default.mk dist/default/production/usbhost_test_for_chassisdynamo_easy.X.production.hex
> > make[2]: Entering directory 'L:/MPLABXProjects/141118 matsu/usbhost_test_for_chassisdynamo_easy.X'
> > "C:\Program Files (x86)\Microchip\xc16\v1.23\bin\xc16-gcc.exe"   lcd.c  -o build/default/production/lcd.o  -c -mcpu=24FJ128GB206  -MMD -MF "build/default/production/lcd.o.d"      -mno-eds-warn  -g -omf=elf -mlarge-code -mlarge-data -mlarge-scalar -menable-large-arrays -O0 -I"Microchip/Include" -I"." -msmart-io=1 -Wall -msfr-warn=off
> > "C:\Program Files (x86)\Microchip\xc16\v1.23\bin\xc16-gcc.exe"   usbhost_test.c  -o build/default/production/usbhost_test.o  -c -mcpu=24FJ128GB206  -MMD -MF "build/default/production/usbhost_test.o.d"      -mno-eds-warn  -g -omf=elf -mlarge-code -mlarge-data -mlarge-scalar -menable-large-arrays -O0 -I"Microchip/Include" -I"." -msmart-io=1 -Wall -msfr-warn=off
> > "C:\Program Files (x86)\Microchip\xc16\v1.23\bin\xc16-gcc.exe"   -o dist/default/production/usbhost_test_for_chassisdynamo_easy.X.production.elf  build/default/production/lcd.o build/default/production/usbhost_test.o      -mcpu=24FJ128GB206        -omf=elf -Wl,--local-stack,--defsym=__MPLAB_BUILD=1,,--script=p24FJ128GB206.gld,--stack=16,--check-sections,--data-init,--pack-data,--handles,--isr,--no-gc-sections,--fill-upper=0,--stackguard=16,--no-force-link,--smart-io,-Map="dist/default/production/usbhost_test_for_chassisdynamo_easy.X.production.map",--report-mem
> > c:\program files (x86)\microchip\xc16\v1.23\bin\bin\..\bin/elf-ld.exe Error: Not enough memory for stack (32 bytes needed, 20 bytes available)
> >
> >
> > Program Memory  [Origin = 0x200, Length = 0x155f8]
> >
> > section                    address   length (PC units)   length (bytes) (dec)
> > -------                    -------   -----------------   --------------------
> > .text                        0x200               0xc52          0x127b  (4731)
> > .const                       0xe52                0x12            0x1b  (27)
> > .text                        0xe64               0x4ce           0x735  (1845)
> > .dinit                      0x1332                0xca           0x12f  (303)
> > .init.delay32               0x13fc                0x1c            0x2a  (42)
> >
> >                      Total program memory used (bytes):         0x1b24  (6948) 5%
> >
> >
> > Data Memory  [Origin = 0x800, Length = 0x18000]
> >
> > section                    address      alignment gaps    total length  (dec)
> > -------                    -------      --------------    -------------------
> > .bss                         0x800                   0          0x76f2  (30450)
> > .data                       0x7ef2                   0            0xf0  (240)
> > .bss                        0x7fe2                   0             0x8  (8)
> > .data                       0x7fea                   0             0x2  (2)
> >
> >                         Total data memory used (bytes):         0x77ec  (30700) 31%
> >
> >
> > Dynamic Memory Usage
> >
> > region                     address                      maximum length  (dec)
> > ------                     -------                      ---------------------
> > heap                             0                                   0  (0)
> > stack                       0x7fec                                0x14  (20)
> >
> >                         Maximum dynamic memory (bytes):           0x14  (20)
> >
> > make[2]: *** [dist/default/production/usbhost_test_for_chassisdynamo_easy.X.production.hex] Error 255
> > make[1]: *** [.build-conf] Error 2
> >
> >
> >
 

Re: メモリが1/3しか使えない?

 投稿者:matsu  投稿日:2014年12月 9日(火)15時49分46秒
返信・引用
  > No.689[元記事へ]

自己レスですが,
http://ww1.microchip.com/downloads/jp/DeviceDoc/39733A_JP.pdf
を見ると,32KB EDS Windowを介して切り替えてアクセスような・・・。
とすると,C言語では扱うのは難しいでしょうか?


> nekosan様,
> いつも丁寧に教えていただき,ありがとうございます。
> また,アドバイスいただけませんでしょうか。
>
> PIC24FJ128GB206
> Pins 64
> Program Memory 128K
> SRAM 96K
>
> を使用しています。
> RAMにデータをとりためて,USBで転送するプログラムを開発中です。
>
> それで,グローバル変数で,
> char temp[80000];
> などとして,大きなメモリを取りたいのです。
> プログラムそのものは大きくなく,使用するメモリもその他は
> ほとんどありません。
>
> それで,
> Project Properties
> を開いて,
>
> XC16-gcc
> Memory model
> を選択し,
>
> Code model   Large
> Data model   Large
> Scalar model Large
> Allow arrays larger than 32K にチェック
>
> にしたところ,
> char temp[30450];
> 位までは,グローバル変数を取ることができました。
> しかし,下のように,ほとんどstackエリアがなく,これではプログラムが
> 動作しません。見ると,スタックエリアの最大アドレスは,7fffになっている
> ようです。つまり,32Kバイト。メモリは0x18000バイトつまり,96Kバイトも
> あるのに,メモリエンドが全体の1/3ということになります。
> (下のように,RAMは31%しか使用できていません)
> なんとか,大きなグローバル変数の配列を確保したいのですが,
> ご教授いただけませんでしょうか?
>
>
>
> CLEAN SUCCESSFUL (total time: 650ms)
> make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
> make[1]: Entering directory 'L:/MPLABXProjects/141118 matsu/usbhost_test_for_chassisdynamo_easy.X'
> make  -f nbproject/Makefile-default.mk dist/default/production/usbhost_test_for_chassisdynamo_easy.X.production.hex
> make[2]: Entering directory 'L:/MPLABXProjects/141118 matsu/usbhost_test_for_chassisdynamo_easy.X'
> "C:\Program Files (x86)\Microchip\xc16\v1.23\bin\xc16-gcc.exe"   lcd.c  -o build/default/production/lcd.o  -c -mcpu=24FJ128GB206  -MMD -MF "build/default/production/lcd.o.d"      -mno-eds-warn  -g -omf=elf -mlarge-code -mlarge-data -mlarge-scalar -menable-large-arrays -O0 -I"Microchip/Include" -I"." -msmart-io=1 -Wall -msfr-warn=off
> "C:\Program Files (x86)\Microchip\xc16\v1.23\bin\xc16-gcc.exe"   usbhost_test.c  -o build/default/production/usbhost_test.o  -c -mcpu=24FJ128GB206  -MMD -MF "build/default/production/usbhost_test.o.d"      -mno-eds-warn  -g -omf=elf -mlarge-code -mlarge-data -mlarge-scalar -menable-large-arrays -O0 -I"Microchip/Include" -I"." -msmart-io=1 -Wall -msfr-warn=off
> "C:\Program Files (x86)\Microchip\xc16\v1.23\bin\xc16-gcc.exe"   -o dist/default/production/usbhost_test_for_chassisdynamo_easy.X.production.elf  build/default/production/lcd.o build/default/production/usbhost_test.o      -mcpu=24FJ128GB206        -omf=elf -Wl,--local-stack,--defsym=__MPLAB_BUILD=1,,--script=p24FJ128GB206.gld,--stack=16,--check-sections,--data-init,--pack-data,--handles,--isr,--no-gc-sections,--fill-upper=0,--stackguard=16,--no-force-link,--smart-io,-Map="dist/default/production/usbhost_test_for_chassisdynamo_easy.X.production.map",--report-mem
> c:\program files (x86)\microchip\xc16\v1.23\bin\bin\..\bin/elf-ld.exe Error: Not enough memory for stack (32 bytes needed, 20 bytes available)
>
>
> Program Memory  [Origin = 0x200, Length = 0x155f8]
>
> section                    address   length (PC units)   length (bytes) (dec)
> -------                    -------   -----------------   --------------------
> .text                        0x200               0xc52          0x127b  (4731)
> .const                       0xe52                0x12            0x1b  (27)
> .text                        0xe64               0x4ce           0x735  (1845)
> .dinit                      0x1332                0xca           0x12f  (303)
> .init.delay32               0x13fc                0x1c            0x2a  (42)
>
>                      Total program memory used (bytes):         0x1b24  (6948) 5%
>
>
> Data Memory  [Origin = 0x800, Length = 0x18000]
>
> section                    address      alignment gaps    total length  (dec)
> -------                    -------      --------------    -------------------
> .bss                         0x800                   0          0x76f2  (30450)
> .data                       0x7ef2                   0            0xf0  (240)
> .bss                        0x7fe2                   0             0x8  (8)
> .data                       0x7fea                   0             0x2  (2)
>
>                         Total data memory used (bytes):         0x77ec  (30700) 31%
>
>
> Dynamic Memory Usage
>
> region                     address                      maximum length  (dec)
> ------                     -------                      ---------------------
> heap                             0                                   0  (0)
> stack                       0x7fec                                0x14  (20)
>
>                         Maximum dynamic memory (bytes):           0x14  (20)
>
> make[2]: *** [dist/default/production/usbhost_test_for_chassisdynamo_easy.X.production.hex] Error 255
> make[1]: *** [.build-conf] Error 2
>
>
>
 

メモリが1/3しか使えない?

 投稿者:matsu  投稿日:2014年12月 9日(火)13時09分46秒
返信・引用
  nekosan様,
いつも丁寧に教えていただき,ありがとうございます。
また,アドバイスいただけませんでしょうか。

PIC24FJ128GB206
Pins 64
Program Memory 128K
SRAM 96K

を使用しています。
RAMにデータをとりためて,USBで転送するプログラムを開発中です。

それで,グローバル変数で,
char temp[80000];
などとして,大きなメモリを取りたいのです。
プログラムそのものは大きくなく,使用するメモリもその他は
ほとんどありません。

それで,
Project Properties
を開いて,

XC16-gcc
Memory model
を選択し,

Code model   Large
Data model   Large
Scalar model Large
Allow arrays larger than 32K にチェック

にしたところ,
char temp[30450];
位までは,グローバル変数を取ることができました。
しかし,下のように,ほとんどstackエリアがなく,これではプログラムが
動作しません。見ると,スタックエリアの最大アドレスは,7fffになっている
ようです。つまり,32Kバイト。メモリは0x18000バイトつまり,96Kバイトも
あるのに,メモリエンドが全体の1/3ということになります。
(下のように,RAMは31%しか使用できていません)
なんとか,大きなグローバル変数の配列を確保したいのですが,
ご教授いただけませんでしょうか?



CLEAN SUCCESSFUL (total time: 650ms)
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory 'L:/MPLABXProjects/141118 matsu/usbhost_test_for_chassisdynamo_easy.X'
make  -f nbproject/Makefile-default.mk dist/default/production/usbhost_test_for_chassisdynamo_easy.X.production.hex
make[2]: Entering directory 'L:/MPLABXProjects/141118 matsu/usbhost_test_for_chassisdynamo_easy.X'
"C:\Program Files (x86)\Microchip\xc16\v1.23\bin\xc16-gcc.exe"   lcd.c  -o build/default/production/lcd.o  -c -mcpu=24FJ128GB206  -MMD -MF "build/default/production/lcd.o.d"      -mno-eds-warn  -g -omf=elf -mlarge-code -mlarge-data -mlarge-scalar -menable-large-arrays -O0 -I"Microchip/Include" -I"." -msmart-io=1 -Wall -msfr-warn=off
"C:\Program Files (x86)\Microchip\xc16\v1.23\bin\xc16-gcc.exe"   usbhost_test.c  -o build/default/production/usbhost_test.o  -c -mcpu=24FJ128GB206  -MMD -MF "build/default/production/usbhost_test.o.d"      -mno-eds-warn  -g -omf=elf -mlarge-code -mlarge-data -mlarge-scalar -menable-large-arrays -O0 -I"Microchip/Include" -I"." -msmart-io=1 -Wall -msfr-warn=off
"C:\Program Files (x86)\Microchip\xc16\v1.23\bin\xc16-gcc.exe"   -o dist/default/production/usbhost_test_for_chassisdynamo_easy.X.production.elf  build/default/production/lcd.o build/default/production/usbhost_test.o      -mcpu=24FJ128GB206        -omf=elf -Wl,--local-stack,--defsym=__MPLAB_BUILD=1,,--script=p24FJ128GB206.gld,--stack=16,--check-sections,--data-init,--pack-data,--handles,--isr,--no-gc-sections,--fill-upper=0,--stackguard=16,--no-force-link,--smart-io,-Map="dist/default/production/usbhost_test_for_chassisdynamo_easy.X.production.map",--report-mem
c:\program files (x86)\microchip\xc16\v1.23\bin\bin\..\bin/elf-ld.exe Error: Not enough memory for stack (32 bytes needed, 20 bytes available)


Program Memory  [Origin = 0x200, Length = 0x155f8]

section                    address   length (PC units)   length (bytes) (dec)
-------                    -------   -----------------   --------------------
.text                        0x200               0xc52          0x127b  (4731)
.const                       0xe52                0x12            0x1b  (27)
.text                        0xe64               0x4ce           0x735  (1845)
.dinit                      0x1332                0xca           0x12f  (303)
.init.delay32               0x13fc                0x1c            0x2a  (42)

                     Total program memory used (bytes):         0x1b24  (6948) 5%


Data Memory  [Origin = 0x800, Length = 0x18000]

section                    address      alignment gaps    total length  (dec)
-------                    -------      --------------    -------------------
.bss                         0x800                   0          0x76f2  (30450)
.data                       0x7ef2                   0            0xf0  (240)
.bss                        0x7fe2                   0             0x8  (8)
.data                       0x7fea                   0             0x2  (2)

                        Total data memory used (bytes):         0x77ec  (30700) 31%


Dynamic Memory Usage

region                     address                      maximum length  (dec)
------                     -------                      ---------------------
heap                             0                                   0  (0)
stack                       0x7fec                                0x14  (20)

                        Maximum dynamic memory (bytes):           0x14  (20)

make[2]: *** [dist/default/production/usbhost_test_for_chassisdynamo_easy.X.production.hex] Error 255
make[1]: *** [.build-conf] Error 2


 

Re: たぶんタイミングでしょうね。

 投稿者:nekosan  投稿日:2014年12月 4日(木)00時14分30秒
返信・引用
  > No.687[元記事へ]

初心者さんへのお返事です。

> nekosanさま
> ロータリースイッチの接触のわずかなズレのためでしょうね。
> 驚きです。
>
> PWRTE ONで72ミリ秒遅延するようなので、「あっ」という間には違いないんですが。


電源部分がロータリースイッチになってるんですね。

電源のチャタリングは、確かに動作が厄介になりそう
ですねぇ。
 

レンタル掲示板
/79