Microchip 社の dspic33 のプログラミングを開始していますが、extern 変数を返そうとすると問題が発生します。私のコードは3つのファイルに分かれており、次のようなものです:
main.c
#include <stdio.h> /*printf definition ... */
#include "clock.h"
volatile unsigned long count = 0;
int16_t main(void)
{
clock_init();
while(1)
{
if(flag)
{
printf("MAIN:count = %lu clock_time %lu",count, clock_time());
flag = 0;
}
}
return 0;
}
clock.h
...
extern volatile unsigned long count;
...
clock.c
#include "clock.h"
void __attribute__((__interrupt__, no_auto_psv)) _T1Interrupt(void)
{
count++;
flag=1;
IFS0bits.T1IF = 0;
}
unsigned long clock_time(void)
{
return count;
}
出力は次のようになります。
MAIN:count = 1 clock_time : 590106798
MAIN:count = 2 clock_time : 590106798
MAIN:count = 3 clock_time : 590106798
等々...
なぜ clock_time() が count の正しい値を返さないのか疑問に思っています。私が間違っていることを誰かが知っていますか?