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


Browsing this Thread:   1 Anonymous Users




« 1 2 (3)


Re: 關於CLKOUT...
#7
資深會員
資深會員


查看用戶資訊
真要陪笨鴨玩呀??? 3Q , 阿里阿多囉!

下個目標是更改客廳魚缸的恆溫器,
偶已經買了一個300W的 Peltier 冷熱元件,
自己也車好一個鋁冷凝器;(公司有車床 ,方便吧! haha..)
16F506的程式已經成型 ,待測試...

再下個目標是太陽追蹤器, LA 每日陽光譜照,
不利用一下實在可惜耶,也是用 16F506寫 的程式,
已經完成一半, 但是 12V/15W Solar Panel 還沒買.

還有丫, 上星期在垃圾箱撿到一個 60"的 Projection TV,
已經修了好幾天了, 還沒找到故障點 ,但是非常接近了;
不知道有沒有人懂 Projection TV 可以請教的, 哈..哈..
沒辦法 公司太無聊了 只好自己找事做做Lar ..

發表於: 2007/7/13 12:22
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 關於CLKOUT...
#6
資深會員
資深會員


查看用戶資訊
上菜啦.... 請慢用 .....haha ..
這是用12F508 寫的 Dual PWM.還有一些小虫虫..
基本上會Work ,目前暫時丟一邊 ,
又回到10F200 寫的 PWM ,兩個PIC 同步問題也解決了..
明日再上菜 .. 免得漲肚子囉 ..哈..哈..

Sorry , Yahoo 的圖片網已經停用啦 !!!
目前不知如何貼圖了...
上次問版大,,, 結果..沒人鳥偶啦 !! 嗚..嗚..



PIC12F508                             FOR    TBT LAMP    with Dual PWM                                      07-10-2007
    
#include        <p12F508.inc>            ; processor specific variables
ConfigureControls the reset pincode protectoscillator selectionWDT.
    
__CONFIG _MCLRE_OFF _CP_OFF _WDT_OFF &_IntRC_OSC
;*****************************[Defines Variable Assignments]**************** 
  
cblock 0x08
    mark_r            
; For Red PWM MARK  register.
    
space_r            ;For Red PWM SPACE  register.
    
mark_b            ForBlue PWM MARK  register.
    
space_b            ;For Blue PWM SPACE  register.
    
count            ; For delay loop register.
    
count1            ; For delay loop register.
    
count2            ; For delay loop register.
    
count3            ; For Red PWM mark temporary register.
    
count4            ; For Red PWM space temporary register.
    
count5            ; For Blue PWM mark temporary register.
    
count6            ; For  Blue PWM space temporary register.
    
endc
;****************************[Reset Vector]*********************************
    
ORG        0x000            PIC goes here (Origin of codeafter reset.
    
movwf        OSCCAL            Load the oscillator calibration factor.
    
movlw         b'10000111'        Disable wake on pion change and Enable pull-ups resister,max pre-scaler
    OPTION                    
;
    
movlw        b'00001111'        Set GP 01,2,3to an inputGPIO 4,5 to outputs.
    
TRIS        GPIO            GP0UP,GP1 DOWNGP2R+/B-, GP3=R-/B+, GP4RPWM ,GP5=BPWM.
;-----[
Main routine]---------------------------------------------------------
start
    movlw        d
'25'                ;Minimum power setting.
    
movwf        mark_r            ;
    
movwf        mark_b            ;
    
comf        mark_r,w        ;The contents of mark_r register are complemented and stored into w.
    
movwf        space_r            ;Stored w into space_r register for PWM reference.
    
movwf        space_b            ;Stored w into space_b register for PWM reference.
loop
    btfss        GPIO
,0            ;Check GP0 if goes to L.
    goto        
up_r                ;
    
btfss        GPIO,1            ;Check GP1 if goes to L.
    goto        
down_r            ;
    
btfss        GPIO,2            ;Check GP2 if goes to L.
    goto        
up_dn            ;
    
btfss        GPIO,3            ;Check GP3 if goes to L.
    goto        
dn_up            ;
keep
    movf        mark_r
,w        ;
    
movwf        count3            ;
    
movf        space_r,w        ;
    
movwf        count4            ;
    
movf        mark_b,w        ;
    
movwf        count5            ;
    
movf        space_b,w        ;
    
movwf        count6            ;
    
call            pwm_r            ;
    
call            pwm_b            ;
    goto        
loop                ;
;********************************* 
PWM Routine ******************************************
pwm_r
    bsf            GPIO
,4            ;Turn on Red PWM.
    
call            delay_10us        ;
    
decfsz        count3,f            ;Minimum Mark 26 x 10us =260us.
    goto        
pwm_r            ;Maximum Mark 239 x 10us 2.39ms.
    
bcf            GPIO,4            ;Turn PWM off.
pwm_1
    call            delay_10us        
;
    
decfsz        count4,f            ;Minimuum Space  10us x 16 160us.
    goto        
pwm_1            ;Maximum Space 10us x 229 2.29ms.
    
retlw        0                ;
pwm_b
    bsf            GPIO
,5            ;Turn on Blue PWM.
    
call            delay_10us        ;
    
decfsz        count5,f            ;Minimum Mark 26 x 10us =260us.
    goto        
pwm_b            ;Maximum Mark 239 x 10us 2.39ms.
    
bcf            GPIO,5            ;Turn PWM off.
pwm_2
    call            delay_10us        
;
    
decfsz        count6,f            ;Minimuum Space  10us x 16 160us.
    goto        
pwm_2            ;Maximum Space 10us x 229 2.29ms.
    
retlw        0                ;
;***************************** 
Up Routine **********************************
up_r
    movlw        d
'250'            ;Maximum power refrence.
    
subwf        mark_r,w        ;Mark_r 250 = ?
    
btfsc        STATUS,C        ;Check C Flag.
    goto        
pw_100_r            ;If  mark_r >= 250 then C 1.
    incf            mark_r
,f            ;Increment Mark_r register.
    
comf        mark_r,w        ;The contents of mark_r register are complemented and stored into w.
    
movwf        space_r            ;Stored w into space_r register for PWM reference.
up_b
    movlw        d
'250'            ;Maximum power refrence.
    
subwf        mark_b,w        ;Mark_b 250 = ?
    
btfsc        STATUS,C        ;Check C Flag.
    goto        
pw_100_b        ;If  mark_b >= 250 then C 1.
    incf            mark_b
,f            ;Increment Mark_b register.
    
comf        mark_b,w        ;The contents of mark_b register are complemented and stored into w.
    
movwf        space_b            ;Stored w into space_b register for PWM reference.
    goto        
keep                ;
;***************************** 
Down Routine *******************************
down_r
    movlw        d
'25'                ;Minimum power refrence.
    
subwf        mark_r,w        ;Mark_r 25 = ?
    
btfss        STATUS,C        ;Check C flag.
    goto        
pw_20_r            ;If mark_r 25 then C 0.
    decf            mark_r
,f            ;Decrement mark_r register.
    
comf        mark_r,w        ;The contents of mark_r register are complemented and store into w.
    
movwf        space_r            ;Stored w into space_r register for PWM reference.
down_b
    movlw        d
'25'                ;Minimum power refrence.
    
subwf        mark_b,w        ;Mark_b 25 = ?
    
btfss        STATUS,C        ;Check C flag.
    goto        
pw_20_b            ;If mark_b 25 then C 0.
    decf            mark_b
,f            ;Decrement mark_b register.
    
comf        mark_b,w        ;The contents of mark_b register are complemented and store into w.
    
movwf        space_b            ;Stored w into space_b register for PWM reference.
    goto        
keep                ;
;************************* 
UP Down Routine *********************************
up_dn
    movlw        d
'250'            ;Maximum power refrence.
    
subwf        mark_r,w        ;Mark_r 250 = ?
    
btfsc        STATUS,C        ;Check C Flag.
    goto        
pw_100            ;If  mark_r >= 250 then C 1.
    incf            mark_r
,f            ;Increment Mark_r register.
    
comf        mark_r,w        ;The contents of mark_r register are complemented and stored into w.
    
movwf        space_r            ;Stored w into space_r register for PWM reference.
up_dn_1
    movlw        d
'25'                ;Minimum power refrence.
    
subwf        mark_b,w        ;Mark_b 25 = ?
    
btfss        STATUS,C        ;Check C flag.
    goto        
pw_20            ;If mark_b 25 then C 0.
    decf            mark_b
,f            ;Decrement mark_b register.
    
comf        mark_b,w        ;The contents of mark_b register are complemented and store into w.
    
movwf        space_b            ;Stored w into space_b register for PWM reference.
    goto        
keep                ;
;************************* 
Down UP Routine *********************************
dn_up
    movlw        d
'25'                ;Minimum power refrence.
    
subwf        mark_r,w        ;Mark_r 25 = ?
    
btfss        STATUS,C        ;Check C flag.
    goto        
pw_20_1            ;If mark_r 25 then C 0.
    decf            mark_r
,f            ;Decrement mark_r register.
    
comf        mark_r,w        ;The contents of mark_r register are complemented and store into w.
    
movwf        space_r            ;Stored w into space_r register for PWM reference.
dn_up_1
    movlw        d
'250'            ;Maximum power refrence.
    
subwf        mark_b,w        ;Mark_b 250 = ?
    
btfsc        STATUS,C        ;Check C Flag.
    goto        
pw_100_1        ;If  mark_b >= 250 then C 1.
    incf            mark_b
,f            ;Increment Mark_b register.
    
comf        mark_b,w        ;The contents of mark_b register are complemented and stored into w.
    
movwf        space_b            ;Stored w into space_b register for PWM reference.
    goto        
keep                ;
;********************************** 
Power Rate  ****************************
pw_100
    movlw        d
'250'            ;Maximum Power setting.
    
movwf        mark_r            ;
    
comf        mark_r,w        ;The contents of mark_r register are complemented and stored into w.
    
movwf        space_r            ;Stored w into space_r register for PWM reference.
    goto        
up_dn_1            ;
pw_20
    movlw        d
'25'                ;Minimum power refrence.
    
movwf        mark_b            ;
    
comf        mark_b,w        ;The contents of mark_r register are complemented and stored into w.
    
movwf        space_b            ;Stored w into space_r register for PWM reference.
    goto        
keep                ;
pw_100_1
    movlw        d
'250'            ;Maximum Power setting.
    
movwf        mark_b            ;
    
comf        mark_b,w        ;The contents of mark_b register are complemented and stored into w.
    
movwf        space_b            ;Stored w into space_b register for PWM reference.
    goto        
keep                ;
pw_20_1
    movlw        d
'25'                ;Minimum power refrence.
    
movwf        mark_b            ;
    
comf        mark_b,w        ;The contents of mark_b register are complemented and stored into w.
    
movwf        space_b            ;Stored w into space_b register for PWM reference.
    goto        
keep                ;
pw_100_r
    movlw        d
'250'            ;Maximum Power setting.
    
movwf        mark_r            ;
    
comf        mark_r,w        ;The contents of mark_r register are complemented and stored into w.
    
movwf        space_r            ;Stored w into space_r register for PWM reference.
    goto        
up_b            ;
pw_20_r
    movlw        d
'25'                ;Minimum power refrence.
    
movwf        mark_r            ;
    
comf        mark_r,w        ;The contents of mark_r register are complemented and stored into w.
    
movwf        space_b            ;Stored w into space_r register for PWM reference.
    goto        
down_b            ;
pw_100_b
    movlw        d
'250'            ;Maximum Power setting.
    
movwf        mark_b            ;
    
comf        mark_b,w        ;The contents of mark_b register are complemented and stored into w.
    
movwf        space_b            ;Stored w into space_b register for PWM reference.
    goto        
keep                ;
pw_20_b
    movlw        d
'25'                ;Minimum power refrence.
    
movwf        mark_b            ;
    
comf        mark_b,w        ;The contents of mark_b register are complemented and stored into w.
    
movwf        space_b            ;Stored w into space_b register for PWM reference.
    goto        
keep                ;
; *****************************[
Delay routine]*******************************************
delay_10us
    movlw        d
'3'                ;
    
movwf        count            ;
loop_3    
    decfsz        count
,f            ;
    goto        
loop_3            ;
    
retlw        0                ;
    
end



發表於: 2007/7/13 0:53
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 關於CLKOUT...
#5
資深會員
資深會員


查看用戶資訊
了不起,有實驗和科學家的精神...連個台燈你也可以玩成這樣子...呵呵~厲害...^^~
看你玩的這麼高興我也陪你玩一玩吧,把電路,程式,你發現的問題和所要的功能和做法都弄上來吧...^^~

發表於: 2007/7/12 10:24
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 關於CLKOUT...
#4
資深會員
資深會員


查看用戶資訊
Haha ...偶 用12F508 寫2個 獨立PWM程式,
居然會工作了 ..haha Happy ...
But but... 由於使用分時工作, 結果Duty Cycle變化 ,只剩下50%..0 to 50% 變化而已..
左思右想, 好像無解 ,無法再細緻分割了,
看來還是要回到兩棵10F200跑同樣PWM程式 ,
One as Master, the other as Slave ,
Master Run PWM程式前, 通知 Slave 可以Run PWM程式了,
Well , You will never know if you do not try it, Right?
One more try , I just need another one more try .
笨鴨偶時常做傻事 , but " Never give up "... haha..

發表於: 2007/7/11 23:21
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 關於CLKOUT...
#3
資深會員
資深會員


查看用戶資訊
偶呀 ? 因為桌面抬燈會閃爍, 打開一看..
裡面是兩隻CCFL燈管,一白一藍 .可以Dimming及調色差;
研究一下控制線路, 是用了兩個 Analog PWM,
因為兩個 Analog PWM (使用OP-AMP.),不同步 而產生Beating ,也許是抬燈會閃爍的原因吧,
所以偶試圖用10F200 寫個PWM程式,
心想10F200一定比較穩定吧 ?
但是兩棵10F200跑同樣PWM程式還是產生Beating .
所以 ,,,,,(偶寫一個PWM程式沒問題 .)
嗯... 好像腳不夠用 ,因為控制 UP & DOWN 腳有四隻,
PWM Output腳有2隻.. 就用12F508囉!
不知道是否可以用一個12F508 寫兩個獨立 PWM程式呀?

發表於: 2007/7/11 0:33
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 關於CLKOUT...
#2
資深會員
資深會員


查看用戶資訊
指令看起來是對的,但還是沒辨法同步吧,因為輸出是clk/4也就是10F200 4Mhz,12F508 1MHz.
不知道你要做什麼功能需要2顆MCU同步???

發表於: 2007/7/10 9:52
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


關於CLKOUT...
#1
資深會員
資深會員


查看用戶資訊
Dear All :
10F200 如果要將 CLK 輸出, 這麼個指令 對不對呢?

bsf OSCCAL,0 ; 將 FOSC4 Bit設定為 1.

還有呀 ?10F200可以將CLK 輸出,
但是好像無法接受External CLK,
偶又看12F508 正相反 可以 接受External CLK
但是無法將CLK 輸出 Right?
偶在玩個小設計, 使用兩棵10F200 , 碰到同步問題;
所以希望一棵 做Master, 另一棵做Slave.
Master將CLK 輸出給 Slave, 以便同步.不知可行與否?

發表於: 2007/7/10 7:26
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... ]

教育訓練中心

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