2016年5月28日 星期六
改造UT61E (未完)
今日,本來要使用電表(ut61E)發現,它沒電了. 因它並沒有auto-sleep.
而其實在購買時,就是看見它的可改造性(誤).
因此,找了一下並實驗其auto-sleep function.
最主要的還是它本身所使用的ES51922a已有這一function
而因為為了"通訊(RS232 format)"而關閉它.
故只需要將它對應的pin 腳,改掉(或是用外部開關,即可)
正確的作法(參照ref link),是以它的通訊線上依Photointerrupter(GP1S50)
來做,但因我手上沒有其它的元件及工具,所以我目前暫時
用一個外部滑動開關用..
其它,則要找時間去補上....
ref:
web:
UT61E Auto Power Off Modification
http://www.designelectronics.com.au/DesignElectronics_UT61E-APO.htm
UT61E拆机图+ 也D 完美版 自动关机功能
http://forum.eepw.com.cn/thread/240616/1
file:
https://drive.google.com/open?id=0B2uYQcUgyMUJTXROX01ucV9GdFE
2016年4月10日 星期日
usb mouse setting propross
[4;41mResetting in 1 second..
[4;41mUsbBusReset..
[4;41mUsbBusSuspend..
[4;41mUsbBusSuspend..
[4;41mUsbBusReset..
[4;41mUsbBusSuspend..
[4;41mUsbBusSuspend..
[4;41mUsbBusReset..
[4;41mUsbEp0Out..
start read endp0,len 8
80
6
0
1
0
0
40
0
end read
dev to host request
GET_DESCRIPTOR
DEVICE_DESCRIPTOR
D12 to write 16 bytes to end 1..
data string,hex
121101000108888100112
[4;41mD12ClearInEp0..
D12 to write 2 bytes to end 1..
data string,hex
31
[4;41mUsbEp0Out..
for out request
start read endp0,len 0
end read
[4;41mUsbBusReset..
[4;41mUsbEp0Out..
start read endp0,len 8
0
5
1
0
0
0
0
0
end read
SET_ADDRESS
D12 to write 0 bytes to end 1..
data string,hex
[4;41mD12ClearInEp0..
[4;41mUsbEp0Out..
start read endp0,len 8
80
6
0
1
0
0
12
0
end read
dev to host request
GET_DESCRIPTOR
DEVICE_DESCRIPTOR
D12 to write 16 bytes to end 1..
data string,hex
121101000108888100112
[4;41mD12ClearInEp0..
D12 to write 2 bytes to end 1..
data string,hex
31
[4;41mD12ClearInEp0..
[4;41mUsbEp0Out..
for out request
start read endp0,len 0
end read
[4;41mUsbEp0Out..
start read endp0,len 8
80
6
0
2
0
0
FF
0
end read
dev to host request
GET_DESCRIPTOR
CONFIGURATION_DESCRIPTOR
wlength more SendLength
D12 to write 16 bytes to end 1..
data string,hex
9229011080329400131
[4;41mD12ClearInEp0..
D12 to write 16 bytes to end 1..
data string,hex
20921101211223407581310
[4;41mD12ClearInEp0..
D12 to write 9 bytes to end 1..
data string,hex
0A0000000
[4;41mD12ClearInEp0..
[4;41mUsbEp0Out..
for out request
start read endp0,len 0
end read
[4;41mUsbEp0Out..
start read endp0,len 8
80
6
3
3
9
4
FF
0
end read
dev to host request
GET_DESCRIPTOR
STRING_DESCRIPTOR
product number
D12 to write 16 bytes to end 1..
data string,hex
1633203003003802D0300370
[4;41mD12ClearInEp0..
D12 to write 6 bytes to end 1..
data string,hex
2D0310390
[4;41mD12ClearInEp0..
[4;41mUsbEp0Out..
for out request
start read endp0,len 0
end read
[4;41mUsbEp0Out..
start read endp0,len 8
80
6
0
3
0
0
FF
0
end read
dev to host request
GET_DESCRIPTOR
STRING_DESCRIPTOR
lan id
D12 to write 4 bytes to end 1..
data string,hex
4394 [4;41mD12ClearInEp0..
[4;41mUsbEp0Out..
for out request
start read endp0,len 0
end read
[4;41mUsbEp0Out..
start read endp0,len 8
80
6
2
3
9
4
FF
0
end read
dev to host request
GET_DESCRIPTOR
STRING_DESCRIPTOR
product string
D12 to write 16 bytes to end 1..
data string,hex
363A308578575965604FA973550 [4;41mD12ClearInEp0..
D12 to write 16 bytes to end 1..
data string,hex
530420B304B4E28753762EA819A5B [4;41mD12ClearInEp0..
D12 to write 16 bytes to end 1..
data string,hex
494E8476550530420200480490 [4;41mD12ClearInEp0..
D12 to write 6 bytes to end 1..
data string,hex
440BE8B759 [4;41mD12ClearInEp0..
[4;41mUsbEp0Out..
for out request
start read endp0,len 0
end read
[4;41mUsbEp0Out..
start read endp0,len 8
80
6
0
1
0
0
12
0
end read
dev to host request
GET_DESCRIPTOR
DEVICE_DESCRIPTOR
D12 to write 16 bytes to end 1..
data string,hex
121101000108888100112 [4;41mD12ClearInEp0..
D12 to write 2 bytes to end 1..
data string,hex
31 [4;41mD12ClearInEp0..
[4;41mUsbEp0Out..
for out request
start read endp0,len 0
end read
[4;41mUsbEp0Out..
start read endp0,len 8
80
6
0
2
0
0
9
0
end read
dev to host request
GET_DESCRIPTOR
CONFIGURATION_DESCRIPTOR
D12 to write 9 bytes to end 1..
data string,hex
922901108032 [4;41mD12ClearInEp0..
[4;41mUsbEp0Out..
for out request
start read endp0,len 0
end read
[4;41mUsbEp0Out..
start read endp0,len 8
80
6
0
2
0
0
29
0
end read
dev to host request
GET_DESCRIPTOR
CONFIGURATION_DESCRIPTORD12 to write 16 bytes to end 1..
data string,hex
9229011080329400131 [4;41mD12ClearInEp0..
D12 to write 16 bytes to end 1..
data string,hex
20921101211223407581310 [4;41mD12ClearInEp0..
D12 to write 9 bytes to end 1..
data string,hex
0A0000000 [4;41mD12ClearInEp0..
[4;41mUsbEp0Out..
for out request
start read endp0,len 0
end read
[4;41mUsbEp0Out..
start read endp0,len 8
0
9
1
0
0
0
0
0
end read
SET_CONFIGURATION
D12 to write 0 bytes to end 1..
data string,hex
[4;41mD12ClearInEp0..
[4;41mUsbEp0Out..
start read endp0,len 8
21
A
0
0
0
0
0
0
end read
usb class out request
set idle
D12 to write 0 bytes to end 1..
data string,hex
[4;41mD12ClearInEp0..
[4;41mUsbEp0Out..
start read endp0,len 8
81
6
0
22
0
0
74
0
end read
dev to host request
GET_DESCRIPTOR
REPORT_DESCRIPTOR
D12 to write 16 bytes to end 1..
data string,hex
5192A1191A1059191293
[4;41mD12ClearInEp0..
D12 to write 16 bytes to end 1..
data string,hex
150251953751812951755813 [4;41mD12ClearInEp0..
D12 to write 16 bytes to end 1..
data string,hex
519309319381581257F758953 [4;41mD12ClearInEp0..
D12 to write 4 bytes to end 1..
data string,hex
816C0C0 [4;41mD12ClearInEp0..
[4;41mUsbEp0Out..
for out request
start read endp0,len 0
end read
2014年3月30日 星期日
低功耗無線通訊研討會
這次,所參加的會議為-台灣的代理商緯忠和他們主要的合作廠商 笙科。
因為,上次我司有在找其它BLE solutaion其中一家就是笙科及創傑,所以我也有事請假去台北。
時間:2014/3/26
地點:台北劍壇青年中心
人數:約80人
主旨:低功耗SOC
要點:
像是這種其實沒有什麼要點,像在推產品而己,
在參加幾次像這樣的研討會,其收獲並沒有多少。
而笙科是一家做sub 1G,智能電表的。而我司的非BLE產品也是用它們的IC(2.4G)
其中我主要想要知道這家的IC其到底有那些優勢。除了cost等。
RX sensity
support
Test tool
而最後,它提供物聯網的討論
sensor
physic
network
application
物聯網的定義及標準,
network,分內網 及外網。
BLE,Sub 1G and RF.
外網則由網路(Hub)來做。
它的優勢有:
1.它有relayout
2.cost , bonding包裝
3. 台廠,可直接聯絡。
疑間:
之後是否還要去參加這類的會議,若要請假去參加這類會議。
標準'非標準的協定:
之間差在於,沒有互通性,通用性。
錄音檔
2013年12月8日 星期日
有線~無線楖論(4)
有線~無線楖論的最後,才要提我的主要目的
即無線網路系統中的內容。
以下是我從整理出的內容:http://www.techbang.com/posts/15863-introduction-to-network-infrastructure-5-80211-and-80211a?page=1
無線網路的規格定義在IEEE 802.11(有線則是802.3)。
定義:
IEEE 802.11定義了運作頻率設定在2.4GHz。會選擇這個頻率是因為2.4GHz屬於ISM(Industrial, Scientific and Medical radio band,工業、科學以及醫療無線頻段),
資料表示 : 格雷碼
格雷碼(gray code)
十進位數字轉為二進位時,0、1、2、3、4、5、6、7、8、9分別會轉換成0000、0001、0010、0011、0100、0101、 0110、0111、1000、1001。但在通訊世界裡則是採用格雷碼,所以0∼9會被轉換為0000、0001、0011、0010、0110、 0111、0101、0100、1100、1101,由於各組之間只有變換1個位元,可以降低傳輸時出錯的機會。
(假設以二進制為0的值做為格雷碼的0)
G:格雷碼 B:二進制碼
G(N) = (B(n)/2) XOR B(n)
展頻
data link layer:
802.11在媒體層(data link,定義出其CRC這種檢查及Frame大小)的部分採用CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)(**RTS/CTS(Request To Send/Clear To Send)。
physical layer :
展頻(Spread Spectrum)的概念,展頻就是把1組資料量較少的資訊,加以放大並放在1組資料量較多的資訊上,好比把1MB的資料,增肥到10MB的大小,但內部包含的實際資訊卻跟1MB沒有兩樣。這麼做當然對於傳輸速度是有害的,但在無線網路的環境中,有些事比起傳輸量來說更需要克服。
展頻有許多好處,第一就是對抗雜訊,由於生活環境中充滿許多電磁波,甚至是地球或是外太空也都會來尬一角。舉個簡單例子,展頻之後使用 11111111代表原始的1、00000000代表原始的0,如果今天好死不死11111111被干擾成10111110,也可以辨識出這其實是代表 1。第二就是可以用來隱藏或是加密訊號,通常我們想要傳輸的資料只占據一個相當小頻寬的基頻訊號,利用展頻技術把基頻延伸到大範圍的頻帶上,讓傳輸能量降低成與背景值差不多,避免引起他人注意;此外把這個把原始信號與加密信號經過一翻計算後傳送出去,只有擁有加密信號的人能夠解出原始訊號,其他人看到就只是一些無意義的資料。
而且展頻之後,可同時容許多人在同一頻率中進行通訊,大家的頻寬都是相等的,這就是所謂的CDMA(Code Division Multiple Access,分碼多重存取)。
CDMA
雖然CDMA沒有使用在802.11之中,但由於CDMA的原理相當神奇又有趣,容筆者在此先說明一下。想要使用CDMA,則此網路中的每個節點都必須要有1組編碼,而大家的編碼必須兩兩呈現正交的性質,內積值必須為零。假設現在有2組節點,A的編碼為[1、1]、B為[1、-1],兩者經計算後的內積值為零,符合正交的要求。如果今天A要傳送1,則經過CDMA編碼後變成[1、1];如果要A要傳送0,則是取補數[-1、-1],B的原理也是一樣。
如果今天A點傳送1[1、1]、B傳送0[-1、1],兩者在空氣介質中向量合變成[0、2];某C點想要解出[0、2]的資訊,便把[0、2]和 A[1、1]、B[1、-1]作內積,得出2和-2。在大於零等於1、小於零等於0、等於零沒發射訊號的原則下,得知A發出了1、B發出了0。
FHSS
802.11在2.4GHz傳輸頻率中定義的展頻方式有2種,一種是FHSS(Frequency-Hopping Spread Spectrum,跳頻展頻),另一種則為DSSS(Direct-Sequence Spread Spectrum,直接序列展頻)。
FHSS跳頻機制,FHSS需要一段較大的頻寬,再將這個頻寬切割成許多較小的頻寬,就可以在這些不同的小頻寬之間不斷切換傳輸,就是FHSS的跳頻機制。在802.11中,使用FHSS展頻使用2.4∼2.4835GHz頻帶,將其以1MHz的方式切出頻道,每個頻道的停留時間為19TU(Time Unit、1TU=1024μs)。事實上使用頻率範圍、切割的頻道數、各頻道駐留時間以各國規定為準,像是美國FCC聯邦通訊委員會就制定出75個以上的頻道數和最大駐留時間為390TU。
DSSS
DSSS直接序列展頻顧名思義,直接將欲傳輸的0或是1代換成1串序列碼傳送出去,實際代換的方式為域傳送的資料位元值與虛擬雜訊碼進行XOR運算,而虛擬雜訊碼在此使用巴克碼(Barker code)。
調變(modulation)
想要傳遞的資料經過展頻之後,接下來便是要如何把資料放在載波(carrier)上,而把1010111110111011010101⋯⋯這類的二元碼變成實際在介質中傳播,就稱為調變(modulation),無線網路就是變為電磁波傳送,光纖則是以光來傳送
調變大致上可分為2種,分別為類比調變和數位調變。類比調變的例子就是收音機的調幅(AM)或是調頻(FM),波形雖然有振幅或是頻率上的變化,但波形是連續的,不會發生這個時間點為波谷底點,下個時間點突然變成波峰頂點。而數位調變就會發生這種情形,比較像是由一段段的波形組合起來。若以道路來比喻,類比調變像是連續彎道山路,數位調變則比較像都市裡的十字路口。
GFSK
因應FHSS和DSSS不同的特性,其調變的方式也不相同。FHSS採用GPSK(Gaussian frequency-Shift Keying,高斯頻率偏移調變、高斯頻移鍵控),GFSK是FSK加上高斯濾波器組成,高斯濾波器的功用在於平滑化訊號,因此GFSK的本質還是 FSK。
FSK的調變方式相當簡單,選定一載波頻率Fc,再選定一差值頻率Fd,如果今天想要傳送1,就傳送Fc+Fd的頻率,想要傳送0,就傳送Fc-Fd的頻率即可。FHSS展頻再加上2GFSK(2種頻率變化的GFSK)可帶來1Mbps的頻寬。
如果需要2Mbps的頻寬,則是改採4GFSK,由於有4種頻率變化,可對應22種資料00、01、11、10,所以每次傳輸時由1bit改為2bit,頻寬直接翻倍。
DPSK
另外一種DSSS所搭配的調變方式為DPSK(Differential Phase-Shift Keying,相位差調變、差分相移鍵控),屬於PSK的1個分支。PSK在傳輸訊號的時候,使用的頻率、振福是相等的,差別在於相位的不同,藉由相位的不同代表不同的資訊。
所謂DPSK的D就是相差、差異的意思,所以是藉由目前波形相位減去上次相位之後的角度差異作為判斷的依據。1個完整的sin波形從 0開始,到波峰時的相位角為90度,下降到0的相位角為180度,波谷的相位角則為270度。
在802.11中使用的DPSK有2種,分別為DBPSK和DQPSK,其中B代表Binary(雙)、Q代表Quadrature(正交),DBPSK利用2種相位差表示,DQPSK利用4種相位差表示,這兩種調變正好可提供1Mbps和2Mbps的傳輸速率。
但由於使用編碼速率11M symble/sec的關係,加上DPSK調變,傳輸能量會在選定的頻率±11MHz的地方以|Sin(x)|函數的方式出現,共佔去22MHz的頻寬。這在使用11個頻道(2.412∼2.462GHz,以5MHz劃分)的國家地區使用時,僅有3個不相互干擾的頻道(頻道1、6、11)。
有線~無線楖論(3)
網路底層的訊框傳送法則,從有線的談到無線,差異及相同之處。
TCP/IP網路模型的第一層或是OSI網路模型的第二層,了解訊框實際上在有線和無線網路上傳輸的策略。
在Data Link Layer主要是CRC檢查及定義基本的一個訊息框(Frame)。
802.3
在 有線 中,網路採用802.3OSI網路架構屬於L2資料鏈結層的CSMA(Carrier Sense Multiple Access,載波偵測多重存取)載波偵測多重存取網路通訊協定,定義在IEEE 802.3當中。
IEEE 802.3使用了一種稱為CSMA的技術作為核心,因為在較為早期的網路,線材作為匯流排看待,任何連上此網路匯流排的電腦都可以在其上傳輸資料,避免大家同時傳輸資料造成錯誤,而此規則就是CSMA。
CSMA載波偵測多重存取的規則就像其名稱一樣,為了避免在其它電腦傳輸資料時造成干擾,當某台電腦想要傳輸時,會先監聽傳輸媒介是否正在使用,如果沒有其它電腦正在傳輸,代表線路目前是空閒狀態可立即使用;如果監聽的結果是線路正在使用,則持續保持監聽狀態,直到線路空閒,這就是 CS(Carrier Sense)的由來。
當某部電腦正在傳送資料時,則所有位於匯流排上的電腦都會接收到這份資料,電腦處理與否的關鍵在於傳送訊框表頭所包含的MAC(Media Access Control)位址是否跟自己相符,如果兩者一致就接收下來進行後續的處理,不同就表示這份資料不是給我的,不進行處理。。
CSMA/CD
CD(Collision Detection)變成CSMA/CD,對於碰撞的發生進行偵測並處理,提高線路傳輸效率。在Ethernet中,最大的架設環境下,距離最遠的兩端點訊號時間差可達232 bit傳輸時間,也就是說,當A電腦發送231bit之後,與A最遠的B電腦若已傳輸1bit,下個傳輸1bit的時間就會偵測到A電腦送來的訊號,才會偵測到碰撞發生,停止傳輸。而傳輸32 bit長度的jam signal是為了讓A電腦更容易辨識,過短的jam signal無法保證A電腦得知碰撞發生。
Ethernet訊框最短長度64 Byte也是因為232 bit的傳輸時間差而設計出來的,因為當A電腦發送之後,最遠的B電腦需要經過232 bit傳輸時間後才可收到訊號;若是碰撞發生,回傳給A電腦的碰撞訊號也要232 bit的傳輸時間,一來一往之下就是464 bit(58 Byte),為了確保A電腦佔據網路夠久的時間偵測B電腦傳來的碰撞訊號,以及電腦單位經常使用2的次方影響,就制訂出了64Byte這個最短訊框長度。
1.隨機時間
如何 在碰撞,隨機時間二元指數後退演算法」(binary exponential backoff algorithm)
我們假設第幾次發生碰撞為n(n≦16,如果n>16,會放棄傳送訊框,並向網路架構的上一層報錯),t為n和10取最小值,r為一個倍數,r的值在0≦r<2t(n、t、r皆為包含0的正整數)。2.CSMA監聽/發送策略
Ethernet採用1-persistent(1-堅持法),相對的還有O-persistent(O-堅持法),在這兩者中間尚有P- persistent(P-堅持法)和non-persistent(非持續法)。
3.時槽(time slot)
時槽定義為在最大網路佈建的情況下,最短的訊框從網路中最遠的2點來回1次所需要的時間,會受到網路速度(傳輸頻率)和最短訊框的大小所影響。網路速度越快、時槽越短;訊框越小、時槽越短。
而它的缺點在於其CSMA/CD上,當匯流排上的裝置多時其碰撞增多很多。
所以才發展出Switch出來,盡量避免了碰撞產生,以及由同軸電纜到雙絞線(半雙工 /全雙工)。
4.流量控制:
back pressure(半雙工) :
CSMA/CD的半雙工傳輸模式下,如果接收端裝置效能不足,無法快速處理傳送端送來的訊框,想要請傳送端降低傳送速率,但半雙工模式無法同時進行雙向傳輸,沒有辦法告知對方我快吐了。此時有2種作法,第一種就是直接在網路上造成訊框碰撞,對方偵測到之後就會進入碰撞之後的處理演算法,而這演算法本身就有降低傳輸速率的功效。第二種就是由接收端直接發出傳輸訊框,另一端就會以為線路上有其它電腦要傳輸。
全雙工:(沒有用CSMA/CD)
進步到全雙工傳輸之後,由於傳送和接收分別在獨立的線組上執行,CSMA/CD被拋棄,根本就不會產生碰撞;於是可以直接告訴對方我快滿了,請降低傳輸速度避免訊框遺失。
無線使用CSMA/CA
但在無線網路中,CSMA還活得好好的,因為使用空間作為介質傳遞訊號,很難限定訊號只在特定範圍內傳播。無線環境還有個相當特殊的「隱藏節點」狀況,如下圖所示。由於無線訊號會根據傳輸距離而逐漸遞減,A、B點和基地台的距離都要在雙方的無線訊號涵蓋區之內才可進行通訊,但A、B點卻因距離問題都不在對方的訊號範圍內,無法得知對方的存在,如果同時發送訊號給基地台,基地台部分必會發生碰撞。由於無法相當有效的偵測碰撞的存在,無線傳輸無法使用CSMA/CD,而是盡量避免碰撞的發生,使用CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)。
在無線網路傳輸標準802.11之中,還有個選用功能能夠避免碰撞的發生,就是啟用RTS/CTS(Request To Send/Clear To Send)。
在裝置傳送無線訊號之前,會先向基地台傳送RTS訊號,請求傳輸許可,若基地台感測到目前空間無裝置使用,便會發送CTS訊號給裝置,告知其准許傳輸。如果同時有多個裝置同時向基地台發送RTS,則基地台只會給其中1台CTS訊號允許傳輸,便不會造成訊框碰撞
以上所述在無線訊號的範疇裡屬於DCF(Distributed Coordination Function,分散式協調功能),需要傳送方自行去搶傳送資源,應此又稱為競爭式服務。另外一種是由AP負責輪詢各台裝置,唯有被問到的裝置才能傳輸資訊,為PCF(Point Coordination Function,集中式協調功能),屬於非競爭式服務
http://www.techbang.com/posts/15880-4-introduction-to-network-architecture-networks-underlying-frame-relay-rule?page=3
有線~無線楖論(2)
在前篇中 有線~無線楖論(1)中對於網路模式TCP/IP的介紹,
接下來是對於有線通訊在 embeddend system的
So Many Ways of Communicating,其中最重要的是where does the clock come from?
其中對於我所使用的embeddend system中,最重要的是前三層的(physical, data link and network)
簡單的話就是 。並以I2C為例
physical: 電氣特性, 其幾條線其工作電壓是多少
data link :而是CRC檢查及定義出多少bit資料為一個封包(frame)
networ: 定義IP, 即其裝置的位址,address.
其中physical
中可分為Serial 及parall and synchronous/asynchronous , half/full duxplex
serial 串列即指一個time slace只能傳一個單位的資料:
parall 並列即指其可傳多於1個單位的資料.
而
synchronous: 同步則指的是二端必須同時做傳送動作(同步),即使有一端是沒有資料也要傳。
suart(use-are) synchronous receiver/transmitter,常見的有SPI
asynchrouous: 即二端是不需要同步動作的,而是以各自講好的機制(bit rate) protcol動作。
asynchronous receiver/transmitter
half duxplex :而其線材, 若只有一條線做為transfer and recevice則為半雙工。像是I2C(SDA)
full duxplex :其recevice and transfer各有一個時,則為全雙工, SPI.(SOMI, SIMO), RS232
對於I2C而言:
1.clock generate:
is generate from master, which is exlicit. and because clock generater by master so it is not precise.
2. it have 3 wires(scl,sda,gnd) ,and it connect all peripherals ,so it control complex.
3. it is asynchronous . the master and slave only one wire to transfer data.
4. half duplex , only one sda.
5. there address. and to select the via chip.
6. 3.4M bits/sec
7.
data link:
一個傳送單位frame 或 檢查CRC。
NetWork :
IP , system address.
I2C drivers invariably include a state machine to deal with the complexity of switching
the direction of the bus between the master transmitting and the slave transmitting.
The master starts communication by sending a 7-bit address and whether it wants to
read from or write to the slave. The slave with that address then sends an acknowledgement (ACK). Next, the master sends a command to (or reads from) the slave and
the interaction proceeds. When the communication is complete, the master sends a
stop bit.
p.s: 上次有同事,因為datasheet沒寫明是I2C或SPI or other的通訊介面。自己認為是I2C 等porting後,才發現不會動。
可見這些的重要性。
2013年8月30日 星期五
SPI(Serial Peripheral Interface)
Overview
- Serial interface
- Synchronous
- Master-Slave
- Data Exchange
其中Synchronous protocol
- 資料沿著clock(SCK)來傳送
- 當data 需改變及被讀取時,對clock 控制
- 因為是同步(synchronous),所以化的clock rate是可變的,不像RS-232等的通訊
Master-Slave protocol
- 只有一個master可以去控制SCK(clock)
- 直到其clock signal 出現才可以傳送資料
- all slave 都是由master clock來控制
- slave device 可能不會去管clock
Data Exchange protocol
- data is being clocked out,new data is clocked in
- data is exchanged-no device is only transmitter or receive only
- the master controls the exchange by the clock line
它在"transmits" data一筆後,必先去讀取進來的資料,若進來的資料不可讀時
這一筆的資料,就會loss並且其SPI module變成disable as result.
SS(CS) pin define: Slave Select/Chip Select. the master wisch to staart an SPI data exchange between that slave device and itself.
it often used to improve noise (to reset the SPI slave so that it is ready to receive the next byte)
Data(MOSI/MISO): data is only output during the rising or falling edge of SCK.
而data會在相對的負edge(+->-)來latche;並確認資料正確後讀取
pin descritor:
SS(chip Select or Slave Select):
when this signal go to low ,the slave will listend for SPI clock and data
SCK(serial clock):
to control when data in/out
SDO(serial data out):
this signal carries the data sent out of the device.
SDI(serial data input):
this signal carries the data sent into the device.
SSPSR (shift register) for SPI module. it shift data in and out of the device . the data travels in a loop to the next shift register
74HC595+ SPI =expander(output)
&4HC165+SPI=
8051對對VGA控制(AL128
2.要求
AL128
一,要求
1.模擬於其demo board的操作
2.移值到不同平台
二,觀察
觀察元件有1.al128 ,2.eeprom, 3.button
一啓動電源後,其動作讀取eeprom中的add 0,1,2的狀態後,
再依其add 1,2的內容之後,向al128寫入對應的資料.
而其四個按鈕來控制其對於vga-in,對s-vido output.
-----------------------------
AL128的操作,共有四個按鈕分別為:
1.pal
2.ntsc
3.VGA-IN
4.EGA-IN
再將此四個按鈕做組合而成的動作,即為al128 demo board動作
因為其VGA-in部份有再分為二種狀態,故vga-in改成:
1.pal
2.ntsc
3.VGA-IN1(vga-in2)
4.EGA-IN
-------------------------------
將其pal,ntsc,vga-in,ega-in分別來代表著bit 0~3
來進行對比,
ps.附件.1
-------------------------------
------------------------------
則
VGA-IN1 VGA-IN2 EGA-IN
| | |
--------------------------------- ---
|
NTSC
|
---------------------------------
| | |
VGA-IN1 VGA-IN2 EGA-IN
------------------------------------------
VGA-IN1 VGA-IN2 EGA-IN
| | |
--------------------------------- ---
|
PAL
|
---------------------------------
| | |
VGA-IN1 VGA-IN2 EGA-IN
圖.1
ps.
1.先假設其最初的狀態pal-ega-in
2.再由此出發
3.比如按下vga-in1,則變為pal-vga-in1
(ntsc ,則....ega-in-ntsc
-----------------------------------------
-----------------------------------------
PAL_EGA[]={0x01,0x02,0x03,0x18,0x02,0x78,0x50,0x00,0x21,0xF8,0x23,0x32,
0x22,0xFD,0x24,0xB7,0x25,0xB7,0x26,0x1F,0x27,0x40,0x28,0xA1,
0x33,0x02,0x73,0x00,0x40,0x00,0x53,0x00,0x71,0x1B,0x72,0x1B,
0x51,0xF9,0x52,0xF1,0xFF,0xFF};
PAL2_VGA[]={0x01,0x04,0x03,0x18,0x20,0x00,0x02,0x78,0x50,0x00,0x21,0x06,
0x22,0xFD,0x23,0xB2,0x24,0xCE,0x25,0xC8,0x26,0x1F,0x27,0x80,
0x28,0xBF,0x33,0x01,0x73,0x00,0x40,0x00,0x53,0x00,0x71,0x27,
0x72,0x24,0x51,0x06,0x52,0x07,0xFF,0xFF};
PAL1_VGA[]={0x01,0x03,0x03,0x18,0x20,0x00,0x02,0x78,0x50,0x00,0x21,0x02,
0x22,0x02,0x23,0xB2,0x24,0xBE,0x25,0xBC,0x26,0x1F,0x27,0x80,
0x28,0xBB,0x33,0x01,0x73,0x00,0x40,0x00,0x53,0x00,0x71,0x1F,
0x72,0x1E,0x51,0x00,0x52,0xF2,0xFF,0xFF};
-----------------------------
EGA_PAL[]={0x02,0x01,0x03,0x18,0x02,0x78,0x50,0x00,0x21,0xF8,0x23,0x32,
0x22,0xFD,0x24,0xB7,0x25,0xB7,0x26,0x1F,0x27,0x40,0x28,0xA1,
0x33,0x02,0x73,0x00,0x40,0x00,0x53,0x00,0x71,0x1B,0x72,0x1B,
0x51,0xF9,0x52,0xF1,0xFF,0xFF};
VGA2_PAL[]={0x02,0x01,0x03,0x18,0x20,0x00,0x02,0x78,0x50,0x00,0x21,0x06,
0x22,0xFD,0x23,0xB2,0x24,0xCE,0x25,0xC8,0x26,0x1F,0x27,0x80,
0x28,0xBF,0x33,0x01,0x73,0x00,0x40,0x00,0x53,0x00,0x71,0x27,
0x72,0x24,0x51,0x06,0x52,0x07,0xFF,0xFF};
VGA1_PAL[]={0x02,0x01,0x03,0x18,0x20,0x00,0x02,0x78,0x50,0x00,0x21,0x02,
0x22,0x02,0x23,0xB2,0x24,0xBE,0x25,0xBC,0x26,0x1F,0x27,0x80,
0x28,0xBB,0x33,0x01,0x73,0x00,0x40,0x00,0x53,0x00,0x71,0x1F,
0x72,0x1E,0x51,0x00,0x52,0xF2,0xFF,0xFF};
//-----------------------------------------
NTSC_EGA[]={0x01,0x02,0x03,0x18,0x02,0x58,0x50,0x00,0x21,0xFF,0x23,0xB2,
0x22,0xFD,0x24,0xB7,0x25,0xB7,0x26,0x1F,0x27,0x80,0x28,0xB7,
0x33,0x02,0x73,0x00,0x40,0x00,0x53,0x00,0x71,0x1B,0x72,0x1B,
0x51,0xFB,0x52,0xFA,0xFF,0xFF};
NTSC2_VGA[]={0x01,0x04,0x03,0x18,0x20,0x00,0x02,0x58,0x50,0x00,0x21,0xFF,
0x22,0xFC,0x23,0xB0,0x24,0xCE,0x25,0xBC,0x26,0x1F,0x27,0x80,
0x28,0xB4,0x33,0x00,0x73,0x00,0x40,0x00,0x53,0x00,0x71,0x27,
0x72,0x1E,0x51,0x02,0x52,0xFA,0xFF,0xFF};
NTSC1_VGA[]={0x01,0x03,0x03,0x18,0x20,0x00,0x02,0x58,0x50,0x00,0x21,0xFF,
0x22,0x02,0x23,0xAD,0x24,0xBE,0x25,0xBC,0x26,0x1F,0x27,0x80,
0x28,0xB4,0x33,0x00,0x73,0x00,0x40,0x00,0x53,0x00,0x71,0x1F,
0x72,0x1E,0x51,0x02,0x52,0xFA,0xFF,0xFF};
//-----------------------------------------
EGA_NTSC[]={0x02,0x00,0x03,0x18,0x02,0x58,0x50,0x00,0x21,0xFF,0x23,0xB2,
0x22,0xFD,0x24,0xB7,0x25,0xB7,0x26,0x1F,0x27,0x80,0x28,0xB7,
0x33,0x02,0x73,0x00,0x40,0x00,0x53,0x00,0x71,0x1B,0x72,0x1B,
0x51,0xFB,0x52,0xFA,0xFF,0xFF};
VGA2_NTSC[]={0x02,0x00,0x03,0x18,0x20,0x00,0x02,0x58,0x50,0x00,0x21,0xFF,
0x22,0xFC,0x23,0xB0,0x24,0xCE,0x25,0xBC,0x26,0x1F,0x27,0x80,
0x28,0xB4,0x33,0x00,0x73,0x00,0x40,0x00,0x53,0x00,0x71,0x27,
0x72,0x1E,0x51,0x02,0x52,0xFA,0xFF,0xFF};
VGA1_NTSC[]={0x02,0x00,0x03,0x18,0x20,0x00,0x02,0x58,0x50,0x00,0x21,0xFF,
0x22,0x02,0x23,0xAD,0x24,0xBE,0x25,0xBC,0x26,0x1F,0x27,0x80,
0x28,0xB4,0x33,0x00,0x73,0x00,0x40,0x00,0x53,0x00,0x71,0x1F,
0x72,0x1E,0x51,0x02,0x52,0xFA,0xFF,0xFF};
以上分別代表著圖.1中的各種形狀下的所要寫入al128的資料
.偶數add為register number.;奇數則為資料
ex.
VGA1_NTSC[]={0x02,0x00,0x03,0x18,0x20,0x00,0x02,0x58,0x50,0x00,0x21,0xFF,
狀態為vga-in1-ntsc
向0x02 register number 寫入 00
向0x03 register number 寫入 18
向0x20 register number 寫入 00
............
..
------------------------------------------------------------------
三.實作
1.定義以一個exteral object 來記錄目前的狀態
2.讀取其eeprom中的add 01,02,來記錄
3.依其狀態來寫入,但第一筆 並沒 勿略
4.等侍使用者改變其記錄(在此是以button
5.依其狀態來寫入
6.回到步 4.
四,問題
1.對於J3並沒有使用到.它是用於RX,TX.可外接UART
2.因為改變其MCU的,目前是使用Winbound 系列.
若要求支援ISP的功能,則其電路需要改變
3..............................
為了方便於改變其相對應的設定值.
改由以code banking來存取?
基於8051.控制LCD mode(HD44780,KS0066,LC7981
方便於檢查.故我依電路設計.並為了方便顯示其相關的資訊.
也為了建立一個自己的51 base-libary.
要求:
依其電路的設計,分別設計對LCD modle的控制.
分別memory map I/O 及 I/O map I/O.
ps:我有找一個PIC的網站.裡面有一個code lib
雖然網路上有很多關於51的資料,但都沒有
一個有整理出其資訊的地方
CCS:
General discussions related to using the CCS C compiler in your Microchip PICmicro MCU designs. Also any discussion related to embedded systems programming and design.
2012年9月24日 星期一
SVN
版控系統中需要有一個存放檔案的地方,這個地方稱為 Repository ,在 Repository 中存放了整個專案的所有版本,Repository 在不同的版控系統中有不同的儲存方式(如檔案、資料庫),Repository 是整個版控最重要的地方,所有使用者都需要從 Repository 取得或更新檔案,因此選擇一個穩定安全的機器來存放 Repository 是必須的,Subversion 可以支援使用http://、https://、file:///、svn://、svn+ssh:// 多種通訊協定。
工作區(WorkSpace)
前文提到檔案庫中存放了所有的版本,但使用的實務上不可能需要全部的版本,因此我們會從檔案庫中取得需要的版本(通常是最新版)複製到自己的硬碟中,而這些存放於本機硬碟的檔案可稱為本機副本(Local copy)存放的地方稱為 Workspace 。
取得檔案(Checkout)
開始一份工作的時候,工作區並不會有任何檔案,這時候就要選擇檔案庫中需要的專案來執行 Checkout ,版控軟體會從檔案庫中複製指定的版本(通常是選擇最新版)到你的工作區形成本機複本,這個本機複本與檔案庫的目錄結構是一樣的,用一個專案的角度來看只有第一次需要使用 Checkout 。
送交檔案(Commit)
當你在工作複本中完成了你的工作(比如寫好一個功能),就需要將你的變動 Commit 到檔案庫中,在 Subversion 中沒有 Commit 之前的異動其他成員都不會知道。(往後文章會提出適當的 Commit 時機)
更新檔案(Update)
在多人使用的環境下,整個檔案庫的檔案是會同時被多人修改的, Subversion 並不會即時抓取這些異動,必須等到您使用了 Update 功能,版控軟體才會將檔案庫和你的差異更新至你的本機複本中,在 Subversion 中預設會檢查使用者在送交檔案之前該檔案有沒有被異動,如果有異動會強迫使用者先執行 Update 。
分支(Branch)
利用分支的功能可以有效隔離主線,當開發程式時想重構、測試寫法、開發新功能,這些可能不會那麼快處理完畢,而且可能會造成現有功能影響的動作都應該在分支下執行,執行完畢確認後再合併主線就可以大幅降低在開發時期對主線的影響,往後對於分支還會再提,現階段只需要記住分支內你隨便玩都不會干擾別人。
合併(Merge)
當兩個使用者修改了同一份檔案,在 Subversion 中是採取「樂觀鎖定」的作法,也就是並不會限制一份檔案只有一個使用者才可以修改,而是在更新檔案的時候才去檢查衝突,假設 工程師 A 異動了檔案中的 1~3 行,而工程師 B 使用者異動了檔案中的 5~10行,工程師 A 先行送交檔案,接者工程師 B 要送交的時候系統會發現版本不同而要求先執行更新檔案,檔案更新的過程中會偵測到兩個版本的異動並無衝突而自動合併(Merge)異動。
衝突(Conflict)
基於以上案例如果工程師 B 異動了 3~10 行,這時候因為同時異動到了第 3 行所以版控軟體無法自動合併,就會發出 Conflict 警告,需要使用者自行解決衝突。(請注意發生衝突後越早解決對系統影響越小)
因為衝突和合併的文字敘述感覺不是那麼容易理解,所以 demo 做了兩張圖來解釋,看圖就應該很清楚了

1.
免費SVN 空間PojectLocker &TortoiesSVN 烏龜SVN使用
http://www.projectlocker.com/在See Plans & Pricing中,來進行註冊及申請
2.選擇註冊資料
3.確定資料
4.填寫資料(帳號,為email
5.最後確認
使用tortoisesvn
6.下載software& setuphttp://tortoisesvn.net/downloads.html
7.checkout(在某一目錄下
8.其檔案庫(Repository) 位置
Subversion visually explained in 30 sec - svn tutorial
http://coding-time.blogspot.tw/2008/04/subversion-visually-explained-in-30sec.html