có đệm kép (double-buffered register) hoạt động theo chế FIFO (First In First Out) cho phép nhận byte byte thứ tiếp tục đưa vào ghi RSR Nếu sau nhận bit Stop byte liệu thứ mà ghi RCREG đầy, cờ hiệu báo tràn liệu (Overrun Error bit) OERR(RCSTA) set, liệu ghi RSR bò trình đưa liệu từ ghi RSR vào ghi RCREG bò gián đoạn Trong trường hợp cần lấy hết liệu ghi RSREG vào trước tiếp tục nhận byte liệu Bit OERR phải xóa phần mềm thực cách clear bit RCEN set lại Bit FERR (RCSTA) set phát bit Stop dủa liệu nhận vào Bit liệu thứ đưa vào bit RX9D (RCSTA) Khi đọc liệu từ ghi RCREG, hai bit FERR RX9D nhận giá trò Do cần đọc liệu từ ghi RCSTA trước đọc liệu từ ghi RCREG để tránh bò liệu Tóm lại, sử dụng giao diện nhận liệu USART bất đồng cần tiến hành bước sau: Thiết lập tốc độ baud (đưa giá trò thích hợp vào ghi SPBRG bit BRGH Cho phép cổng giao tiếp USART bất đồng (clear bit SYNC set bit SPEN) Nếu cần sử dụng ngắt nhận liệu, set bit RCIE Nếu liệu truyền nhận có đònh dạng bit, set bit RX9 Cho phép nhận liệu cách set bit CREN Sau liệu nhận, bit RCIF set ngắt kích hoạt (nếu bit RCIE set) Đọc giá trò ghi RCSTA để đọc bit liệu thứ kiểm tra xem trình nhận liệu có bò lỗi không Đọc bit liệu từ ghi RCREG Nếu trình truyền nhận có lỗi xảy ra, xóa lỗi cách xóa bit CREN 10 Nếu sử dụng ngắt nhận cần set bit GIE PEIE (thanh ghi INTCON) Các ghi liên quan đến trình nhận liệu giao diện USART bất đồng bộ: Thanh ghi INTCON (đòa 0Bh, 8Bh, 10Bh, 18Bh): chứa bit cho phép toàn ngắt (bit GIER PEIE) Thanh ghi PIR1 (đòa 0Ch): chứa cờ hiệu RCIE Thanh ghi PIE1 (đòa 8Ch): chứa bit cho phép ngắt RCIE Thanh ghi RCSTA (đòa 18h): xác đònh trang thái trình nhận liệu Thanh ghi RCREG (đòa 1Ah): chứa liệu nhận Thanh ghi TXSTA (đòa 98h): chứa bit điềukhiển SYNC BRGH Thanh ghi SPBRG (đòa 99h): điềukhiển tốc độ baud Chi tiết ghi trình bày cụ thể phụ lục 2.12.1.1.2 USART ĐỒNG BỘ Giao diện USART đồng kích hoạt cách set bit SYNC Cổng giao tiếp nối tiếp hai chân RC7/RX/DT, RC6/TX/CK cho phép cách set bit SPEN USART cho phép hai chế độ truyền nhận liệu Master mode Slave mode Master mode kích hoạt cách set bit CSRC (TXSTA), Slave mode kích hoạt cách clear bit CSRC Điểm khác biệt hai chế độ Master mode lấy xung clock đồng từ tao xung baud BRG Slave mode lấy xung clock đồng từ bên qua chân RC6/TX/CK Điều cho phép Slave mode hoạt động viđiềukhiển chế độ sleep 2.12.1.2.1 TRUYỀN DỮ LIỆU QUA CHUẨN GIAO TIẾP USART ĐỒNG BỘ MASTER MODE Tương tự giao diện USART bât đồng bộ, thành phần quan trọng hối truyền liệu ghi dòch TSR (Transmit Shift Register) Thanh ghi điềukhiển CPU Dữ liệu đưa vào ghi TSR chứa ghi TXREG Cờ hiệu khối truyền liệu bit TXIF (chỉ thò trang thái ghi TXREG), cờ hiệu gắn với ngắt bit điềukhiển ngắt TXIE Cờ hiệu thò trạng thái ghi TSR bit TRMT Bit TXEN cho phép hay không cho phép truyền liệu Các bước cần tiến hành truyền liệu qua giao diện USART đồng Master mode: Tạo xung truyền baud cách đưa giá trò cần thiết vào ghi RSBRG bit điềukhiển mức tốc độ baud BRGH Cho phép cổng giao diện nối tiếp nối tiếp đồng cách set bit SYNC, PSEN CSRC Set bit TXIE cần sử dụng ngắt truyền Set bit TX9 đònh dạng liệu cần truyền bit Set bit TXEN phép truyền liệu Nếu đònh dạng liệu bit, đưa bit liệu thứ vào bit TX9D Đưa bit liệu cần truyền vào ghi TXREG Nếu sử dụng ngắt truyền, cần kiểm tra lại bit GIE PEIE (thanh ghi INTCON) Các ghi liên quan đến trình truyền liệu giao diện USART đồng Master mode: Thanh ghi INTCON (đòa 0Bh, 8Bh, 10Bh, 18Bh): cho phép tất ngắt Thanh ghi PIR1 (đòa 0Ch): chứa cờ hiệu TXIF Thanh ghi PIE1 (đòa 8Ch): chứa bit cho phép ngắt truyền TXIE Thanh ghi RCSTA (đòa 18h): chứa bit cho phép cổng truyền liệu (hai pin RC6/TX/CK RC7/RX/DT) Thanh ghi TXREG (đòa 19h): ghi chứa liệu cần truyền Thanh ghi TXSTA (đòa 98h): xác lập thông số cho giao diện Thanh ghi SPBRG (đòa 99h): đònh tốc độ baud Chi tiết ghi trình bày cụ thể phụ lục 2.12.1.2.2 NHẬN DỮ LIỆU QUA CHUẨN GIAO TIẾP USART ĐỒNG BỘ MASTER MODE Cấu trúc khối truyền liệu không đổi so với giao diện bất đồng bộ, kể cờ hiệu, ngắt nhận thao tác thành phần Điểm khác biệt giao diện cho phép hai chế độ nhận sữ liệu, nhận word liệu (set bit SCEN) hay nhận chuỗi liệu (set bit CREN) ta clear bit CREN Nếu hai bit set, bit điềukhiển CREN ưu tiên Các bước cần tiến hành nhận liệu giao diện USART đồng Master mode: Thiết lập tốc độ baud (đưa giá trò thích hợp vào ghi SPBRG bit BRGH) Cho phép cổng giao tiếp USART bất đồng (set bit SYNC, SPEN CSRC) Clear bit CREN SREN Nếu cần sử dụng ngắt nhận liệu, set bit RCIE Nếu liệu truyền nhận có đònh dạng bit, set bit RX9 Nếu nhận word liệu, set bit SREN, nhận chuỗi word liệu, set bit CREN Sau liệu nhận, bit RCIF set ngắt kích hoạt (nếu bit RCIE set) Đọc giá trò ghi RCSTA để đọc bit liệu thứ kiểm tra xem trình nhận liệu có bò lỗi không Đọc bit liệu từ ghi RCREG 10 Nếu trình truyền nhận có lỗi xảy ra, xóa lỗi cách xóa bit CREN 11 Nếu sử dụng ngắt nhận cần set bit GIE PEIE (thanh ghi INTCON) Các ghi liên quan đến trình nhận liệu giao diện USART đồng Master mode: Thanh ghi INTCON (đòa 0Bh, 8Bh, 10Bh, 18Bh): chứa bit cho phép toàn ngắt (bit GIER PEIE) Thanh ghi PIR1 (đòa 0Ch): chứa cờ hiệu RCIE Thanh ghi PIE1 (đòa 8Ch): chứa bit cho phép ngắt RCIE Thanh ghi RCSTA (đòa 18h): xác đònh trang thái trình nhận liệu Thanh ghi RCREG (đòa 1Ah): chứa liệu nhận Thanh ghi TXSTA (đòa 98h): chứa bit điềukhiển SYNC BRGH Thanh ghi SPBRG (đòa 99h): điềukhiển tốc độ baud Chi tiết ghi trình bày cụ thể phụ lục 2.12.1.2.3 TRUYỀN DỮ LIỆU QUA CHUẨN GIAO TIẾP USART ĐỒNG BỘ SLAVE MODE Quá trình khác biệt so với Master mode viđiềukhiển hoạt động chế độ bình thường Tuy nhiên viđiềukhiển trạng thái sleep, khác biệt thể rõ ràng Nếu có hai word liệu đưa vào ghi TXREG trước lệnh sleep thực thi trình sau xảy ra: Word liệu đưa vào ghi TSR để truyền Word liệu thứ hai nằm ghi TXREG Cờ hiệu TXIF không set Sau word liệu dòch khỏi ghi TSR, ghi TXREG tiếp tục truyền word thứ hai vào ghi TSR cờ hiệu TXIF set Nếu ngắt truyền cho phép hoạt động, ngắt đánh thức viđiềukhiển toàn ngắt cho phép hoạt động, đếm chương trình tới đòa chứa chương trình ngắt (0004h) Các bước cần tiến hành truyền liệu giao diện USART đồng Slave mode: Set bit SYNC, SPEN clear bit CSRC Clear bit CREN SREN Nếu cần sử dụng ngắt, set bit TXIE Nếu đònh dạng liệu bit, set bit TX9 Set bit TXEN Đưa bit liệu thứ vào bit TX9D trước (nếu đònh dạng liệu bit) Đưa bit liệu vào ghi TXREG Nếu ngắt truyền sử dụng, set bit GIE PEIE (thanh ghi INTCON) Các ghi liên quan đến trình truyền liệu giao diện USART đồng Slave mode: Thanh ghi INTCON (đòa 0Bh, 8Bh, 10Bh, 18Bh): cho phép tất ngắt Thanh ghi PIR1 (đòa 0Ch): chứa cờ hiệu TXIF Thanh ghi PIE1 (đòa 8Ch): chứa bit cho phép ngắt truyền TXIE Thanh ghi RCSTA (đòa 18h): chứa bit cho phép cổng truyền liệu (hai pin RC6/TX/CK RC7/RX/DT) Thanh ghi TXREG (đòa 19h): ghi chứa liệu cần truyền Thanh ghi TXSTA (đòa 98h): xác lập thông số cho giao diện Thanh ghi SPBRG (đòa 99h): đònh tốc độ baud Chi tiết ghi trình bày cụ thể phụ lục 2.12.1.2.4 NHẬN DỮ LIỆU QUA CHUẨN GIAO TIẾP USART ĐỒNG BỘ SLAVE MODE Sự khác biệt Slave mode so với Master mode thể rõ ràng viđiềukhiển hoạt động chế độ sleep Ngoài chế độ Slave mode không quan tâm tới bit SREN Khi bit CREN (cho phép nhận chuỗi liệu) set trước lệnh sleep thực thi, word liệu tiếp tục nhận, sau nhận xong bit ghi RSR chuyển liệu vào ghi RCREG bit RCIF set Nếu bit RCIE (cho phép ngắt nhận) set trước đó, ngắt thực thi viđiềukhiển “đánh thức, đếm chương trình đến đòa 0004h chương trình ngắt thực thi Các bước cần tiến hành nhận liệu giao diện USART đồng Slave mode: Cho phép cổng giao tiếp USART bất đồng (set bit SYNC, SPEN clear bit CSRC) Nếu cần sử dụng ngắt nhận liệu, set bit RCIE Nếu liệu truyền nhận có đònh dạng bit, set bit RX9 Set bit CREN phép trình nhận liệu bắt đầu Sau liệu nhận, bit RCIF set ngắt kích hoạt (nếu bit RCIE set) Đọc giá trò ghi RCSTA để đọc bit liệu thứ kiểm tra xem trình nhận liệu có bò lỗi không Đọc bit liệu từ ghi RCREG Nếu trình truyền nhận có lỗi xảy ra, xóa lỗi cách xóa bit CREN Nếu sử dụng ngắt nhận cần set bit GIE PEIE (thanh ghi INTCON) Các ghi liên quan đến trình nhận liệu giao diện USART đồng Slave mode: Thanh ghi INTCON (đòa 0Bh, 8Bh, 10Bh, 18Bh): chứa bit cho phép toàn ngắt (bit GIER PEIE) Thanh ghi PIR1 (đòa 0Ch): chứa cờ hiệu RCIE Thanh ghi PIE1 (đòa 8Ch): chứa bit cho phép ngắt RCIE Thanh ghi RCSTA (đòa 18h): xác đònh trang thái trình nhận liệu Thanh ghi RCREG (đòa 1Ah): chứa liệu nhận Thanh ghi TXSTA (đòa 98h): chứa bit điềukhiển SYNC BRGH Thanh ghi SPBRG (đòa 99h): điềukhiển tốc độ baud Chi tiết ghi trình bày cụ thể phụ lục 2.12.2 MSSP MSSP ( Master Synchronous Serial Port) laø giao diện đồng nối tiếp dùng để giao tiếp với thiết bò ngoại vi (EEPROM, ghi dòch, chuyển đổi ADC,…) hay viđiềukhiển khác MSSP hoạt động hai dạng giao tiếp: SPI (Serial Pheripheral Interface) I2C (Inter-Intergrated Circuit) Các ghi điềukhiểngiao chuẩn giao tiếp bao gồm ghi trạng thái SSPSTAT hai ghi điềukhiển SSPSON SSPSON2 Tùy theo chuẩn giao tiếp sử dụng (SPI hay I2C) mà chức ghi thể khác 2.12.2.1 SPI Chuẩn giao tiếp SPI cho phép truyền nhận đồng Ta cần sữ dụng pin cho chuẩn giao tiếp này: Hình 2.19 Sơ đồ khối MSSP (giao diện SPI) RC5/SDO: ngõ liệu dạng nối tiếp (Serial Data output) RC4/SDI/SDA: ngõ vào liệu dạng nối tiếp (Serial Data Input) RC3/SCK/SCL: xung đồng nối tiếp (Serial Clock) RA5/AN4/SS/C2OUT: chọn đối tượng giao tiếp (Serial Select) giao tiếp chế độ Slave mode Các ghi liên quan đến MSSP hoạt động chuẩn giao tiếp SPI bao gồm: Thanh ghi điềukhiển SSPCON, ghi cho phép đọc ghi Thanh ghi trạng thái SSPSTAT, ghi cho phép đọc ghi bit trên, bit lại cho phép đọc Thanh ghi đóng vai trò buffer truyền nhận SSPBUF, liệu truyền nhận đưa vào tranh ghi SSPBUF cấu trúc đệm hai lớp (doubledbuffer), liệu ghi vào ghi SSPBUF ghi vào ghi SSPSR Thanh ghi dòch liệu SSPSR dùng để dòch liệu vào Khi byte liệu nhận hoàn chỉnh, liệu từ ghi SSPSR chuyển qua ghi SSPBUF cờ hiệu set, đồng thời ngắt xảy Chi tiết ghi trình bày cụ thể phụ lục Khi sử dụng chuẩn giao tiếp SPI trước tiên ta cần thiết lập chế độ cho giao diện cách đưa giá trò thích hợp vào hai ghi SSPCON SSPSTAT Các thông số cần thiết lập bao gồm: Master mode hay Slave mode Đối với Master mode, xung clock đồng từ chân RC3/SCK/SCL Đối với Slave mode, xung clock đồng nhận từ bên qua chân RC3/SCK/SCL Các chế độ Slave mode Mức logic xung clock trang thái tạm ngưng trình truyền nhận (Idle) Cạnh tác động xung clock đồng (cạnh lên hay cạnh xuống) Tốc độ xung clock (khi hoạt động Master mode) Thời điểm xác đònh mức logic liệu (ở hay cuối thời gian bit liệu đưa vào) Master mode, Slave mode chế độ Slave mode điềukhiển bit SSPM3:SSPM0 (SSPCON) Xem chi tiết phụ lục MSSP bao gồm ghi dòch liệu SSPSR ghi đệm liệu SSPBUF Hai ghi tạo thành đệm liệu kép (doubled-buffer) Dữ liệu dòch vào qua ghi SSPSR, bit MSB dòch trước Đây điểm khác biệt giữ hai giao diện MSSP USART (USART dòch bit LSB trước) Trong trình nhận liệu, liệu đưa vào từ chân RC4/SDI/SDA ghi SSPSR sẵn sàng (đã nhận đủ bit), liệu đưa vào ghi SSPBUF, bit thò trạng thái đệm BF (SSPSTAT) set để báo hiệu đệm đầy, đồng thời cờ ngắt SSPIF (PIR1) set Bit BF tự động reset liệu ghi SSPBUF đọc vào Bộ đệm kép cho phép đọc tiếp byte trước byte liệu trước đọc vào Tuy nhiên ta nên đọc trước liệu từ ghi SSPBUF trước nhận byte liệu Quá trình truyền liệu hoàn toàn tương tự ngược lại Dữ liệu cần truyền đưa vào ghi SSPBUF đồng thời đưa vào ghi SSPSR, cờ hiệu BF set Dữ liệu dòch từ ghi SSPSR đưa qua chân RC5/SDO Ngắt xảy trình dòch liệu hoàn tất Tuy nhiên liệu trước đưa phải cho phép tín hiệu từ chân Chân đóng vai trò chọn đối tượng giao tiếp SPI chế độ Slave mode Khi trình truyền nhận liệu diễn ra, ta không phép ghi liệu vào ghi SSPBUF Thao tác ghi liệu set bit WCON (SSPCON) Một điều cần ý ghi SSPSR không cho phép truy xuất trực tiếp mà phải thông qua ghi SSPBUF Cổng giao tiếp giao diện SPI điềukhiển bit SSPEN (SSPSON) Bên cạnh cần điềukhiển chiều xuất nhập PORTC thông qua ghi TRISC cho phù hợp với chiều giao diện SPI Cụ thể sau: RC4/SDI/SDA tự động điềukhiển khối giao itếp SPI RS5/SDO ngõ liệu, cần clear bit TRISC Khi SPI dạng Master mode, cần clear bit TRISC phép đưa xung clock đồng chân RC3/SCK/SCL Khi SPI dạng Slave mode, cần set bit TRISC phép nhận xung clock đồng từ bên qua chân RC3/SCK/SCL nhận tín hiệu điềukhiển truy Set bit TRISC phép chân xuất liệu SPI chế độ Slave mode Sơ đồ kết nối chuẩn giao tiếp SPI sau: Hình 2.20 Sơ đồ kết nối chuẩn giao tiếp SPI Theo sơ đồ kết nối này, khối Master bắt đầu trình truyền nhận liệu cách gửi tín hiệu xung đồng SCK Dữ liệu dòch từ hai ghi SSPSR đưa có cạnh xung đồng tác động ngưng dòch có tác động cạnh lại Cả hai khối Master Slave nên ấn đònh tắc tác động xung clock đồng để liệu dòch chuyển đồng thời 2.12.2.1.1 SPI MASTER MODE Ở chế độ Master mode, viđiềukhiển có quyền ấn đònh thời điểm trao đổi liệu (và đối tượng trao đổi liệu cần) điềukhiển xung clock đồng Dữ liệu truyền nhận thời điểm liệu đưa vào ghi SSPBUF Nếu cần nhận liệu, ta ấn đònh chân SDO ngõ vào (set bit TRISC) Dữ liệu dòch vào ghi SSPSR theo tốc độ đònh sẵn cho xung clock đồng Sau nhận byte liệu hoàn chỉnh, byte liệu đưa ghi SSPBUF, bit BF set ngắt xảy Khi lệnh SLEEP thực thi trình truyền nhận, trạng thái trình giữ nguyên tiếp tục sau viđiềukhiển đánh thức Giản đồ xung Master mode tác động bit điềukhiểntrình bày hình vẽ sau: Hình 2.21 Giản đồ xung SPI chế ñoä Master mode ... Synchronous Serial Port) giao diện đồng nối tiếp dùng để giao tiếp với thiết bò ngoại vi (EEPROM, ghi dòch, chuyển đổi ADC,…) hay vi điều khiển khác MSSP hoạt động hai dạng giao tiếp: SPI (Serial... điều khiển giao chuẩn giao tiếp bao gồm ghi trạng thái SSPSTAT hai ghi điều khiển SSPSON SSPSON2 Tùy theo chuẩn giao tiếp sử dụng (SPI hay I2C) mà chức ghi thể khác 2.12.2.1 SPI Chuẩn giao tiếp... đồng nối tiếp (Serial Clock) RA5/AN4/SS/C2OUT: chọn đối tượng giao tiếp (Serial Select) giao tiếp chế độ Slave mode Các ghi liên quan đến MSSP hoạt động chuẩn giao tiếp SPI bao gồm: Thanh ghi