公告版位
從小害怕寫作文, 文筆不佳到現在, 還請各位讀者大大:
1. 發現有錯誤, 請留言告知. (或者你 '覺得' 不對也行)
2. 用字措辭不當, 請留言告知.
3. 有看沒有懂? 幫到忙也好, 幫倒忙也罷, 總之留個言吧.

Windows 雖然自 XP 推出以後, 當機的機會就少了許多, 但卻還是有些負作用, 就是檔案總管常常莫名奇妙就掛掉了, 然後接著出現重新啟動檔案總管. 大部份狀況下應該都還可以正常使用, 不過有時候中文輸入法就是會無法切換. 如果你有注意到的話, 這個時候語言列 (輸入法的狀態列) 應該是不見了.

解決方法很簡單, 找到負責切換輸入法的程式 ctfmon.exe 再執行一次就好了.

你可以

  • C:\Windows\System32 目錄中找到它, 找到以後滑鼠點擊兩下就可以了.
  • 點選 "開始", 在 "尋找" 輸入欄中輸入 ctfmon 也可以找到它.
這個方法 XP, Vista, Win7, win8, Win10 都有效.
文章標籤

MagicJackTing 發表在 痞客邦 留言(1) 人氣()

隨著科技的演進, 在單晶片微控制器及 SoC 的領域中, SPI 及 I2C 這二種串列 (序列) 介面變得十分常見. 這二者與主機間通訊用的非同步串列通訊埠 RS-232 (UART) 非常不一樣

  • 二個都是同步傳輸介面, 主要是用於 CPU 和週邊晶片之間.
  • SPI 及 I2C 二者設計的主要目的在於減少 CPU 和週邊晶片之間的接腳數.
  • SPI 一般需要 4 條接線 (至少三條), 而 I2C 則只要二條線, 這和早期常用的並列匯流排動輒十數條接線有著明顯的差異.
  • SPI 的硬體結構簡單而且傳輸速度快, 一般是 5M/10M/20Mbps 或是更快 (可以到 200Mbps), I2C 的傳輸速度則只有 100Kbps/400Kbps/1Mbps(/3.4Mbps/單向5Mbps).
  • SPI 是全雙工, I2C 則是半雙工

本篇介紹的是 I2C 介面

SPI 的部份在這個連結 SPI (Serial Peripheral Interface) 串列 (序列) 週邊介面

文章標籤

MagicJackTing 發表在 痞客邦 留言(51) 人氣()

最近工作忙些, 幾個月沒空更新部落格, 今天抽空記錄一下 用 VMware 安裝測試 MAC OS X 的狀況.

用 VMware 安裝及測試 MAC OS X


首先, 如果你沒有用過 VM, 先要有個心理建設: "天下沒有白吃的午餐".

文章標籤

MagicJackTing 發表在 痞客邦 留言(61) 人氣()

I2C Bus 提昇電阻之計算


I2C Bus 和 SPI 一樣也是主從式架構, 不過它不同於 SPI 的點對點或點對多點結構, 它是以匯流排型式介接, 同時匯流排上允許有多個 master (主設備) 和多個 slave (從設備). 介接方法如下圖所示:

I2C Bus

I2C 介接圖

文章標籤

MagicJackTing 發表在 痞客邦 留言(2) 人氣()

寫 C 程式時偶而會遇到函數的原型宣告多設了一些暫時沒有用到的參數, 一般狀況下只要修改一下標頭檔中的宣告以及實際 C 函數的定義就好了. 不過偶而也會遇到不能改的情形, 例如:

  • 套用某些框架系統時, 函數的原型宣告是框架系統提供的. (一改大概框架系統就不用升版了)
  • 使用函數庫中某個函數的 call back, 而函數庫改不動, 或者沒原始程式, 沒得改.
  • 在開發 embedded system 時, 我們需要實作或者改寫一些函數以取代 C 編譯器的一些預設行為, 例如: Keil ARM/MDK 中要把 printf() 改輸出到 SoC 的 UART.

下面一些方法可以在無法修改函數的原型宣告時, 把 C 編譯器對未使用的函數參數之告警消除.

  • 方法一: 大部份的 C 編譯器應該都可以適用.
  • #define UNUSED(x) ( (void)(x) )
    
    void f(int x, int y) {
        UNUSED(x);
        ...
    }
    
文章標籤

MagicJackTing 發表在 痞客邦 留言(5) 人氣()

正常狀況下網頁中的 <sub><sup> 應該都是可以正確顯示為上標字及下標字. 不過偶而也會有不正常的時候, 例如: 痞客邦部落格的手機模式頁面, 預設的樣式不小心就把 <sub><sup> 的字高和其他所有的元素都設成一樣了, 所以就看不出上下標字了.

上下標字最基本的樣式設定是:

  • 把字型大小 (font-size) 縮小一些, 一般的字型大小下設成 65% ~ 70% 應該都是可以接受的.
  • 再來是文字的垂直位置 (vertical-align), 上標字應該用 "super", 下標字應該用 "sub".
  • 還有一個常常會被遺漏的, 行高 (line-height). 由於行中有上下標字時瀏覽器會動態的更動那一行的行高, 所以文章段落看起來就會有一組行距看起來和其他的不一樣. 要避免這一個狀況只要把上下標字的行高設成 0 就可以了.

下面這一段是我加在自己部落格的樣式檔中. (裡面的 !important 是為了要強制覆蓋掉痞客邦預設的設定)

文章標籤

MagicJackTing 發表在 痞客邦 留言(1) 人氣()

隨著科技的演進, 在單晶片微控制器及 SoC 的領域中, SPI 及 I2C 這二種串列 (序列) 介面變得十分常見. 這二者與主機間通訊用的非同步串列通訊埠 RS-232 (UART) 非常不一樣

  • 二個都是同步傳輸介面, 主要是用於 CPU 和週邊晶片之間.
  • SPI 及 I2C 二者設計的主要目的在於減少 CPU 和週邊晶片之間的接腳數.
  • SPI 一般需要 4 條接線 (至少三條), 而 I2C 則只要二條線, 這和早期常用的並列匯流排動輒十數條接線有著明顯的差異.
  • SPI 的硬體結構簡單而且傳輸速度快, 一般是 5M/10M/20Mbps 或是更快 (可以到 200Mbps), I2C 的傳輸速度則只有 100Kbps/400Kbps/1Mbps(/3.4Mbps/單向5Mbps).
  • SPI 是全雙工, I2C 則是半雙工.
  • SPI 使用硬體線路來指定 slave 晶片, I2C 則在傳送的第一個位元組上指定 (7bit位址).
  • SPI 不提供交握機制, 無法確認 slave 晶片是否有跟上. I2C 則有雙向的確認機制.

本篇介紹的是 SPI 介面



文章標籤

MagicJackTing 發表在 痞客邦 留言(39) 人氣()

假設有一個 16bit 硬體計時/計數器 (Timer/Counter) 負責計數外部的訊號. 所以我們直覺的反應是某一段時間之內的訊號個數是本次讀取的計數值減掉上次讀取的計數值, 像這樣 Count = ValCurr - ValPrev. 但是如果上次讀取的內容已經接近上限了 (例如: 65530), 而這一次讀到的內容已經溢位變成一個很小的數值 (例如: 5) 呢?

當下你可能會想到下列幾個:

  • 改用 32bit 來處理.
  • 65536 - (大值 - 小值)
  • ...

其實沒那麼麻煩, 答案很簡單依然是 Count = ValCurr - ValPrev, 只不過記得要用 uint16_t (或者 unsigned short) 來定義這些變數.

文章標籤

MagicJackTing 發表在 痞客邦 留言(0) 人氣()

最近因實驗需要, 上網找到很多人拿來控制 Arduino 的 APC220 UART 轉 RF 的傳輸模組.

由於網路上拍賣網站眾多, 但資料大多不全, 個人研判製造商應該是 APPCON 這家公司, 因為設定工具程式 (網路上找到的) 內有這家公司的相關資訊. 以下資料主要來自從 APPCON 網站下載下來的 datasheet



APC220 套件產品照片


APC220 Front View APC200 Back

可以相容對接的產品還有 APC230 及 APC802, 三者最大的差異是傳輸功率: APC220 是 13dBm (20mW), APC230 是 20dBm (100mW), APC802 是 27dBm (500mW), 當然功率變大電流需求也會變大, 同時也可以傳更遠. 由規格看來, 傳輸功率增加 7dBm, 距離由 800m 增加到 1800m, 20log(1800)-20log(800)=7.04 符合理論計算.

文章標籤

MagicJackTing 發表在 痞客邦 留言(1) 人氣()

給用手機瀏覽的讀者


很抱歉, 這一篇因為用了 MathJax 套件來顯示分數, 目前設定和痞客邦的 "手機版模式" 有點小衝突 (它把行高設定死了), 要等改天有空才能修正. 請先改用 "電腦版模式" 或者換用 PC/平板 來閱讀. 已經修正好了, 如果閱讀上還有問題請留言告知.

UART 接收同步機制


下圖所示是經由 UART 輸送一個 ASCII 字元 'r' (0x72) 的 TTL 輸出 (未經過 RS-232 Transceiver). 圖上的小箭號所指的是接收端取樣訊號的相對時序位置, 上半部是理想狀況下接收 UART 資料的時序圖. 我們設定了鮑率之後, UART 在第一個向下訊號邊緣取得同步 (開始計時) 是為啟始位元, 然後以設定的鮑率開始取樣接收資料. 不過事情總不會如此美好. 萬一接收者和發送者的計時精準度不同 (即使是同樣的廠牌、型號, 總還是有製造上的誤差, 及操作溫度...等等因素的影響), 致使二者不完全一致, 下圖的下半部刻意把誤差放大, 我們很容易就看出一共有 4 個位元的資料錯了.

文章標籤

MagicJackTing 發表在 痞客邦 留言(3) 人氣()

Close

您尚未登入,將以訪客身份留言。亦可以上方服務帳號登入留言

請輸入暱稱 ( 最多顯示 6 個中文字元 )

請輸入標題 ( 最多顯示 9 個中文字元 )

請輸入內容 ( 最多 140 個中文字元 )

reload

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼