發表文章

產生負電壓的方法

圖片
可以利用『方波』來產生負電壓 1. 利用 charge pump,如果有用到 TTL <-> RS232 (MAX232) 。也可以從這裡來偷電 2. 利用 555 震盪出方波 3. 現在電路通常都有用 PWM 來轉電壓。也可以從這裡來偷電。 第二項,是網路有人說可以用。但我沒試過。因為現在應該沒人用 555 了。 第一、三項,我試過可以用。 4. 利用 OP 來振出方波。沒試過,應該可行。 上述方法,都屬於偷電。所以使用時驅動能力要注意。

Simple console adapter

圖片
不使用 232 driver/receiver 可以用 BJT 代替。 下面是網路上偷來的,找個時間玩玩吧!! 一、 1st version modification 2nd version 二、 reference : http://chaokhun.kmitl.ac.th/~kswichit/ap275/ap275.htm

C8051F340 UART0/1 用法!

UART 的 RX 如果不用 interrupt 收資料,等於沒用。 要如何使用呢??有兩種方法。 1)Flag volatile bit TI0_proxy = 1; void UART0_ISR( void ) interrupt 4 { if ( TI0 == 1 ) { // set the proxy when TI0 is set TI0 = 0; TI0_proxy = 1; } if ( RI0 == 1 ) { RI0 = 0; ... } } unsigned char putchar( unsigned char ch ) { while ( TI0_proxy == 0 ); TI0_proxy = 0; return (SBUF0 = ch); } 真是簡單的方法!當然效能差。重點是簡單。 2)Ring Buffer 效能好。 相對麻煩。不過也沒那麼複雜。 Sample code 比較多。上網參考囉。 http://www.cygnal.org/ubb/Forum5/HTML/000497.html http://www.8052.com/codelib

在 Win32 下 Serial Port 的通訊

在 Win32 下 Serial Port 的通訊 以下的東西是我在閱讀 "Communications Programming for Windows 95" 時做的一點 筆記, 所以在 topic 上大致上都和這書上的第三章一樣. 一些 structure 和 API 的 宣告都是 copy from VC 5.0 的 on-line help. 這些東西主要談的是如何在 Win32 的平台下對 serial port 的通訊. 可能可以帶來 幫助的是那些了解 serial port 的通訊, 但是不清楚在 Win32 平台究竟有那些 API 可用的 programer (就像我? :p) 我只是做做整理罷了, 更清楚的內容可能要再翻翻 on-line help 或是書本. 如果你要嘗試在 Win32 下做像是對 modem 做控制(例如撥 號, 通訊)的程式, 但是對於 serial port 並不了解, 那你應該再去找一本有講到這 些東西的書看看. 開啟一個 Serial Port 利用一般開啟檔案的 CreatFile() 即可開啟 serial port device HANDLE CreateFile( LPCTSTR lpFileName, // pointer to name of the file DWORD dwDesiredAccess, // access (read-write) mode TES lpSecurityAttributes, // poin DWORD dwShareMode, // share mode LPSECURITY_ATTRIB Uter to security attributes DWORD dwCreationDistribution, // how to create e to file with attributes to copy ); DWORD dwFlagsAndAttributes, // file attributes HANDLE hTemplateFile // hand l 用 CreateFile() API. lpFileName 為 "COM1" 或是 "COM2" dwDersiredAccess 一般為 GENER...

MFC: UpdateData()

MFC: UpdateData() Posted on 一月 27, 2008 by brain ㄧ直都知道 UpdateData() 的使用時機是用於更新資料時… 當需要取得 Dialog 上之控制項儲存資料時 使用 UpdateData(TRUE) 來取得… 反之 需要將變數呈現於 Dialog 之控制項時 需要用 UpdateData(FALSE) 但卻不知道 執行 UpdateData() 這動作 用意是去呼叫 ::DoDataExchange(pDx) 這函示的 用 MFC 精靈產生專案時… 會產生類似如下之程式碼 1. void CDDXDemoDlg::DoDataExchange(CDataExchange* pDX) 2. { 3. CDialog::DoDataExchange(pDX); 4. DDX_Text(pDX, IDC_EDIT, num); 5. DDV_MinMaxInt(pDX, num, 1, 20); 6. } 其中 DDX_ 代表 -> Do Data Exchange DDV_ 則代表了 -> Do Data Verification 所以執行 UpdateData(TRUE) 就代表了 IDC_EDIT -> num 的資料交換 而 UpdateData(FALSE) 即代表了 num -> IDC_EDIT 的資料交換動作… 且執行 UpdateData() 動作後會去作類似 DDV_MinMaxInt 的資料基本檢查….

Trace32 load ELF include file symbol

data.load.elf ELF_filename /PATH source_file_directory 加上 /PATH 參數

root filesystem 補遺

補充:rootfs 設定資料 /etc/passwd 第一行為﹕"root:x:0:0:root:/root:/bin/bash"﹐ 這個就是密碼檔裡面的使用者 root 之設定啦。這個檔案裡面﹐每一個帳號都獨佔一行設定﹐格式相同﹐分別用 '﹕'來分隔﹕ 1) 第一個詞是使用者名稱。 2) 然後是使用者密碼﹐它會經過加密、並存放到另外一個叫 shadow 的檔案裡面﹐所以您只能看到"x"(如果被修改成 " * "符號﹐就表是沒有分配密碼﹐但該帳號就不能用來登錄了)。 3) 然後是 user ID (UID)﹐如果是 0 的話﹐那就是 super user (root) 的帳號。 4) 然後是 group ID (GID)﹐root 群組的號碼是 0 。 5) 接下來的是一些使用者資料(可以省略)﹐例如使用者的姓名。 6) 再下來是使用者的家目錄(home directory)所在路徑。 7) 最後﹐是登錄時候要使用的 shell﹐預設是 /bin/bash。如果您不想使用者登錄進系統﹐但可以為它們提供某些服務﹐如 FTP 和 MAIL﹐那您可以將它們的 shell 修改為 /bin/ture、或 /bin/false、或 /dev/null。 /etc/shadow 這個檔案的格式和 passwd 有點類似﹐但其中的設定意思卻很不一樣﹕ 1) 使用者帳號名稱﹐這點沒什麼分別。 2) 使用者密碼內容。您在這裡或許看到兩種密碼﹕" !! " 和一長串雜亂無章的字符。如果是兩個嘆號的話﹐表示這個帳號目前沒有密碼﹐也不能用來登錄﹐通常為一些系統帳號﹔如果是一長串字符﹐那是經過加密之後的密碼內容。還記得我們在安裝系統的時候﹐其中有個 Shadow Password 和 MD5 Password 的選項嗎﹖那就是了﹐這裡的密碼是經過 MD5 單向加密演算法處理過的﹐理論上是無法進行逆向破解的。在任何時候﹐您都不能直接在這個檔案上修改這裡的密碼。 3) 上次密碼修改的時間。這裡的單位是從 1970 年 1 月 1 號到最後修改日期的天數。 4) 密碼自上次修改後﹐要隔多少天才能再次修改。通常為 0 ﹐也就是沒有這個限制。 5) 密碼自上次修改後﹐要隔多少天必須再...