發表文章

關於ADXL345兩三事

圖片
  之前想找顆G-Sensor玩, 不知怎麼地就找到ADXL345,也許看到網路上很多人在玩ADXL345吧!不過,這顆的封裝對手藝不好的人來說,要自己焊接腳位出來有點困難!還是去找找breakout, 沒錯吧!果然很多廠商都有在賣做好的breakout, 省了我們很多時間!   接下來是現實考量,價錢如何?以這個網站來說,買一顆晶片要價台幣80塊錢。我想那breakout不就更貴了嗎?其實不然,只看單純只有分接ADXL345晶片的板子,最便宜的只要台幣65塊,再貴一點的,也只要台幣85塊。當然,貴的也有,那些國外名廠DFROBOT 500塊,Adafruit 750塊,SparkFun 799元。那到底要選那個呢?   我沒什麼錢,所以選了便宜的,可是又怕有問題,就買了65塊和85塊的各一個。果然,一分錢一分貨!那個65元的,我怎麼試,到現在還是不能用!至於,85塊的,還不錯用哦!   看圖,可以正常的讀取加速度值。ADXL345可以使用I2C或者SPI界面來與MCU溝通,我先用STM32F401這張意法半導體做的ARM Cortex M4的板子來連接,在MBED的平台上,已經有一個很完整的ADXL345_HelloWorld範例程式(使用SPI界面),可以直接由online compiler滙入,或者到此網址:    ADXL345-Accelerometer/ 但是這張板子剛開始接上時,也不會動,這很奇特,沒辦法,便宜的板子,說明文件就是比較差了一些! 如果買那些貴的板子,特別是SparkFun的,可以看到他們的網站有很詳細的文件,如何接線,如何寫程式,全都清清楚楚。不過,這樣好像也少了一些樂趣!   還好這板子也附上了電路圖: 85元便宜ADXL345板子電路圖 唉,仔細看了一下,SDO(pin 12)居然已經接地了,難怪訊號都不對了,還好只要把下拉電阻R4移除就可以解決了。心一橫,拿起焊槍,給他燙下去,再試一下,果然就ok了! 這個時候,在網路上找資料時,看到有人提到說: 這種便宜的板子只能接I2C,不像SparkFun的板子可以接SPI又可以接I2C。我有點被困惑了?明明我現在就在用SPI和這張板子連呀,怎麼會說不行呢?   最...

加大VirtualBox的虛硬擬碟 + Gparted Live CD

圖片
前幾天用VirtualBox裝了一台Ubuntu虛擬機來做實驗, 安裝的時候也不知要用多大硬碟空間, 就隨便給了10G的大小。 也沒選擇LVM, 後來發現其中4G被分給Page使用, 實際上, 可用的只有6G, 很快就不够了。 當然可以重裝啦! 但如果可以把虛硬擬碟加大, 那就更好啦! VirtualBox可以這樣做: https://forums.virtualbox.org/viewtopic.php?f=35&t=50661 1. 用VBoxManager modifyhd --resize 註: VBoxManager執行檔可能要自己找一下目錄位置 2. download Gparted live CD的ISO檔, ( http://gparted.sourceforge.net/download.php/ ) 掛到虛擬機的CD去, 重開機 會看到這個可愛的工具, 然後就可以用滑鼠去把磁區拉大就好了, 嘔! 可能要先把其他磁區移到後面位置, 不過, 這就是小事啦! 我試用後, 成功的把虛硬擬碟空間加大了! 真是好用的工具!

How to burn mbed BIN image to NXP LPC1114FN28 using Flash Magic

NXP LPC1114FN28 , Cortex-M0 48MHz, DIP-28, 很合適用麵包板來做實驗, 而且只要美金2塊錢, 當然在台灣買還要運費等等, 不過加一加也可以找到賣家願意用台幣100多塊的價錢賣的。Switch Science有賣一個開發板mbed LPC1114FN28, 這個板子主要是讓這顆晶片可以透過USB接頭連到電腦上, 然後就可以當做隨身碟一樣, 在電腦上直接把編譯好的程式, 施拉進去, 直接做燒錄動作。可是這個板子, 要美金20塊錢, 台灣可以找到賣家賣台幣1000多塊錢。我覺得很貴! 不如把這些錢, 拿來多買幾顆LPC1114FN28。 不過, 只單買晶片, 就要自己用麵包板稍微接一下線, 才會動哦! 不過, 也不會很難, 其實也容易的很, 請參考ARM網站的這一篇: getting-started-with-mbed-lpc1114/ 文章中提到用UART ISP的方法, 只要買一個USB-UART的模組, 再配合NXP自己的Flash Magic工具程式就可以燒錄編譯好的HEX檔。這很好, 大部份開發工具鏈都可以輸出HEX格式。只有mbed線上編譯器只輸出BIN檔! 文章中也提到解決方法, 就是用一支BIN2HEX的轉檔程式, 把BIN檔先轉成HEX, 再丟給Flash Magic去燒就好了。太好了! 可惜,這個下載點進不去了!哦!哦! 只好另外找了! http://srecord.sourceforge.net/ 我試了一下: c:\> srec_cat.exe mbed_blinky_LPC1114.bin -binary -o blinky.hex -intel --line-length=44 可以! 成功的把mbed online compiler產生的檔案丟過去了。

ARM Cortex-M0 UartGets()筆記

圖片
The Definitive Guide to the ARM Cortex-M0 中文版, 目前讀到p.15-19 談到如何讓UART在NXP LPC1114動起來,而且在重定向之後, 自己修改程式,來解決scanf()的問題,最重要的就是UartGets() 試了一下程式執行的結果,和預期不一樣,按倒退鍵,不會倒退,按del鍵,結果出現的是 [3~。想說作者很好心,很次都會故意出一些小錯誤,讓我們讀者可以玩玩找問題的遊戲。這樣不但多了一些樂趣,也可以有更深刻的體驗。後來發現不是,其實是使用的Terminal軟體不同,或者其設定不同,就會造成這些問題。 我使用Putty,預設的設定: 開除錯去看: 按倒退鍵,出現127,預期是8 按ESC,出現[3~(三個鍵),預期是27 按del,出現27,預期是沒有動作或反應 修改Putty的設定後,行為就符合預期了: int UartGets(char dest[], int length) { unsigned int textlen=0; // Current text length char ch; // current character do { ch = UartGetc(); // Get a character from UART switch (ch) { case 8: // Back space if (textlen>0) { textlen--; UartPutc(ch); // Back space UartPutc(' '); // Replace last character with space on console UartPutc(ch); // Back space again to adjust cursor position } break; case 13: // Enter is pressed dest[textlen] = 0; // null terminate UartPutc(ch); // echo typed character break; case ...

安裝 GNU ARM Eclipse Plug-ins

圖片
前不久買了一本Kindle電子書: Getting Started With STM32 Nucleo Development 跟著書上第二章安裝 GNU ARM Eclipse Plug-ins時, 碰到了問題: 無法安裝 GNU ARM C/C++ J-Link Debugging 元件 書上說只要下一步, 下一步, 就會成功! 看來, 此一時, 彼一時, 軟體的版本又有了一些變化, 只好自己想想辦法了! 1. 在2.2.2節提到可以到 https://sourceforge.net/projects/gnuarmeclipse/ 安裝, 接著教我們按Help, Install New Software, Add 並在出現的對話框裡填入名稱及網址 我發現, 如果已經將這個Plug-in download下來了, 就可以直接在這個對話框中: 按Archive..., 然後選 download 下來的 zip 檔: ilg.gnuarmeclipse.repository-3.1.1-201606210758.zip 按Local..., (如果你將download下來的zip檔解開的話, 選其目錄) 2. 我現在使用的Eclipse for C/C++是Neon這個版本, 之所以會發生無法安裝 GNU ARM Eclipse Plug-ins的 GNU ARM C/C++ J-Link Debugging 元件, Google 了一下, 有人在 element14 community  提到: As per SOP for me, I failed to completely read the instructions.  Here's what I did to fix the problem: 1) Download the CDT package Eclipse downloads - Select a mirror   which is apparently different from the Eclipse CDT download. 2) Open up Eclipse      2.1) ...

安裝Intel NUC 6代i5 Windows 7

圖片
入手了一台Intel NUC 6i5, 開始安裝OS 1. 做一支隨身碟來安裝Windows 7   a. 之前有購買, 所以有Windows 7 ISO檔   b. 先去微軟網站找工具將ISO拷到USB  製做開機USB碟 2. 沒想到開機後, 出現語言選項後, 鍵盤和滑鼠沒有反應   a. 找到Intel的工具  win7 usb3.0 creator v3  Windows-7-USB-3-0-Creator-Utility   b. 利用這個工具把usb 3.0的驅動加入之前做的開機USB碟 3. 再用這支改過的隨身碟開機, 希望可以... 後記:   在上面step 2. windows7 usb3.0 creator utility執行完成後, 出現錯誤訊息, 之後使用這支USB去安裝時, 出現同樣的鍵盤和滑鼠沒有反應問題。試 著手動加入驅動的方式, 沒有成功後, 就放棄了。   改成安裝Win10, 由微軟網站取得Win10 ISO檔後, 這次不用微軟的工具, 改用Intel網站介紹的工具:  Rufus 2.8 Portable    Intel NUC 作業系統安裝    How To Burn an ISO File in a USB drive   在很多地方看到都推薦使用這支程式來做USB開機碟, 所以這支應該不會 是木馬吧! 微軟的scan 工具, 並沒有警示這支程式有問題, 只是叫我傳給他們 去做分析。那現在Intel自己也叫我們用這支來做安裝USB碟。那先試試了...   Rufus很直接, 打開就可以用, 選了磁碟代號, 檔案格式NTFS後, 選取ISO檔案, 按執行, 就開始跑了。做完, 拿去插在Intel NUC, 開機, 按F10, 選USB碟, 按Enter 嘿, 進入安裝畫面了, 而且鍵盤和滑鼠都可以用了! 很快就裝好了。

Arduino Tiny RTC I2C Module

圖片
最近在學習Arduino和RTC的使用,看了葉難先生寫的「輕鬆入門Arduino範例分析與實作設計」一書,其中提到DS1307即時時鐘晶片的使用。就很有興趣的想買一顆來試試,到ICSHOP網站一看,哇!一顆要79塊台幣。這這也不算便宜,而且還要買石英晶體和其他小零件,特別是要一個CR2032電池座,還要把這些東西焊在一起。想想自己手藝不精,眼力也不行了,只怕這些零件到時玩過就散在一邊,浪費了。 沒想到,看到他們也賣另一個[DS1307時鐘模組],而且只要60塊台幣,內含DS1307晶片、石英晶體、CR2032電池座等,還都焊的好好的。 那就先來試試了。 貨到了,看了一下電路圖和文件。哈,除了DS1307外,還有一顆24C32 32K I2C EEPROM,還留了3個接點給DS18B20溫度感測器。太多東西可以玩了,當下不知由那裡玩起啊。 先Google一下好了,果然有一大堆的資料。首先由Matthew的 Arduino RTC: TinyRTC v1 with Arduino Mega 2560 開始看。 他說只要接Vcc, GND, SCL, SDA這四條線就好了。然後他不知由那裡找到的三支草稿碼:SetRTC,GetRTC,I2CScanner。首先用I2CScanner來找DS1307的位址,嗯,是0x68。 然後再用SetRTC這支來設定日期時間,嘔,要直接改程式才能設定哦!再來就是可以用GetRTC這支來讀取日期時間了。試了一下,沒問題,都可以正常運作的。而且,這三支都只用到內建的Wire程式庫。 可是第一個問題,就是要設定日期時間,還要改草稿碼,然後再上傳,實在有點不方便啊! 此時回頭看看葉難的書,發現他用的是另外的方法,是別的程式庫。不過葉先生寫的設定日期時間的程式很好用的,我就先直接把Matthew的草稿碼GetRTC改成可以設定日期時間。 /* Downloaded from http://projectsfromtech.blogspot.com/ *Connect SCL, SDA, Vcc, and GND *Open Serial Monitor and enjoy! */ //Arduino 1.0+ Only #include "Wire.h" #define DS1307_ADDRE...