[][mobile][Homepage][BBS][Blog][YouTube][asablo]

過去の記事の検索が簡単にできるよ (・∀・) 例 ランチャー9
カスタム検索

PIC16F877Aボード(3)2010/03/13 23:41:37


keep generated startup.asのチェックを入れるとデバッグできるようになった

I/Oテストが済んで、LCDバックライトの明暗コントロール部分のPWM制御を実装。LCDもデバッグ用のバックライト無しから本番用のブルーバックライトにしてテスト。LCDのコントラスト調整もソフトウェアで行おうとしたが、マルツが販売しているリンクマンのTC1602E-13TというLCDは、5Vで使用するとき、コントラストが殆どグラウンドなので、いつもの可変抵抗で済ませる事にした。
------------------interrupt
void interrupt handler( void ){
if (CCP1IF == 1){ //1ms
++ True_Timer_10ms;
if (True_Timer_10ms > 6000L) True_Timer_10ms = 0;
CCP1IF =0;
}
return;
}
-------------------main
//Timer1 settings
TMR1CS = 0; //Use internal 1/4 clock (3.2MHz 312.5ns)
T1CKPS0 = 1;
T1CKPS1 = 1; //Devide per 8 (400KHz 2.5us)
T1SYNC = 0; //Synchronize
TMR1ON = 1; //Start TIMER1
TMR1L = 0; //TIMRT1 clear
TMR1H = 0; //TIMRT1 clear

//1msでは処理が間に合わないばあいがある 1ms is 400counts(0x0190)
//10ms 4000 counts (0x0fa0)
CCP1CON = 0B00001011; //Compare clear if equal
CCPR1L = 0xA0; //
CCPR1H = 0x0F; //
CCPR2L = 0xff; // not used
CCPR2H = 0xff; // not used
//Interrupt settings
CCP1IF = 0;
CCP1IE = 1;

PEIE = 1; //Use Peripheral interrupt
GIE = 1; //Use General interrupt

タイマーの部分の抜粋。タイマーの部分の正確な1ms割り込みルーチンを作成。1msではちょっと色々と問題が多いので、10ms単位で時間を扱うようにした。
1時間動かしているが、さすが高精度の発振器だ。全く狂わない。

PIC16F877Aボード(3)

16F877AはMPLABでオンラインデバッグできてとても便利だが、色々やっているうちに、癖が分ってきた。Configレジスタでdebugを有効にするのも必要だが、オプションのリンカ設定で、keep generated startup.asという項目にチェックを入れて、ようやくデバッグができる様になった。まだ詳しい事は調べていないが、Pickit2でデバッグモードを使うときはこれをしないときちんと機能しない。それと、デバッガーで書いた場合は、スタンドアロンで動かす場合に、改めてビルドしなおして、プログラマで書く必要がある。

※追記
上記チェックボックスを一旦チェックして、ビルドし、その後このチェックを外してビルドして正常に動く事が分った。これってバグなのかも知れないが・・・

今の作っているものが完成したら、pickit2をつかったデバッグについて纏めてみたいと思う。

※追記2
Hitech PICC Pro Lite modeではversion9.70にすると問題が無くなった。






Google
www Blog HP BBS


air_variableサイトをまとめて検索 
カスタム検索
[][admin][mobile][Homepage][BBS][Blog][YouTube][asablo]