• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
  • slider image 488
  • slider image 491
:::


Browsing this Thread:   1 Anonymous Users






Re: I2C master mode 的 clock 為什麼不會改變
#10
資深會員
資深會員


查看用戶資訊
Ryangc 版主
4/2 有mail 給你了說
有收到嗎

發表於: 2005/4/5 22:18
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: I2C master mode 的 clock 為什麼不會改變
#9
版主
版主


查看用戶資訊

發表於: 2005/4/1 22:06
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: I2C master mode 的 clock 為什麼不會改變
#8
資深會員
資深會員


查看用戶資訊
謝謝 jubel幫忙解釋

目前clock 頻率還是無法改變

我的測試程式是兩個pic16f873, 一邊master 一邊slave
master 傳送 one byte data給 slave
slave 確認data 是預設資料時 則點亮 LED

事實上測試程式已經可以run, LED 也會亮, 確定傳輸有成功\r
可是頻率很怪的問題一值存在 不知哪裡不對

在板上貼完整程式有點太花
版主 和 jubel 大大 願意幫我看看嗎
把測試程式mail 給你們check 一下
C 寫的程式

發表於: 2005/4/1 20:00
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: I2C master mode 的 clock 為什麼不會改變
#7
版主
版主


查看用戶資訊
版主年紀大了,老花眼沒看清楚是十進制的 56 唉!

發表於: 2005/4/1 18:14
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: I2C master mode 的 clock 為什麼不會改變
#6
資深會員
資深會員


查看用戶資訊
好像不是吧?!
他把56 (B'00111000')丟進SSPCON
低四位元1000是設定為MASTER
怎麼會是SLAVE呢?

發表於: 2005/4/1 15:13
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: I2C master mode 的 clock 為什麼不會改變
#5
版主
版主


查看用戶資訊
MOVLW     .56         SSPM3:SSPM0(3-0)=1000I2C master mode,clock=fosc/(4*(SSPADD+1))
BCF     0x03,RP0
MOVWF     SSPCON


以上程式會讓你的I2C 設為 slave mode 當然就無法控制 SCL 的速率。

還有 Bank 切換也檢查一下,感覺怪怪的。

附上一段 I2C Master 設定的程式:
;
;**********************************************************************
;
;   As 
following subroutines perform commonly used I2C functions.
;      
You can use these subroutines for your I2C access
;
;**********************************************************************
;
;*** 
Initial I2Cmodule fot 7-bit I2C Master Mode with 100Kcps @4MHz
;
Init_I2C_Master                 
        BANKSEL    TRISC            
Initial PortC,bit 3 as Input
         bsf    SCL            
RC3 SCL  ,  RC4 SDA
        bsf    SDA         
;         
        
BANKSEL    PORTC
         bsf    SCL            
SCL Hi
         bsf    SDA             
SDA Hi
;    
        
movlw    b'00101000'        I2C Master ModeClock RateFOSC/(4*SSPADD+1)
        
movwf    SSPCON            
;
               
banksel SSPADD
               movlw   .9                 
This gives 100KHz I2C clock 4MHz
        movwf   SSPADD            
; (4MHz/4) / (9+1)= 100KHz
;
             
movlw   b'10000000'     Disable slew rate control,
            
movwf   SSPSTAT            ; and clear status bits
;
             
movlw   b'00000000'     Set SCL,SDA into Ready status
            movwf   SSPCON2          
;     
        return


或可參考右邊的範例程式裡的第12項

發表於: 2005/4/1 13:55
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: I2C master mode 的 clock 為什麼不會改變
#4
資深會員
資深會員


查看用戶資訊
這段程式應該沒問題
我想可能是你其他的程式有動到這幾個值
或是把SSPADD鎖住了
用ICD2除錯模式慢慢找吧...

發表於: 2005/4/1 13:07
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: I2C master mode 的 clock 為什麼不會改變
#3
資深會員
資深會員


查看用戶資訊
參照:

jubel 寫道:
MOVLW .56
BCF 0x03,RP0
MOVWF SSPCON

這三行把它放到這段程式的最後面再試試
建議你不要用movlw .56
用 movlw B'00111000'
這樣分成位元來看比較清楚,也容易除錯


剛剛試了把那3行移到後面, 結果依然一樣
.56 是因為這段程式是copy C compiler 之後的asm程式的關係

發表於: 2005/4/1 9:44
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: I2C master mode 的 clock 為什麼不會改變
#2
資深會員
資深會員


查看用戶資訊
MOVLW .56
BCF 0x03,RP0
MOVWF SSPCON

這三行把它放到這段程式的最後面再試試
建議你不要用movlw .56
用 movlw B'00111000'
這樣分成位元來看比較清楚,也容易除錯

發表於: 2005/4/1 8:45
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


I2C master mode 的 clock 為什麼不會改變
#1
資深會員
資深會員


查看用戶資訊
以下是i2c master mode 初始化的程式 for pic16f873
fosc=16Mhz

=======================================
I2C_Init_MasterMode
BSF TRISC,3
BSF TRISC,4
CLRF SSPSTAT
MOVLW .56 ; SSPM3:SSPM0(3-0)=1000, I2C master mode,clock=fosc/(4*(SSPADD+1))
BCF 0x03,RP0
MOVWF SSPCON
MOVLW .199 ; SSPADD=199 clock=fosc/(4*(SSPADD+1))=16M/(4*(199+1))=20khz
BSF 0x03,RP0
MOVWF SSPADD
CLRF SSPCON2
BCF 0x8C,SSPIE
return
===========================================

SSPADD 用199的話 照計算不是應該只有20kHz嗎?
可是用示波器看, 確是約50khz
試過其他數值, 似乎都不會改變 clock 頻率
是哪裡設的不對嗎??

發表於: 2005/3/31 22:25
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------