H8 3048F のITU0を割り込みベクターを使った
割り込みをかけて、H/L H/Lと出力するプログラムを組みました。
出力を周波数カウンタにかけてみたところ76KHzと表示されました。
割り込み周期は1/φです。
3048 16MHzでは76KHzが最高となるんでしょうか?
実験に使ったソースは↓です。
コンパイラは秋月の物です。
#include <3048f.h>
int lamp;
#pragma interrupt(timer1INT)
void timer1INT(void)
{
char dammy;
dammy = ITU0.TSR.BYTE; /* dammy read */
ITU0.TSR.BYTE = 0x00;
if ( lamp == 0 ) {
lamp=1;
P5.DR.BYTE=0xff;
return;
}
if ( lamp == 1 ) {
lamp=0;
P5.DR.BYTE=0;
return;
}
}
void main (void)
{
ITU0.TCR.BYTE = 0x20; /* 00100000 */
ITU0.TSR.BYTE = 0x00;
ITU0.GRA = 0x01;
ITU0.TCNT = 0x00;
ITU.TSTR.BIT.STR0 = 1;
ITU0.TIER.BYTE = 0x01;
P5.DDR = 0xff; /* port5出力に設定 表示LED */
P5.PCR.BYTE = 0x00; /* port5プルアップoff */
lamp=0;
E_INT();
while(1)
{
}
}