先前寫了 "如何在Android上繪出折線圖、條狀圖、圓餅圖、..." 這篇主要是以靜態顯示應用為主,主要是將數據資料產生報表用。本篇則是採用類似心跳圖的動態顯示,主要應用在接收即時資訊呈現。
本社群由Nantou.py使用者社群以及國立虎尾科技大學電機資訊學院負責維護,它是一群熱愛智慧生活科技以及Python的專業教師所組成,大家一同快樂地研究有關數位生活中人工智慧、大數據、物聯網、雲端服務、APPS、福祉科技、感知網路服務、車載網路服務、及網際網路等資通訊技術,並運用這些資通訊以及Python技術來提升我們的日常生活品質,建立更好的生活環境。
2013年9月2日 星期一
2013年8月21日 星期三
[ Android CAR ] CAN 微控器內部結構
CAN 微控器內部結構如下圖:
CAN核心(CAN Core):包括CAN協定控制器及Rx/Tx 位移暫存器。
Message RAM:儲存CAN訊息物件及代碼遮罩。
Message Handler:處理CAN訊息並產生中斷訊息。
2013年8月16日 星期五
[ Android CAR ] 淺談數位輸出控制
車身電子網路模擬模組提供了4顆LED,如下圖:
這是4顆LED採用共陽極接上正電源,負極當成控制點,因此接地時為亮,否則不亮,分別接至P:3.0~P3.4。
因此在程式中,我們使用SFR巨集指令。SBIT (LED1, SFR_P3, 0); // LED='0'表示亮 ,led1燈負極接至P3.0
SBIT (LED2, SFR_P3, 1); // LED='0'表示亮 ,led2燈負極接至P3.1
SBIT (LED3, SFR_P3, 2); // LED='0'表示亮 ,led3燈負極接至P3.2
SBIT (LED4, SFR_P3, 3); // LED='0'表示亮 ,led4燈負極接至P3.3
在使用LED1~LED4來開關LED時,要先做埠的初始化:
SFRPAGE = ACTIVE_PAGE; // 選擇SFR的地址為主動暫存器頁
PCA0MD &= ~0x40; // 禁止看門狗
SFRPAGE = CONFIG_PAGE;
P3MDOUT |= 0x0F; // 將P3.0~P3.3設定成輸出
P3SKIP |= 0x0F; // P3.0~P3.3設定成跳過交叉開關
XBR2 = 0x40; // 啟動交叉開關
SFRPAGE = ACTIVE_PAGE; // 選擇SFR的地址為主動暫存器頁
完整程式列表如下:

執行結果如下:
[ 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;
對於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按鈕,結果如下圖:
打開電源
選擇Erase all Code Space before download,再按下Download鍵。
工具: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.選擇引擎轉速的選項,並"+"按鍵啟動馬達。
訂閱:
文章 (Atom)























