Attiny45 是一個 8-pin 的晶片,因為體積小而且功能強大且內建 4K 的 flash rom,對於簡單的一些練習是再好不過的晶片。但是這幾天為了想作一些關於 ADC 的實驗,於是就拿了它來做,結果呢? 它本身內建的功能沒有所謂的 UART (也就是在接腳圖上看不到 TxD 與 RxD ),而且手邊的Attiny2313 卻只有 on-chip Analog Comparator 兩支接腳作為類比比較用。一個有 ADC 卻沒硬體 UART,一個有 UART 卻只有一組 Analog Comparator 也不夠用 ......真是羚羊趕不完!
不過既然 Attiny45 有 USI 功能,想必可以用軟體實作的方式做出來!
上網 google 的一下,在 Atmel 官網中的一份文件( AVR307: Half Duplex UART Using the USI Module on tinyAVR and megaAVR devices) 有解決方案(如果找不到這份文件請 Google 一下,Updated 10/03,打文時又檢查了一遍連結發現ATEML官網最近有大改版)。不過事情卻沒想像中這麼容易,文件中所使用的晶片是 Attiny26,編譯器是 IAR Workbench。跟我用的都不一樣,所以如果要使用 Attiny45 內的 USI 做出 UART 的功能,必定要經過一番苦讀與修改。
首先要做的就是下載 AVR307所附的範例程式,把 Attiny26 相關的暫存器設定,修改為Attiny45,最後再修改整個 IAR 的程式碼讓它可以符合並通過 AVR Studio 編譯器的語法檢查,這樣才能產生所需要的Attiny45 UART 程式碼。
我的目的是要使用 ATtiny45 實現兩個 ADC 的監控。當然需要兩個 UART 功能的也可利用這個方法來做實現。
硬體線路:
硬體線路可以分為兩個部份,第一部分是Attiny45的線路部分,需要注意的是:當使用三線USI模式時,PB1(pin6) 是設定為 output 而且是一個open-drain output,所以必須要加上一個pull-up電阻。如圖中所示,加上了一個 1K 電阻,經實際測試是OK的!
2011年3月3日 星期四
實作 UART 功能使用 Attiny45 USI
2011年2月27日 星期日
利用家中廢棄的省電燈泡,自製 LED 燈泡 (使用阻容降壓)
還記得 "淺談 LED 驅動連接方式" 裡所談的,現在我們要利用其中的 LED 並聯連接方式來實際動手做一個 LED 燈炮,但這可不是測試喔!是真的可以用的家用燈泡,利用家中廢棄的省電燈泡所做的一個 AC 電源驅動的 LED 燈,來取代那一顆壞掉的省電燈泡!
硬體線路:
淺談 LED 驅動連接方式
,LED (Light-Emitting Diode) 發光二極體是現在很夯的東西,省電、顏色多樣,現在外面很多的霓虹燈 (看檳榔攤就知道) 幾乎都被汰換成 LED了,以後連我們所用的照明設備也會開始進入到 LED 稱霸的世界;但是驅動 LED 一般都是使用直流電 (直流電就是頻率為"0"的電壓,而交流電就是會隨時間做週期性變化的電壓,LED 可直接使用交流電壓,但是必須符合其特性下所使用),可直接使用交流電的 LED 應該在不久的將來就可以看到了。
NOKIA 說"科技始終來自於人性",上面講的其實在未來就有可能被人性化的需求所取代,等一下文中所要講的 LED 驅動方式,或許在不久的將來就會變的不一樣了,誰也說不定吧!
廢話不多說!本文中所要談的是現在大家常用的 LED 驅動連接方式,因為驅動電路的設計與選擇和 LED 所選用的排列方式一定的關連性,這關係到 LED 的可靠度與亮度穩定性。
2011年2月21日 星期一
如何在部落格加入程式碼高亮度語法辨識
相信很多寫部落格的同好,遇到要發佈關於程式碼的部份都會很頭大,原因是語法格式要做一些小修改才能正確的顯示在部落格上。遇到比較好的部落格網站會提供某些標籤供使用,但是如果能夠像在程式編輯器裡面寫程式時,不但可以顯示各語法間的高亮度辨識,也有行碼可看,這樣不是更好嗎?
請看下面程式碼,寫程式時不就是這個樣子的編輯視窗嗎?
static uint8_t buffer[60];
static uint8_t screen_mem[8];
const prog_uint8_t dot_00[] = {
0xEF, 0x96, 0xEF, 0xCB, 0xAD, 0xEF, 0x86, 0x8F};
// definition method 1
// typedef char PROGMEM prog_char;
const prog_char message_00[] = " THIS IS MADE BY a-lu. ";
const prog_char message_01[] = " WHAT'S UP MAN! ";
// msg_00_0 save in SRAM
const prog_char* msg_00_0[] = {
message_00,
message_01
};不僅僅是 C 語言而已,只要是現今大部分常用的語法,大多可以正常的辨識並使用不同顏色與高亮度顯示出來,並且可以配合網頁或是部落格而有不同的佈景主題可以選用,只要會使用下面的技巧就可達到這個目的。
如果你想學習如何在部落格中使用這種技巧的話,那就繼續往下看吧!
2010年3月30日 星期二
[引句] 請永遠選擇心靈上最痛苦的選擇,這樣才能讓自己更強
自從有了專案管理的證照後,常利用時間上這個網站(http://joechang.pixnet.net/blog)瀏覽,並且每隔一段時間會上書局找一些管理相關書籍閱讀。
一來這些書籍並不像教科書那麼枯燥,二來並不想因為考了證照後而一直停留在一個地方。而是希望經由別人的經驗教訓,來讓自己多吸收一些東西。
文章的最後點出了一句話,蠻適合我現在的心情: "請永遠選擇心靈上最痛苦的選擇,這樣才能讓自己更強"。
找個對你有幫助,但總是下不了決心的事做;不要害怕失敗,因為從失敗中爬起的人才會更茁壯!

