感謝黑眼大的幫忙
讓我的問題都能被解決
在此記錄下來
安裝英文介面後的問題
1.網站或mail的某些字會暈開
解決半法:
1.yast2 安裝 chinese-fonts-setting
2.sudo ln -s /etc/fonts/conf.avail/57-sung.conf /etc/fonts/conf.d/
3.sudo fc-cache
2.gedit 開啟中文字會有亂碼
解決半法:
1.alt+F2
2.輸入 gcinf-editor
3. app-->getit-2-->preferences-->encodings
4.點二下 auto_detected
5.加入 BIG5 移至最上
6.如需其他文字碼,可在自行增加
3.想要讓firefox 播放內嵌wma wmv的網頁
需在安裝mplayer and mplayerplug-in
不過yahoo的電影預告片我還是不能看
有人能教我嗎? 囧
**原來是公司網管鎖住了**
**在家裡試是沒問題的**
4.如果firefox點選flah play的按紐卻沒有反應
vi /usr/lib/nspluginwrapper/i386/linux/npviewer
修改為如下
#!/bin/sh
TARGET_OS=linux
TARGET_ARCH=i386
export GDK_NATIVE_WINDOWS=1
. /usr/lib/nspluginwrapper/noarch/npviewer
5.gmplayer 顯示中文字幕
vi /etc/mplayer/mplayer.conf
增加
subcp=cp950
font=/usr/share/fonts/truetype/arphic/ukai.ttf
subfont-text-scale=3
需先確認有這個字型或是可換自已想要的字形
6.如果想用banshee 聽mp3
只需在加裝gstreamer-0_10-fluendo-mp3
相容性問題請更改來源為packman即可
7.英文語系使用 WINE 中文會亂碼
輸入:export LA_ALL=zh_TW.UTF-8
12/08/2009
SuSE Linux 套件列表
最近常在重灌SuSe linux
所以把常用到的安裝來源列出來
才不會要常常找來找去
Packman:
1.http://ftp.twaren.net/Linux/Packman/suse/11.2/
2.http://ftp.gwdg.de/pub/linux/misc/packman/suse/11.2/
Gcin:
http://download.opensuse.org/repositories/home:/swyear/openSUSE_11.2/
Wine:
http://download.opensuse.org/repositories/Emulators:/Wine/openSUSE_11.2/
因為內建的totem banshee
是需要在安裝解碼的套件
依使用KDE or Gnome安裝
Restricted Formats/11.2
http://opensuse-community.org/Restricted_Formats/11.2
就不用在另外找別的程式來聽音樂或看片了
而在安裝時會出現問題
請把來源改為 Packman 就可以了
p7zip+q7z
可解rar檔案,GUI介面
w32code-all
所以把常用到的安裝來源列出來
才不會要常常找來找去
Packman:
1.http://ftp.twaren.net/Linux/Packman/suse/11.2/
2.http://ftp.gwdg.de/pub/linux/misc/packman/suse/11.2/
Gcin:
http://download.opensuse.org/repositories/home:/swyear/openSUSE_11.2/
Wine:
http://download.opensuse.org/repositories/Emulators:/Wine/openSUSE_11.2/
因為內建的totem banshee
是需要在安裝解碼的套件
依使用KDE or Gnome安裝
Restricted Formats/11.2
http://opensuse-community.org/Restricted_Formats/11.2
就不用在另外找別的程式來聽音樂或看片了
而在安裝時會出現問題
請把來源改為 Packman 就可以了
p7zip+q7z
可解rar檔案,GUI介面
w32code-all
12/06/2009
OpenSuSE 11.2 64bit 安裝wine
因為工作上都是在寫程式
而有些IDE都只有windows版
所以只好安裝wine來寫程式
1.在YaST2加上來源
"http://download.opensuse.org/repositories/Emulators:/Wine/openSUSE_11.2/"
2.安裝wine
3.將"C:\WINDOWS\Fonts\MingLiU.ttc" copy到"/home/user/.wine/drive_c/windows/fonts"
4.Downlad reg_fix解開後,執行以下指令,fonr.reg為所解開的路徑
5.wine設定可打 winecfg
6.要玩wow,請直接用copy的將安裝在windows下的wow整個copy過來會比安裝還來的快,在打此指令 wine "C:\Program Files\World of Warcraft\WOW.exe" -opengl
或是修改 /wtf/Config.wtf檔,加下以下三行
打此指令 wine "C:\Program Files\World of Warcraft\WOW.exe"
目前測試是在linux下玩比在windwos下還順,資源也用的比windows少
真是好太多了
而有些IDE都只有windows版
所以只好安裝wine來寫程式
1.在YaST2加上來源
"http://download.opensuse.org/repositories/Emulators:/Wine/openSUSE_11.2/"
2.安裝wine
3.將"C:\WINDOWS\Fonts\MingLiU.ttc" copy到"/home/user/.wine/drive_c/windows/fonts"
4.Downlad reg_fix解開後,執行以下指令,fonr.reg為所解開的路徑
wine .wine/drive_c/windows/regedit.exe font.reg
5.wine設定可打 winecfg
6.要玩wow,請直接用copy的將安裝在windows下的wow整個copy過來會比安裝還來的快,在打此指令 wine "C:\Program Files\World of Warcraft\WOW.exe" -opengl
或是修改 /wtf/Config.wtf檔,加下以下三行
SET gxApi "opengl"
SET SoundOutputSystem "1"
SET SoundBufferSize "150"
打此指令 wine "C:\Program Files\World of Warcraft\WOW.exe"
目前測試是在linux下玩比在windwos下還順,資源也用的比windows少
真是好太多了
12/05/2009
OpenSuSE 11.2 64bit安裝讀卡機
***後來驗證是目前只support 32bit linux ****
***只是我有安裝相容32bit軟體所以能用********
網路上找到的教學都是舊的
而我用的又是64bit os
自已試了好久 終於試出來了
我是使用ez100pu
1.請使用YaST2安裝 Pcsc-lite
2.請downlad EZ100PU_Driver 和 pcscd_for_LibUSB.tar.gz二個檔案
3.解開pcscd_for_libusb.gz檔
它會蓋過你所安裝的pcscd
4.解開EZ100PU_Driver檔,在driver_ezusb_v1.4.9目錄下會少一個 drivers64 的目錄
所以請將driver裡的東西copy到drivers64,然後需新建一個pcsc的目錄
然後下此指令
等它cp完檔案
5.插上讀卡機
6.使用firefox連上玉山銀行atm網頁,安裝WebATM plug-in
即可開始使用玉山銀行atm
***只是我有安裝相容32bit軟體所以能用********
網路上找到的教學都是舊的
而我用的又是64bit os
自已試了好久 終於試出來了
我是使用ez100pu
1.請使用YaST2安裝 Pcsc-lite
2.請downlad EZ100PU_Driver 和 pcscd_for_LibUSB.tar.gz二個檔案
3.解開pcscd_for_libusb.gz檔
./install
它會蓋過你所安裝的pcscd
4.解開EZ100PU_Driver檔,在driver_ezusb_v1.4.9目錄下會少一個 drivers64 的目錄
所以請將driver裡的東西copy到drivers64,然後需新建一個pcsc的目錄
cp -r drivers drivers64
mkdir /usr/lib/pcsc
然後下此指令
./check_env
./install
等它cp完檔案
5.插上讀卡機
/etc/init.d/pcscd restart
6.使用firefox連上玉山銀行atm網頁,安裝WebATM plug-in
即可開始使用玉山銀行atm
11/30/2009
Go Go Linux
以下是用來安裝Linux的二台電腦
一台是筆電,一台是桌機
目前打算整個移除winddows
而使用Linux
桌機:
CPU : AMD Phenom X4 9550 (B3)
Menory: 2g
Display: asus GT9800 top
OS : openSuse 64bit 11.2 (Gnome)
1. sh ./nvidia.xxx.run -q
2.sax2 -r -m 0=nvidia
筆電:
CPU : Intel Core2 Duo T3100 1.9g
Memory: 2g
Display: ATI Mobility Radeon HD4330
OS: OpenSuSE 64bit 11.2 (Gnome)
1.sh ./ATI.xxxx.run
2.aticonfig --initial
3.sax2 -r -m 0=fglrx
一台是筆電,一台是桌機
目前打算整個移除winddows
而使用Linux
桌機:
CPU : AMD Phenom X4 9550 (B3)
Menory: 2g
Display: asus GT9800 top
OS : openSuse 64bit 11.2 (Gnome)
1. sh ./nvidia.xxx.run -q
2.sax2 -r -m 0=nvidia
筆電:
CPU : Intel Core2 Duo T3100 1.9g
Memory: 2g
Display: ATI Mobility Radeon HD4330
OS: OpenSuSE 64bit 11.2 (Gnome)
1.sh ./ATI.xxxx.run
2.aticonfig --initial
3.sax2 -r -m 0=fglrx
11/24/2009
OpenSuSE Linux
這次在筆電上安裝了Linux
選了OpenSuSE
就只因為"壽司"好吃 :D
筆電:HP ProBook 4310s
OS:OpenSuSE Linux 11.2
Xwindows:Gnome
Display:ATI 4330
問題記錄:
1.剛安裝完後,沒有裝ATI Drive
按下ctrl+Alt+F1~F6
畫面全黑無游標
按下ctrl+Alt+F7
可正常顯示Xwindows
解決半法:
請至ati官網download drive
安裝請參考官網說明
重點:整個安裝完後,重新開機
開機重新進入Xwindows後
在Command Line輸入 init 3
輸入用戶名和密碼
然後輸入
沒意外的話就會自動重開
在次進入Xwindows後
輸入
有看到這個就代表安裝ok
在來按ctrl+Alt+F1~F6
Text Mode就正常了
2.在Gnome模式下關機
有可能在第二次登入時整個死當
Kde有沒這個問題我不知道@@
解決半法:
要關機時
請先用ctrl+Alt+F1~F6
登入root在回Xwindows下關機指令
如此可暫時解決死當問題
選了OpenSuSE
就只因為"壽司"好吃 :D
筆電:HP ProBook 4310s
OS:OpenSuSE Linux 11.2
Xwindows:Gnome
Display:ATI 4330
問題記錄:
1.剛安裝完後,沒有裝ATI Drive
按下ctrl+Alt+F1~F6
畫面全黑無游標
按下ctrl+Alt+F7
可正常顯示Xwindows
解決半法:
請至ati官網download drive
安裝請參考官網說明
重點:整個安裝完後,重新開機
開機重新進入Xwindows後
在Command Line輸入 init 3
輸入用戶名和密碼
然後輸入
>>aticonfig --initial --input=/etc/X11/xorg.conf
>>sax2 -r -m 0=fglrx
>>reboot
沒意外的話就會自動重開
在次進入Xwindows後
輸入
# glxinfo
OpenGL vendor string: ATI Technologies Inc.
OpenGL renderer string: RADEON X850 PRO Generic
OpenGL version string: 2.0.6286 (8.33.6)
有看到這個就代表安裝ok
在來按ctrl+Alt+F1~F6
Text Mode就正常了
2.在Gnome模式下關機
有可能在第二次登入時整個死當
Kde有沒這個問題我不知道@@
解決半法:
要關機時
請先用ctrl+Alt+F1~F6
登入root在回Xwindows下關機指令
如此可暫時解決死當問題
11/10/2009
UCOSII 理解說明(1)
這是為了將來移植到不同MCU做記錄
以免忘記後又要在看一次
也是自已對UCOSII的理解
這是原廠文件的說明圖
其實真正需要修改的部份只有4個檔案
Application
----------------
uc/os-ii (不需修改)
OS_CORE.C
OS_FLAG.C
OS_MBOX.C
OS_MUTEX.C
OS_Q.C
OS_SEM.C
OS_TASK.C
OS_TIME.C
uCOS_II.C
uCOS_II.H
----------------
uc/os-ii (應用相關 需修改)
OS_CFG.H-------設定 UC/OS 相關功能是否使用
----------------
uc/os-ii (MCU相關 需修改)
OS_CPU.H
---DATA TYPE
---OS_CRITICAL_METHOD //中斷方式
---0S_STK_GROWTH //STACK 由高自低或由低自高
---OS_ENTER_CRITICAL()//開啟中斷
---OS_EXIT_CRITICAL() //關閉中斷
OS_CPU_A.ASM
---OSStartHighRdy() //執行最高優先權任務
---0SCtxSw() //任務切換
---OSIntCtxSw() //中斷任務切換
---OSTickIsr() //TIME 中斷
OS_CPU_C.C
---OSTaskStkInit() //STACK 初始化 需對MCU底層有一定了解
---其餘9個函式可不用修改
----------------
硬體
需了解所謂的多任務排程
就是依優先權排定執行順序
而每個任務所執行的時間是一樣的
以免忘記後又要在看一次
也是自已對UCOSII的理解
這是原廠文件的說明圖
其實真正需要修改的部份只有4個檔案
Application
----------------
uc/os-ii (不需修改)
OS_CORE.C
OS_FLAG.C
OS_MBOX.C
OS_MUTEX.C
OS_Q.C
OS_SEM.C
OS_TASK.C
OS_TIME.C
uCOS_II.C
uCOS_II.H
----------------
uc/os-ii (應用相關 需修改)
OS_CFG.H-------設定 UC/OS 相關功能是否使用
----------------
uc/os-ii (MCU相關 需修改)
OS_CPU.H
---DATA TYPE
---OS_CRITICAL_METHOD //中斷方式
---0S_STK_GROWTH //STACK 由高自低或由低自高
---OS_ENTER_CRITICAL()//開啟中斷
---OS_EXIT_CRITICAL() //關閉中斷
OS_CPU_A.ASM
---OSStartHighRdy() //執行最高優先權任務
---0SCtxSw() //任務切換
---OSIntCtxSw() //中斷任務切換
---OSTickIsr() //TIME 中斷
OS_CPU_C.C
---OSTaskStkInit() //STACK 初始化 需對MCU底層有一定了解
---其餘9個函式可不用修改
----------------
硬體
需了解所謂的多任務排程
就是依優先權排定執行順序
而每個任務所執行的時間是一樣的
10/13/2009
8/21/2009
7/22/2009
迷惘
愛情似迷霧
總是讓人迷惘
"我一個人不孤單 想一個人才孤單
有伴的人在狂歡 寂寞的人怎麼半"
GOGO&MEME SAY FOREVER
希望你的累了
只是因為在一起久了
"習慣"了,所以感覺淡了
而不是............
因為想珍惜,所以一句話
就足以讓人不知所措
"你是此生最美的風景"--JS
"兩個人在一起 倘若感覺感情變淡了
千萬不要就此認為
也許 你們認為"感情淡了"
實際上只是因為"習慣了彼此"
那種激情已經不在
存在之間的 剩下"習慣"
別小看"習慣"
因為 那是你們相處很久很久
習慣了彼此在身邊
倘若 有天 失去了對方
你們感受到的
不是失戀 是失去
失去生活".............轉
總是讓人迷惘
"我一個人不孤單 想一個人才孤單
有伴的人在狂歡 寂寞的人怎麼半"
GOGO&MEME SAY FOREVER
希望你的累了
只是因為在一起久了
"習慣"了,所以感覺淡了
而不是............
因為想珍惜,所以一句話
就足以讓人不知所措
"你是此生最美的風景"--JS
"兩個人在一起 倘若感覺感情變淡了
千萬不要就此認為
也許 你們認為"感情淡了"
實際上只是因為"習慣了彼此"
那種激情已經不在
存在之間的 剩下"習慣"
別小看"習慣"
因為 那是你們相處很久很久
習慣了彼此在身邊
倘若 有天 失去了對方
你們感受到的
不是失戀 是失去
失去生活".............轉
7/21/2009
淡淡的.......
妳說感覺變淡了.......
我該積極.....還是消極
因為工作,考試...讓你疲累
因為遠距,我的因素...讓你對未來不安
我該積極的找回當初的感覺
還是消極的面對.....
我選擇了消極
或許這對你才是好的
不在給你壓力
讓你能更輕鬆的面對
工作上的建議
我知道你不會接受
但目前我能給你的幫助最大也只能這樣
很希望你能考慮
或許我們就這樣慢慢的變為朋友
但....
我相信
感情也需要伸縮
或許我們也會變的更好
加油
AM 04:38....
我該積極.....還是消極
因為工作,考試...讓你疲累
因為遠距,我的因素...讓你對未來不安
我該積極的找回當初的感覺
還是消極的面對.....
我選擇了消極
或許這對你才是好的
不在給你壓力
讓你能更輕鬆的面對
工作上的建議
我知道你不會接受
但目前我能給你的幫助最大也只能這樣
很希望你能考慮
或許我們就這樣慢慢的變為朋友
但....
我相信
感情也需要伸縮
或許我們也會變的更好
加油
AM 04:38....
7/20/2009
Mouse Sensor
其實用mcu+lcd寫小game
對我來說算是熟手了
不過
這次比較不一樣的是
硬體加上了mouse sensor
要在lcd上做出 cursor
並跟著移動 左右鍵功能
第一次做出來時
結果程式在顯示整個畫面和cursor
muc的loading很重
造成cursor的移動lag
因為遊標每改變一次
便要重新繪制一次
為了改善這個問題
第二次使用了前景,背景的寫法
雖然繪圖的架構不一樣了
卻改善了Loading
這次也是用16bit mcu
主加構+三個小game
小畫家...記憶遊戲....變臉
只用了4天就完成了
算是目前最快的記錄了
讓自已有很大的成就 :p
下次試看看移到avr 8bit上
看看自已的功力如何 XD
對我來說算是熟手了
不過
這次比較不一樣的是
硬體加上了mouse sensor
要在lcd上做出 cursor
並跟著移動 左右鍵功能
第一次做出來時
結果程式在顯示整個畫面和cursor
muc的loading很重
造成cursor的移動lag
因為遊標每改變一次
便要重新繪制一次
為了改善這個問題
第二次使用了前景,背景的寫法
雖然繪圖的架構不一樣了
卻改善了Loading
這次也是用16bit mcu
主加構+三個小game
小畫家...記憶遊戲....變臉
只用了4天就完成了
算是目前最快的記錄了
讓自已有很大的成就 :p
下次試看看移到avr 8bit上
看看自已的功力如何 XD
7/06/2009
想跟妳說........
嗯...親愛的 0.0
我想你知道我在說你
這些話我有跟你說過了
不過
還是想在一次的告訴你
我不是一個大男人 0.0
這你一定知道
我不是很聰明
這你也知道
所以當我說出來的事
或是有些字發音錯誤
或是我的觀念是錯的
我會很希望是你告訴我
而不是別人跟我說 XD
原因...你是知道的 :P
我想你知道我在說你
這些話我有跟你說過了
不過
還是想在一次的告訴你
我不是一個大男人 0.0
這你一定知道
我不是很聰明
這你也知道
所以當我說出來的事
或是有些字發音錯誤
或是我的觀念是錯的
我會很希望是你告訴我
而不是別人跟我說 XD
原因...你是知道的 :P
6/19/2009
5/12/2009
4/18/2009
Atmega16 Tetris
利用空閒時間
把一些mini game移植到 ATMEGA16
原本是想一次寫二個GAME上去
沒想到 16K的FLASH........
放些圖檔上去就不夠用了
所以最後拿掉選單和字型
直接寫GAME
看來還是要用ATMEGA128
才能把7個GAME都放進去了
MCU:ATMEGA16
CSTN:128*128 drive:ST7637
KEY:I/O KEY
Total flash:97%
回頭在檢視程式
發現還有能改進的地方
目前 Total flash:78.5%
多了20% :p
把一些mini game移植到 ATMEGA16
原本是想一次寫二個GAME上去
沒想到 16K的FLASH........
放些圖檔上去就不夠用了
所以最後拿掉選單和字型
直接寫GAME
看來還是要用ATMEGA128
才能把7個GAME都放進去了
MCU:ATMEGA16
CSTN:128*128 drive:ST7637
KEY:I/O KEY
Total flash:97%
回頭在檢視程式
發現還有能改進的地方
目前 Total flash:78.5%
多了20% :p
4/16/2009
UCOS-II 中斷理解
這次的工作是將UCOSII PORTING 至 ARM7TDMI核心的MCU
使用哪家的MCU也就不方便說明
不過大致上都相同
網路上也能找到很多 ARM7TDMI的資料
每個MCU的中斷都不相同
所以用法也不同
以下是自已對於UCOS-II的中斷使用理解
ARM7 中斷向量只有一個
但架在ARM7的中斷卻有好幾個
當中斷一產生後跳至 Ostickisr
全部只用同一個 ostickisr
使用在8051 or 多個中斷向量的mcu
每個中斷都有自已的進入點
而osintenter會將 OSIntNesting+1
來記錄第幾層中斷
osintexit 將OSIntNesting-1
使用哪家的MCU也就不方便說明
不過大致上都相同
網路上也能找到很多 ARM7TDMI的資料
每個MCU的中斷都不相同
所以用法也不同
以下是自已對於UCOS-II的中斷使用理解
ARM7 中斷向量只有一個
但架在ARM7的中斷卻有好幾個
當中斷一產生後跳至 Ostickisr
全部只用同一個 ostickisr
ostickisr:
.........
bl osintenter
bl 判斷中斷來源
bl osintexit
.........
使用在8051 or 多個中斷向量的mcu
cseg at 0023h (某個中斷向量
ljmp commisr (跳至程式
...............
commisr:
..........
lcall osintenter
lcall 中斷要執行的程式
lcall osintexit
..........
每個中斷都有自已的進入點
而osintenter會將 OSIntNesting+1
來記錄第幾層中斷
osintexit 將OSIntNesting-1
4/15/2009
BMP TO Hex
這次想用avr移植之前寫的mini game
為了將圖檔格式轉換在轉c的陣列
一直在網路上找bmp to hex工具
卻一直找不到
最後決定自已寫一個
以後想改或想加功能
也比較方便
目前少16色的格式和單色的格式
有人知道轉換公式的話
請告知 謝謝
Release note
v1.5
1.增加 YUV(422)
2.增加 pixel bit
v1.4
1.增加排版
2.修改 332 mode,顯示8bit時,不在顯示0x00
v1.3
1.增加 888 (24bit) and 666 (24bit)
v1.2
1.增加 show plant選項 (較無意義,做好玩的 :p
2.增加 include w/h,output時多輸出圖檔的w/h
v1.1
1.搞錯bmp的格式,結果轉出來的圖是顛倒
2.增加plant比對後在轉為 565,555,444,332
圖檔不在限定為24bit,其他格式帶plant的圖
會對照plant後的色彩在轉為選取的格式
v1.0
1.first verison
2.only convert 24bit BMP to 565,555,444,332
BMP2C.ZIP
為了將圖檔格式轉換在轉c的陣列
一直在網路上找bmp to hex工具
卻一直找不到
最後決定自已寫一個
以後想改或想加功能
也比較方便
目前少16色的格式和單色的格式
有人知道轉換公式的話
請告知 謝謝
Release note
v1.5
1.增加 YUV(422)
2.增加 pixel bit
v1.4
1.增加排版
2.修改 332 mode,顯示8bit時,不在顯示0x00
v1.3
1.增加 888 (24bit) and 666 (24bit)
v1.2
1.增加 show plant選項 (較無意義,做好玩的 :p
2.增加 include w/h,output時多輸出圖檔的w/h
v1.1
1.搞錯bmp的格式,結果轉出來的圖是顛倒
2.增加plant比對後在轉為 565,555,444,332
圖檔不在限定為24bit,其他格式帶plant的圖
會對照plant後的色彩在轉為選取的格式
v1.0
1.first verison
2.only convert 24bit BMP to 565,555,444,332
BMP2C.ZIP
3/30/2009
3/23/2009
AVR FUSH 燒錯!!!
第一次使用AVR的朋友
一定常常會燒錯 FUSH
而造成程式或FUSH無法在讀出或寫入
千萬不要這樣就把MCU丟掉
網路上所提供的方法有三種可救回燒錯FUSH
1.使用4隻腳位的XTAL
將OUT腳位接到XTAL1
建議使用4MHz
然後使用PRINT PORT的燒寫就可重新寫入 FUSH
2.使用一個能正常工作的MCU
通電使其正常工作
在將MUC的XTAL2腳位拉至燒錯FUSH MCU的XTAL1
在使用PRINT PORT 重新燒寫 FUSH
3.使用高壓編程
這是最麻煩的
所以請使用1 OR 2的方法
一定常常會燒錯 FUSH
而造成程式或FUSH無法在讀出或寫入
千萬不要這樣就把MCU丟掉
網路上所提供的方法有三種可救回燒錯FUSH
1.使用4隻腳位的XTAL
將OUT腳位接到XTAL1
建議使用4MHz
然後使用PRINT PORT的燒寫就可重新寫入 FUSH
2.使用一個能正常工作的MCU
通電使其正常工作
在將MUC的XTAL2腳位拉至燒錯FUSH MCU的XTAL1
在使用PRINT PORT 重新燒寫 FUSH
3.使用高壓編程
這是最麻煩的
所以請使用1 OR 2的方法
電路板成果
目前洗出了6片自已想要使用的板子
ATMEGA128 DB
ATMEGA16 DB
USB ISP
PRINT ISP
POWER
AVR JTAG
以下是電路圖
有興趣的朋友也可自已做來試看看
ATMEGA128 DB......MEGA128 DEMO BOARD
M128DB.pdf
M128DB.sch
ATMEGA16 DB.......MEGA16 DEMO BOARD
M16DB.pdf
M16DB.sch
USB ISP...........USB ISP PROGRAMMING
UISP.pdf
UISP.sch
PRINT ISP.........PRINT ISP PROGRAMMING
PISP.pdf
PISP.sch
POWER.............EASY POWER OUT 3.3V AND 5V
POWER.pdf
POWER.sch
AVR JTAG..........RS232 AVR JTAG
**需注意的是 XTAL 一定要用7.3728MHz**
不是很好買要多找幾家
JTAG.pdf
JTAG.sch
ATMEGA128 DB
ATMEGA16 DB
USB ISP
PRINT ISP
POWER
AVR JTAG
以下是電路圖
有興趣的朋友也可自已做來試看看
ATMEGA128 DB......MEGA128 DEMO BOARD
M128DB.pdf
M128DB.sch
ATMEGA16 DB.......MEGA16 DEMO BOARD
M16DB.pdf
M16DB.sch
USB ISP...........USB ISP PROGRAMMING
UISP.pdf
UISP.sch
PRINT ISP.........PRINT ISP PROGRAMMING
PISP.pdf
PISP.sch
POWER.............EASY POWER OUT 3.3V AND 5V
POWER.pdf
POWER.sch
AVR JTAG..........RS232 AVR JTAG
**需注意的是 XTAL 一定要用7.3728MHz**
不是很好買要多找幾家
JTAG.pdf
JTAG.sch
洗電路板
趁這次的空閒機會
小窮人請不起別人洗電路板
那就自已來試洗電路板吧
洗電路板順序
畫PCB電路->曝光->顯像->蝕刻->鑽孔
曝光機一台便宜的要價也要萬把塊 ~_~
那就自已做一台吧
買個合板 6支燈管
成本約1500元 :D
簡易蝕刻機一台也要1200上下
還好小弟是做玻璃的
願意幫我做一台 XD
所以我只要買打氣泡的就OK了
成本約500 :D
畫好電路後
試洗了幾次
總算抓到訣竅了
後來發現其實不用描圖紙
只需要用一般的A4紙就OK了
沒錯......沒看錯
因為我沒有雷射印表機
我只有噴墨印表機
而且用一般的紙印出來的還比描圖紙好用 :D
目前以測過,能洗出0.3mm的線
而且無斷線,能導通
小窮人請不起別人洗電路板
那就自已來試洗電路板吧
洗電路板順序
畫PCB電路->曝光->顯像->蝕刻->鑽孔
曝光機一台便宜的要價也要萬把塊 ~_~
那就自已做一台吧
買個合板 6支燈管
成本約1500元 :D
簡易蝕刻機一台也要1200上下
還好小弟是做玻璃的
願意幫我做一台 XD
所以我只要買打氣泡的就OK了
成本約500 :D
畫好電路後
試洗了幾次
總算抓到訣竅了
後來發現其實不用描圖紙
只需要用一般的A4紙就OK了
沒錯......沒看錯
因為我沒有雷射印表機
我只有噴墨印表機
而且用一般的紙印出來的還比描圖紙好用 :D
目前以測過,能洗出0.3mm的線
而且無斷線,能導通
2/25/2009
AVR Usb Programming
最近在網路上找到新的AT89S5x Programmer
剛好也看到AVR USB Programmer
就試著把它們做出來
測試的結果是ok的
也能正確燒寫
Easy spi......Print port 簡易電路
SPI progrma...增加74ls244穩定用,有分USB POWER AND PRINT POWER
使用軟體 Spipgm or Ponyprog
AVR USB Program...Usb Program
需要使用燒寫器先將usb程式寫入Atmega8
插上USB後電腦會辨視出Device
安裝Drive
使用Avrdude將程式寫入Mcu
遇到的問題是全新的Atmega8
使用Usb萬用燒錄器將程式寫入後
電腦還是無法辨視
但使用Print port寫入後
卻可正常辨視
之後不管使用usb萬用燒錄器還是Print寫入
都能正常執行
參考網站
Usbasp
Avrdude
Avrdude-gui
以下我修改後的電路圖
SPI_PROGRAM.pdf
SPI_PROGRAM.sch
剛好也看到AVR USB Programmer
就試著把它們做出來
測試的結果是ok的
也能正確燒寫
Easy spi......Print port 簡易電路
SPI progrma...增加74ls244穩定用,有分USB POWER AND PRINT POWER
使用軟體 Spipgm or Ponyprog
AVR USB Program...Usb Program
需要使用燒寫器先將usb程式寫入Atmega8
插上USB後電腦會辨視出Device
安裝Drive
使用Avrdude將程式寫入Mcu
遇到的問題是全新的Atmega8
使用Usb萬用燒錄器將程式寫入後
電腦還是無法辨視
但使用Print port寫入後
卻可正常辨視
之後不管使用usb萬用燒錄器還是Print寫入
都能正常執行
參考網站
Usbasp
Avrdude
Avrdude-gui
以下我修改後的電路圖
SPI_PROGRAM.pdf
SPI_PROGRAM.sch
2/05/2009
Easy stocks system
因為小弟需要
所以用三天寫一個簡易的股票小系統
很久沒用BCB寫程式
所以很多小細節沒有注意到
目前只是個簡易的功能
沒有錯誤提示
輸入股票代碼
按find
之後auto up data才能開啟使用
每40秒自動更新一次
如需改秒數
請修改stock.ini裡的
ats=40000
如使用後有bug或需要改進的地方
請告訴我 謝謝
Download Stock.rar
所以用三天寫一個簡易的股票小系統
很久沒用BCB寫程式
所以很多小細節沒有注意到
目前只是個簡易的功能
沒有錯誤提示
輸入股票代碼
按find
之後auto up data才能開啟使用
每40秒自動更新一次
如需改秒數
請修改stock.ini裡的
ats=40000
如使用後有bug或需要改進的地方
請告訴我 謝謝
Download Stock.rar
1/22/2009
1/19/2009
AT89S5x + SS2A16 LCM
使用 SDEC 的 LMC-SS2A16
和網路上的 LMC-SSC2A16
是同樣的所以可參考同一份PDF
想做這個是以後可用一個簡易的LCD
當做Debug使用
因為沒有ICE ~_~
所以就用變通的方法
最少這樣還能簡易的除錯
還不錯用
和網路上的 LMC-SSC2A16
是同樣的所以可參考同一份PDF
想做這個是以後可用一個簡易的LCD
當做Debug使用
因為沒有ICE ~_~
所以就用變通的方法
最少這樣還能簡易的除錯
還不錯用
/*
LMC - ssc2a16 user atmel 89s52
show addr 1 2 3 4 ~~~ 16
one line 00H 01H 02H 03H 10H
two line 40H 41H 42H 43H 50H
By Brian @Taiwan
*/
#include "AT89X52.H"
#define LCM_En P1_0
#define LCM_Rs P1_1
#define LCM_Rw P1_2
#define LCM_Data_port P2
void sys_init(void); //system initial
void msDelay(unsigned int MaxDelay); //del function
void LCM_Init(void); //lcm initial
//void CheckBusy(void); //lcm chech write ok?
void LCM_Com_Writer(void); //lcm write command
void LCM_Show_Data(unsigned char addr,unsigned char *sd);
unsigned int DelayCNT;
unsigned int TimeCNT;
void main(void)
{
unsigned char SData1[]="Brian @Taiwan";
unsigned char SData2[]="LCD Test OK!";
char i=0;
sys_init();
msDelay(10);
LCM_Init();
msDelay(10);
LCM_Show_Data(0x81,SData1);
LCM_Show_Data(0xC2,SData2);
while(1)
{
// code
}
}
void sys_init(void)
{
//ALL SYSTEM REG SET
IE = 0x82; //USER INTERRUPT TIME0
TMOD = 0x02; //SET TIME 0 MODE
TH0 = 256-200; //SET RELOAD VALUE
TL0 = 256-200; // FAST VALUE
TimeCNT=0;
TR0=1; //time enabled
P1=0x00;
P2=0x00;
}
void Time0_int(void)interrupt 1
{
TimeCNT++;
if(TimeCNT>=10)
{
DelayCNT++;
TimeCNT=0;
}
}
void msDelay(unsigned int MaxDelay)
{
DelayCNT = 0x0000;
while(DelayCNT < MaxDelay) {}
}
void LCM_Init(void)
{
LCM_Data_port = 0x30;
LCM_Com_Writer();
LCM_Data_port = 0x30;
LCM_Com_Writer();
/*
function set 001(dl)(n)(f)xx
(dl=1 data=8bit dl=0 4bit)
(n=1 double line n=0 one line)
(f=0=5*7dot f=1 5*10 dot)
*/
LCM_Data_port = 0x38;
LCM_Com_Writer();
LCM_Data_port = 0x06;//enter mode 01(ld)(s) ld=0 addr++ ld=1 addr-- s=1 addr shift
LCM_Com_Writer();
LCM_Data_port = 0x01;//clear lcm show data
LCM_Com_Writer();
/* lcd on/off 1(d)(c)(b) 1=lcd on 0=lcd off d=lcd c=cursor b=bline */
LCM_Data_port = 0x0C;
LCM_Com_Writer();
}
void LCM_Com_Writer(void)
{
LCM_Rs=0;
LCM_Rw=0;
LCM_En=1;
msDelay(1);
LCM_En=0;
msDelay(1);
}
void LCM_Data_Writer(void)
{
LCM_Rs=1;
LCM_Rw=0;
LCM_En=1;
msDelay(1);
LCM_En=0;
LCM_Rs=0;
msDelay(1);
}
void LCM_Show_Data(unsigned char addr,unsigned char *sd)
{
if(addr!=0)
{
LCM_Data_port = addr;
LCM_Com_Writer();
}
while(*sd!=0)
{
LCM_Data_port = *sd++;
LCM_Data_Writer();
}
}
/*void CheckBusy(void)
{
unsigned char i=0x80;
LCM_Rs=0;
LCM_Rw=1;
LCM_En=1;
while(i&0x80)
{
i=P2;
msDelay(2);
}
LCM_Rs=0;
LCM_Rw=0;
LCM_En=0;
} */
1/16/2009
AT89S5X + G_SENSOR
G_SENSOR 使用的是BOSH BMA020
通訊介面是用I2C
由於89s5x沒有提供硬體I2C介面
所以就用軟體模擬
程式只是試驗用的
所以沒有寫的很嚴謹
如果G_SENSOR有問題的話
整個程式會當在ACK
有需要的人可自已在改寫
INT腳未拉出
通訊介面是用I2C
由於89s5x沒有提供硬體I2C介面
所以就用軟體模擬
程式只是試驗用的
所以沒有寫的很嚴謹
如果G_SENSOR有問題的話
整個程式會當在ACK
有需要的人可自已在改寫
INT腳未拉出
/*
BMA020 G_SENSOR 3.3V
需注意io 可使用在16 or 32 bit mcu
USER I2C INTERFACE
By Brian @Taiwan
*/
#include "AT89X52.H"
#define GS_SDI 0x80 //P2.7 low
#define GS_SCK 0x40 //P2.6 low
#define GS_Read 0x71
#define GS_Write 0x70
void sys_init(void);
void msDelay(unsigned int MaxDelay);
void Init_GS(void);
void Send_Comm(unsigned char tx_data);
void Receive_ACK(void);
unsigned char read_Data(unsigned char send_reg);
unsigned char read_Comm(void);
void I2C_Stop(void);
void I2C_Start(void);
void Send_ACK(void);
unsigned int DelayCNT;
unsigned int TimeCNT;
void main(void)
{
unsigned char x_axis_lsb=0,x_axis_msb=0;
sys_init();
Init_GS();
while(1)
{
x_axis_lsb=read_Data(0x02);
x_axis_msb=read_Data(0x03);
//you code
}
}
void sys_init(void)
{
//ALL SYSTEM REG SET
IE = 0x82; //USER INTERRUPT TIME0
TMOD = 0x02; //SET TIME 0 MODE
TH0 = 256-200; //SET RELOAD VALUE
TL0 = 256-200; // FAST VALUE
TimeCNT=0;
TR0=1; //time enabled
P2 = 0x00; //gs port default
}
void Time0_int(void)interrupt 1
{
TimeCNT++;
if(TimeCNT>=10)
{
DelayCNT++;
TimeCNT=0;
}
}
void msDelay(unsigned int MaxDelay)
{
DelayCNT = 0x0000;
while(DelayCNT < MaxDelay) {}
}
void Init_GS(void)
{
I2C_Start();
Send_Comm(GS_Write);
Receive_ACK();
Send_Comm(0x0A); //regedit
Receive_ACK();
Send_Comm(0x02); //soft reset
Receive_ACK();
I2C_Stop();
I2C_Start();
Send_Comm(GS_Write);
Receive_ACK();
Send_Comm(0x14);
Receive_ACK();
Send_Comm(0x16); //+/-4g 1500hz
Receive_ACK();
I2C_Stop();
I2C_Start();
Send_Comm(GS_Write);
Receive_ACK();
Send_Comm(0x15);
Receive_ACK();
Send_Comm(0x40);//enable adv_int
Receive_ACK();
I2C_Stop();
I2C_Start();
Send_Comm(GS_Write);
Receive_ACK();
Send_Comm(0x11);
Receive_ACK();
Send_Comm(0x00);//any_motion_dur hg lg set
Receive_ACK();
I2C_Stop();
I2C_Start();
Send_Comm(GS_Write);
Receive_ACK();
Send_Comm(0x0F);
Receive_ACK();
Send_Comm(0x0A); //hg_dur
Receive_ACK();
I2C_Stop();
I2C_Start();
Send_Comm(GS_Write);
Receive_ACK();
Send_Comm(0x0E);
Receive_ACK();
Send_Comm(0xE0); //hg_thres
Receive_ACK();
I2C_Stop();
I2C_Start();
Send_Comm(GS_Write);
Receive_ACK();
Send_Comm(0x0C);
Receive_ACK();
Send_Comm(0x10); //lg_thres
Receive_ACK();
I2C_Stop();
I2C_Start();
Send_Comm(GS_Write);
Receive_ACK();
Send_Comm(0x0B);
Receive_ACK();
Send_Comm(0x57); //any & hg & lg_enable hg & lg_counter
Receive_ACK();
I2C_Stop();
I2C_Start();
Send_Comm(GS_Write);
Receive_ACK();
Send_Comm(0x0A);
Receive_ACK();
Send_Comm(0x00);
Receive_ACK();
I2C_Stop();
}
void Send_Comm(unsigned char tx_data)
{
unsigned char Port_status;
unsigned char temp;
int i;
for(i=0;i<8;i++)
{
temp = tx_data & GS_SDI;
Port_status = P2;
if(temp)
Port_status |= GS_SDI;
else
Port_status &= ~GS_SDI;
P2 = Port_status;
tx_data<<=1;
// msDelay(1);
P2 |= GS_SCK;
// msDelay(1);
P2 &= ~GS_SCK;
// msDelay(1);
}
}
void Receive_ACK(void)
{
unsigned int i,temp;
P2 |= GS_SDI;
// msDelay(1);
P2 |= GS_SCK;
i=1;
while(i)
{
temp = P2;
temp &=GS_SDI;
if(temp==0)
i=0;
// msDelay(1);
}
P2 &= ~GS_SCK;
// msDelay(1);
}
void I2C_Start(void)
{
P2 |= GS_SCK;
P2 |= GS_SDI;
//msDelay(2);
P2 &= ~GS_SDI;
// msDelay(2);
P2 &= ~GS_SCK;
//msDelay(2);
}
void I2C_Stop(void)
{
P2 |= GS_SCK;
// msDelay(2);
P2 |= GS_SDI;
}
unsigned char read_Data(unsigned char send_reg)
{
unsigned char Rx_data;
I2C_Start();
Send_Comm(GS_Write);
Receive_ACK();
Send_Comm(send_reg);
Receive_ACK();
I2C_Stop();
//msDelay(1);
I2C_Start();
Send_Comm(GS_Read);
Receive_ACK();
// msDelay(1);
Rx_data = read_Comm();
Send_ACK();
I2C_Stop();
return Rx_data;
}
unsigned char read_Comm(void)
{
unsigned char Port_status;
unsigned char temp=0x00;
int i;
for(i=0;i<8;i++)
{
Port_status=P2 & GS_SDI;
Port_status>>=i;
temp|= Port_status;
// msDelay(1);
P2 |= GS_SCK;
// msDelay(1);
P2 &= ~GS_SCK;
// msDelay(1);
}
return temp;
}
void Send_ACK(void)
{
P2 &= ~GS_SDI;
// msDelay(1);
P2 |= GS_SDI;
// msDelay(1);
}
1/15/2009
電容換算
有時拿到電容時
還要細看編號
對於我們這種較笨的人
還要拿個紙筆計算一下
還會算錯才囧
因為同事的建議就寫了這個簡易換算程式
只要輸入電容編號就ok
但不能反算
因為是簡易的 XDD
這次提供了 DOS 和 WINDOWS 二種版本
之前的RGB轉換也有小改
CAP.rar
WCAP.rar
Source Code:
還要細看編號
對於我們這種較笨的人
還要拿個紙筆計算一下
還會算錯才囧
因為同事的建議就寫了這個簡易換算程式
只要輸入電容編號就ok
但不能反算
因為是簡易的 XDD
這次提供了 DOS 和 WINDOWS 二種版本
之前的RGB轉換也有小改
CAP.rar
WCAP.rar
Source Code:
/*
By Brian @Taiwan
*/
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int CAP;
int head;
int modu;
int flag=1,exit=1;
int i;
int exit_ans;
unsigned long ans;
float ansf;
printf("Wellcome user CAP program. \n");
printf("CAP Ver 1.0 \n");
printf("By brian @Taiwan. \n\n");
printf("Ex:Please input CAP number :102 \n");
printf(" 102 CAP = 1000pF \n\n");
while(exit)
{
while(flag)
{
printf("Please input CAP number :");
scanf("%d",&CAP);
if(CAP>=100)
flag=0;
else
printf("CAP number is error!! \n");
}
ans=1;
modu = CAP %10;
head = CAP /10;
if(modu<=7)
{
for(i=0;i<modu;i++)
ans *= 10;
ans *= head;
printf("%d CAP = %dpF \n",CAP,ans);
}
else
printf("%d CAP = %d*10^%dpF \n",CAP,head,modu);
if(modu<=7)
{
if(modu<=2)
{
ansf = (float)ans/1000;
printf(" = %fnF \n",ansf);
}
else
{
ans /= 1000;
printf(" = %dnF \n",ans);
}
}
else
{
modu-=3;
for(i=0;i<modu;i++)
ans *= 10;
ans *= head;
printf(" = %dnF \n",ans);
}
if(modu<=2)
ansf = (float)ansf/1000;
else
ansf = (float)ans/1000;
printf(" = %fuF \n\n",ansf);
printf("Do you want exit? 1.yes 2.no :");
scanf("%d",&exit_ans);
if(exit_ans==1)
exit=0;
else
{
exit=1;
printf("\n");
flag=1;
}
}
return 0;
}
1/13/2009
1/12/2009
感受
雖然這次是出差
但總是要品嘗一下
大陸,香港的美食
茶餐廳
凍檸茶.....就是檸檬紅茶 XD
波蘿包.....小小的不錯吃
肉丁炒公仔....@_@原來王子麵也能拿來炒
臘肉飯.....只有幾片蔬菜 真不習慣 XD
北方餃子館
羊肉水餃....羊騷味好重 @@ 好吃
牛肉煎餃....
大白菜......
xxx牛筋.....
好油好鹹好辣
讓我大大的受不了
吃完馬上拉啊 囧......
如果台灣的計程車讓你覺的很猛
那一定要試坐大陸的 taxi
真的是拿命來拼的啊
下車的瞬間
會讓人有種活著真好的感覺 XD
司機的一句"操你媽"
聽起來就是那麼的真實
比起電影裡聽到的就是不一樣
覺對讓你開懷大笑又久久無法忘懷
但總是要品嘗一下
大陸,香港的美食
茶餐廳
凍檸茶.....就是檸檬紅茶 XD
波蘿包.....小小的不錯吃
肉丁炒公仔....@_@原來王子麵也能拿來炒
臘肉飯.....只有幾片蔬菜 真不習慣 XD
北方餃子館
羊肉水餃....羊騷味好重 @@ 好吃
牛肉煎餃....
大白菜......
xxx牛筋.....
好油好鹹好辣
讓我大大的受不了
吃完馬上拉啊 囧......
如果台灣的計程車讓你覺的很猛
那一定要試坐大陸的 taxi
真的是拿命來拼的啊
下車的瞬間
會讓人有種活著真好的感覺 XD
司機的一句"操你媽"
聽起來就是那麼的真實
比起電影裡聽到的就是不一樣
覺對讓你開懷大笑又久久無法忘懷
訂閱:
文章 (Atom)