上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--.--.-- -- l スポンサー広告 l top
その後いろいろ検討してみたのですが、どうもPIC32MXといえどもソフトだけではichigojam出力をキャプチャしながらカラーNTSCは出せそうもない感じです。オーバクロックで動かしたとしても1PIXELあたりアセンブラ10数命令程度しかとれず、ある程度コードも考えてみたのですがその中でichigojamの出力をGPIOでサンプルし、0,1を判別し、座標に対応したカラーデータをテーブルから取り出して、PORTBをそのデータ値で振る。。。。やっぱり入りそうにないです。。。
 
そこでカラーに関して専用ICを使うことにしました。物はコンポジットエンコーダ CXA1645Pです。これならカラ―バーストとカラー出力をお任せできるのでソフトは一気に楽になります。1000円価格アップで基板も大きくなりますがいたしかたありません。物はネット購入したので週末にはんだ付けしたいと思います。
「スポンサードリンク」

style="display:block"
data-ad-client="ca-pub-0620260288102702"
data-ad-slot="9773401572"
data-ad-format="auto">




 
平行してichigojamの同期信号でPIC32MXの割込みをかける実験をしてみました。LCDタイプではキャプチャ、表示、他の処理を順番にできたので割込みを使わずポーリングだけでやっていましたが、今回の物はキャプチャ+表示に割込みを使わないと「他の処理」ができなくなるはずです。なお他の処理とは通信と通信内容の解釈実行です。
 
PIC32MXの外部割込みを使うのですが、これが中々うまくいかず、いろんなフォーラムサイトのQ&Aを調べてようやく動くようになりました。フォアグラウンドでPB0を、割込みでPB1をトグル動作させるだけのものですが、苦労したので備忘録としてソースをコピーします。

/*
* File: main.c
*
* PIC32MX250F128B EXT4 test
* Created on 2015/06/18
*/

#include
#include
#include
#include


#pragma config PMDL1WAY = OFF
#pragma config IOL1WAY = OFF
#pragma config FUSBIDIO = OFF
#pragma config FVBUSONIO = OFF
#pragma config FPLLIDIV = DIV_1
#pragma config FPLLMUL = MUL_15
#pragma config FPLLODIV = DIV_1
#pragma config FNOSC = FRCPLL
#pragma config POSCMOD = XT
#pragma config OSCIOFNC = OFF
#pragma config FPBDIV = DIV_1
#pragma config FCKSM = CSDCMD
#pragma config WDTPS = PS1
#pragma config WINDIS = OFF
#pragma config FWDTEN = OFF
#pragma config FWDTWINSZ = WINSZ_50
#pragma config DEBUG = OFF
#pragma config JTAGEN = OFF
#pragma config ICESEL = RESERVED
#pragma config PWP = OFF
#pragma config BWP = OFF
#pragma config CP = OFF

//************ MAIN ******************

int main() {

ANSELB = 0;
ANSELA = 0;
TRISB = 0x0000000; // RB3-0 VIDEO OUTPUT
TRISA = 0x0000003; // RA1-0 VISEO INPUT
ODCA = 0;

DDPCONbits.JTAGEN=0;
INTEnableSystemMultiVectoredInt();
mINT4SetIntPriority(6);
mINT4SetEdgeMode(0);
mINT4IntEnable(1);
IFS0SET=_IFS0_INT4IF_MASK;

while(1) {
LATBbits.LATB0=~LATBbits.LATB0;
}
}

//************ EXT4 Interrupt handler ******************

void __ISR(_EXTERNAL_4_VECTOR,IPL6SOFT) External_Interrupt_4(void)
{
LATBbits.LATB1=~LATBbits.LATB1;
mINT4ClearIntFlag();
}


次は土曜日の予定ですが、時間が取れるかな?

それではまたです。


2015.06.18 Thu l ICHIGOJAM l コメント (0) l top

コメント

コメントの投稿












上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。