PIC16F1827介紹 以微控器為基礎之電路設計實務-微處理器實驗室
大綱 一.特色介紹 二.架構介紹 三.指令集介紹 註:詳細內容請參閱PIC16F1827.pdf 以微控器為基礎之電路設計實務-微處理器實驗室
一.特色介紹 RISC CPU 擁有49道指令的指令集 內有256bytes的EEPROM、 8 K bytes的可編程記憶體(Flash Memory), 以及384bytes的Data Memory(RAM) 以微控器為基礎之電路設計實務-微處理器實驗室
一.特色介紹 類比周邊 操作電壓範圍 : 1.8V~3.6V 12通道-10bits ADC模組 兩組類比比較模組-軌對軌(rail to rail)比較器 5bit 軌對軌 DAC模組,具備正電壓及負電壓參考準位 電壓參考模組:固定輸出電壓參考(FVR)為1.024V、2.048V 及 4.096V 軌對軌 : 輸出失真及雜訊較低 以微控器為基礎之電路設計實務-微處理器實驗室
一.特色介紹 週邊設備 15個I/O Pins 以及 1 Input Only Pin 3個 8 bit Timer/Counter ;1個16bit Timer/Counter 兩組Capture、Compare、PWM(CCP)模組; 兩組增強式CCP模組 兩組Master Synchronous Serial Port(MSSP)模組-SPI、I2C模組、 一組Enhanced USART 模組-同步(RS232)/非同步通訊模組 軌對軌 : 輸出失真及雜訊較低 以微控器為基礎之電路設計實務-微處理器實驗室
一.特色介紹 PIC16F1826與PIC16F1827比較 以微控器為基礎之電路設計實務-微處理器實驗室
二.架構介紹 - MCU 以微控器為基礎之電路設計實務-微處理器實驗室
Program Counter : 計算目前所執行指令的位址,可依續跳動或隨指令改變, 如Goto、Return 以微控器為基礎之電路設計實務-微處理器實驗室
Flash Program Memory : 將編寫的Code經燒錄器寫至其中,隨Program Counter改變輸出對應位址的指令 以微控器為基礎之電路設計實務-微處理器實驗室
RAM : 存放資料的記憶體,斷電後即流失資料 以微控器為基礎之電路設計實務-微處理器實驗室
ALU : Arithmetic Logic Unit,依照指令要求指行運算 以微控器為基礎之電路設計實務-微處理器實驗室
STATUS Reg : 記錄上一次ALU運算結果之參數 以微控器為基礎之電路設計實務-微處理器實驗室
W reg : 儲存ALU運算之結果,應指令需求引入ALU進行運算 以微控器為基礎之電路設計實務-微處理器實驗室
Timing Generation : 依內建/外接Oscillator的時脈改變進行計數, 為可供使用者運用之Timer 以微控器為基礎之電路設計實務-微處理器實驗室
二.架構介紹 Program memory 使用16層15bits的stack- 當有CALL , RETURN , Interrupt等指令時暫存PC值 32K個位址,14bit的Program Memory- 配合15bits Program Counter可存取所有的位址 8K bytes on chip memory RETLW指令-可讀取Program Memory的data 16bit File select Register- 指向program memory的位址,讀取data 以微控器為基礎之電路設計實務-微處理器實驗室
二.架構介紹 Data memory 共有32個bank,每個bank有128個8bits暫存器 間接存取- 使用12bits address存取暫存器, 前7個bit為bank中暫存器的位址,後5個but為暫存器的位址 直接存取- 使用 16bit File select Register, 指向data memory的位址,讀取data 以微控器為基礎之電路設計實務-微處理器實驗室
二.架構介紹 Data memory-Core Register 位於Data memory的每個Bank中前12個位址 暫存器儲存微控器基礎操作相關的數值 EX.FSR0L- File Select Register 0 低8位元指標 EX.STATUS- 記錄運算結果,EX.Z表運算結果是否為0;C表運算結果是否有進位 以微控器為基礎之電路設計實務-微處理器實驗室
二.架構介紹 Data memory-Special Function Registers 位於Data memory的每個Bank中第13~32個位址 暫存器儲存微控器周邊模組的數值與控制enable EX.PORTA- GPIO PORTA的暫存器 EX.TMR2,PR2- TMR2為Timer2模組設定暫存器;PR2為Timer2的週期暫存器 以微控器為基礎之電路設計實務-微處理器實驗室
二.架構介紹 Data memory- General Purpose RAM、Common RAM 位於Data memory的每個Bank中 第33~112個位址及113~128位址 若bank中有GPR,可暫存運算上使用到的數值 Common RAM為每個Bank通用的暫存器 以微控器為基礎之電路設計實務-微處理器實驗室
三.指令集介紹 以微控器為基礎之電路設計實務-微處理器實驗室
三.指令集介紹-代稱解釋 f :Register file address,直接對應到該位址的暫存器(0x00~0x7F) w : Working Register b : 指定一個8 bit File Register中的特定一個bit k : 表一立即值(Literal) x : 表該bit可視為Don’t care,組譯器通常視為0 d : 目的地(destination),選擇儲存運算結果的位置,d=0為 Working Register,d=1為File Register,默認值為d=1 以微控器為基礎之電路設計實務-微處理器實驗室
三.指令集介紹 ADDWF 將W Reg的值與F Reg的值相加, 存到d指定的暫存器中, 該運算結果會影響Status Reg中 之C(carry)、DC(Digital carry)、 Z(Zero)的值 範例:addwf PORTA,w 以微控器為基礎之電路設計實務-微處理器實驗室
三.指令集介紹 BSF 將F Reg中的指定Bit設為1 範例: bsf PORTA,3 以微控器為基礎之電路設計實務-微處理器實驗室
三.指令集介紹 INCFSZ 將F Reg的值加一, 若結果為0則忽略下一條指令 範例: INCFSZ PORTA,f 以微控器為基礎之電路設計實務-微處理器實驗室
三.指令集介紹 MOVLW 將一立即值放入W Reg 範例:MOVLW 0x5A 以微控器為基礎之電路設計實務-微處理器實驗室
PIC微控器燒錄步驟 以微控器為基礎之電路設計實務-微處理器實驗室
ICD3(燒錄器)連接方式 以微控器為基礎之電路設計實務-微處理器實驗室
IC燒錄器電路圖 圖例 Input腳 若有此點 表通過的 線共點 排針/排 母 以微控器為基礎之電路設計實務-微處理器實驗室
燒錄微控器步驟 將ICD3 Debugger接上電腦及微控器燒錄腳 編譯及燒錄 失敗情況 以微控器為基礎之電路設計實務-微處理器實驗室
打開MPLAB 以微控器為基礎之電路設計實務-微處理器實驗室
File->Open Project 以微控器為基礎之電路設計實務-微處理器實驗室
瀏覽檔案位址->選取project ->Open project 以微控器為基礎之電路設計實務-微處理器實驗室
點選 Project 名稱 ->Source Files -> Main.c 以微控器為基礎之電路設計實務-微處理器實驗室
編輯Main.c 程式碼 LED_PORT(0x“寫入LED狀態”) -> AA代表二進位的1010_1010 Sleep(“寫入暫停時間”) 以微控器為基礎之電路設計實務-微處理器實驗室
儲存-> 點選 Build Project -> 確認BUILD SUCCESSFUL 以微控器為基礎之電路設計實務-微處理器實驗室
點選 Run Project -> 確認Programming/Verify complete 以微控器為基礎之電路設計實務-微處理器實驗室
失敗情況 請確認以下狀態 ICD3 Debugger 正確連接 關閉微控器電源 程式碼的Error 編譯器(compiler)的設定 參考以下講義 以微控器為基礎之電路設計實務-微處理器實驗室
右鍵點選 Project -> properties 以微控器為基礎之電路設計實務-微處理器實驗室
選取Conf -> Hardware Tools : ICD3 -> Compiler Toolchains : XC8 -> OK 以微控器為基礎之電路設計實務-微處理器實驗室
點選 ICD3 -> Option categories -> power 以微控器為基礎之電路設計實務-微處理器實驗室
勾選 power target from ICD3 以微控器為基礎之電路設計實務-微處理器實驗室
步進馬達控制 步進馬達廣泛運用於電腦周邊設備上、定位控制、印列表機的控制的用途上。利用 電場與磁場的交互作用使得步進馬達的定子與轉子線圈產生的磁力,因為磁性相同 相斥或者磁性相反相吸來轉動定子運動。 以微控器為基礎之電路設計實務-微處理器實驗室
在這裡我們以四相步進馬達為例,定子上就有四組相應的線圈,分別提供項差90度 相位的電力。 此次實驗我們控制得步進馬達為二相激磁的四組線圈,一次會同時有兩組定子線圈 激磁,同時本實驗的步進馬達內部轉子有25齒,定義完整A、B、~A、~B為一個訊 號週期也就是說走完一圈360度共花了25個訊號週期,而步進角為一個完整訊號週 期是14.4度/step。馬達轉向是由激磁的順序來決定如果是(A,B)→(B,~A)→(~A, ~B)→(~B,A)為順轉,相反(A,~B)→(~B,~A)→(~A,B)→(B,A)則為逆轉,如 圖。 以微控器為基礎之電路設計實務-微處理器實驗室
四個輸出端的波型圖如圖三,定義由S1換至S2的順序為一寸動步是3 四個輸出端的波型圖如圖三,定義由S1換至S2的順序為一寸動步是3.6度,完整S1、 S2、S3、S4步進馬達所轉動的角度為一步進角(step)是14.4度。 以微控器為基礎之電路設計實務-微處理器實驗室
ULN2003 ULN2003是一顆有七組達靈頓電晶體如圖四(又稱達靈頓對),達靈頓對是結合兩個 雙極性電晶體的裝置如圖五。如此,第二個電晶體可進一步放大第一個電晶體已放 大的電流。 以微控器為基礎之電路設計實務-微處理器實驗室
這次實驗使用ULN2003腳位COMMON接Vcc(12V),GND接地,輸入端為 ULN2003腳位1至腳位7,ULN2003輸入端則是連接開發板的四個輸出端;ULN2003 輸出端為腳位10至腳位16,輸出端則連接步進馬達。圖六為步進馬達的輸入腳位, 由開發板所產生的A、B相位輸入到步進馬達。步進馬達驅動電路接法如圖 以微控器為基礎之電路設計實務-微處理器實驗室