PIC编程器自制.doc_第1页
PIC编程器自制.doc_第2页
PIC编程器自制.doc_第3页
PIC编程器自制.doc_第4页
PIC编程器自制.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

D1,5.6V稳压管,可以替换成5.1V稳压管(常用)/zzz1367/blog自製PIC燒錄器 林茂榮 第209期前言 最近許多單晶片已經藉由消費性電子產品這一管道,默默地滲透到一般人的日常生活裡頭,因此單晶片與人類生活之間的關係已經密不可分。也因為有利可圖,所以許多商業活動就大量涉入到單晶片領域,像是國內的義隆電子等,都以單晶片為主要的業務活動,加上因為單晶片製程技藝發達,成本也相對地降低,這更助長了單晶片的應用領域,例如有一項資料顯示,目前出廠的私家車輛中,平均會使用約25只單晶片,只是這些應用,恐怕連使用者都不得而知,也弄不清楚。 早期的單晶片微電腦與現今者有很大的差異,先期開發出來的單晶片少部分現今依然被沿用著,有的甚至逐漸被改良或說整合成像是有完整功能的電腦,而目前應用在消費性電子產品上的單晶片還是以8爻單晶片系列為主,而且最近發展的趨勢是,這些單晶片都有FLASH的程式記憶體,也就是說主導這些單晶片運作的程式,有必要時可以隨時更新。筆者從早期在大學時期開始接觸電腦,到目前以業餘的方式接觸單晶片,一路走來已經二十餘年,這期間沒有間斷過與電腦的關係,從宏碁的小教授、頻果APPLEII、286、到如今動輒2G的CPU。唯現今電腦使用者與電子線路之間的關係好像鬆垮無力,除了自己裝組電腦的DIY外,好像很少聽到有人利用電腦結合一般的電子創作,這實在是很可惜的一件事。從目前筆者接觸單晶片的經驗,覺得PIC系列非常棒,這是以一個業餘愛好者的角度而言,因為可以利用組合語言或C語言寫PIC程式,而MICROCHIP公司可以提供免費的編譯程式,同時就PIC的發展,目前完全走向FLASH化,使得程式的開發相當方便,更棒的是,網路上的相關資源非常豐富,網路上可以搜尋得到的,從基本的PIC入門資訊,到可以完全自己動手的燒錄器一應具全。基於這些理由,筆者鼓勵業餘愛好者,不彷從PIC開始,這真是一個很好的管道。本文的主要目的,就是要提出一個PIC的燒錄器製作,而要自己燒錄單晶片,重要的關鍵因素還包括有燒錄軟體,因此除燒錄器製作外,同時也要介紹幾種可以用來燒錄PIC的免費軟體。這些燒錄軟體搭配燒錄器可以用來燒錄具有代表性的FLASH PIC,如12F675、12F629、16F84、16F628、16F72、及16F73等,同時也可以燒錄一些常用的串列EEPROM。為什麼會選擇這幾只PIC呢?那是因為這些單晶片都是FLASH製程,從功能上看也具有代表性,因此很適合業餘者選擇使用,而且熟悉這些單晶片的運作後,也就相當於瞭解整個PIC系列的單晶片。燒錄器原理與硬體線路照理講,因為單晶片裡頭的程式記憶體做燒錄時的要求相當嚴謹,自然也要採用通過原廠認證的燒錄器才好,這是因為認證程序過程中會有一套嚴謹的品質管制,當然這是以商業生產活動的角度來看,至於以一般業餘的眼光,雖說把關的要求有時用業餘的角度做衡量也不見得會輸給專業,但是就少了把關的管控程序。因為這裡是以業餘的角度做PIC燒錄器,雖然不能聲稱絕對可以和經過認證的商業方法相融,但是以實用角度而言,可以相融是毫無問題的。由於採用了某些無法控制的方式(例如因為業餘因素,不採用外接電源等),也因此而無法堂而皇之地說它是正式的PIC燒錄,但是從個人、業餘、與實用的角度做衡量標準,充作個人使用,這是一個再適合不過的PIC燒錄器。PIC程式燒錄原理為了要了解PIC的程式燒錄過程,我們必須要先弄懂PIC的程式燒錄原理。注意雖然此處所談的燒錄原理也許也適用於其它單晶片,但這裡專指PIC單晶片。不論是哪一類的PIC,是一次燒錄(OTP)IC,開玻璃窗的紫外燈光抹除(EPROM)IC,或者是最近流行的FLASH電子抹除(EEPROM)IC,它們都有個可以直通到IC內部程式記憶體的路徑,假如要做燒錄器,需要蒐集的資料,就是包括弄清楚這些燒錄用的相關腳位,然後正確地把它們接到燒錄器的接座上。基本上,要把程式內容傳送到IC裡頭的程式記憶體內,是採用串列的方式來進行,這有一點類似I2C的方式,所以這就必須要包括有時脈訊號(CLOCK)與串列資料(DATA)訊號。除此之外還必須要有個控制腳,這在PIC系列,通常是指MCLR這一隻腳,既然是電子抹除與書寫,就免不了要有電源,因此要做PIC燒錄,就必須要找到5隻腳,分別是電源、接地、控制腳、時脈訊號、與串列資料。所以,凡是燒錄器就必須要具備上述幾個腳位。針對電腦常用的RS232串列阜,要對應到控制腳、時脈訊號、與串列資料 自然是不成問題,關於電源那就要動一點腦筋。由於RS232串列阜的定義,有一些腳位作為握手對應用,因此使用時可以讓它保持在高電位,這高電位對於RS232的定義來說,就是+12伏特,雖然這些腳位都只是訊號規模,但由於RS232的應用牽涉到連線的距離,因此這些訊號規模的腳位,也大多能提供高達10毫安培的電流。這對於PIC的燒錄是足夠的,也因此單獨靠著RS232介面,不需要額外的電源供應線路,就能做PIC的燒錄器。基本上,可以把RS232串列阜視為電流工作,其實早期在中等距離的資料傳輸,RS232串列阜還提供有所謂的電流環(CURRENT LOOP)模式,也就是以電流的有無來做1與0的區別,而不是使用電壓,這在患有嚴重雜訊干擾的區域特別管用,在某種程度上,可以把RS232串列阜視為電流工作型,自然要提供數毫安培電源是毫無問題的。燒錄器線路參看圖1,就是這個足以應付常用的PIC IC燒錄器線路,RS232的第3腳就是控制訊號,它被接到MCLR,由於做燒錄時MCLR一定先要維持在高電位,這一隻腳高電位時會是+12V,而且它可以提供高達10毫安培的電流,所以此腳同時也接上以簡單的電阻串聯然納二極體的方式,來取得+5V電源。為了確保極性的穩定,所以然納二極體是使用5.6V,經過1N4148之後,就可以提供相當穩定且具有極性保護的+5V電源。時脈訊號由第7腳提供,而串列資料則接第8及第4腳,它分別對應到RS232串列阜的資料輸出與輸入腳,這是因為串列資料為雙向,也就是燒錄時會做寫入的動作,而程式燒錄之後要確認時,就必須要做讀出。而不論寫入或讀出,都是經由串列資料腳,也就是說對PIC而言,它以單腳做輸入及輸出,而RS232串列阜的輸出入腳分別是第8及第4腳,這也就是為什麼第8及第4腳要同時接到DATA腳。針對圖1來說,雖然只列出了12F675、12F629、16F84、16F628、16F72、及16F73等,但是要追加任何的PIC IC,甚至是EEPROM,只要把相對應的接腳找出來就可以了,例如16C71其實只要燒錄程式支援它,就可以把它放在16F84的燒錄IC上做燒錄;又例如要燒錄16C72A,雖然這裡沒有這只IC的編號,其實把它放在16C72上也是可以做燒錄的。相同的道理,許許多多PIC編號的IC,只要腳位數相同,而燒錄程式有支援它,把它插到同腳位數的IC座上,也都可以做燒錄。軟體支援IC的詳細情況,可以參看表1。筆者熟知要做燒錄當然要有適合的燒錄程式做配合才行,因此筆者是先從網路上找到免費的PIC燒錄軟體,先研究這些軟體支援哪一些燒錄器硬體,然後再做燒錄器的設計。燒錄器製作完整的線路請參看圖1,整個燒錄器使用的零件非常少,以圖中所列的PIC IC為燒錄對象,就只要備妥8隻腳,18隻腳,及28隻腳的DIP型 IC座,然後根據圖1的接腳做焊接就可以了。雖然筆者剛開始是以16F84及16F628燒錄器做設計(參看照片1),之後也曾經想利用轉換器的方式,要把12F629插在16F84的IC座上,但是卻發現這個方法很不理想,最好還是以個別的IC座,把這些接腳以並聯的方式,分別接到不同的IC座的相對應腳上,如圖1所示,這也就是為什麼筆者會做這樣的設計。請注意,雖然PIC系列也都包含有SMD封裝的IC,但是針對個人以業餘用途來衡量,採用SMD封裝是不合理的,因此這裡就一概不考慮到SMD封裝的IC燒錄,若是有必要,那只好針對自己的需求,去購買SMD與DIP的轉換座。參看圖1是適用於上述燒錄器使用的硬體線路,製作此線路並沒有嚴格的要求,你可以使用萬用線路板做焊接,倒是放置燒錄PIC IC的腳座要特別注意,因為要常做插拔,所以這裡使用的IC座建議採用圓孔(MACHINE HOLE)型,此處分別需要有8PIN、18PIN、及28PIN三個IC座。參看圖2是針對圖1所做的線路板佈線。另外,焊接時要特別注意ZD1及D1的極性,還有C1的極性也不要裝錯,DB9焊接時,記得兩旁的腳座焊接要牢靠,否則DB9的訊號接腳容易因受力過大而造成焊接點受創。還有使用這個燒錄器時,IC的插拔一定要特別注意,最好是使用IC插拔工具(器),否則燒錄的IC,很容易因為插拔動作而使IC接腳受傷,尤其是28PIN的IC。由於PIC IC的接腳除了電源與接地腳之外,其餘接腳可以說都是輸出入腳,因此插拔動作也要特別考慮到靜電破壞的問題,總之,以筆者的經驗來說,在冷氣房內最要注意靜電的破壞,當然一般情況也是要提防才好。筆者的經驗是,I/O腳一旦遭靜電破壞就會出現不可預期的結果,例如程式動作時LED是要亮燈的,卻偏偏不亮,原來是用來驅動LED做指示的I/O腳受靜電燒毀。這些情況值得特別注意,那是因為一般FLASH 的PIC IC,雖然可以多次燒錄,但是IC設計與生產時的考量,可不會把你開發程式時的IC插拔動作列為主要的規格做考慮,因此插拔的動作還是要多加小心。燒錄軟體談到PIC IC的燒錄,除了燒錄器線路外,最重要的就是搭配燒錄器使用的軟體,雖然MICROCHIP提供了燒錄軟體,但是必須要搭配專用的燒錄器,還好網路上有許多現成的PIC燒錄軟體,於是筆者透過網際網路,搜尋了一些適用的燒錄軟體。這些軟體都是免費的,當然除了在此處列出來介紹 以外,也還有不少的燒錄軟體,但是因為這些我所看到的其它燒錄軟體,在功能及實用性上都比較單薄,而且相對地功能也都較不齊全,在功能上也都能夠被這裡所介紹的三種軟體所包括,因此就只取這三種軟體做介紹。參看表1所示,分別是這三種軟體的基本資料,更具體的用法與說明,則分別以獨立的章節做介紹。ICPROG105燒錄程式說明參看照片2是ICPROG105的程式執行畫面,它已經完全是視窗操作環境,由於ICON的設計佳,讓操作非常方便,基本上它把視窗切成上下兩半,上面是程式內容,下方則是EEPROM資料記憶體內容,同時可以看到這樣的區塊共有5組,分別是BUFFER1到BUFFER5,它們很像活頁紙旁的標籤,只要滑鼠在標籤上點選,就可以在這5組緩衝器之間快速切換。筆者發現,這對於要做比對程式內容相當方便,程式也提供了這5個區塊之間的內容比對,且比對結果會逐行用顏色來標示出相異處。同時,參看程式畫面的右手邊小型直立的長方塊內,有包括振盪器的選擇(OSCILLATOR),保險絲燒錄(FUSES)的設定,程式核對碼(CHECKSUM)的顯示,以及程式ID碼的內容設定及顯示。而上述幾項的設定就成為所謂的組織碼(CONFIG WORD),它的內容顯示在這長方塊的正下方。另外,這個燒錄程式也有反組譯的功能,只要以滑鼠在ICON的A處點一下,就可以得到反組譯的程式內容,參看照片3。值得一提的是,此燒錄程式雖然主要是做PIC的燒錄,但是也支援其它單晶片及EEPROM記憶體的燒錄,因此假如你需要其它的IC燒錄,不彷在設定(SETTINGS)的DEVICE內找尋,或者是直接在畫面的右上方一個藍色的小窗口內直接以滑鼠選擇下拉,就可以看到能夠燒錄的所有IC編號。另外,這個程式可以搭配許多不同的硬體線路使用,因此執行後先要把你所使用的硬體介面設定好,使用圖1線路所示的燒錄器,可以選擇JDM PROGRAMMER,要設定硬體介面可以從選單上的SETTINGS內的HARDWARE進入,也可以利用快速鍵F3進入。PIX燒錄程式說明PIX是筆者接觸PIC時所認識的第一個燒錄程式,到目前為止的PIX113版本,雖然還是無法完全進入視窗的操作環境,處處都有DOS的影子,不過操作上還算相當方便,雖然沒有滑鼠的點選方便,但是在螢幕上,只要是設定的項目上,都有紅色的第一個大寫字母,只要依照這些指示做按鍵動作,很方便可以完成必要的設定。例如螢幕左上角的FOWPC分別就是進入燒錄條件做設定,參看照片4。而螢幕底邊的功能鍵操作也相當方便,從F1到F10都對應到常用的功能,另外搭配了ALT鍵及CTRL鍵,又把F1到F10對應到另外的20種功能(目前有些功能鍵是空白閒置),這種貼心創新的設計,使得雖然是DOS式的操作,但也算相當方便。這個程式有個組織檔(CONFIG),它存放了程式的基本設定,包括硬體介面等,所以第一次執行此程式時,必須先要設定好組織檔,一旦順利執行,往後開啟程式時,這個執行檔會於執行程式時被採用,也就是毋須再做設定。通常以圖1線路做燒錄時,執行PIX程式燒錄,必須要把硬體設定為LUDI,至於是採用哪一個COM阜,就由你自行決定。另外此程式也具有反組譯的功能,把程式HEX檔讀進來之後,只要按D鍵,就可以執行反組譯的工作。WINPICPR燒錄程式說明基本上,這程式具備了有條不紊的操作安排,進入程式之後畫面很簡潔,第一眼看到的是很像活頁簿的目錄,可以發現總共有6頁可以翻纜,參看照片5,分別是CODE,DATA,DEVICE&CONFIG,OPTIONS,INTERFACE,及MESSAGES。CODE及DATA就是分別代表程式資料碼與EEPROM資料,DEVICE&CONFIG可以選擇不同的PIC編號,以及設定燒錄條件,OPTIONS可以做一些次要的條件設定。而INTERFACE是用來設定燒錄器的,假如你採用的是如圖1所示的燒錄器線路,則要選擇COM84 PROGRAMMER FOR SERIAL PORT,在這裡還提供了燒錄器的測試功能,以滑鼠在INITIALIZE方塊上點一下,可以看到螢幕下方會出現INITIALING PIC-PROGRAMMER:SUCCESS,就 表示燒錄器介面大致上沒問題,參看照片6。至於MESSAGES就是操作時的流水帳紀錄,任何的操作程序,例如燒錄動作等,這裡都會以流水帳的方式詳細地做紀錄。PIC燒錄注意事項第一次使用PIC燒錄器時,大家最常碰到的問題就是燒錄條件的設定,一般說來,假如採用MICROCHIP免費提供的MPASM做組譯,大多數書寫程式者都會把燒錄條件寫在程式上,如此程式編譯之後,程式碼內容就會包含有燒錄條件,此時只要把程式碼載入燒錄程式內,就不必再去設定燒錄條件。有些燒錄條件的設定不會影響程式本身,但有些條件設定不當,就會使程式無法正常運作。這裡就針對PIC常用的一些設定做說明。這包括有CODE PROTECTION,POWER-UP TIMER,WATCHDOG TIMER,OSCILLATOR,FUSE,及ID等。燒錄時若把CODE PROTECTION打開(ON),就會讓燒錄後的程式碼無法正常讀出,也因為如此,所以燒錄時若把這個功能打開,之後要進行燒錄後驗證(VERIFY)時,就會出現錯誤訊息,這是因為燒錄後的讀出內容與原來燒錄的內容有異之故。這功能通常運用於商業生產時,為了保護程式不輕易外流,於程式燒錄時,可以把這個功能打開。值得一提的是,雖然它可以保護程式不能被讀取,但是依然有一些偏方,可以讀得到有保護功能的燒錄程式內容。WATCHDOG TIMER則是內附看門狗計時的開關,此項條件務必要符合程式的運作,否則誤用此項條件,往往會嚴重影響程式的運作,輕則使動作異常,重則造成程式完全無法運作。POWER-UP TIMER是插電啟動程式時的一個延遲線路,這是一個內附的硬體線路,有了這個功能,就可以避免使用外接的啟動IC,通常有些運用單晶片的產品,會要求插拔電源的測試,若沒有這個功能,電源插拔幾次之後,可能會造成程式無法正常啟動的現象,一般採用單晶片時,會採用外加的啟動線路來確保這個功能。OSCILLATOR則是用來選擇適合的振盪線路,它實際上就是一個硬體振盪線路的路徑選擇或說增益控制,這可以確保不同振盪線路都可以維持最佳的運作狀態,例如一般石英晶體選擇XT,而如果工作頻率高於10MHz,也許燒錄時就應該試著選擇HS。另外。還包括有使用電阻電容振盪線路的RC設定,以及低功率情況下使用的LP等。至於FUSE,實際上它是針對上述4項條件的設定總開關,也就是說你可以直接設定FUSE的值來完成上述的4種設定,但是因為它是個數值,所以不容易掌握,寫程式時也可以直接設定FUSE值,不過一般以CONFIG虛擬指令來設定會比較好。至於ID,它是提供運用時的一個方便標示,例如你可以把生產的序號放在這上面,日後有維修或需要追蹤時,只要讀出這個ID碼就可以做生產序號的確認。一般編寫程式時應該要把這些條件帶進程式裡頭,但是有些程式語言(例如C語言)或者是程式編譯器沒有這個功能,因此不得不把這些設定關掉,下面是組合語言對這些燒錄條件的設定例子:_config(_CP_ON & _PWRTE_ON & _WDT_OFF & _XT_OSC)從上述的程式敘述很容易可以看出來這些設定,但是偶而也可以看到某些程式就直接把FUSES值設定好,例如針對16F84而言,上述燒錄條件設定的FUSES值是3FF1,因此在程式中把FUSES值設定為3FF1,也就等於設定了上述的燒錄條件設定。燒錄時,碰到內含有EEPROM的IC,這些資料都可以選擇與程式碼分開或一起做燒錄,同時有些燒錄程式還可以允許你單獨載入EEPROM的燒錄資料,也可以把這些EEPROM資料單獨存成檔案,這對於某些程式的燒錄也算是相當好的功能。例如有個程式把對照表資料就放在EEPROM內,假如你把這些資料放在程式內,而這些對照表資料需要有好幾個版本,那就必須要編譯好幾次程式,要是你把程式與EEPROM分開,那麼載入程式後,只要載入不同版本的EEPROM資料檔,就可以有好幾個版本,同時萬一這對照表需要修改,或是程式開發階段需要做一些TRY AND ERROR的測試,那麼就更加方便在這方面的作業了。牛刀小試做完了上述的燒錄器製作與燒錄程式介紹之後,當然也要實地演練一番才好,這裡筆者就拿一個程式的開發過程做燒錄時,所碰到的實況做演練說明。這是一個以LED做顯示的1.2GHz計頻儀,程式名稱叫做GLEDKOTF,這是我的F版本,先使用文書處理把程式編妥後,存成附檔名為ASM的檔案,先以MICROCHIP免費提供的MPLAB編譯軟體做組譯的工作,參看照片7及照片8,經過成功組譯之後,你可以得到許多檔案,包含有LIST檔及ERROR檔等。其中附檔名是HEX的檔案最重要,這也就是燒錄程式時要使用的檔案,例如上述我就可以得到GLEDKOT.hex的檔案,有了程式檔之後,接下來就是執行PIX燒錄程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论