Robofun 機器人論壇

標題: 關於控制問題?? [打印本頁]

作者: ffffff2641    時間: 2007-6-21 01:16
標題: 關於控制問題??
ayu大大~~妳好!!小弟前些天有去看過您的發表文章ssc(8通道pwm產生器950613)
請問如果加上串列阜控制(用pc端控制伺服機)該如何修改程式呢??
因為我之前有寫一個vb控制端想控制sever controller!!小弟是用8052與pc端控制ㄉ
程式跟89s51是用的語言一樣(組合語言)!
作者: ayu    時間: 2007-6-21 20:27
ffffff2641大大您好喔,

http://www.seattlerobotics.org/encoder/200106/16csscnt.htm  

這是uucww版主大大發現的程式,我是向版主大大這裏學習到的,還有marbol老師,他叫我不要稱呼他老師,還是叫他大大好了,




不曉得您是否要用這個GUI,我只會用這個控制程式,marbol大大也很厲害的,不曉得他潛水潛到那裏去了??


http://www.seattlerobotics.org/encoder/200106/16csscnt.zip

解壓縮後,PC_SRC 資料夾中,就有這個vb的程式了喔。請參考看看,到時有問題,大家再研究看看。
作者: ffffff2641    時間: 2007-6-22 00:59
請教ayu大大!!我是用89c52控制的~~
那個網頁上程式應該沒辦法用在89c52吧!!?
作者: ayu    時間: 2007-6-22 08:48
原帖由 ffffff2641 於 2007-6-22 00:59 發表
請教ayu大大!!我是用89c52控制的~~
那個網頁上程式應該沒辦法用在89c52吧!!?


ffffff2641 大大您好喔,看了您的程式


If buf = "2" Then
   單手舉起.FillColor = pwm(150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150)
   

If buf = "1" Then

小弟想,您是用ASCII碼來傳送資料,然後用51來作判斷的吧??
那個程式是用16進制的資料傳送,不管什麼晶片,51我也試過,可以達到要求,pic應該也可以,只是125以後,資料就miss了。

之前設計程式也是利用類似您的方式,可是看到別人的這些程式,用的是另一種傳輸方式,也就是16進制的資料傳送。
小弟猜想,您的書看了也很多,可是國內的書只講到用ASCII碼來傳送資料,這種16進制的資料傳送就沒提到了,

marbol大大應該也是利用這種傳輸方式來作的吧??

51的程式需要修正,不然無法達到要求喔。

您的程式只能一個ASCII碼,指定一個動作,16個伺服機就要16個動作,255個解析度,16x255個動作,ASCII碼就達不到要求了。
作者: marbol    時間: 2007-6-22 19:40
標題: 回復 #4 ayu 的帖子
ayu大大~~~~~您也走到這一步囉!!!
VB用ASCII來傳送128~255的數值也是可行的,當初也困擾很久,
不過給試出來了,
只要用矩陣存值間接賦與

Dim buf1 As Integer
Dim num(5) As Byte

buf1=128~255
num(0)=buf1
Mscomm1.Output=num
這樣就可以把128到255的ASCII值硬是給傳出去!!

[ 本帖最後由 marbol 於 2007-6-22 19:43 編輯 ]
作者: ayu    時間: 2007-6-22 21:30
原帖由 marbol 於 2007-6-22 19:40 發表
ayu大大~~~~~您也走到這一步囉!!!
VB用ASCII來傳送128~255的數值也是可行的,當初也困擾很久,
不過給試出來了,
只要用矩陣存值間接賦與

Dim buf1 As Integer
Dim num(5) As Byte

師父出手,果然不同,弟子拜上囉。

樓主大大,正是這個徵節所在,要請您把重點記下了喔,marbol(師父)大大是這方面的先行者,小弟是從外國友人
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=44467&highlight=
那裏取經得來的(英文很爛,請不要笑破肚皮 ),

還是marbol(師父)大大厲害,自己發明解決這個控制器喔。

小弟說明一下解決問題的過程好了,當初看到marbol大大說要用avr來作這個SSC程式,
所以找了全華 05451007 「嵌入式AVR程式設計」郁文工作室 和 台科大「AVR單晶片微處理器」 這兩本書來作為參考書,

然後uucww版主大大找到上面那個範例,於是就用台科大「AVR單晶片微處理器」這本書把程式試出來(基本的燒錄和硬體架構),只是VB程式不完全。

後求助於 AVR Freaks Forum 這個論壇,還好外國友人幫忙,幫小弟把VB程式修正完成,這時才知這個 AVR 16SSC 可用,於是乎再參考「嵌入式AVR程式設計」書後的 附B-5 至 附B-22 頁,才把整個AVR程式搞懂,更把它擴充到24 SSC,而且應用在51晶片上,也是可行的。(這本書的avr studio是舊版的,跟新版有一些不同,不過大同小異。)

在這裏可能給您一些建議,

第一,可請問marbol(師父)大大,他可比小弟高明多了喔。

第二,假如允許的話,可能請您把avr這個程式弄懂了,到時51絕對設計得出來喔。
畢竟avr不論在速度和擴充性能上都比51好太多了。這是Atmel公司相同的產品,程式的寫法是相同的,只是指令有一點不同。

到時如還有問題的話,大家再討論了喔。
作者: ffffff2641    時間: 2007-6-24 22:04
這是我集合各位大大,與我專研後寫的程式,不知還有哪邊需要修改的地方
請各位大大指教了!!
#ps:<這是與PC端連接控制SEVER MOTOR的程式>
PWM0            EQU    40H                  
PWM1            EQU    41H                  
PWM2            EQU    42H                  
PWM3            EQU    43H                  
PWM4            EQU    44H                 
PWM5            EQU    45H                  
PWM6            EQU    46H                  
PWM7            EQU    47H                  
COUNT          EQU    37H
CUT            EQU    39H
PIN            EQU    51H
PWM            EQU    52H
PIN1           EQU    53H
                       ORG         00H
        JMP     START
                  ORG   23H
        JMP     INTERR
                  ORG         0BH
        JMP    T0_INT                          
                  ORG         30H
START:
        MOV     SP,#70H
        MOV     R1,#20H
        MOV     21H,#00H
        MOV     IE,#10010000B
        MOV     SCON,#01110000B
        MOV     TMOD,#00100000B
        MOV     TH1,#0f3H
        SETB          TR1
        SETB    EA
        SETB    ET0            
        SETB    ET1                           
        MOV     CUT,#0         
        MOV     COUNT,#0                     
        MOV     PWM0,#12     
        MOV     PWM1,#12
        MOV     PWM2,#12
        MOV     PWM3,#12
        MOV     PWM4,#12
        MOV     PWM5,#12
        MOV     PWM6,#12
        MOV     PWM7,#12
INTERR:
        PUSH    A
        JBC     T0,T0_INT
        JNB     RI,$
        CLR     RI
        MOV     A,SBUF
        MOV     21H,A
        XRL     A,#40H
        JZ      C0
        MOV     A,21H
        XRL     A,#41H
        JZ      C1
        MOV     A,21H
        XRL     A,#42H
        JZ      C2
        MOV     A,21H
        XRL     A,#43H
        JZ      C3
        MOV     A,21H
        XRL     A,#44H
        JZ      C4
        MOV     A,21H
        XRL     A,#45H
        JZ      C5
        MOV     A,21H
        XRL     A,#46H
        JZ      C6
        MOV     A,21H
        XRL     A,#47H
        JZ      C7
        MOV     A,21H
        JZ      STOP
        RETI   
MAIN:
     
              LCALL  OUT           
              LJMP MAIN

DEL_H:                                    

        MOV R7,#1  
L7:
        MOV R6,#2  
L6:
        MOV R5,#17        
        DJNZ R5,$  
        DJNZ R6,L6
        DJNZ R7,L7  
        RET

PWM_WIDTH:
                  MOV  COUNT,@R0
LOOP1:     
           SETB TR0
           JNB  TF0,$
           CLR  TR0
           DJNZ COUNT,LOOP1         
           CLR  TR0
           MOV  CUT,#0        
           INC  R0
           RET
OUT:
           MOV    R0,#40H        
C0:        
           SETB   P1.0
           MOV    R7,#10        
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.0
C1:     
           SETB   P1.1
           MOV    R7,#10         
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.1
C2:      
           SETB   P1.2
           MOV    R7,#10         
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.2
C3:        
           SETB   P1.3
           MOV    R7,#10         
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.3
C4:        
           SETB   P1.4
           MOV    R7,#10         
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.4
C5:      
           SETB   P1.5
           MOV    R7,#10         
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.5
C6:        
           SETB   P1.6
           MOV    R7,#10         
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.6
C7:        
           SETB   P1.7
           MOV    R7,#10         
           LCALL  DEL_H
           LCALL  PWM_WIDTH
           CLR    P1.7
           SETB   TR1
           RET
STOP:
           MOV    P1,#FFH
           MOV    20H,#5AH
           AJMP   T0_INT
T0_INT:
           PUSH  A
           PUSH  PSW
           CLR   TR0
           MOV   TH0,#>(25536-40)
           MOV   TL0,#<(25536-40)
           INC   CUT
           SETB  TR0
           POP   PSW
           POP   A
           RETI
           END
作者: imas    時間: 2007-6-25 00:43
很多地方看起來怪怪的,
不知道這樣講是不是有點不客氣,
不過,光把程式 po 出來,沒有功能說明跟流程圖,
實在很難讓然願意細心去看!

但無論如何,
感謝您的分享!

[ 本帖最後由 imas 於 2007-6-25 02:27 編輯 ]
作者: yyy    時間: 2007-6-25 14:40
樓主大大,
      我想大家在學組合語言的時候,是否都沒用IDE工具呢??

不然的話,應該很容易把這些程式弄懂的吧。

請嘗試一下IDE工具吧,國內的書藉這方面介紹的很少,以至於學習組合語言變成那麼難,其實如用一下IDE工具的話,應該一下子就可看出程式的架構和功能的 請參考看看吧。
其實ayu和marbol大大已經把整個程式都講解完了,不曉得大家看了出來沒??
作者: doubletime    時間: 2007-7-1 20:58
不知道yyy大大所謂的IDE工具是所謂的?
不過就我的認知您是否是指圖形式處理器設定介面(VISUAL INITIALIZER INTERFACE) ?
還是您要介紹幾種好用的TOOLS給大家使用?
基本上我也不會組合語言
不過我很配服會寫組合語言的人
作者: yyy    時間: 2007-7-30 22:40
原帖由 doubletime 於 2007-7-1 20:58 發表
不知道yyy大大所謂的IDE工具是所謂的?
不過就我的認知您是否是指圖形式處理器設定介面(VISUAL INITIALIZER INTERFACE) ?
還是您要介紹幾種好用的TOOLS給大家使用?

doubletime大大您好喔,
       這種工具應該是學組合語言和c語言都會用到的工具,像Keil uVision2也可使用,只要把程式編譯好之後,模擬時就可看到程式的狀況,連流程圖都不用,就可知道程式在做什麼了喔,也就是說只要有程式,模擬一下,也就就破解了。
作者: zirok    時間: 2007-7-31 11:44
標題: 回復 #11 yyy 的帖子
yyy大大您好喔,我有Keil uVision2這個軟體,那我要模擬的話要怎麼用呢?

我的軟體的介面是英文...,看不懂@q@  感謝大大喔...話說這裡人變多了

我的檔案.asm 不能用uv3.UV2組譯,一堆這個錯誤訊息=>synatx error  

最後一行是這個=>expression type does not match intstruction

是要更改副檔名才能組譯嗎? 我的檔案用其他組譯器可以用如:ajon331s

誰能幫幫我~

[ 本帖最後由 zirok 於 2007-7-31 19:59 編輯 ]
作者: zirok    時間: 2007-7-31 11:44
...網路太慢以致於留了兩篇一樣的=.= 能不能自刪阿@q@

[ 本帖最後由 zirok 於 2007-7-31 11:45 編輯 ]
作者: doubletime    時間: 2007-7-31 23:49
因為我用的是MPLAB,Microchip,人家的tools就寫得很完善
小弟我覺得寫得很不錯
作者: yyy    時間: 2007-8-1 00:58
原帖由 zirok 於 2007-7-31 11:44 發表
yyy大大您好喔,我有Keil uVision2這個軟體,那我要模擬的話要怎麼用呢?

我的軟體的介面是英文...,看不懂@q@  感謝大大喔...話說這裡人變多了

我的檔案.asm 不能用uv3.UV2組譯,一堆這個錯誤訊息=>s ...


zirok大大您好程式的編譯如下圖,



對不起,可能要請您到書局找一本全華出版51的書,書名忘記了(c語言的書也可以,只要更換一些操作),很抱歉。它內容有說明這個Keil uVision2編譯器如何做模擬的詳細解說,或者網站上看有沒有教學的解說嘍???至於程式需做一些修改,

在         >(65536-40)設定TIMER0在每40us中斷一次  這個部分需修改才可編譯成功,不過前提是需把這個Keil uVision2軟體的界面搞清楚,建議您一定找書或其它方式來用這個Keil uVision2軟體。祝您成功哦。
作者: yyy    時間: 2007-8-1 01:07
原帖由 doubletime 於 2007-7-31 23:49 發表
因為我用的是MPLAB,Microchip,人家的tools就寫得很完善
小弟我覺得寫得很不錯
doubletime大大您好哦,可否秀一下呢??謝嘍。
作者: zirok    時間: 2007-8-1 09:31
原帖由 yyy 於 2007-8-1 00:58 發表


zirok大大您好,程式的編譯如下圖,

http://i210.photobucket.com/albums/bb120/yrobot/8SSC.jpg

對不起,可能要請您到書局找一本全華出版51的書,書名忘記了(c語言的書也可以,只要更換一些操作),很 ...



您好,我有書拉...,可是不是全華的,教的也是別套軟體(很少人在用的軟體=.=) ,

教學我找到的影音檔沒有教人怎麼改檔案=.=...,我在網路上看到很多中文化用戶說明檔(類似拉,忘記名子),

那裡面會有詳細的解說嗎?? 可不可以告訴我大概要搜尋啥才能找到教學??  感謝大大
作者: doubletime    時間: 2007-8-1 21:37

其實我覺得沒有所謂好與不好
用得習慣,功能多就是不錯的IDE了
作者: zirok    時間: 2007-8-2 22:20
再次請教YYY大大,我已經借到書了,程式也可以組譯了,
現在我想要藉由這個軟體模擬出波形,不知道可不可行齁@Q@

他裡面有一個 logic analyzer ,應該可以模擬類似示波器的功能?(我猜啦)
不過我不知道這個要怎麼用...能否請大大提示我一下呢? 感謝
作者: zirok    時間: 2007-8-4 19:13
還是有其他軟體能夠模擬示波器的功能呢?...
就是程式丟進去可以看出輸出的high.low訊號

可是我找半天找沒有@Q@,好像只有硬體=>電腦上的軟體 這類的...請各位大大幫幫忙
作者: irobot    時間: 2007-8-4 23:57
你要的軟體我也幫不上什麼忙,不過如果你要量度的訊號頻率不是很高,可以考慮以下2個用硬體的方法。
1. 這個用聲效卡的方法只適合較低的頻率(大約20kHz),很適合量度 50Hz 的 pwm 訊號。材料也蠻簡單的,就是4個電阻。
    參考這裡:http://hk.myblog.yahoo.com/My-DIY/article?mid=24 (有2通道已經很夠用啊)
    我開發伺服機控制器時最喜歡用這個。

2. 這個用平行埠的可以量度更高的頻率(少於1MHz),主要材料是 74hc245,一條平行埠的接線。(有8通道啊)
    (註:按原網址這個 74hc245 雖然不用也可以的,但對電腦的 parallel port 便缺少了保護,要多加小心)
    參考這裡:http://hk.myblog.yahoo.com/My-DIY/article?mid=92  (麵包版測試)
                  http://hk.myblog.yahoo.com/My-DIY/article?mid=189 (實物)
    原網址:http://www.xs4all.nl/~jwasys/old/diy2.html (軟件)

希望對你有點幫助吧。

[ 本帖最後由 irobot 於 2007-8-5 00:06 編輯 ]
作者: zirok    時間: 2007-8-5 19:28
irobot大大您好,請問這個電路需要聲效卡嗎?

還有那個看波形的軟件好像已經不能下載了說? 有別的地方有提供類似的軟體嗎?

另外那個電路好似沒有用到電阻阿?? 還是我眼花了@q@

裡面紅色畫圈的地方我不太懂要怎麼接才好,能請大大教我一下嗎@Q@? 感謝大大 (好在之前有把並列port的接線圖留下來,
才知道那25PIN該怎麼接)

p.s 網站更新了@q@....不能用表情~.~

[ 本帖最後由 zirok 於 2007-8-5 20:58 編輯 ]

digitrac_scheme_active.png (33.39 KB, 下載次數: 328)

圖

作者: irobot    時間: 2007-8-5 20:52
不好意思。你是選擇動手做第一種還是第二種硬件呢。
1. 做第一種的是用4個電阻,然後把線接入聲效卡的 Line-in 便可以了。視乎你用的操作系統,下載軟體。
    win98 OS 的軟體下載:http://www.team-solutions.com/Products/Software/InesFV/sound.zip
    winXP OS 的軟體下載:http://www.zz-plan.eu/scope/scope_122_en.zip (附使用說明書)

2. 如果你用第二種做法,最簡單的可以如下圖接駁。但你要緊記,在量度的電路中絕不可有超過5V的電源。

軟體下載:http://www.xs4all.nl/~jwasys/old/setup_digitrace.exe
須要的DLL:http://www.xs4all.nl/~jwasys/old/digitrace_zip.zip

我是從這外國網站看到的:http://www.xs4all.nl/~jwasys/old/diy2.html

至於你的問題,只是把 IC 的 第1和第19號 腳接 地線 罷了。


忘記了,試試表情


[ 本帖最後由 irobot 於 2007-8-5 20:56 編輯 ]
作者: zirok    時間: 2007-8-5 21:18
標題: 回復 #23 irobot 的帖子
喔~,感謝大大,我還以為那個紫色的連線有什麼特殊的意義說...@q@

我是要作第二種,想請問一下,使用digitrace.exe的話,它會作慢動作顯示嗎?我怕他顯示過快導致跟我去學校借示波器一樣的下場@q@...不過它能一次顯示8pin的動作~真不錯

然後接法是:電路=>電腦的並列port,請問軟體要怎麼操作阿? 我的start.length應該設定在多少才好? 我是要測量20ms為一週期的PWM訊號 感謝大大

p.s. 嗯~.~? 表情要用打的吧~? 旁邊找不到了~
作者: irobot    時間: 2007-8-5 22:26
digitrace 可以有連續顯示和取樣兩種選擇。你可以在setting內設定監察那一個pin的訊號。當那pin有變化(由high至low 或 由low 至 high)digitrace 便開始運作同時監察8條頻道。我的經驗用取樣量度50Hz低頻可以看到2個週期左右。  你可以慢慢看和量度時間的。
表情符號還在螢幕左下面啊,你沒有嗎?

[ 本帖最後由 irobot 於 2007-8-5 22:34 編輯 ]
作者: zirok    時間: 2007-8-6 10:25
標題: 回復 #25 irobot 的帖子
喔喔~ 我看到了...(以前都在右邊=.=")

挖~,這個軟體真是超方便的 ,我今天就去買材料來接一接=.="
晚一點在上來跟您報告

...耍呆了...少買了杜邦接頭,比較不常買零件,以為可以用找就找得到 ,下次去買材料應該要先逛一逛該店網站才是...
不過還是問一下@q@,並列PORT和74hc245之前不用接電阻嗎? 因為之前作簡易燒錄器的時候有用過一條,之間是要接電阻的...,請irobot大大為我只點一下迷津 感謝

[ 本帖最後由 zirok 於 2007-8-6 19:53 編輯 ]
作者: zirok    時間: 2007-8-7 15:11
標題: 回復 #25 irobot 的帖子
不過還是問一下@q@,並列PORT和74hc245之間不用接電阻嗎? 因為之前作簡易燒錄器的時候有用過一條,他們之間是要接電阻的...,請irobot大大為我只點一下迷津 感謝

還有就是我做第二種做法的第二張電路圖的話,我的電源只能5V嗎? 我用了USB當作電源(5V)去接...電腦說會有危險,產生雷爆什麼的=.=",所以我在想可不可以用電池組阿? 謝謝大大喔
作者: irobot    時間: 2007-8-7 16:34
是否要加電阻我也不太清楚,我想加了電阻是限制電流量的作用吧。至於這個電路其實不用 ic 也可以的,所以我認為這 ic 本身便是作為緩衝和保護的作用,所以便不用再加電阻了。
至於 ic 的電源方面,原設計是在 並列port (parallel port) pin 1 直接取 5V 的,所以不用再外加任何電源。在使用時只要接上 parallel port 便可以直接使用了,蠻方便的。

[ 本帖最後由 irobot 於 2007-8-7 16:35 編輯 ]
作者: zirok    時間: 2007-8-8 12:20
標題: 回復 #28 irobot 的帖子
喔喔,多謝大大告知,嗯...,這樣就不用牽太多線了...
,差一個接頭就能去測試一下了,希望還能得到您的幫助,感謝~
作者: zirok    時間: 2007-8-9 14:41
標題: 回復 #28 irobot 的帖子
嗚...,報告大大,我測不到波形說,怎麼樣才知道軟體已經偵測到並列port了呢?

我是用麵包板so應該只剩下並列port的問題(也許沒接好=.="),這個軟體我每次執行的時候他都會說privileged instruction ,請問是怎麼了呢?

他的說明文件中也有一個好像是說只能在95.98.ME上面執行,
我的電腦目前OS是用XP的那可以用嗎? @Q@  感激不盡~
作者: irobot    時間: 2007-8-9 16:56
是的,在 nt, windows 2000 和 xp 內是不能用 digitrace 的,因為它們在 protect mode 下運行,user 沒有直接控制 port 的權限。在原網址亦有提及在 xp 內執行時出現privileged instruction 的問題,而且提供了解決方案的。只要下載 allowio.exe ,然後使用 allowio digitrace.exe /a 這指令便可以解決了。
在 porttalk22.zip 內已包括 allowio 這程式。http://www.beyondlogic.org/porttalk/porttalk22.zip
參考連結:http://www.beyondlogic.org/porttalk/porttalk.htm
不過我自己倒是沒有試驗過是否可行的,祝你順利吧。

[ 本帖最後由 irobot 於 2007-8-9 17:00 編輯 ]
作者: zirok    時間: 2007-8-9 19:49
標題: 回復 #31 irobot 的帖子
那您是用nt, windows 2000 和 xp以外的電腦囉??

我下載了那個檔案可是我太瞭解要怎麼用 ,是開啟digitrace的時候再執行allowio digitrace.exe 這個檔案嗎?

不過我先點了allowio.exe 再去開啟digitrace 的時候還是會有那個訊息跑出來,
嗯...||.只要下載 allowio.exe ,然後使用 allowio digitrace.exe /a 這指令便可以解決了。||
我不太懂這句的意思耶 是說指令還是指它的執行檔呢??  感謝大大~
作者: irobot    時間: 2007-8-9 20:35
我還在用 win98 呢。
應該這樣操作:
用 檔案總管 先開啟解壓後 porttalk 的資料夾。
點選 [開始] --> [執行] 。輸入 cmd 按 [確定] ,螢幕出現 dos prompt 模式。
這時應可看到路徑己經指向 porttalk 的資料夾。
輸入 allowio digitrace.exe /a。
意思是 執行 allowio 程式, digitrace.exe /a 是執行時的參數。即容許程式 digitrace.exe 使用所有 port。
( /a 是 all allowed 的意思吧,若不用 /a 而用 0x378 則只容許 digitrace.exe 便用 LPT1: )
作者: zirok    時間: 2007-8-10 09:57
標題: 感謝IROBOT大大的回覆
挖=.=,還蠻複雜的...,我對DOS的指令不熟~哈哈

我執行後它出現這個,好像有錯誤的樣子,還是不能執行
,是porttalk22 的檔案有遺漏還是??  

真希望那位作者直接出 DIGITRACE 可以直接在XP上執行的版本


感謝大大的解惑

p.s. 而且我偷看了它裡面的README,他好像有提到用OOXX指令可以使這個程式可以向COM1溝通(有一些風險??)


[ 本帖最後由 zirok 於 2007-8-10 10:01 編輯 ]

未命名.bmp (2.25 MB, 下載次數: 346)

圖

作者: irobot    時間: 2007-8-10 11:53
我也沒有在 xp 使用的經驗,不過略看了你的情況。在畫面中,你第一次輸入的指令 [allowio digitrace.exe/a] 是錯的,因為 digitrace.exe 與 /a 之間應該是有空格的。第二次的輸入則是正確,不過在畫面內未能看到執行後的情況。根據 readme.txt 的說明,正常應顯示如下的訊息:
If you don't know what addresses a certain program uses, you can
grant access to all ports.
C:\porttalk>allowio beep /a
BeyondLogic AllowIO
Granting exclusive access to all I/O Ports
Executing beep with a ProcessID of 524
PortTalk Device Driver has set IOPM for ProcessID 524.
This is less secure. For example the program can talk to COM1 and lock up your mouse.

不知你的情況如何。
試試注意
1. 第一次使用時要用 administrator 的身份
2. 會不會它找不到 digitrace.exe呢,不妨把digitrace.exe 及有關的檔案也放在  porttalk 的資料夾內試試。
若你最後也不成功,通知我。我再嘗試給你測試一下 xp 的情況吧,不過可能要等一點時間的。
作者: zirok    時間: 2007-8-10 18:47
多虧了irobot大大,我差點忘了怎麼進去administrator...
不過我也把digitrace內的檔案全都丟到porttalk22底下,不過結果跟之前一樣...,
是不是要把porttalk22里面的小資料夾的內容丟出來阿??...

有勞大大了,非常感激您

[ 本帖最後由 zirok 於 2007-8-10 18:51 編輯 ]

未命名3.bmp (858.94 KB, 下載次數: 310)

圖

作者: irobot    時間: 2007-8-11 00:26
若你想快點成功便試這第一個方法。
方法一 (用舊版本)
1. 下載 porttalk 並解壓至任何一個資料夾。例如 c:\porttalk
2. 下載 digitrace 的舊版本,意思是 DLL 的一個連結。把 zip 檔內的3個檔案也解壓至之前的資料夾。
    在這例子應該是 c:\porttalk
3. 打開 dos prompt 模式。
4. 切換目錄至 c:\porttalk
5. 鍵入 allowio digitrac.exe /a
6. 完成。注意:名稱是 digitrac.exe ,而不是 digitrace.exe。最後是沒有 e 的。

方法二 (用新版本)
1. 下載digitrace程式並安裝。例如安裝到 c:\program files\digitrace
2.  仍須下載 另一個 dll 的連結。把 zip 檔內的 2 個 dll 檔案解壓至之前安裝digitrace的資料夾。
3.  下載 porttalk 並解壓至任何一個資料夾。例如 c:\porttalk
3. 打開 dos prompt 模式。
4. 切換目錄至 c:\porttalk
5. 鍵入 allowio c:\program files\digitrace\digitrac.exe /a
6. 注意:須輸入完整的路徑名稱(紅色字),而檔案名是 digitrac.exe ,也是沒有 e 在尾的。

你的情況是根本找不到檔案,因我隨便試一個名稱也會得到相同結果的。

[ 本帖最後由 irobot 於 2007-8-11 00:42 編輯 ]
作者: zirok    時間: 2007-8-11 09:48
標題: 回復 #37 irobot 的帖子
第一個方法:
我沒看清楚它少一個e , 後來我重試了之後,還是不行,我在想是不是我的路徑錯了,我下載的是porttalk22,它底下還有一個叫porttalk的資料夾,不過他裡面只有4個東西,也沒看到allowio.exe,
SO...不知道是不是錯在沒用porttalk...

我對第二個方法有點小疑惑,就是ddl的檔案是您之前給的連結下載出來有三個檔案的那個嗎?
因為我在那個網頁上沒看到ddl的連結,而且舊版的好像下載不到了=.=,我先把之前的DDL丟進去新的DIGITRACE看看會怎樣...

嗯...成功了~  我是用allowio + 路徑才成功的...,舊版的也可以,感動中...=.="

[ 本帖最後由 zirok 於 2007-8-11 14:01 編輯 ]

123.bmp (2.25 MB, 下載次數: 324)

123.bmp

作者: irobot    時間: 2007-8-11 10:55
是哦!!新版的安裝後仍須舊版的2個dll 才可正常運作的。你自己也摸索到了。
網站說可以應該也有些根據的,要給點信心。
最後,呵呵!! 幹得好!!
DIY 是不是蠻有趣呢。
而且從中也學到不少知識呢!!!
若你能成功量度訊號,也發過圖上來讓其他人分享一下吧。

[ 本帖最後由 irobot 於 2007-8-11 11:01 編輯 ]
作者: zirok    時間: 2007-8-11 19:53
哀...=.=",就是沒有訊號進來,但是旁邊的白色正方形會一直閃...,總之是看不到訊號...
嗯..,問題到底是出在哪呢...=.=....連接的線嗎?...可是測有沒有短路的時候是好好的~...

未命名4.bmp (1.2 MB, 下載次數: 304)

未命名4.bmp

作者: irobot    時間: 2007-8-12 01:44
有可能是你的 mcu 沒有訊號輸出。要測試你的裝置可用聲效的聲音輸出。配合 frequency generator,便可以有方波的輸出了。
http://www.world-voices.com/software/nchtone.html
如你有不要的耳筒(earphone)便最容易了,只要把其中一個耳筒的線剪掉便可以了。
聲音是 ac 的,所以不需要分正負。只要一條駁你的裝置訊號線,一條接地便可以了。
作者: zirok    時間: 2007-8-12 10:04
標題: 回復 irobot 大大
您給的網址上的軟體好像是藉由電腦的喇叭產生OO頻率的聲音,
嗯...,找看看有沒有耳機=.=...乾脆去買一條便宜的好了  感謝大大
作者: zirok    時間: 2007-8-13 13:30
標題: 回復 irobot 大大
我找到的是單耳耳機,它有兩條線...,可是其中一條裡面有紅色and銅色的線,另一個只有銅色的線,
我要如何判斷哪個是訊號線哪個是接地的呢??  有勞大大了....

[ 本帖最後由 zirok 於 2007-8-13 13:33 編輯 ]
作者: irobot    時間: 2007-8-13 17:58
只要你測試兩條線不是接在一起的便安全了(確保不會發生短路)。兩條線可以隨意接的,因為輸出的是聲音訊號;在這種用途上是沒有所謂正負之分的。(ac 交流電訊號) (當然如果是接到喇叭的話是要區分的)。
不過我擔心你的接駁頭不是立體聲的那種,這可能有問題的。因為聲效卡的 speaker out 或 line out 均是立體聲的。
最好你能先試試耳筒能否有聲音發出。

[ 本帖最後由 irobot 於 2007-8-13 18:05 編輯 ]
作者: zirok    時間: 2007-8-13 19:40
標題: 回復 irobot 大大
我用的是手機附的耳機,單耳的,它有四條線 ...(因為剝的時候有點用力,沒發現另一條線)
有銅色.紅色.附塑膠皮的,不過我還是不太清楚它們的要怎麼接,兩邊各抓一條,
一邊接訊號腳,一邊接地就行了嗎??

CIMG0327.JPG (1.7 MB, 下載次數: 276)

CIMG0327.JPG

作者: irobot    時間: 2007-8-13 21:23
手機附的耳機應該有免提咪的,我猜一組是耳筒,一組是咪用的吧(也有可能是控制線)。
就不知插頭能否對應聲效卡的插座。
你的萬用錶能度交流電壓嗎(ac 0 - 4V )?
如果可以便容易。把電腦的聲音輸出推到最大,把耳機的插頭插入聲效卡的 speaker out 。
(如果用 line out 要檢查 XP 內有否把它設為 靜音。若有,要更改。)
開啟 軟件(frequency generator) 產生聲音訊號(要同時輸出左右聲道啊),用萬用錶量度每一組線,有讀數的一組便是了。

[ 本帖最後由 irobot 於 2007-8-13 21:28 編輯 ]
作者: zirok    時間: 2007-8-14 15:31
標題: 回復 irobot 大大
那要再犧牲一條耳機了=.="...,另外要讓接頭留著又看的到線,這般技術我看也是需要琢磨一般=.=...

請問=>(如果用 line out 要檢查 XP 內有否把它設為 靜音。若有,要更改。)
要去哪找阿,我去控制台找音訊xx的,它好像沒有靜音的設定選項

有沒有一種線是只有地線跟訊號線的呢
作者: irobot    時間: 2007-8-14 16:01
是把耳筒剪掉,不是把接頭剪掉啊!!!
用普通立體聲耳筒,剪掉一個耳筒後不是只有2條線嗎?
雙按右下角 tray bar 內的小喇叭便可打開控制聲音的面版,內裡便有設定的選項了。

[ 本帖最後由 irobot 於 2007-8-14 16:03 編輯 ]
作者: zirok    時間: 2007-8-14 17:14
標題: 回復 irobot 大大
喔喔,我懂了=.=....,也知道去哪設定了,不過耳筒大概要去買電腦可以用的才行,
不過剪掉耳筒我就不太懂了,那拉出來的那兩條線是接在哪呢?還是這一步只是
讓我確定哪些線是訊號線而已?

我一開始以為~剪掉接頭,找地線與訊號線接在8051的輸出port和地線上,看看沒有聲音從
耳筒傳出,您說的:

=>開啟 軟件(frequency generator) 產生聲音訊號(要同時輸出左右聲道啊),用萬用錶量度每一組線,有讀數的一組便是了。

是指測哪一條是訊號線嗎?  那手機的耳筒應該是不行的了,因為它的接頭與電腦的口徑不符~
作者: irobot    時間: 2007-8-14 18:04
哈哈 !! 你完全誤會我的意思了。我說測試你的裝置,意思是你新做的 logic analyzer是否正常運作。正確的做法如下圖。
你要確定你的 logic analyzer 正常才可再用它量度 8051 啊。記著,每次只對付一個問題。否則單單看見沒有訊號,你根本無法知道問題出在哪一邊的。明白麼。

[ 本帖最後由 irobot 於 2007-8-14 18:12 編輯 ]

robot_16.jpg (33.98 KB, 下載次數: 264)

聲音線

聲音線

作者: zirok    時間: 2007-8-14 19:28
標題: 回復 irobot 大大
,我現在才完全明白...,我的理解力太差了...,請原諒我 ,
有勞大大做的圖了,那現在就是要找電腦用的耳機了...,感謝大大的解惑!!
作者: irobot    時間: 2007-8-14 20:35
不客氣!! 也可能是我的表達力太差了。
這耳筒你用完後不要掉了,它會像變形金剛般變身為一個 CRO 的。
加2個電阻和2條電線便可以了。
作者: zirok    時間: 2007-8-17 19:52
標題: 回復 irobot 大大
請教一下大大喔 ,我弄電路時我原本以為就算要用兩個電源分別供給不同的裝置GND還是要接在一起(參考電位要相同麻),可是我今天在測試74hc245的時候發現gnd沒接在一起反而是我要的結果=.=....怎麼會這樣咧...,
我之前的ssc電路伺服馬達供電的gnd和供給89s51的gnd也接在一起...,是不是這樣才發生問題的呢

[ 本帖最後由 zirok 於 2007-8-17 19:56 編輯 ]
作者: irobot    時間: 2007-8-17 20:36
我之前的ssc電路伺服馬達供電的gnd和供給89s51的gnd也接在一起...,

我只能說這是正確的做法。
至於你說
我今天在測試74hc245的時候發現gnd沒接在一起反而是我要的結果=.=....

我也不知為何,可否提供線路圖呢?
這樣說你是否成功量度到方波訊號呢?
作者: zirok    時間: 2007-8-18 13:06
原帖由 irobot 於 2007-8-17 20:36 發表

我只能說這是正確的做法。
至於你說
我也不知為何,可否提供線路圖呢?
這樣說你是否成功量度到方波訊號呢?


ok...我錯了 ,也許是我的鱷魚夾太鬆了...(買回來它的齒就咬不合=.=...),再來去試試看別的東西

另外我想請問一下irobot大大 ,您在測試的時候若用三用電表直流檔位去測訊號腳的話會測到幾伏特呢?
我改完程式後現在P1都是+5V說 ,不過我卻不知道錯在哪 ...我是把中斷的部分都忽略掉了...,還是這樣才是正確的輸出呢?


阿...一直蹲著好累(電腦在地上=.=..),好像一開機的話要先用administrator登入去打那個指令才不會出現錯誤訊息,
目前的發現:沒有傳訊號進去它的8個通道的白色方塊會一直閃,我的程式目前送進去只有呈現高態(不會閃爍只會呈現白色方塊),但最重要的一點...,完全沒有波形阿阿阿~~ ,晚一點再試耳機...乎

[ 本帖最後由 zirok 於 2007-8-18 14:44 編輯 ]

ssc2.asm

5.91 KB, 下載次數: 610

程式


作者: zirok    時間: 2007-8-19 19:42
標題: 回復 irobot 大大
我想請問一下喔?關於並列port的第一之接腳它的作用是什麼呢?
因為我找到的資料說它是strobe ,且好像要低態時才能使資料腳接收資料,
網址:http://www.ltivs.ilc.edu.tw/kocp/mpu/m7/m7-2-2.htm ,因為我不太瞭並列port的每一隻接腳是幹麻的,想說還是上來請教大大一下
作者: zirok    時間: 2007-8-20 13:43
哀....好悶...,什麼方法都試過了還是看不到訊號...,
我也嘗試用頻率產生軟體產生50hz訊號=>耳機=>伺服機,也是沒動作,
哀...一直失敗卻找不到原因也沒得問還蠻悶的
作者: irobot    時間: 2007-8-20 15:46
近幾日很繁忙呢。現在才有點空看你的問題。
整個問題。
A. 用接線下載程式 至 s51
B. 軟體在 s51 運行,期望起動伺服機
C. 伺服機不動, 接駁 logic analyser 硬體
D. 用 logic analyser 軟體但看不到輸出訊號。
找出可能出現問題的地方:
1. 你試過成功下載程式至你的 s51 並控制你用到的輸出腳點著數盞指定的 led 燈嗎? 若成功,則 A 部份沒有問題。若不清楚便要試一次證明你的 s51 沒問題。
2. 你是用 ssc2.asm 吧,再給你看看。
3. logic analyser 沒有訊號,先測試你的 ic 是否正常。根據電路,它只是把 B1 接腳的狀態輸出至 A1, B2==>A2, .. 餘此類推。所以可在麵包版上測試的。只用一個電源。PIN 1, 10, 19 接地, PIN 20 接+5V。 B1:+5V, B2:地 ,量度 A1 和 A2 是否輸出 高和低電壓。再試 B1:地, B2:+5V ,量度 A1 和 A2 是否輸出 低和高電壓。 若成功,則 C 部份硬體沒問題。
4. 這個不知軟件在 XP 上是否有問題。
如果你在 項目3是成功的,把音量調校最大,用頻率產生軟體產生1000Hz訊號。
用耳機線接駁 logic analyser 硬體,看清楚是駁那一條線 ,用 logic analyser 軟體並設定好檢測那一條線(admin 登入),如果但仍沒有看見訊號;我才給你試一次 D 部份:軟件在 xp 的環境是否可用吧。

請回覆 第1 , 第3 (和4項) 的測試結果。

[ 本帖最後由 irobot 於 2007-8-20 15:50 編輯 ]
作者: zirok    時間: 2007-8-20 22:52
標題: 回復 irobot 大大
sorry,沒顧慮到您的工作,實在感到萬分抱歉,我應該有耐心點,

A部分:
是可以的,我用一個LED和220歐姆的電阻,看到微弱的燈光,我也有燒別的程式進去跑別的電路,也是可以動,所以我想問題應該在程式上

B部分:(就要麻煩您了...它目前的情況看起來像有燒跟沒燒程式進去一樣...我再想有沒有可能錯程式在一開始的地方,但也不知道要改哪裡 )

C部分:
我不知道算不算是這顆IC能用,因為雖然能照您所說的量度出輸入的電壓,不過我量其他沒有訊號輸入的腳位有些也是有電壓,這點就是我一直感到疑惑的地方,嗯..所以這裡應該也算OK吧

D部分:
這次多了一個訊息,之前只有一個,這次跑出兩個,它除了error stopping driver之外多了一個"圖"裡面的訊息,然後好像是因為頻率變成1000HZ,看的出通道裡有一個白色方塊閃的比較慢,也發現耳機的訊號腳是綠色的,還有還有,我插b1以外的腳位時發現:我只給一隻腳送訊號,ex:我b3傳訊號,但是a2卻是顯示高穩態,但a3的白色方塊還是在閃喔 正常的那樣),不過沒有波形...目前沒有其他新的發現了@Q@,很感謝大大肯幫助我
作者: irobot    時間: 2007-8-21 00:37
A 組沒有問題那很好呀,89s51 沒有壞,悶時也可想些小玩意玩啊。
先答你 C 部份吧:
你的問題是當 B 組的腳懸空時 A 組的電壓輸出沒法預測。那當你把 B 組的腳位全部接 +5V 時,A 組的輸出是否全部是+5V 呢?另外當你把 B 組的腳位全部接 地時,A 組的輸出是否全部 0V呢?如果是這樣你的硬件是完全正常的了。
剩下的只是 D 部份吧?我有空給你試一下。 至於 B 部份只是軟件問題,肯定可以解決的,問題反而不大。而且不受空間限制,等車時、跑步時也可以思考解決辦法。不久前我也是這樣。
作者: irobot    時間: 2007-8-21 10:53
B部份的程式:
上次在 roboot>>>SOS 第58帖 提到的部份你還未有改好啊!
MOV COUNT,A
LOOP2:
MOV R4, #0AH ;10次
LOOP3:
NOP ;每個 nop 延時 1us (t1)
NOP ;每個 nop 延時 1us (t2)
DJNZ R4,LOOP3 ;R4=0時跳下一行 (t3) <=== 連這一句計 (t1+t2+t3) 總數是 4us 。
DJNZ COUNT,LOOP2 ;將PWM LOW的值乘以40us
MOV CUT,#0 ;因為T0中斷給兩個副程式使用,所以CUT累加在此須清除
RET

你現在寫在 DEL_L 和 PULSE_WIDTH 內的是 無限循環啊。你看到這差異嗎?
正確的寫法:
LOOP2:
           MOV R4,#0AH
                   ;10次  

LOOP3:
           NOP                                   ;每個 nop 延時 1us
           NOP
           DJNZ R4,LOOP3
                ;R4=0時跳下一行=>(1us+1us+2us)X10 = 40us
          DJNZ COUNT,LOOP2         ;將PWM LOW的值乘以40us         
           MOV CUT,#0                      ;因為T0中斷給兩個副程式使用,所以CUT累加在此須清除         
  RET

[ 本帖最後由 irobot 於 2007-8-21 10:57 編輯 ]
作者: zirok    時間: 2007-8-21 14:20
標題: 回覆irbot 大大
因為我腦袋空空阿 ,想不出啥新玩意兒,只是對機器人蠻感興趣的,剛好這邊又有圖.程式(電路還算簡單@Q@),就來作囉~想說起碼要先能這樣,不然要像板上的大大們能DIY出機器人應該更難

C部分OK囉~,照您說的測試是OK的~,那就麻煩您幫我試試看D部分囉 ,B部分的程式還要改這邊:
PWM_WIDTH:
MOV COUNT,@R0
LOOP1:
;SETB TR0 ;開啟T0計數器
;CLR TR0 ;關閉T0計數器
MOV R4,#0AH ;10次
LOOP4:

NOP  ;每個 nop 延時 1us
NOP
DJNZ R4,LOOP4  ;R4=0時跳下一行=>(1us+1us+2us)X10 = 40us,此行本身要2us
           
DJNZ COUNT,LOOP1 ;將PWM的值乘以40us         
MOV CUT,#0 ;因為T0中斷給兩個副程式使用,所以CUT累加在此須清除         

MOV PWM,@R0 ;將R0的值交給DEL_L去取LOW的時間
INC R0 ;找下一個PWM的位置
RET

因為其實這兩個很像,都是在計時的部分,然後我TABLE的部分也改了一下,暫時讓每個輸出都呈現一樣的DW,
目前修改的結果是OK囉~,跟之前用計時中斷寫的效果一樣,這都要感謝您~  
作者: irobot    時間: 2007-8-21 18:45
D 部份已經測試完成,軟件在 XP 下工作正常。下面顯示一些截圖。
要打入了很長的 path name呢,成功取得 ProcessID 。(圖1)
注意: 此時digitrac.exe 自動開啟了(圖2)。
在把setting 內選定監察 channel 1, 和 取樣 32768 (忘了告訴你,這是最高取樣率) (圖3)
縮少比例後可以看到 channel 1 有想要的訊號。channel 2 至 8 因為懸空了所以有隨機的訊號,可以不理。(圖4)
channel 1 的訊號我有用 聲效卡CRO 重新量度,兩者的結果是一致的。訊號週期是 19.23ms, pulse width 是 1.38 ms。
希望這些測試可以對你有幫助和能夠收窄問題的範圍。
下圖是我以前做實物前用麵包版測試的情況給你作個參考。試了一次便成功了。注意:logic analyzer 的電源是從 LPT1取的(紅線正、黑線地),圖中的電池只供電給 MCU。但它們的地線則共接。


[ 本帖最後由 irobot 於 2007-8-21 19:16 編輯 ]

digitrace_1.jpg (90.13 KB, 下載次數: 213)

圖1

圖1

digitrace_2.jpg (52.94 KB, 下載次數: 221)

圖2

圖2

digitrace_3.jpg (60.75 KB, 下載次數: 221)

圖3

圖3

digitrace_4.jpg (77.42 KB, 下載次數: 226)

圖4

圖4

作者: zirok    時間: 2007-8-21 23:40
標題: 回覆irobot 大大
我想說....感謝您花了這麼多時間教我,提供我意見,幫我很多很多...
可是無能的我還是沒有成功 ,我怎麼樣都看不到波形...,而且第一次開啟的時候還是有我之前跟您提到的錯誤訊息...
哀...,總覺得已經沒有可以找的問題了...,可能是我的腦袋瓜的問題~哈哈...
而且有點怪怪的就是說:我是用耳機線用頻率產生軟體產生訊號的...,但是不論我把插頭拔掉或是讓軟體STOP它的白色方塊還是在閃爍(有接訊號的channel)

[ 本帖最後由 zirok 於 2007-8-21 23:49 編輯 ]
作者: irobot    時間: 2007-8-22 00:09
okay!! 要有耐心慢慢來。
關於 D 部份,我不是很明白你的意思。你是否從來也不可以出到像圖1的畫面呢。可否截一個圖看看。
截圖軟件
http://www.wisdom-soft.com/downloads/setupscreenhunterfree.exe
ps:但你在第38樓的帖子明明是成功的啊。

我這測試是用取樣一次方式的。你有用 digitrace 內的 Zoom 按鈕縮小比例吧,否則是看不到波形的。
這情況也有可能是頻率產生器的問題,因我的測試不是用它(我的線用來做了CRO);而是直接用 mcu 產生訊號的。

所以若 A, C 和 D 部份(在38帖是okay) 沒有問題,你便有東西可以試了。你不是說可以讓 89s51 在指定的腳位 點著 和 熄滅 led 燈的嗎? 你可否寫一個 控制一盞 led 燈用 1000 Hz 亮和熄 的簡單程式,然後用來測試你的 logic analyzer 呢? 長著的燈是要比 1000 Hz 的光亮,所以用 led 已可大致知道程式有否方波產生了。你要加油啊!!

下圖是我的測試情況(雖然也很狹窄,但比你說的 "阿...一直蹲著好累(電腦在地上=.=..)," 我是太幸福了 )

[ 本帖最後由 irobot 於 2007-8-22 00:30 編輯 ]

Cimg2004.jpg (629.21 KB, 下載次數: 257)

Cimg2004.jpg

作者: zirok    時間: 2007-8-22 01:08
標題: 回覆irobot 大大
謝謝您的鼓勵,圖的部分我明天早一點起來弄吧...(我很懶...也怕因失敗懊惱 )
您也早點休息吧~

38樓我表達的不夠清楚SORRY ,那個時候我還沒有PORTTALK22這個軟體,
那時我的意思是用這個成功的開啟了 ,也以為可以看波形囉(所以就在那邊自HIGH...別見怪XD)

程式的部分OK阿,反正我有書...沒書的話要我寫大概會漏很多東西=.=....就先這樣吧~.~ 屋~晚上會作惡夢
作者: zirok    時間: 2007-8-22 09:16
標題: 回覆irobot 大大
請問"長著的燈是要比 1000 Hz 的光亮"這句是指??能說清楚一點嗎?
我正在寫程式不過要去看個醫生...,1000HZ的話好像看不到"亮"."暗" ,回來的話我打算先把頻率降低看看,暫時先這樣  感謝您
作者: irobot    時間: 2007-8-22 09:56
就你在38樓的畫面,你的確在 xp 內成功開啟了 porttalk 和 digitrac.exe 這軟件。這部份你與我的測試條件是一樣的,所以可以排除是軟件的問題了。而你的 ic 亦沒有問題,剩下來的只有:
1. 你電腦的 LPT1 是否肯定正常
2. 你的 IC 與 PARALLEL PORT 的接線 是否正確。(只能假設你是正確,最好在 PARALLEL PORT 的接頭上來個照片便清楚了)
3.  可能是 FREQ GENERATOR   的問題,所以等你寫好程式後,你我的測試環境便是一樣的。
若 LED 接 MCU +5V 輸出腳,它是很亮的,若 接的輸出腳是 +5V 和 0V 交替變化的,則它會較暗的。

[ 本帖最後由 irobot 於 2007-8-22 10:14 編輯 ]
作者: zirok    時間: 2007-8-22 11:51
標題: 回覆irobot 大大
SORRY 讓你等那麼久=.=,我還在寫...哈哈...我好像迴圈那邊會寫錯... 喔喔,那我懂了...不過我現在先試試看1s的亮滅...如果ok的話改成1khz相信就會容易多了 我看了我前面的帖子,還真的忘了附上照片@q@,照騙裡有我之前測試的照片(用FREQ GENERATOR的 ) 因為程式還沒寫好所以先放幾張照片,晚一點在放程式弄好的測試照片

[ 本帖最後由 zirok 於 2007-8-22 12:10 編輯 ]

有圖為證~1.bmp (2.25 MB, 下載次數: 312)

用了程式後~已開啟digitrace

用了程式後~已開啟digitrace

有圖為證~.bmp (2.25 MB, 下載次數: 278)

尚未用頻率程式~digitrace開啟中

尚未用頻率程式~digitrace開啟中

CIMG0328.JPG (1.67 MB, 下載次數: 236)

紅線是+vcc

紅線是+vcc

CIMG0329.JPG (1.63 MB, 下載次數: 236)

灰線是gnd

灰線是gnd

CIMG0330.JPG (1.7 MB, 下載次數: 229)

有三張圖...看不清楚我再拍~@q@

有三張圖...看不清楚我再拍~@q@

作者: uucww    時間: 2007-8-22 11:58
密切關注中!!
作者: zirok    時間: 2007-8-22 12:58
程式總算弄好拉...花了兩個多小時...(真受不了我自己=.=),可能是我沒弄好還是怎樣,
去參考一下其他人程式發現我少一個delay...,改完就好了 ,先來去睡一下...,不用密切關注拉~
給我些意見就好哩~
作者: irobot    時間: 2007-8-22 14:12
你銲接得很好啊!! 接頭看來是絕對沒有問題的。
但你用 porttalk 時,它再自動開啟 digitrac.exe 後卻有一個錯誤訊息出現。這個我沒有見過啊。可能問題便是出在這個上。你一定要想法子解決啊,在38樓的帖是沒有這個問題的。(我的 digitrace資料夾內的確是有 zlportio.sys 這個檔案的)
我只想到重新安裝 digitrace 這方法。我在xp測試中是用新版的,所以我希望你能調效到與我的測試環境一樣。這裡你要小心試啊。
建議:
1. 用 adminstrator 身份登入xp
2. 先反安裝你的 digitrace。
3. 重新安裝 digitrace。
4. 這安裝是有問題的,仍欠缺2個 dll 。所以你要手動 把舊版中的 borlndmm.dll 和 cp3240mt.dll 這2個檔案抄至你新安裝的 digitrace 資料夾內。
5  應該完成安裝 digitrace 了。
重新嘗試 用 porttalk 開啟 digitrac.exe,看看是否有問題。
PS: 你在38樓的圖雖然是成功,但你描述的過程好像很複雜的。其實過程是很簡單只有幾步的,不知會否也是引起問題的原因。你理解整個步驟後試試吧。希望你成功 !!

[ 本帖最後由 irobot 於 2007-8-22 14:21 編輯 ]
作者: zirok    時間: 2007-8-22 16:32
重新安裝後,這次開啟沒有錯誤訊息出現了,不過還是找不到波形..,
我沒有安裝印表機所以也不知道並列PORT是不是正常的,不過我都是用這台電腦的並列PORT作線上燒錄,所以我覺得應該是OK的??
產生1KHZ的程式:
        ORG        00H
START:        MOV        A,#FFH
        MOV        P1,A
        CALL        DELAY

LOOP:        SETB        P1.0
        CALL        DELAY
        CLR        P1.0
        CALL        DELAY   ;我這邊不+這一行的話好像都會失敗...不知道為什麼(就是亮度不會變比較暗..)
        JMP        LOOP


;==================================
DELAY:
        MOV        R1,#FFH       
LOOP1:       
        NOP
        NOP
        DJNZ        R1,LOOP1        ;2us+2us = 4us,總共= 4us x 256 = 1ms
       
        RET
;==================================       
        END
作者: irobot    時間: 2007-8-22 18:18
回 Zirok
LOOP:
        SETB P1.0
        CALL DELAY
        CLR P1.0
        CALL DELAY ;我這邊不+這一行的話好像都會失敗...不知道為什麼(就是亮度不會變比較暗..)
        JMP LOOP


這個是當然啦。如沒有這一行,在 CLR P1.0 後便是 JMP LOOP 然後便是 SETB P1.0 。亦即是一熄燈後立時又開著,自然是不會變暗了。
這很奇怪啊。 A 部份沒有任何問題。 B  部份換了這點燈程式亦是正常。 C 部份 logic analyzer 硬體正常。 最後 D 部份 digitrace 軟件亦正常。實在不明白為何你會不成功的。
另外你的 parallel port 接頭是"公"頭來的吧。
我只能建議
1.   你仔細重新檢視所有接線接駁的 pin number 是否和設計圖一樣。
2.   "所有"地線要共接
3.   測量訊號的線 是不經電阻直接駁至 mcu 的腳上
4.   在 digitrace 軟體上要把 setting 內的 取樣定為 32768,用一次取樣量度。要用 [zoom] button 縮細後才可看到整個波形。

另外看了原網站的 trouble shooting, 可以照紅色部份的建議試試。
Troubleshooting
Find out at which address the parallel printer port is located. Usually it's 0x378To find out your parallel port address, try a little program called "Port Finder". If it doesn't show a parallel port, then I've got 3 suggestions for you. First, the printer port is claimed by another application. Quit all tasks, flush any pending print tasks.
Secondly, there's a maintenance pack for win_95_ called "prnt5upd.exe". Locate it with ftp-search. This will install a new virtual lpt driver if yours is older.
Thirdly, it could be that your parallel port is located at an other address. Try to correct this, by means of jumpers, or by means of the bios setup (look for integrated peripherals or the like). You can also supply an alternative location using the textbox "Input Port".
If digitrace shows no response to signals applied to the printer port, try to set the port type to SPP using your BIOS setup. Also disable any software that uses the parallel port, such as scanner drivers etc.



[ 本帖最後由 irobot 於 2007-8-22 18:30 編輯 ]
作者: zirok    時間: 2007-8-22 19:25
標題: 回覆irobot 大大
可以請您告訴我紅色部分的具體做法嗎??  感謝

您說的用[zoom] button 縮細是指按" 一 "按鈕嗎?  可是弄寬弄細我都試過了...我檢查線路吧@Q@

測量訊號的線與MCU之前有74HC245而已~,SO...我看一下線路圖
作者: irobot    時間: 2007-8-22 20:47
就是說在開機時的黑畫面按  [del]  (不同bios這按鍵是不同的) 進入 bios 的 setup 畫面。
然後大慨是選當中的 integrated peripheral。在細項中有一個 Integrated Parallel Port Mode。
一般可以選 EPP (先試這個吧),或 trobleshooting 說的SPP。
如果不清楚可以上網找找你的 bios 設定的方法。
想問你,燒錄程式的線是你自己做的嗎?

[ 本帖最後由 irobot 於 2007-8-22 20:53 編輯 ]
作者: zirok    時間: 2007-8-22 20:57
標題: 回覆irobot 大大
是阿~,有線路圖又有圖文教學OK的拉,就是 阿峰大大求助線上燒錄程式的那邊,
基本上是可以燒錄的,不然我也沒得一直修改程式阿 呵呵,

另外關於線路的部分我是用麵包板,麵包板的另一塊就是燒錄的部分,
圖片裡是傳訊號區,我的接線我看不太出來有什麼問題@q@,so我等等再去試試看(好像忘了共同接地)
之後再試試看bios吧...(最後的手段=.=")

[ 本帖最後由 zirok 於 2007-8-22 21:02 編輯 ]

CIMG0352.JPG (30.1 KB, 下載次數: 234)

我的下上+.-有接在一起~

我的下上+.-有接在一起~

CIMG0353.JPG (30.19 KB, 下載次數: 241)

產品編號hd74hc245p

產品編號hd74hc245p

CIMG0354.JPG (29.33 KB, 下載次數: 258)

合照~ 等等拿去接電腦~

合照~ 等等拿去接電腦~

作者: irobot    時間: 2007-8-22 22:26
如果最後仍不成功,我想你也不會甘心就此罷休的。因為明明 digitrace 軟件 與 你製作的硬件也沒有問題,為甚麼在相同情況下,我的能運作你的卻不能呢。?????
若換了是我,我會很好奇想知道
1. 究竟是否有電壓送入parallel port 內?
2. parallel port 有否供電給 ic 讓它正常運作呢?
換了是你,你有甚麼辦法可以證實這個關鍵的部份呢?
作者: zirok    時間: 2007-8-23 20:50
標題: 回覆irobot 大大
我進bios之後發現它本來的設定就是spp,所以我先改成EPP看看,不過跟之前一樣,
SO..也不多贅述 ,三個月的暑假...,沒DIY出什麼東西來,每一次每一次都對自己蠻失望的,
我在想可能是電腦的問題...,因為它每當我開機=>第一次開啟digitrace時它都會先顯示錯誤訊息一次,然後我就會再打一次指令,不過它第二次開啟就沒有錯誤訊息了...,怎麼測試...,
我個人是沒什麼想法=.=",我只知道當我沒傳訊號給digitrace時它的每一個白色方塊是白色的(不閃爍),但當我接上74HC245,它每一個通道的白色方塊會不停閃爍,當我傳訊號進去(EX:通道1),
通道1的白色方塊的閃爍頻率明顯與其他不同,我是以次方式判斷有無訊號進去,但實際上是怎樣我也不太清楚@Q@,到底怎麼樣才能看到波形呢....哀
作者: irobot    時間: 2007-8-23 21:13
要測定第一項,你可以自己供應+5V 給 ic ,先確定mcu的輸出腳能供應1000Hz 點亮 led 。然後把 訊號接至 ic 的 B1 腳,而把 led 正的一端接 ic 的 A1,負的一端接地。看看 led 的輸出是否和之前相若。這便證實了真的有電壓輸出至電腦的 parallel port。
另外,執行 digitrac.exe 讓它監察任何一條頻道,並用 萬用表 量度 parallel port 的 pin 1 在這時是否有供應 +5V 出來驅動 ic 。
若這2兩項皆正常,則可把問題鎖定在 軟件 與 電腦的 parallel port 配合上了。
作者: zirok    時間: 2007-8-24 12:07
標題: 回覆irobot 大大
ok,看的到了,問題大概出在我不會用那個軟體...,原來要看波形時要先按"SAMPLE"這個鈕,
我原本以為只要接好就會看到訊號了=.=,沒想到還要按一個東西,因為之前在試的時候亂按它,
它讀訊號要等一下,我以為會當機就把它關了...大大也沒提到我也不敢亂按 ,
今天想說哀...反正只是+5V和GND的訊號,應該不會怎樣,就發現有訊號了...

1KHZ那個的週期是2ms(因為有兩個DELAY),DW是50%, 總算能用了...真是感謝irobot大大不厭其煩的教導
作者: zirok    時間: 2007-8-24 13:31
標題: 回覆irobot 大大
挖....我已經被退件第三次了...攬的打了=.="
怎麼今天才變成限制檔案大小和格式阿@Q@...

我用之前您幫我修改的程式去看波形,發現4個通道的總週期就已經超過20ms了,
單一通道的週期也超過2.5ms,難怪伺服機不動 ,慶幸的是現在只剩程式問題囉~
作者: irobot    時間: 2007-8-24 14:41
恭喜你,有志者事竟成。   你總算在假期完結前做好這個了。它很有用的,有了它你便知程式中的問題出在那裡。
不過你給我不能成功的答案也實在太叫我意外了!  哈哈哈!!!!
也怪我沒有詳細問清楚你使用軟件的情況,我忽略了這可能性。
關於你說的超過 2.5 ms 的情況,有空再給你看一下吧 !!
你再發一次你現在用的 ssc.asm 完整的程式吧。

另外,你現在有了 logic analyzer, 你自己也可以嘗試用它驗證你的 計時 方法是否準確。
自己動手寫一個簡單的 loop ,控制 腳位 輸出 pulse 然後量度。這可有助你解決計時不準的問題。

[ 本帖最後由 irobot 於 2007-8-24 15:00 編輯 ]
作者: zirok    時間: 2007-8-25 00:33
標題: 回覆irobot 大大
感謝大大的鼓勵 ,對阿...有這個就方便多了,不需要去借很大隻的示波器,我個人覺得蠻方便的@Q@

現在不知道為什麼不能貼檔案.圖片也限制檔案類型與大小,程式只好貼在下面:


CH1 REG P2.0   
CH2 REG P2.1
COUNT EQU 37H
CUT EQU 39H   
PWM0 EQU 40H ;
PWM1 EQU  41H ;
PWM2 EQU 42H ;
PWM3 EQU 43H ;
PWM4 EQU 44H ;
PWM5 EQU  45H ;
PWM6 EQU 46H ;
PWM7  EQU 47H ;
F EQU 50H
PIN EQU 51H
PWM EQU 52H ;目前被我拿來解決LOW的部分
PIN1 EQU 53H
;------------------------------------------------------
ORG 00H
AJMP START
;ORG 0BH
;LJMP T0_INT  ;timer0中斷
;ORG 1BH
;LJMP T1_INT  ;timer1中斷
               
ORG 30H
START:
MOV SP,#5FH  ;設定堆疊區60H-7FH(固定用法)
MOV DPTR,#TABLE ;查表法,將TABLE的位址傳入DPTR的暫存器
      MOV TMOD,#00010001B ;設定 TIMER1 作業於模式 1,TIMER0 作業於模式 1
;---------------------------------------------------------
;MOV TH0,#>(65536-40)   ;設定TIMER0在每40us中斷一次,if use12Mhz crystal
;MOV TL0,#<(65536-40)
;MOV TH1,#>(65536-10000);設定TIMER1在每10ms計時一次,if use12Mhz crystal(以12MHZ基礎週期為1us)
;MOV TL1,#<(65536-10000)
;--------------------------------------------------------
SETB EA
;SETB ET0 ;啟用TIMER0中斷
;SETB ET1 ;啟用TIMER1中斷
              
MOV CUT,#0  ;賦予解譯旗標CUT歸零(沒用到)
MOV COUNT,#0 ;暫存R0位址的值
;--------------------------------------------------------------------------------
;通道判斷
;--------------------------------------------------------------------------------
MAIN:
MOV R1,#0H
MOV R2,#5H

LOOP:
MOV A,R1
MOVC A,@A+DPTR ;將TABLE裡第一個定義的值存入A
MOV PWM0,A  ;將A的值推入PWM0
INC R1
MOV A,R1
MOVC A,@A+DPTR
MOV PWM1,A
INC R1  
MOV A,R1
MOVC A,@A+DPTR
MOV PWM2,A
INC R1
MOV A,R1
MOVC A,@A+DPTR
MOV PWM3,A
INC R1
MOV A,R1
MOVC A,@A+DPTR
MOV PWM4,A
INC R1
MOV A,R1
MOVC A,@A+DPTR
MOV PWM5,A
INC R1
MOV A,R1
MOVC A,@A+DPTR
MOV PWM6,A
INC R1

MOV A,R1
MOVC A,@A+DPTR
MOV PWM7,A
INC R1

ACALL OUT ;短距離呼叫
DJNZ R2,LOOP ;R2不=0則跳回LOOP,=0則回到MAIN
            LJMP MAIN ;遠程跳躍
;--------------------------------------------------------------------------------
TABLE:
DB 0CH,0CH,0CH,0CH,0CH,0CH,0CH,0CH ;先置中(1.5ms的high訊號)
DB 00H,00H,00H,00H,00H,00H,00H,00H
DB 06H,06H,06H,06H,06H,06H,06H,06H
DB 12H,12H,12H,12H,12H,12H,12H,12H
DB 19H,19H,19H,19H,19H,19H,19H,19H
;---------------------------------------------------
;輪序迴圈
;---------------------------------------------------      
OUT:
MOV R0,#40H        
C0: SETB P1.0
            MOV R7,#13 ;每一格"H"的時間,視需要微調
ACALL DEL_H ;1ms
ACALL PWM_WIDTH
CLR P1.0
ACALL DEL_L

C1: SETB P1.1 ;R0=41H
MOV R7,#13 ;每一格"H"的時間,視需要微調
ACALL DEL_H ;1ms
ACALL PWM_WIDTH
CLR P1.1

ACALL DEL_L

C2: SETB P1.2 ;R0=42H
MOV R7,#13 ;每一格"H"的時間,視需要微調賦,目前改成延時0.1ms
ACALL DEL_H ;1ms
ACALL PWM_WIDTH
CLR P1.2
ACALL DEL_L
C3: SETB P1.3 ;R0=43H
MOV R7,#13 ;每一格"H"的時間,視需要微調
ACALL DEL_H ;1ms
ACALL PWM_WIDTH
CLR P1.3
ACALL DEL_L
C4: SETB P1.4 ;R0=44H
MOV R7,#13 ;每一格"H"的時間,視需要微調
ACALL DEL_H ;1ms
ACALL PWM_WIDTH
CLR P1.4

ACALL DEL_L

C5: SETB P1.5 ;R0=45H
MOV R7,#13 ;每一格"H"的時間,視需要微調
ACALL DEL_H ;1ms
ACALL PWM_WIDTH
CLR P1.5
ACALL DEL_L
C6: SETB P1.6 ;R0=46H
MOV R7,#13 ;每一格"H"的時間,視需要微調
ACALL DEL_H ;1ms
ACALL PWM_WIDTH
CLR P1.6
ACALL DEL_L
C7: SETB P1.7 ;R0=47H
MOV R7,#13 ;每一格"H"的時間,視需要微調
ACALL DEL_H ;1ms
ACALL PWM_WIDTH
CLR P1.7

ACALL DEL_L
;DJNZ R3,OUT ;因為輪序迴圈執行共20ms x 250次 = 5秒(顯示五秒)
  
RET
;--------------------------------------------------------------------------------
PWM_WIDTH:
MOV COUNT,@R0
LOOP1:
;SETB TR0 ;開啟T0計數器
;CLR TR0 ;關閉T0計數器
MOV R4,#0AH ;10次
LOOP4:

NOP  ;每個 nop 延時 1us
NOP
DJNZ R4,LOOP4  ;R4=0時跳下一行=>(1us+1us+2us)X10 = 40us,此行本身要2us
           
DJNZ COUNT,LOOP1 ;將PWM的值乘以40us         
MOV CUT,#0 ;因為T0中斷給兩個副程式使用,所以CUT累加在此須清除         

MOV PWM,@R0 ;將R0的值交給DEL_L去取LOW的時間
INC R0 ;找下一個PWM的位置
RET        
;--------------------------------------------------------------------------------
DEL_H:                                       
;延時R7*0.1毫秒,晶振在11.0592MHZ

L7:
MOV R6,#2 ;令 R6=0
L6:
MOV R5,#17 ;令 R5=0
DJNZ R5,$ ;R5=R5-1, 若 R5 <> 0, 則繼續本指令
DJNZ R6,L6 ;R6=R6-1, 若 R6 <> 0, 則跳至 L6
DJNZ R7,L7 ;R7=R7-1, 若 R7 <> 0, 則跳至 L7
RET
;--------------------------------------------------------------------------------
        
DEL_L:                                       
;延時R7*0.1毫秒,晶振在11.0592MHZ
;MOV R7,#1 ;因為執行DEL_H時已經變成0(暫時想不到當初為什麼要+這個)
MOV A,#27H ;27H X 40us 約 = 1.56ms ,先前已經有1ms了
CPL PWM
ADD A,PWM
MOV COUNT,A
LOOP2:
;SETB TR0 ;開啟T0計數器
;CLR TR0 ;關閉T0計數器
MOV R4,#0AH ;10次  
LOOP3:

NOP  ;每個 nop 延時 1us
NOP
DJNZ R4,LOOP3 ;R4=0時跳下一行=>(1us+1us+2us)X10 = 40us

DJNZ COUNT,LOOP2 ;將PWM LOW的值乘以40us         
MOV CUT,#0 ;因為T0中斷給兩個副程式使用,所以CUT累加在此須清除         

RET

;--------------------------------------------------------------------------------
;DEL:
;延時R7*0.1毫秒,晶振在11.0592MHZ
     
;D5:
; MOV R6,#20 ;令 R6=0
;D4:
; MOV R5,#20 ;令 R5=0
; DJNZ R5,$ ;R5=R5-1, 若 R5 <> 0, 則繼續本指令($代表跳回本行)
; DJNZ R6,D4 ;R6=R6-1, 若 R6 <> 0, 則跳至 L4
; DJNZ R7,D5 ;R7=R7-1, 若 R7 <> 0, 則跳至 L5
; RET
;--------------------------------------------------------------------------------
;T0_INT:    ;只用到一個計時中斷
; PUSH A
; PUSH PSW
; CLR TR0
; MOV TH0,#>(65536-40) ;設定TIMER0在每40us中斷一次,if use12Mhz crystal
; MOV TL0,#<(65536-40)
; ;INC  CUT  ;CUT還搞不懂

; POP PSW
; POP A
; RETI
;--------------------------------------------------------------------------------
;T1_INT:
; PUSH A
; PUSH PSW
; CLR TR1
; MOV TH1,#>(65536-10000);設定TIMER1在每10ms中斷一次,if use 12Mhz crystal
; MOV TL1,#<(65536-10000)

; POP PSW
; POP A
; RETI
;---------------------------------------------------------------------
END
作者: irobot    時間: 2007-8-25 01:50
DEL_L:                       ;延時R7*0.1毫秒,晶振在11.0592MHZ
                                   ;MOV R7,#1 ;因為執行DEL_H時已經變成0(暫時想不到當初為什麼要+這個)
MOV A,#27H               ;27H X 40us 約 = 1.56ms ,先前已經有1ms了
CPL PWM
ADD A,PWM
MOV COUNT,A
LOOP2:
                                              ;SETB TR0 ;開啟T0計數器
                                              ;CLR TR0 ;關閉T0計數器
          MOV R4,#0AH             ;10次  
LOOP3:
         NOP                             ;每個 nop 延時 1us
         NOP
         DJNZ R4,LOOP3          ;R4=0時跳下一行=>(1us+1us+2us)X10 = 40us
        DJNZ COUNT,LOOP2    ;將PWM LOW的值乘以40us         
MOV CUT,#0                          ;因為T0中斷給兩個副程式使用,所以CUT累加在此須清除         
RET


我不太肯定紅色語句的寫法有否問題,因為查 8051 instruction set 沒有這種寫法。
可否改為先找取 PWM 內的數值至 A, 執行 CPL  A 指令,然後把 A 內的值回傳至 PWM。再之後才做 這幾句
MOV A,#27H               ;27H X 40us 約 = 1.56ms ,先前已經有1ms了
ADD A,PWM
MOV COUNT,A
LOOP2:
...............
...............
不知這樣有否幫助。
作者: zirok    時間: 2007-8-25 09:58
標題: 回覆irobot 大大
當然有幫助阿 ,算數邏輯指令好像都要先放到A暫存器裡,
我真是阿呆=.=",先去試試看~ ,不過現在不能po圖還蠻無奈的


嗯~,改了之後好很多,每一個通道的週期約20ms,每一訊號間隔約2.5ms,因為我把DEL_H改了一下,
目前只會出一種訊號,還不是大問題,不過我拿去接馬達還是不動 ,真是怪怪~
,想說能不能貼digitrace的紀錄檔...,幾kb而已...,不過這裡的檔案類型不接受~屋

[ 本帖最後由 zirok 於 2007-8-25 10:39 編輯 ]
作者: irobot    時間: 2007-8-25 11:07
慢慢來吧。只要肯定訊號準確,問題便是在出在伺服機或提升電阻之類的東西上。
我插入這2kb的圖沒有問題啊。
附件也好像沒有問題。

[ 本帖最後由 irobot 於 2007-8-25 11:12 編輯 ]

prevbutton2.png (3.63 KB, 下載次數: 245)

prevbutton2.png

作者: zirok    時間: 2007-8-25 21:32
標題: 回覆irobot 大大
喔... ,那還是要+提升電阻囉,我再改一下程式,實驗時再加上提升電阻看看~1k的可以吧~

關於圖片,當然囉~,您放的圖片是256kb以下的阿,不過我之前上傳的圖片隨便都要1.多mb..
所以覺得現在好麻煩說@q@
作者: irobot    時間: 2007-8-25 21:37
你可以把 jpg 圖片檔壓縮一點啊。好多軟件也可以做到的。用 InfanView 吧,可以改變解像和壓縮比列的。
至於 digitrace的紀錄檔,你可以先改它的副檔名,然後通知其他人要改回的名稱便可以了。
作者: zirok    時間: 2007-8-26 19:53
標題: 回覆irobot 大大
喔~,原來如此,可是它每次都會告知有可能會改變檔案我就不太敢改下去
目前進度都算順利,程式的部分靠DIGITRACE看波形,目前碰到的問題都可以解決 ㄏㄏ

先測試看看~雖然是之前的圖@Q@

[ 本帖最後由 zirok 於 2007-8-26 20:10 編輯 ]

1.JPG (28.67 KB, 下載次數: 247)

1.JPG

2.jpg (29.61 KB, 下載次數: 254)

2.jpg

3.JPG (28.56 KB, 下載次數: 255)

3.JPG

作者: irobot    時間: 2007-8-26 20:39
呵呵!! 做得不錯。
圖1的時間超過了 2.5 ms ,不過我想你可以慢慢找出是3個計時部份中哪一個地方要修改的。
作者: zirok    時間: 2007-8-27 11:04
標題: 回覆irobot 大大
呵呵,我有小改一下,目前的數值我覺得應該都差不多了,頂多0.1 ~ 0.2ms(其實正確數字沒看很清楚~哈哈),而且錯誤目前都修正了,測馬達還是不能用就只好看看提升電阻能不能讓它動囉,再不行的話我想就是時間控制的不夠精準吧..,平均來說我的2.5ms(理想)都會變成2.7ms左右

p.s.
dgt檔把檔名改成jpg好像還是不行=.=..,它會說你那是無效的檔案@q@,

[ 本帖最後由 zirok 於 2007-8-27 11:20 編輯 ]

4.JPG (37.85 KB, 下載次數: 254)

4.JPG

作者: irobot    時間: 2007-8-27 11:54
看了你的貼圖突然想起,你不如改改程式不要每 20ms 便轉1次訊號,可能伺服機不能作這麼快的反應便不動了。你可先把5次的訊號也做相同的設定看看效果如何。
作者: ayu    時間: 2007-8-27 21:23
zirok大大您好喔,

      您那個E-SKY8克伺服機,小弟也買來測試了喔,它裝在s51上的話,一定要加裝提升電阻。

因為要使它得到大的電壓,所以用1k歐姆的電阻來測試,結果就可控制了喔,不曉得您試驗如何。

如您還想使電壓提高的話,可再用小於1k歐姆的電阻來測試,不過一次不要降太多電阻,慢慢降喔。

看您的軟體示波器已完成了,可看看它的波形變化。
作者: ayu    時間: 2007-8-28 08:26
最近在書局看到一本     

基礎邏輯分析儀設計-以Visual Basic及MCS-51實作

http://www.opentech.com.tw/search/bookinfo.asp?isbn=9572155431

它的內容也是教我們做一台邏輯分析儀 不過都要自己做,功能好像比示波器好很多,看有沒有人做看看,小弟還沒

有時間做出來,如有人可分享的話,感激不盡喔。
作者: zirok    時間: 2007-8-28 09:41
回AYU大大:
自己寫示波器好像蠻困難的說,大大們加油 ,我是"學會"怎麼用而已~,軟體是irobot大大推薦的~

真是讓您破費了還買了伺服機來測試@q@,另外我想確定一下,e-sky8g伺服機的白色線是訊號線,紅色是+vcc,黑色是gnd嗎? 不過應該是沒錯,我接電上去它都會動一下....

還有提升電阻是怎麼接呢?  是接在8051和伺服馬達的訊號線之間齁?  不過我測它的電流也是測不到

感謝irobot . AYU大大的建議,我會試試看的

[ 本帖最後由 zirok 於 2007-8-28 09:48 編輯 ]
作者: zirok    時間: 2007-8-28 19:40
加了提升電阻我還是測不到電流說(爬了之前的文才發現有問過@Q@),
請問加了提升電阻後可以用三用電表量出的"差別"在哪呢?(好讓我知道有沒有插對) 是電流還是電壓會上升??
作者: irobot    時間: 2007-8-28 20:26
應該是量度電壓較好吧!
是升電阻如下接駁。

[ 本帖最後由 irobot 於 2007-8-28 20:30 編輯 ]

pull-up.jpg (11.78 KB, 下載次數: 305)

pull-up.jpg

作者: zirok    時間: 2007-8-29 00:09
標題: 回覆irobot 大大
每次都要您費心,麻煩您了 ,嗯...我也是這樣接的,也有量一下電壓...,我是用提供MCU的電源拉一條線去接電阻(1K歐姆),不過好像沒變動很大=~=",嗯..再試試看好了
作者: ayu    時間: 2007-8-29 01:25
原帖由 zirok 於 2007-8-29 00:09 發表
每次都要您費心,麻煩您了 ,嗯...我也是這樣接的,也有量一下電壓...,我是用提供MCU的電源拉一條線去接電阻(1K歐姆),不過好像沒變動很大=~=",嗯..再試試看好了

zirok大大您好喔,

     紅色接正電,黑色接負電,白色接控制訊號(mcu產生的pwm),然後照irobot大大的提升電阻接法去接,伺服機電源不要和mcu的電源共用,分開來測試,再試試看囉。




歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/) Powered by Discuz! X3.2