:::

論壇索引


Board index » All Posts




IIC通訊異常的情形...
資深會員
資深會員


我現在有個問題
若slave裝置沒接
或是原本有接,通訊到一半突然中斷
(裝置損壞,雜訊干擾...)
這時master等待一段時間沒收到回應後要中斷通訊
那麼有必要先發出停止條件嗎?

我現在一顆master控制兩顆slave
一顆是DAC,一顆是同型PIC
目前跟slave的pic通訊到一半時突然中斷(我故意的)
結果master就死在不知道哪個迴圈裡出不來了
不知道是不是我沒丟停止條件的關係...

各個範例中看到的都是正常通訊狀態
沒有寫說如果通訊異常時該如何處理
是直接離開通訊副程式
還是要再做哪些事情才能離開通訊?

發表於: 2004/10/1 17:36
頂部


Re: dspic中的 frame pointer 是要做何用
版主
版主


1. W14 can be used as a stack frame pointer (FP)
2. LNK #N ; Allocates (N-2)/2 words of local storage
- W14 (prior stack FP) is stacked; W15 is incremented
- W15 value saved in W14 (new FP, start of local storage)
- W15 advanced by N/2 words (end of local storage + 1 word) (i.e. N must be an even number to keep stack word aligned)
- [W14 + y] accesses local storage for function call where: 0 <= y <= N-2
- W14 with a -ve offset accesses parameters from calling routine
3. ULNK ; De-allocates temporary storage space
- Restores W14 (start of local storage) to W15
- W15 decremented then stack popped into W14 (prior stack FP).

發表於: 2004/10/1 16:57
頂部


Re: dspic中的 frame pointer 是要做何用
版主
版主


假設您跳到了某一個副程式,此時,W15 (堆疊指標)會指到下一個可用的位置 ( 以byte為單位)。
如果此時您下了LNK #0x4 這個指令的話,會發生以下的事情:
1、W14的值會先被存在堆疊中,W15指到下一個可用的位置,亦即W15+2-> W15
2、接著,W14會等於新的W15的值。
3、然後,W15+4-> W15
也就是說,您可以利用LNK #0X4,在堆疊區開出4個BYTE的,通常是暫時性的,儲存空間。

發表於: 2004/10/1 16:40
頂部


Re: 30f2010燒入後,程式無法正常執行
版主
版主


忘了問,是否有使用到 QEI ???

在ICD2 Debug Mode 暫存器 "ADPCFG" 會被設定為 0xFFFF,PORTB 及 QEI 功能可以呈現出來。
但在 Stand Alone Mode 下,Power-On Reset 會將暫存器 "ADPCFG" 清除為0x0000,結果會將導致QEI無法在類比模式的輸入PIN工作。

解決方式是將PORTB設為數位模式,方式如下:
ADPCFGbits = 0x00nn; (where nn is the value for configuring the PORTB pins to digital)

發表於: 2004/10/1 15:56
頂部


Re: 30f2010燒入後,程式無法正常執行
版主
版主


你的問題公司的同事 林建益及何仁杰 分別用 ICD2 測試30F2010 的都可以debug及個別燒錄單獨執行。
可否打電話到 Microchip 0800-717-718 來討論你的問題。

發表於: 2004/10/1 14:51
頂部


Re: 有關AD轉換器的指令想請各位指導
版主
版主


您要查一份類似叫MPLAB Cxx Reference Guide的資料,再搭配所用PIC的data sheet,才看得懂。

發表於: 2004/10/1 12:08
頂部


Re: 0~9999計數程式,請教各位
版主
版主


良心建議:

1、不要post這麼一大坨程式上來。也許別人有時間幫您debug;但我是沒有。建議先自行研究,找出可能有問題的地方,再丟一小段程式上來問問題。

2、如果是初學者,可到書局買本中文書來入門;或者參加本公司舉辦的教育訓練;或者自行從右方「教材及講義」抓資料自行參考。

發表於: 2004/10/1 12:06
頂部


有關AD轉換器的指令想請各位指導
新會員
新會員


嗯....我是初學者,最近在看一些資料
剛好看到一段AD轉換器的指令
有些不了解,想請各位指點...

==C語言===

OpenADC( ADC_FOSC_2 & ADC_RIGHT_JUST & ADC_1ANA_2REF,ADC_CH0 & ADC_INT_OFF );

發表於: 2004/10/1 11:53
頂部


Re: 0~9999計數程式,請教各位
初級會員
初級會員


感謝版主的友善回應,但因敝人對pic摸索中.只能參照書本範例截取片段,現改寫如下
但還是有問題,電路為RB0~7接7 SEG (SINK MODE),RC 4~7 接PNP以推動 7SEG
煩請再不吝賜教

;0計數9 ;
LIST P=16C73 ;
W_STK EQU 0X20 ;
STATUS_STK EQU 0X21 ;
PCLATH_STK EQU 0X22 ;
TMPCNT EQU 0X24 ;
CNT EQU 0X25 ;
SCANCH EQU 0X26 ;
CH EQU 0X27 ;
TNR0H EQU 0X28 ;
#DEFINE _DIGIT_ADDR 0X30 ;

ORG 00H ;
GOTO START ;
ORG 04H ;
MOVF STATUS,W ;
CLRF STATUS ;
MOVWF STATUS_STK ;
MOVF PCLATH,W ;
MOVWF PCLATH_STK ;
CLRF PCLATH ;
BCF STATUS,RP0 ;
BTFSC PIR2,CCP2IF ;
GOTO INIT ;

END_INT:
BCF STATUS,RP0 ;
MOVF PCLATH_STK,W ;
MOVWF PCLATH ;
MOVF STATUS_STK,W ;
MOVWF STATUS ;
MOVF W_STK,W ;
RETFIE ;

START CALL PIC_INIT ;
BSF INTCON,PEIE ;
BSF INTCON,GIE ;


INIT MOVLW 0FFH ; RESET RB
MOVWF RB ;..
MOVWF RC ;
MOVLW DSPTB ; 將TABLE表資料,載入TEMP register
MOVWF TABN ;..
MOVF TABN,W ;..
MOVWF TEMP ;..
MOVWF TEMP1 ;..
MOVWF TEMP2 ;..
MOVWF TEMP3 ;..
MOVLW 0AH ; 設定計數器CNTT=0A
MOVWF CNTT ;..
MOVLW 64H ; 設定計數器CNTH=64H
MOVWF CNTH ;..
MOVLW 03H ; 設定計數器CNTK(K1 K2)=03E8H
MOVWF CNTK1 ;..
MOVLW 0E8H ;
MOVWF CNTK2 ;..

MOVLW 00 ; 設定計數器CNT9X=00
MOVWF CNT9A ; ..
MOVWF CNT9B ; ..
MOVWF CNT9C ; ..
MOVWF CNT9D ; ..
MOVLW 01H ; 被減數 be applied for ROUND4
MOVWF ASS ; ..

ZERO1 MOVF TABN,W ; 歸零
MOVWF TEMP2 ; ..
MOVWF TEMP1 ; ..
MOVWF TEMP ; ..

ROUND1 CALL RESET ;
MOVLW 0AH ; 設定比較器COMP=0A
MOVWF COMP ;..
MOVLW 70H ; 設定SCAN個位數
MOVWF SCAND ;..
MOVF SCAND,W ; 將SCANNER 設定RA ENABLE
MOVWF RC ;..
MOVF TEMP,W ; (將個位數PC(PROGRAM COUNTER)移至W register
CALL LDTAB ; 載入table表至PC
MOVWF RB ; 顯示TABLE表數值至個位數 7 seg)
;GOTO END_INT ;
;RETURN ;

INCF TEMP ; 每次執行,TEMP數值+1
INCF CNT9A ; 每次執行,CNT9A數值+1
MOVF CNT9A,W ; (XOR運算"CNT9A&COMP"後
XORWF COMP ; ,存入COMP
BTFSS 03H,02 ; ZF旗標為"0"則跳行,否則繼續)
GOTO ROUND1 ;
GOTO INIT ;



RESET MOVLW 0FFH ; RESET RB
MOVWF RB ;..
RETURN ;

PIC_INIT
;Bank1
CLRF INTCON ;
;BSF INTCON,T0IE ;
BSF STATUS,RP0 ;
MOVLW B'00000000' ;
MOVWF TRISB ;
MOVLW B'00000000' ;
MOVWF TRISC ;
CLRF PIE2 ;
BSF PIE2,CCP2IE ;
;Bank0
BCF STATUS,RP0 ;
MOVLW B'11111111' ;
MOVWF RB ;
MOVLW 0XFF ;
MOVWF RC ;
MOVLW B'00110001' ;
MOVWF T1CON ;
MOVLW B'00001000' ;
MOVWF CCP2CON ;
MOVLW 0XF4 ;
MOVWF CCPR2H ;
MOVLW 0X24 ;
MOVWF CCPR2L ;
RETURN ;

LDTAB MOVWF PCL ;
ORG 0E0H ;

RETLW B'00001000' ;0
RETLW B'11101011' ;1
RETLW B'01010000' ;2
RETLW B'11000000' ;3
RETLW B'10000011' ;4
RETLW B'10000100' ;5
RETLW B'00000100' ;6
RETLW B'10001001' ;7
RETLW B'00000000' ;8
RETLW B'10000001' ;9
RETLW 00 ;

發表於: 2004/10/1 11:36
頂部


Re: Message[306] :Crossing page boundary -- ensure page bits are set
新會員
新會員


謝謝各位先進!
後輩有使用"PAGESEL SUB_XXX"(in page 1 from page 0),可以讓程式正確GOTO到你想去的PAGE,但是若你下面的程式要再GOTO(in PAGE 1 )的話,還要再一次把PAGE調回來,跟大家分享一下,謝謝大家。

發表於: 2004/10/1 11:25
頂部



« 1 ... 7172 7173 7174 (7175) 7176 7177 7178 ... 7289 »



:::

Microchip連結

http://elearning.microchip.com.tw/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

課程 - 台北教育訓練中心
課程 - 新竹教育訓練中心
課程 - 高雄教育訓練中心
教育訓練中心介紹
購買 - 實驗工具
臺灣實驗板介紹與資源