注:本文是作者以前發表在其個人博客,現在發布到“聚豐開發”專欄
10.能否通過一些應用實例來讓大家了解應廣雙核單片機針對某些應用場合的便捷性?
例1:
目前價格低于0.2美元的單片機大都不帶UART(串口)硬件,如果用一款低價單片機開發需要支持串口通訊的產品,只能是用IO口軟件模擬串口。
用IO口軟件模擬串口的代碼并不復雜,但如果單片機還要處理其它事情,就會遇到麻煩。假定通訊速率是9600,這樣每個位寬大約為104us。
一種方法是直接在主程序中循環完成通訊,這樣當有數據收發的時候就無法處理其它事情,每個字節會占用超過1ms的時間,數據越多,占用的時間越長,對于數據發送處理還好,數據接收就會很麻煩,理論上需要程序每52us去查看一次IO狀態才行,這樣的程序只要簡單一想就知道編寫起來不是一件簡單的事情。
另一種方法是用中斷,這種處理方法比循環的要簡便一些,但要做到同時收發和兼顧處理其它事情,同樣也不是一件簡單的事情。
對于普通單片機如果只處理串口數據收發,不做其它事情,不管程序循環還是中斷方式,程序相對都不會太過復雜,上面只所以復雜是需要同時處理其它的事情。
使用應廣雙核單片機就可以很好的解決這個問題,首先價格上不會超過0.2美元;其次代碼會相對簡單,一個內核處理主程序,一個內核專門負責串口通訊,兩者都會有很好的實時性。
例2:
處理38K紅外遙控碼。
38K紅外遙控碼是頻率38K占空比為1:2的方波,如果單片機硬件不支持IR接口,就需要單片機能連續輸出寬度約為9us和18us的高低電平。如果要單片機輸出這種周期持續穩定的方波,在發碼期間基本上不能使用中斷,象東芝碼一次發碼時間大約需要60ms,這樣就會嚴重影響程序的計時等功能。
紅外碼的接收相對要好一些,每個碼都有幾百微秒的時間,采用中斷完全可以實現解碼,唯一麻煩的是紅外碼通常都是數據包,而且數據包中間還包含一些特殊格式,不象串口所有的字節碼都是固定格式,這樣需要程序按照特定流程才能解碼,無法象串口一樣只要一個字節的接收程序就可以完成所有數據的接收,所以紅外的接收解碼程序會比較長,中間如果夾入其它事情處理就會變得很復雜。
以我個人的經驗,普通單片機完成紅外遙控碼的處理,大約需要2~3天時間,最終效果不會太好,但如果使用應廣雙核單片機,半天即可完成,代碼數量要少許多,效果則是更理想。
例3:
一個用應廣雙核單片機做的紅外遮擋開光(反射式)全部代碼。
IR_SWequpb.1
IR_INPUTequpa.0
IR_OUTPUTequpa.6
byte ir_new
byte ir_old
byte ir_enable
byte i
byte ir_new1
byte ir_new2
byte ir_new3
gotomain0
gotomain1
//----------------FPPA0-------------------
main0:
.ADJUST_OTP_IHRCR8MIPS// IHRC/2 = 8MIPS, WatchDog Disable, RAM 0,1 temporary be used
sp = 0x30
disgint
inten = 0
mova,0b000_11_111//disable timer
movt16m,a
set1pbc.1
set0IR_SW
set0pac.0
set1pac.6
set0IR_OUTPUT
delay200
ir_new = 0
ir_old = 0
ir_enable = 0
mova,0
movintrq,a
set1fppen.1//eanble FPPA1
ir_enable = 1
i = 20
while(i)
{
delay200
i--
}
if(IR_INPUT)
{
ir_old = 1
}
else
{
ir_old = 0
}
ir_enable = 0
i = 5
while(i)
{
delay200
i--
}
clkmd.1 = 1//enable watch dog
main0_loop:
wdreset
callcheck_ir
if(ir_new != ir_old)
{
if(ir_new != 1)
{
togIR_SW
}
ir_old = ir_new
}
i = 100
while(i)
{
delay200
i--
}
gotomain0_loop
check_ir:
ir_enable = 1
i = 20
while(i)
{
delay200
i--
}
if(IR_INPUT)
{
ir_new1 = 1
}
else
{
ir_new1 = 0
}
i = 5
while(i)
{
delay200
i--
}
if(IR_INPUT)
{
ir_new2 = 1
}
else
{
ir_new2 = 0
}
i = 5
while(i)
{
delay200
i--
}
if(IR_INPUT)
{
ir_new3 = 1
}
else
{
ir_new3 = 0
}
if((ir_new1 == ir_new2) && (ir_new2 == ir_new3))
{
ir_new = ir_new1
}
else
{
ir_new = ir_old
}
ir_enable = 0
i = 20
while(i)
{
delay200
i--
}
ret
//----------------FPPA1-------------------
main1:
sp = 0x38
delay200
main1_loop://output 38k IR signal
if(ir_enable)
{
set1IR_OUTPUT
delay33
set0IR_OUTPUT
delay67
}
else
{
set0IR_OUTPUT
delay10
}
gotomain1_loop
11.應廣雙核單片機存在哪些不足?
回答:
到目前為止已經上市的所有型號最低工作電壓為2.5V,這個電壓值有點高,不適合電池供電的產品,如果能做到2.2V會更具競爭力。了解到的信息是應廣科技有計劃推出更低工作電壓的版本。
編譯工具存在一些不足,對C語言的支持并不是很理想,仿真時選擇3.3V工作電壓容易產生低電壓復位(此時需要保證工作電壓大于3.3V)。對于有經驗的工程師這點不是關鍵問題,開發過程可以繞過這些不足。
部分型號的ADC精度略微偏低,但可滿足大部分場合的應用需求。
某些功能上存在個別瑕疵,不過應廣科技在其網頁上已經將這些瑕疵全部列舉出來,并提出了相應解決方法。這一點比其它公司要做得好,其它公司往往是用到最后才發現有這樣那樣的問題,還有可能是無法解決的問題,讓用戶進退兩難。
12.應廣科技對客戶的技術支持是否及時?
回答:
應廣科技作為一家成立時間不長的公司,非常重視客戶服務,無論大小客戶,只要你在使用應廣科技的產品進行開發,所有技術問題都有專人進行回復,通常會在第二個工作日回復電子郵件。
13.應廣的雙核單片機保密性怎樣?花多少錢可以解密?
回答:
相較其它臺系單片機,應廣有著良好的保密性,目前市場上暫無提供針對應廣單片機的解密服務。
14.如果我想用應廣的單片機開發產品?什么地方可以買到芯片和開發工具?
回答:
這個需要聯系當地的代理商,如果不知道代理商可以直接聯系應廣科技進行咨詢,應廣科技網址www.padauk.com.tw
我這里不提供應廣單片機裸片,但可以根據客戶需求用應廣雙核單片機完成產品開發,并且不收開發費。
15.哪些產品適合選用應廣的單片機?
回答:
這個問題有點不好回答,其實蠻多場合都挺適合的,可以這么說,相信你一旦使用過應廣的產品,就會喜歡上它。
在我看來,用義隆153做有點難,用松翰和合泰單片機做有點貴,這類產品最適合應廣的單片機;當然,那種帶有通訊等實時性強功能的低成本方案應廣更是不二選擇。
-
單機片
+關注
關注
0文章
50瀏覽量
11745
發布評論請先 登錄
相關推薦
評論