2013年8月16日 星期五

[ Android CAR ] 特殊功能暫存器分頁概念

一般計算機結構常見在記憶體及輸出入埠,記憶體用來儲存資料或程式碼,而輸出入埠則用來連接硬體設備,然而不管是記憶體或是輸出入埠都需要編位址,用位址來存取內容。若把記憶體及輸出入埠分開編位址,我們稱為Port Mapped I/O,若是合在一起則稱讚Memory Mapped I/O,可以參考維基百科上的暫存器映射輸出輸入的。典型Port Mapped I/O電腦結構就是x86系統;大部份微處理機和8051微處理器是採用Memory Mapped I/O,採用Memory Mapped I/O,會把輸出入埠及記憶體一起編位址,以8051為例暫存器有256個,從00H~FFH,而00H~7FH是屬於一般用途暫存器,80H~FFH則是屬於特殊功能暫存器,簡稱SFR。
對於C8051F500微處理機,是以8051為核心,擴充許多硬體,包括:看門狗、ADC、DAC、電壓比較器、電壓基準、計時器、PWM、溫度感知器、UART、SPI、SMBUS、CAN、LIN、USB等。因此80H~FFH空間不夠使用,所以採用分頁來處理,C8051F500微處理機把SFR分成三頁,利用特殊功能暫存器頁面選擇暫存器(Special Function Register Page Selection register, SFRPAGE),把內容設定成0x0, 0xC, and 0xF就能選擇,所以要操作特殊功能暫存器,就必須先設定特殊功能暫存器頁面選擇暫存器的內容,再利用MOV指令來直接存取。
在C8051F500_defs.h標頭檔的最後面,有定義特殊功能暫存器的頁面:
//-----------------------------------------------------------------------------
// SFR Page Definitions
//-----------------------------------------------------------------------------

#define  CONFIG_PAGE       0x0F        // System and Port Configuration Page
#define  ACTIVE_PAGE       0x00        // Active Use Page
#define  CAN0_PAGE         0x0C        // CAN0 Registers

在程式中就可以使用下列命令來存取主動頁面
SFRPAGE = ACTIVE_PAGE;
來存取設定配置面頁暫存器
SFRPAGE = CONFIG_PAGE;
來存取設定CAN面頁暫存器
SFRPAGE =  CAN0_PAGE;




[ Android CAR ] C8051F500微控器簡介

C8051F500是一顆很實用的車用或工業用微控器,其主要特色如下:

  • 50 MIPS 8051 CPU
  • 64 or 32 kB Flash memory
  • 4 kB RAM
  • 24 MHz on-board oscillator (±0.5%) with clock multiplier
  • 12-bit, 200 ksps ADC, ±1LSB INL (類比/數位轉換器)
  • Up to 32 analog inputs (類比輸入)
  • Up to 40 digital I/O (數位輸出入)
  • CAN 2.0 B, LIN 2.1
  • 2 x UART, SPI, I2C 
  • PWM, Timers (脈波寛度調變及計時器)
  • 1.8 to 5.25 V 輸入工作電壓
  • –40 to 125 ºC 操作範圍
  • 晶片內含兩個比較器及溫度感測器

其內部結構圖如下:
其內部結構可區分成三大區塊,最上面是類比週邊電路及數位輸出入,中間則是內部振盪及多工電路,最下面則是高速微控器核心。



[ Android CAR ] C8051F500程式燒錄

參考畫

工具:Silicon Laboratories Flash Utility
啟動後的畫面

選擇Connect/Disconnect頁籤,在Debug Interface選擇 C2,C2是Silicon公司制定的2線式通訊協定,JTAG則是由聯合測試工作群組所制定的規範。
點擊Connect按鈕,結果如下圖:
觀察結果忘了打開開源

 打開電源
再按一下Connect按鈕,成功連線如下圖:
 再來選擇Dowload Hex File/Go/Stop頁籤,按下Browse鈕,選取要燒錄的程式,本實驗選擇Timer0_LED實驗,透過計時器來控制LED的明亮/熄掉。
 選擇Erase all Code Space before download,再按下Download鍵。
 燒錄完成
在左側有個LED,目前狀態全熄
全亮

[ Android CAR ] 車載資通訊電子服務整合平台初體驗

車載資通技術與先進交通服務聯盟即將在2013年8/31~9/1,開辦CAN BUS車身電子通訊網路實務班,報名網址:http://tta.iecs.fcu.edu.tw/index.php/2-news/10-2013-06-27-05-50-35,該班課程採用長高科技的車載資通訊電子服務整合平台,如下圖:
實驗測試步驟如下:
1. 連接電源及CAN BUS將控制器及Android平台聯接起來,並打開電源。



2.當Android平台完成開機動作,在主畫面上有一個ACanBusSystem的應用程式,雙擊該圖示,起動車載資通訊電子服務整合平台APP。
 3. 起動的歡迎畫面
 4.起動後的主選單
 5.選擇主選擇中的感測訊息
 6.選擇畫面中ALL按鈕讀取所有資料
7. 按下返回鍵回到主畫面
 8.選擇引擎轉速的選項,並"+"按鍵啟動馬達。

 9. 執行結果



2013年7月13日 星期六

[ Vuforia AR ] 認識目標物(Targets)

對於發展擴增實境APP來說,目標物(Targets)是非常要的。在Vuforia SDK中,何謂目標物?就是指要在真實世界中,用來被偵測或被追蹤的物件。在Vuforia AR中目標物可分成下列幾種:

  • 影像目標物(Image Targets):這類就是過去所指無標誌(Markerless)擴增實境,舉凡照片、書封面、產品包裝等都是。
  • 帶框標誌(Frame Marker):就是傳統標誌的擴增實境,一般遊戲卡等。
  • 多邊目標物(Multi-targets):這類目標物都是使用在3D物件上。
  • 虛擬按鍵(Virtual Buttons):在影像目標物上,用一小塊方形來代表按鍵。
  • 文字(Text):簡單文字。
在Vuforia SDK中,已把上述目標物概念實作成大兩類類別(Class):QCAR::Trackable 和 QCAR:: TrackableResult。在QCAR::Trackable中可以分成

  • ImageTarget
  • MultiTarget
  • Marker
  • Word


TrackableResult是指對應到目標物結果,在TrackableResult可以分成:
  • ImageTargetResult
  • MultiTargetResult
  • MarkerResult
  • WordResult

[ Vuforia AR ] Vuforia AR APP開發流程

Vuforia AR APP開發流程,可分成兩大類:

  • 影像目標物(Image Targets)開發流程
  • 文字目標物(Word Targets)開發流程
影像目標物開發流程
此部份可以分成本機資料庫(Device Database)和雲端資料庫(Cloud Database),假如目標物少於100個,就可以考慮使用本機資料庫,雲端資料庫則可使用超過百萬個目標物,整體而言本機資料庫反應時間較快,約2-3 Frame,約0.1秒,但雲端資料庫則必須視網連線狀況,約2-3秒。不管是使用本機資料庫或雲端資料庫,都需要藉助目標物管理器(Target Manager)。流程請參閱下圖。



文字目標物開發流程
文字辦識僅能辦識英文單字,目前提供超過10萬個常用的單字,開發流程請參考下圖。