網頁

2011年3月3日 星期四

實作 UART 功能使用 Attiny45 USI

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的!


第二部份是一個 RS232 準位準換電路,Attiny45 所標示的的 Tx 與 Rx 分別接到 232 晶片的 pin11 和 pin12,由於輸出已經直接跳線到 D-Type 母接頭,因此在與電腦連接時並不需要特別購買 9-pin 的 RS232跳線,直接用一般的線就好。圖中所使用的晶片為 MAX232 和 HIN232,若你使用的晶片代號不一樣時,請查閱一下晶片手冊。對於簡單應用與測試來講這個線路很足夠了,不但簡單而且零件很容易取得,價錢又便宜!

2011年2月27日 星期日

利用家中廢棄的省電燈泡,自製 LED 燈泡 (使用阻容降壓)

還記得 "淺談 LED 驅動連接方式" 裡所談的,現在我們要利用其中的 LED 並聯連接方式來實際動手做一個 LED 燈炮,但這可不是測試喔!是真的可以用的家用燈泡,利用家中廢棄的省電燈泡所做的一個 AC  電源驅動的 LED 燈,來取代那一顆壞掉的省電燈泡!

硬體線路:

硬體線路如右所示。R1 與 C1 是阻容降壓主要的元件,決定整個電路所輸出的電流值;D1 ~ D10 代表所使用的白光 LED (當然,可以使用更多的白光 LED,只要了解接下來的計算方式);R2 是限流電阻。

在右圖中分別有兩個量測器,上方為顯示電路中通過 LED 的電流值,下方為顯示分壓後的交流電壓值;這兩個量測器可作為驗證計算的結果值。

在這個實際應用的線路,使用 AC 110 V (60 Hz),白光 LED 順向電壓 VF = 3.2 V,LED 限制電流為 10 mA。
這電路中比較重要的是電容 C1 與 電阻 R2 的計算,我們必須計算出最小的需求值。

淺談 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)瀏覽,並且每隔一段時間會上書局找一些管理相關書籍閱讀。

一來這些書籍並不像教科書那麼枯燥,二來並不想因為考了證照後而一直停留在一個地方。而是希望經由別人的經驗教訓,來讓自己多吸收一些東西。

文章的最後點出了一句話,蠻適合我現在的心情: "請永遠選擇心靈上最痛苦的選擇,這樣才能讓自己更強"。

找個對你有幫助,但總是下不了決心的事做;不要害怕失敗,因為從失敗中爬起的人才會更茁壯!

2010年3月26日 星期五

第一篇網誌

這是網誌的第一篇文章,本來想利用時間寫一些工作或是興趣相關的文章,但在有空的時候突然又接到要撰寫一個網站的事務,所以呢?

現在正在想這個網站要怎麼弄...