intTypePromotion=1
ADSENSE

Tài liệu về PSoC – Nguyễn Xuân Sơn

Chia sẻ: Tran Van Hieu | Ngày: | Loại File: PDF | Số trang:0

137
lượt xem
45
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

PSoC là một từ viết tắt của cụm từ tiếng anh Programmable System on Chip, nghĩa là hệ thống khả trình trên một chíp. Các chíp chế tạo theo công nghệ PSoC cho phép thay đổi được cấu hình đơn giản bằng cách gán chức năng cho các khối tài nguyên có sẵn trên chíp. Hơn nữa nó còn có thể kết nối tương đối mềm dẻo các khối chức năng với nhau hoặc giữa các khối chức năng với các cổng vào ra. Chính vì vậy mà PSoC có thể thay thế cho rất nhiều chức năng nền của một số hệ thống cơ...

Chủ đề:
Lưu

Nội dung Text: Tài liệu về PSoC – Nguyễn Xuân Sơn

  1. Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN Giíi thiÖu vÒ PSoC PSoC lµ mét tõ viÕt t¾t cña côm tõ tiÕng anh Programmable System on Chip, nghÜa lµ hÖ thèng kh¶ tr×nh trªn mét chÝp. C¸c chÝp chÕ t¹o theo c«ng nghÖ PSoC cho phÐp thay ®æi ®−îc cÊu h×nh ®¬n gi¶n b»ng c¸ch g¸n chøc n¨ng cho c¸c khèi tµi nguyªn cã s½n trªn chÝp. H¬n n÷a nã cßn cã thÓ kÕt nèi t−¬ng ®èi mÒm dÎo c¸c khèi chøc n¨ng víi nhau hoÆc gi÷a c¸c khèi chøc n¨ng víi c¸c cæng vµo ra. ChÝnh v× vËy mµ PSoC cã thÓ thay thÕ cho rÊt nhiÒu chøc n¨ng nÒn cña mét sè hÖ thèng c¬ b¶n chØ b»ng mét ®¬n chÝp. Thµnh phÇn cña chÝp PSoC bao gåm c¸c khèi ngo¹i vi sè vµ t−¬ng tù cã thÓ cÊu h×nh ®−îc, mét bé vi xö lý 8 bit, bé nhí ch−¬ng tr×nh (EEROM) cã thÓ lËp tr×nh ®−îc vµ bé nhí RAM kh¸ lín. §Ó lËp tr×nh hÖ thèng, ng−êi sö dông ®−îc cung cÊp mét phÇn mÒm lËp tr×nh, vÝ dô nh− cho c¸c chÝp PSoC cña Cypress ng−êi lËp tr×nh ph¶i cã phÇn mÒm PSoC Designer. Ngoµi ra ®Ó cµi ®−îc ch−¬ng tr×nh ®iÒu khiÓn vµo chÝp th× ng−êi lËp tr×nh ph¶i cã mét kit ph¸t triÓn do h·ng chÕ t¹o chip cung cÊp (hoÆc mét bé n¹p). PhÇn mÒm thiÕt kÕ ®−îc x©y dùng trªn c¬ së h−íng ®èi t−îng víi cÊu tróc module hãa. Mçi khèi chøc n¨ng lµ mét module mÒm. ViÖc lËp cÊu h×nh cho chÝp nh− thÕ nµo lµ tïy thuéc vµo ng−êi lËp tr×nh th«ng qua mét sè th− viÖn chuÈn. Ng−êi lËp tr×nh thiÕt lËp cÊu h×nh trªn chÝp chØ ®¬n gi¶n b»ng c¸ch muèn chÝp cã nh÷ng chøc n¨ng g× thi kÐo chøc n¨ng ®ã vµ th¶ vµo khèi tµi nguyªn sè hoÆc t−¬ng tù, hoÆc c¶ hai tïy theo tõng chøc n¨ng (Ph−¬ng ph¸p lËp tr×nh kÐo th¶). ViÖc thiÕt lËp ng¾t trªn ch©n nµo, lo¹i ng¾t lµ g×, c¸c ch©n vµo ra ®−îc ho¹t ®éng ë chÕ ®é nh− thÕ nµo ®Òu tïy thuéc vµo viÖc thiÕt lËp cña ng−êi lËp tr×nh khi thiÕt kÕ vµ lËp tr×nh cho PSoC. Víi kh¶ n¨ng ®Æt cÊu h×nh m¹nh mÏ nµy, mét thiÕt bÞ ®iÒu khiÓn, ®o l−êng cã thÓ ®−îc gãi gän trªn mét chip duy nhÊt. ChÝnh v× lý do ®ã, h·ng Cypress MicroSystems ®· kh«ng gäi s¶n phÈm cña m×nh lµ vi ®iÒu khiÓn (µC) nh− truyÒn thèng, mµ gäi lµ “thiÕt bÞ PSoC” (PSoC device), vµ hä hy väng r»ng, víi kh¶ n¨ng ®Æt cÊu h×nh m¹nh mÏ, ng−êi sö dông sÏ cã ®−îc nh÷ng thiÕt bÞ ®iÒu khiÓn, nh÷ng thiÕt bÞ ®o cã gi¸ rÎ, kÝch th−íc nhá gän, vµ s¶n phÈm PSoC cña hä sÏ thay thÕ ®−îc c¸c thiÕt bÞ dùa trªn vi xö lý hoÆc vi ®iÒu khiÓn ®· cã tõ tr−íc ®Õn nay. ChÝp PSoC (CY8C27xxx) cung cÊp: • Bé vi xö lý víi cÊu tróc Harvard. - Tèc ®é cña bé vi xö lý lªn ®Õn 24 MHz - LÖnh nh©n 8 bit x 8 bit, thanh ghi tÝch lòy lµ 32 bit - Ho¹t ®éng ë tèc ®é cao mµ n¨ng l−îng tiªu hao Ýt - D¶i ®iÖn ¸p ho¹t ®éng tõ 3.0 tíi 5.25V - §iÖn ¸p ho¹t ®éng cã thÓ gi¶m xuèng 1.0 V sö dông chÕ ®é kÝch ®iÖn ¸p Ho¹t ®éng trong d¶i nhiÖt ®é -400C ®Õn 850C. - • C¸c khèi ngo¹i vi cã thÓ ®−îc sö dông ®éc lËp hoÆc kÕt hîp 12 khèi ngo¹i vi t−¬ng tù cã thÓ ®−îc thiÕt lËp ®Ó lµm c¸c nhiÖm vô: - C¸c bé ADC lªn tíi 14 bit - C¸c bé DAC lªn tíi 9 bit. - C¸c bé khuÕch ®¹i cã thÓ lËp tr×nh ®−îc hÖ sè khuÕch ®¹i. - C¸c bé läc vµ c¸c bé so s¸nh cã thÓ lËp tr×nh ®−îc 49
  2. Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN H×nh 3-1 : S¬ ®å khèi cÊu tróc cña PSoC (CY8C27000) 50
  3. Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN 8 khèi ngo¹i vi sè cã thÓ ®−îc thiÕt lËp ®Ó lµm c¸c nhiÖm vô: - C¸c bé ®Þnh thêi ®a chøc n¨ng, ®Õm sù kiÖn, ®ång hå thêi gian thùc, bé ®iÒu chÕ ®é réng xung cã vµ kh«ng cã d¶i an toµn (deadband) - C¸c modun kiÓm tra lçi (CRC modunles) - Hai bé truyÒn th«ng nèi tiÕp kh«ng ®ång bé hai chiÒu - C¸c bé truyÒn th«ng SPI Master hoÆc Slave cã thÓ cÊu h×nh ®−îc - Cã thÓ kÕt nèi víi tÊt c¶ c¸c ch©n vµo ra. • Bé nhí linh ho¹t trªn chÝp - Kh«ng gian bé nhí ch−¬ng tr×nh Flash tõ 4K ®Õn 16K, phô thuéc vµo tõng lo¹i chÝp víi chu kú ghi xãa cho bé nhí Flash lµ 50.000 lÇn - Kh«ng gian bé nhí RAM lµ 256 byte - ChÝp cã thÓ lËp tr×nh th«ng qua chuÈn nèi tiÕp (ISSP) - Bé nhí Flash cã thÓ ®−îc n©ng cÊp tõng phÇn - ChÕ ®é b¶o mËt ®a n¨ng, tin cËy - Cã thÓ t¹o ®−îc kh«ng gian bé nhí Flash trªn chÝp lªn tíi 2,304 byte • Cã thÓ lËp tr×nh ®−îc cÊu h×nh cho tõng ch©n cña chÝp - C¸c ch©n vµo ra ba tr¹ng th¸i sö dông Trigger Schmitt - §Çu ra logic cã thÓ cung cÊp dßng 25mA víi ®iÖn trë treo cao hoÆc thÊp bªn trong - Thay ®æi ®−îc ng¾t trªn tõng ch©n - §−êng ra t−¬ng tù cã thÓ cung cÊp dßng tíi 40mA - §−êng ra ®a chøc n¨ng cã tõ 6 ®Õn 44 tïy thuéc vµo tõng lo¹i chÝp • Xung nhÞp cña chÝp cã thÓ lËp tr×nh ®−îc - Bé t¹o dao ®éng 24/48MHz ë bªn trong (®é chÝnh x¸c lµ 2,5%, kh«ng cÇn thiÕt bÞ ngoµi) - Cã thÓ lùa chän bé dao ®éng ngoµi lªn tíi 24MHz - Bé dao ®éng th¹ch anh 32,768 kHz bªn trong - Bé t¹o dao ®éng tèc ®é thÊp bªn trong sö dông cho Watchdog vµ Sleep • Ngo¹i vi ®−îc thiÕt lËp s½n - Bé ®Þnh thêi Watchdog vµ Sleep phôc vô chÕ ®é an toµn vµ chÕ ®é nghØ Module truyÒn th«ng I2C Master vµ I2C Slave tèc ®é lªn tíi 400kHz - - Module ph¸t hiÖn ®iÖn ¸p thÊp ®−îc cÊu h×nh bëi ng−êi sö dông • C«ng cô ph¸t triÓn PhÇn mÒm ph¸t triÓn miÔn phÝ (PSoCTM Designer) - - Bé lËp tr×nh vµ bé m« pháng víi ®Çy ®ñ tÝnh n¨ng - M« pháng ë tèc ®é cao 51
  4. Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN Ch−¬ng 4: CÊu tróc Vi xö lý 1. Bé vi xö lý – CPU 1.1. Giíi thiÖu chung C¸c hä chÝp cña PSoC dùa trªn bé vi xö lý m¹nh mÏ 8 bit víi cÊu tróc Harvard (CÊu tróc Harvard lµ cÊu tróc mµ bus d÷ liÖu, bus ®Þa chØ vµ tÝn hiÖu ®iÒu khiÓn cña bé nhí ch−¬ng tr×nh vµ bé nhí d÷ liÖu ®éc lËp víi nhau). Nã cã 5 thanh ghi ®iÒu khiÓn ho¹t ®éng chÝnh cña CPU. Nh÷ng thanh ghi nµy bÞ t¸c ®éng bëi nh÷ng lÖnh kh¸c nhau. Ng−êi sö dông kh«ng thÓ truy cËp trùc tiÕp vµo c¸c thanh ghi nµy th«ng qua kh«ng gian bé nhí c¸c thanh ghi. C¸c thanh ghi cña CPU ®−îc cho trong b¶ng sau: B¶ng 4-1: C¸c thanh ghi cña CPU Thanh ghi M· gîi nhí Flags (thanh ghi cê) CPU_F Program Counter (thanh ghi ®Õm ch−¬ng tr×nh) CPU_PC Accumulator (thanh ghi chøa) CPU_A Stack Pointer (thanh ghi con trá Stack) CPU_SP Index (thanh ghi chØ sè) CPU_X Bé ®Õm ch−¬ng tr×nh lµ mét thanh ghi16 bit (CPU_PC), nã cho phÐp ng−êi lËp tr×nh truy cËp trùc tiÕp vµo toµn bé kh«ng gian bé nhí ch−¬ng tr×nh trªn chÝp (16 Kbytes ®èi víi thµnh viªn lín nhÊt). §©y lµ mét kh«ng gian nhí liªn tôc vµ kh«ng cÇn ph¶i t¹o thµnh trang (no paging). Thanh ghi chøa (Accumulator) lµ mét thanh ghi ®a môc ®Ých, nã th−êng ®−îc sö dông ®Ó l−u gi÷ kÕt qu¶ cña bÊt cø mét lÖnh nµo sö dông chÕ ®é ®Þa chØ nguån. Thanh ghi chØ sè ®−îc dïng ®Ó l−u gi÷ gi¸ trÞ Offset (®é lÖch) trong chÕ ®é ®Þa chØ chØ sè. Tiªu biÓu lµ nã ®−îc dïng ®Ó ®Þa chØ mét khèi d÷ liÖu bªn trong kh«ng gian nhí d÷ liÖu. Thanh ghi Con trá Stack (Stack Pointer) l−u gi÷ ®Þa chØ cña ®Ønh Stack trong kh«ng gian nhí d÷ liÖu. Nã bÞ t¸c ®éng bëi nh÷ng lÖnh nh− PUSH, POP, LCALL, RETI vµ RET. Nãi chung lµ tÊt c¶ nh÷ng lÖnh cã liªn quan ®Õn stack cña phÇn mÒm. Nã còng cã thÓ bÞ ¶nh h−ëng bëi lÖnh SWAP vµ lÖnh ADD. Thanh ghi cê (Flags) cã ba bit tr¹ng th¸i: bit cê kh«ng - Zero Flag bit[1]; bit cê nhí -Carry Flag bit[2]; bit Supervisory State[3]. Bit cho phÐp ng¾t toµn côc – Global Interrupt enable bit[0] ®−îc dïng ®Ó cho phÐp hoÆc cÊm toµn bé c¸c ng¾t. C¸c cê trªn bÞ ¶nh h−ëng bëi nh÷ng lÖnh to¸n häc, nh÷ng lÖnh logic. v.v… 1.2. Thanh ghi cña CPU 1.2.1. Thanh ghi cê (Flags Register) B¶ng 4-2: Thanh ghi cê (CPU_F) Bit # 7 6 5 4 3 2 1 0 POR 0 0 0 0 0 0 1 0 Read/Write -- -- -- RW R RW RW RW Bit Name Reseved Reseved Reseved XIO Super Carry Zero Global IE Bit 7: Reserved (ch−a ®−îc ®Þnh nghÜa) Bit 6: Reserved Bit 5: Reserved Bit 4: XIO - ®−îc ®Æt bëi ng−êi sö dông cho phÐp lùa chän gi÷a c¸c d·y thanh ghi 52
  5. Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN 0 = Bank 0 1 = Bank 1 Bit 3: Reserved Bit 2: Carry - ®−îc ®Æt bëi CPU ®Ó chØ râ to¸n tö trong phÐp to¸n logic hoÆc to¸n häc tr−íc ®ã cã nhí hay kh«ng 0 = No Carry (kh«ng cã nhí) 1 = Carry (cã nhí) Bit 1: Zero - ®−îc ®Æt bëi CPU ®Ó chØ râ to¸n tö trong phÐp to¸n logic hoÆc to¸n häc tr−íc ®ã cã b»ng kh«ng hay kh«ng. 0 = Not Equal to Zero (kh«ng b»ng kh«ng) 1 = Equal to Zero (b»ng kh«ng) Bit 0: Global IE – QuyÕt ®Þnh toµn bé c¸c ng¾t lµ cho phÐp hay bÞ cÊm 0 = Disabled (cÊm) 1 = Enabled (cho phÐp) 1.2.2. Thanh ghi chøa B¶ng 4-3: Thanh ghi chøa (CPU_A) Bit # 7 6 5 4 3 2 1 0 POR 0 0 0 0 0 0 0 0 Read/Write System1 System1 System1 System1 System1 System1 System1 System1 Bit Name Data[7] Data[6] Data[5] Data[4] Data[3] Data[2] Data[1] Data[0] Bit [7:0]: 8 bit d÷ liÖu l−u gi÷ kÕt qu¶ cña bÊt cø mét lÖnh to¸n häc/logic sö dông chÕ ®é ®Þa chØ nguån POR (Power on reset): Tr¹ng th¸i cña bÝt sau khi reset nguån. Chó ý: System1: do hÖ thèng ®iÒu chØnh, ng−êi dïng kh«ng thÓ thay ®æi trùc tiÕp ®−îc gi¸ trÞ cña nh÷ng bit nµy 1.2.3. Thanh ghi chØ sè B¶ng 4-4: Thanh ghi chØ sè (CPU_X) Bit # 7 6 5 4 3 2 1 0 POR 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 System1 Read/Write System System System System System System System Bit Name Data[7] Data[6] Data[5] Data[4] Data[3] Data[2] Data[1] Data[0] Bit [7:0]: 8 bit d÷ liÖu l−u gi÷ chØ sè cho bÊt cø mét lÖnh nµo sö dông chÕ ®é ®Þa chØ chØ sè 1.2.4. Thanh ghi con trá Stack B¶ng 4-5: Thanh ghi con trá Stack (CPU_SP) Bit # 7 6 5 4 3 2 1 0 POR 0 0 0 0 0 0 0 0 1 1 1 System System System System1 1 1 1 System1 Read/Write System System System Bit Name Data[7] Data[6] Data[5] Data[4] Data[3] Data[2] Data[1] Data[0] Bit [7:0]: 8 bit d÷ liÖu l−u gi÷ gi¸ trÞ con trá stack hiÖn thêi (trá vµo ®Ønh cña stack) 1.2.5. Thanh ghi bé ®Õm ch−¬ng tr×nh B¶ng 4-6: Thanh ghi bé ®Õm ch−¬ng tr×nh (CPU_PC) Bit# 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 POR 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Read/ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 write Bit Data Data Data Data Data Data Data Data Data Data Data Data Data Data Data Data Name [15] [14] [13] [12] [11] [10] [9] [8] [7] [6] [5] [4] [3] [2] [1] [0] Bit[15:0]: 16 bit D÷ liÖu lµ byte thÊp vµ byte cao cña bé ®Õm ch−¬ng tr×nh 53
  6. Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN H×nh 4-1 : CÊu tróc liªn kÕt cña CPU víi bé nhí (cÊu tróc Harvard) 1.3. §Þnh d¹ng cña lÖnh 1.3.1. LÖnh 1 byte LÖnh 1 byte lµ lÖnh kh«ng dïng ®Þa chØ hay d÷ liÖu nh− to¸n h¹ng. lÖnh 1 byte sö dông mét m· lÖnh 8 bit vÝ dô nh− RET,ASR,INC,DEC… B¶ng 4-7 : D¹ng lÖnh 1 byte Byte 0 8- bit opcode 1.3.2. LÖnh 2 byte LÖnh 2 byte lµ lÖnh dïng duy nhÊt mét to¸n h¹ng lµ d÷ liÖu hay ®Þa chØ. LÖnh 2 byte sö dông byte ®Çu tiªn ®Ó chøa m· lÖnh, byte thø hai ®Ó chøa d÷ liÖu hoÆc ®Þa chØ. HoÆc nã sö dông 4 bit ®Çu cho m· lÖnh vµ 12 bit sau cho ®Þa chØ. B¶ng 4-8 : D¹ng lÖnh 2 byte Byte 0 Byte 1 4-Bit opcode 12-bit relative address 8-Bit opcode 8-bit data 8-Bit opcode 8-bit address 1.3.3. LÖnh 3 byte 54
  7. Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN LÖnh lo¹i nµy sö dông 3 byte bëi v× nã ®−îc sö dông ®Ó di chuyÓn d÷ liÖu gi÷a hai ®Þa chØ trong kh«ng gian ®Þa chØ mµ ng−êi sö dông cã thÓ truy nhËp. HoÆc nã dïng ®Ó l−u gi÷ mét gi¸ trÞ ®Þa chØ tuyÖt ®èi 16 bit trong c¸c lÖnh LCALL vµ LJMP. B¶ng 4-9 : D¹ng lÖnh 3 byte Byte 0 Byte 1 Byte 2 8-Bit opcode 16-bit address (MSB,LSB) 8-Bit opcode 8-bit data 8-bit data 8-Bit opcode 8-bit address 8-bit address 1.4. C¸c chÕ ®é ®Þa chØ trong PSoC 1.4.1. ChÕ ®é ®Þa chØ nguån tøc thêi (Source Immediate) Nh÷ng lÖnh sö dông chÕ ®é ®Þa chØ nµy cã gi¸ trÞ nguån ®−îc l−u gi÷ trong to¸n h¹ng 1 cña lÖnh, kÕt qu¶ ®−îc l−u gi÷ trong thanh ghi A, thanh ghi F, thanh ghi SP hay thanh ghi X ®−îc chØ râ trong lÖnh. LÖnh sö dông chÕ ®é ®Þa chØ nµy cã ®é dµi lµ 2 byte. B¶ng 4-10 : ChÕ ®é ®Þa chØ nguån tøc thêi Opcode Operand 1 Instruction Inmediate Value VÝdô: M· nguån M· m¸y Chó thÝch ADD A,7 01 07 Gi¸ trÞ tøc thêi lµ 7 ®−îc céng vµo thanh chøa, kÕt qu¶ ®−îc l−u vµo thanh chøa MOV X,8 57 08 Gi¸ trÞ tøc thêi lµ 8 ®−îc chuyÓn vµo thanh ghi X AND F,9 70 09 Gi¸ trÞ tøc thêi lµ 9 ®−îc AND víi gi¸ trÞ trong thanh ghi F, kÕt qu¶ cña phÐp AND ®−îc ®Æt trong thanh ghi F 1.4.2. ChÕ ®é ®Þa chØ nguån trùc tiÕp (Source Direct) Trong chÕ ®é nµy th× ®Þa chØ nguån ®−îc l−u gi÷ trong to¸n h¹ng 1 cña lÖnh. Trong suèt qu¸ tr×nh thi hµnh lÖnh th× ®Þa chØ ®−îc dïng ®Ó lÊy gi¸ trÞ nguån tõ RAM hoÆc tõ kh«ng gian ®Þa chØ thanh ghi. KÕt qu¶ ®−îc chØ râ trong lÖnh lµ ®Æt vµo thanh ghi X hay thanh ghi A. TÊt c¶ nh÷ng lÖnh sö dông chÕ ®é ®Þa chØ trùc tiÕp ®Òu lµ lÖnh cã ®é dµi 2 byte. B¶ng 4-11 : ChÕ ®é ®Þa chØ nguån trùc tiÕp Opcode Operand 1 Instruction Source Address VÝ dô: M· nguån M· m¸y Chó thÝch ADD A,[7] 02 07 Gi¸ trÞ trong bé nhí t¹i ®Þa chØ 7 ®−îc céng vµo thanh chøa kÕt qu¶ l¹i ®−îc l−u gi÷ trong thanh chøa MOV X, REG[8] 5D 08 Gi¸ trÞ trong kh«ng gian thanh ghi t¹i ®Þa chØ 8 ®−îc chuyÓn vµo thanh chøa 1.4.3. ChÕ ®é ®Þa chØ nguån chØ sè (Source Indexed) Trong chÕ ®é nµy th× d÷ liÖu cña nguån ®−îc truy xuÊt trong RAM hoÆc kh«ng gian ®Þa chØ thanh ghi th«ng qua ®Þa chØ lµ gi¸ trÞ hiÖn thêi cña thanh ghi X céng víi mét chØ sè. KÕt qu¶ ®−îc chØ râ trong lÖnh lµ l−u gi÷ trong thanh ghi X hay thanh ghi A. LÖnh cã ®é dµi lµ 2 byte B¶ng 4-12 : ChÕ ®é ®Þa chØ nguån chØ sè Opcode Operand 1 55
  8. Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN Instruction Source Index VÝ dô: M· nguån M· m¸y Chó thÝch ADD A,[X+7] 03 07 Gi¸ trÞ trong bé nhí t¹i ®Þa chØ X+7 ®−îc céng vµo thanh chøa, kÕt qu¶ l¹i ®−îc l−u vµo thanh chøa MOV X,[X+8] 59 08 Gi¸ trÞ trong bé nhí t¹i ®Þa chØ X+8 ®−îc di chuyÓn vµo thanh ghi X 1.4.4. ChÕ ®é ®Þa chØ ®Ých trùc tiÕp (Destination Direct) Nh−ng lÖnh thuéc chÕ ®é ®Þa chØ nµy cã ®Þa chØ ®Ých ®−îc l−u tr÷ trong m· m¸y cña lÖnh, ®Þa chØ nguån ®−îc chØ râ trong lÖnh lµ thanh ghi A hay X. TÊt c¶ nh÷ng lÖnh sö dông chÕ ®é ®Þa chØ nµy ®Òu lµ lÖnh 2 byte. B¶ng 4-13 : ChÕ ®é ®Þa chØ ®Ých trùc tiÕp Opcode Operand 1 Instruction Destination Address VÝ dô: M· nguån M· m¸y Chó thÝch ADD [7], A 04 07 Gi¸ trÞ trong thanh chøa ®−îc céng víi gi¸ trÞ trong bé nhí t¹i ®Þa chØ 7, kÕt qu¶ l¹i ®−îc l−u vµo bé nhí t¹i ®Þa chØ 7. Gi¸ trÞ thanh chøa kh«ng ®æi MOV REG[8], A 60 08 Gi¸ trÞ trong thanh chøa ®−îc di chuyÓn vµo kh«ng gian thanh ghi t¹i ®Þa chØ 8. Gi¸ trÞ thanh chøa kh«ng ®æi. 1.4.5. ChÕ ®é ®Þa chØ ®Ých chØ sè (Destination Indexed) Nh÷ng lÖnh thuéc chÕ ®é ®Þa chØ nµy cã ®Ých ®−îc x¸c ®Þnh b»ng c¸ch lÊy gi¸ trÞ cña thanh ghi X céng víi mét chØ sè lµm ®Þa chØ ®Ó truy xuÊt vµo bé nhí, nguån ®−îc x¸c ®Þnh trong lÖnh lµ thanh ghi A hoÆc mét gi¸ trÞ tøc thêi. Nh÷ng lÖnh sö dông chÕ ®é ®Þa chØ nµy ®Òu lµ lÖnh cã ®é dµi 2 byte. B¶ng 4-14 : ChÕ ®é ®Þa chØ ®Ých chØ sè Opcode Operand 1 Instruction Destination Index VÝ dô: M· nguån M· m¸y Chó thÝch ADD [X+7], A 05 07 Gi¸ trÞ trong bé nhí t¹i ®Þa chØ X+7 ®−îc céng vµo thanh chøa, kÕt qu¶ ®−îc l−u vµo bé nhí t¹i ®Þa chØ X+7, thanh chøa kh«ng thay ®æi 1.4.6. ChÕ ®é ®Þa chØ ®Ých trùc tiÕp, nguån tøc thêi tøc thêi (Destination Direct, Source Immediate) Nh÷ng lÖnh thuéc chÕ ®é ®Þa chØ nµy cã ®Þa chØ cña ®Ých ®−îc l−u gi÷ trong to¸n h¹ng 1 cña lÖnh. Gi¸ trÞ cña nguån ®−îc l−u tr÷ trong to¸n h¹ng 2 cña lÖnh. TÊt c¶ nh÷ng lÖnh thuéc chÕ ®é ®Þa chØ nµy ®Òu lµ lÖnh cã ®é dµi 3 byte. B¶ng 4-15 : ChÕ ®é ®Þa chØ ®Ých trùc tiÕp, nguån tøc thêi Opcode Operand 1 Operand 2 Instruction Destination Address Immediate Value 56
  9. Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN VÝ dô: M· nguån M· m¸y Chó thÝch ADD [7],5 06 07 05 Gi¸ trÞ trong bé nhí t¹i ®Þa chØ 7 ®−îc céng víi gi¸ trÞ tøc thêi 5, kÕt qu¶ l¹i ®−îc l−u vµo bé nhí t¹i ®Þa chØ 7. MOV REG[8],6 62 08 06 Gi¸ trÞ tøc thêi 6 ®−îc di chuyÓn vµo kh«ng gian thanh ghi t¹i ®Þa chØ 8 1.4.7. ChÕ ®é ®Þa chØ ®Ých chØ sè, nguån tøc thêi (Destination Indexed, Source Immediate) Trong chÕ ®é nµy th× gi¸ trÞ cña thanh ghi X céng víi mét chØ sè ®−îc lÊy lµm ®Þa chØ ®Ó lÊy d÷ liÖu trong bé nhí. Cßn d÷ liÖu nguån lµ mét sè trùc tiÕp. TÊt c¶ nh÷ng lÖnh thuéc chÕ ®é ®Þa chØ nµy ®Òu lµ lÖnh 3 byte. B¶ng 4-16 : ChÕ ®é ®Þa chØ ®Ých chØ sè, nguån tøc thêi Opcode Operand 1 Operand 2 Instruction Destination Index Immediate Value VÝ dô: M· nguån M· m¸y Chó thÝch ADD [X+7],5 07 07 05 Gi¸ trÞ trong bé nhí t¹i ®Þa chØ X+7 ®−îc céng víi gi¸ trÞ tøc thêi 5, kÕt qu¶ l¹i ®−îc l−u vµo bé nhí t¹i ®Þa chØ X+7. MOV REG[X+8],6 63 08 06 Gi¸ trÞ tøc thêi 6 ®−îc di chuyÓn vµo kh«ng gian thanh ghi t¹i ®Þa chØ X+8 1.4.8.ChÕ ®é ®Þa chØ ®Ých trùc tiÕp, nguån trùc tiÕp (Destination Direct, Source Direct) ChØ cã duy nhÊt mét lÖnh sö dông chÕ ®é ®Þa chØ nµy, ®Þa chØ cña ®Ých ®−îc l−u gi÷ trong to¸n h¹ng 1 cña lÖnh cßn ®Þa chØ cña nguån ®−îc l−u gi÷ trong to¸n h¹ng 2 cña lÖnh. TÊt c¶ nh÷ng lÖnh sö dông chÕ ®é ®Þa chØ nµy ®Òu lµ lÖnh cã ®é dµi 3 byte. B¶ng 4-17: ChÕ ®é ®Þa chØ ®Ých trùc tiÕp, nguån trùc tiÕp Opcode Operand 1 Operand 2 Instruction Destination Address Source Address VÝ dô: M· nguån M· m¸y Chó thÝch MOV [7],[8] 5F 07 08 Gi¸ trÞ trong bé nhí t¹i ®Þa chØ 8 ®−îc di chuyÓn vµo bé nhí t¹i ®Þa chØ 7. 1.4.9. ChÕ ®é ®Þa chØ sö dông con trá tù ®éng t¨ng ®Þa chØ • Con trá lµ to¸n h¹ng nguån (Source Indirect Post Increment) ChØ cã duy nhÊt mét lÖnh sö dông chÕ ®é ®Þa chØ nµy, ®Þa chØ nguån l−u gi÷ trong to¸n h¹ng 1 ho¹t ®éng nh− ®Þa chØ cña mét con trá. Trong suèt qu¸ tr×nh lÖnh thi hµnh th× gi¸ trÞ cña con trá sÏ quyÕt ®Þnh xem d÷ liÖu nµo trong RAM sÏ ®−îc ®äc. Sau khi ®äc xong d÷ liÖu th× gi¸ trÞ cña con trá ®−îc t¨ng lªn 1. B¶ng 4-18 : ChÕ ®é ®Þa chØ Source Indiect Post Increment Opcode Operand 1 Instruction Source Address Pointer VÝ dô: M· nguån M· m¸y Chó thÝch MVI A,[8] 3E 08 Gi¸ trÞ trong bé nhí t¹i ®Þa chØ 8 trá tíi mét « nhí trong RAM. Gi¸ trÞ t¹i « nhí con trá trá tíi sÏ ®−îc di chuyÓn vµo thanh chøa. Sau ®ã, gi¸ trÞ trong bé nhí t¹i ®Þa chØ 8 ®−îc t¨ng lªn. • Con trá lµ to¸n h¹ng ®Ých (Destination Indirect Post Increment) 57
  10. Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN ChØ cã duy nhÊt mét lÖnh sö dông chÕ ®é ®Þa chØ nµy, ®Þa chØ ®Ých l−u gi÷ trong to¸n h¹ng 1 ho¹t ®éng nh− ®Þa chØ cña mét con trá. Trong suèt qu¸ tr×nh lÖnh thi hµnh th× gi¸ trÞ cña con trá sÏ quyÕt ®Þnh xem d÷ liÖu nµo trong RAM sÏ ®−îc ®äc. Sau khi ®äc xong d÷ liÖu th× gi¸ trÞ cña con trá ®−îc t¨ng lªn 1. B¶ng 4-19: ChÕ ®é Destination Indirect Post Increment Opcode Operand 1 Instruction Destination Address Pointer VÝ dô: M· nguån M· m¸y Chó thÝch MVI [8],A 3F 08 Gi¸ trÞ trong bé nhí t¹i ®Þa chØ 8 trá tíi mét « nhí trong RAM. Gi¸ trÞ trong thanh chøa sÏ ®−îc di chuyÓn tíi vÞ trÝ « nhí mµ con trá trá tíi. Sau ®ã, gi¸ trÞ trong bé nhí t¹i ®Þa chØ 8 ®−îc t¨ng lªn. NhËn xÐt: Nh− vËy ta thÊy c¸c chÕ ®é ®Þa chØ trong PSoC còng t−¬ng ®èi dÔ hiÓu, tãm l¹i nã chØ bao gåm: - C¸c d÷ liÖu tøc thêi lµ c¸c con sè: VÝ dô: 5 , 6 , 7 , 8 … - C¸c d÷ liÖu trùc tiÕp ®−îc x¸c ®Þnh th«ng qua c¸c ®Þa chØ. VÝ dô: [7] , [8] … - C¸c d÷ liÖu ®−îc x¸c ®Þnh th«ng qua chØ sè, nã lµ d÷ liÖu ë ®Þa chØ [X+chØ sè)]: vÝ dô: [X+5], [X+6], …. - C¸c d÷ liÖu ®−îc x¸c ®Þnh gi¸n tiÕp th«ng qua con trá nh− trong hai chÕ ®é ®Þa chØ cuèi. §©y còng lµ hai chÕ ®é ®Þa chØ mµ Ýt lo¹i Vi xö lý cã ®−îc. - Ta cã thÓ nhËn thÊy r»ng nh÷ng lÖnh lÊy thanh ghi A hoÆc X nh− lµ mét phÇn cña to¸n h¹ng ®Òu lµ lÖnh 2 byte (xem l¹i c¸c vÝ dô trªn). Së dÜ nh− vËy lµ v× trong m· lÖnh ®· ®−îc ®Þnh nghÜa s½n lµ lµm viÖc víi thanh ghi nµo. Ch¼ng h¹n nh− trong vÝ dô cña môc 2.4.1 th× ta cã thÓ thÊy lµ m· m¸y gåm 2 byte, byte ®Çu tiªn lµ m· lÖnh cña lÖnh céng vµo thanh chøa, byte thø hai lµ gi¸ trÞ ®−îc céng vµo thanh chøa. Nh− vËy, víi c¸ch ®Þnh nghÜa trªn th× nh÷ng lÖnh nh− vËy sÏ tiÕt kiÖm ®−îc chu kú ho¹t ®éng cña chip, tõ ®ã rót ng¾n ®−îc thêi gian thùc hiÖn lÖnh. ViÖc m· hãa nh− vËy cho phÐp ph¸t huy tèc ®é tÝnh to¸n cña chÝp trong nh÷ng øng dông ®ßi hái tèc ®é tÝnh to¸n cao. - Ngoµi ra cßn ph¶i ph©n biÖt gi÷a c¸ch truy xuÊt bé nhí RAM vµ bé nhí kh«ng gian thanh ghi. C¸ch truy xuÊt hai bé nhí nµy ®−îc ph©n biÖt th«ng qua lÖnh. VÝ dô: [7] lµ d÷ liÖu t¹i ®Þa chØ 7 trong RAM, nh−ng REG[7] l¹i lµ d÷ liÖu t¹i ®Þa chØ 7 trong kh«ng gian thanh ghi. 58
  11. Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN 2. Ng¾t vµ Bé ®iÒu khiÓn ng¾t B¶ng 4-20: C¸c thanh ghi cña bé ®iÒu khiÓn ng¾t Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Access INT_CLR0 VC3 Sleep GPIO Analog 3 Analog 2 Analog 1 Analog 0 V Monitor RW:00 0,DAh INT_CLR1 DCB13 DCB12 DBB11 DBB10 DCB03 DCB02 DBB01 DBB00 RW:00 0,DBh INT_CLR3 I2C RW:00 0,DDh INT_MSK3 ENSWINT I2C RW:00 0,DEh INT_MSK0 VC3 Sleep GPIO Analog 3 Analog 2 Analog 1 Analog 0 V Monitor RW:00 0,E0h INT_MSK1 DCB13 DCB12 DBB11 DBB10 DCB03 DCB02 DBB01 DBB00 RW:00 0,E1h INT_VC Pending Interrupt [7:0] RC:00 0,E2h CPU_F XOI Carry Zero GIE RL:00 x,F7h Chó ý: L: Nh÷ng lÖnh ¶nh h−ëng ®Õn cê nh− AND, OR vµ XOR cã thÓ ®−îc dïng ®Ó thay ®æi thanh ghi nµy x: ch÷ ‘x’ n»m tr−íc dÊu phÈy trong tr−êng ®Þa chØ chØ râ r»ng thanh ghi nµy cã thÓ ®−îc truy nhËp mµ kh«ng cÇn biÕt lµ d·y thanh ghi nµo ®ang ®−îc sö dông. Bé ®iÒu khiÓn ng¾t cho phÐp mét ®o¹n m· cña ng−êi lËp tr×nh ®−îc thùc hiÖn mçi khi cã mét ng¾t sinh ra tõ c¸c khèi chøc n¨ng trong chip PSoC. Mçi mét khèi sè cã mét ng¾t riªng vµ mçi mét cét khèi t−¬ng tù còng cã mét ng¾t riªng. Mçi mét ng¾t cho nguån cÊp, chÕ ®é ngñ, xung nhÞp thay ®æi, vµ mét ng¾t toµn côc cho c¸c ch©n vµo ra ®a chøc n¨ng. Bé ®iÒu khiÓn ng¾t cïng víi nh÷ng thanh ghi cña nã cho phÐp c¸c ng¾t cã thÓ bÞ v« hiÖu hãa ®ång thêi hoÆc ®éc lËp víi nhau. C¸c thanh ghi cung cÊp mét c¸ch thøc ®Ó ng−êi sö dông cã thÓ xãa tÊt c¶ nh÷ng ng¾t ®ang chê vµ th«ng b¸o ng¾t, hoÆc cã thÓ xãa mét c¸ch ®éc lËp hay riªng biÖt th«ng b¸o ng¾t vµ ng¾t chê. Mét kü thuËt phÇn mÒm ®−îc cung cÊp ®Ó cho phÐp ng−êi lËp tr×nh thiÕt lËp ng¾t mét c¸ch riªng biÖt. ThiÕt lËp mét ng¾t b»ng kü thuËt nµy rÊt m¹nh mÏ vµ h÷u Ých cho viÖc ph¸t triÓn m· nguån, khi mµ nã kh«ng cã ®ñ hÖ thèng phÇn cøng hoµn chØnh ®Ó sinh ra mét ng¾t thùc. B¶ng 4-21 : B¶ng vector ng¾t cña CY8C27xxx Møc −u tiªn ng¾t §Þa chØ ng¾t Tªn ng¾t 0 (cao nhÊt) 0000h Reset 1 0004h Supply Voltage Monitor 2 0008h Analog Column 0 3 000Ch Analog Column 1 4 0010h Analog Column 2 5 0014h Analog Column 3 6 0018h VC3 7 001Ch GPIO 8 0020h PSOC Block DBB00 9 0024h PSOC Block DBB01 10 0028h PSOC Block DCB02 11 002Ch PSOC Block DCB03 12 0030h PSOC Block DBB10 13 0034h PSOC Block DBB11 14 0038h PSOC Block DCB12 15 003Ch PSOC Block DCB13 24 0060h I2C 25 (thÊp nhÊt) 0064h Sleep Timer 2.1. M« t¶ cÊu tróc cña bé ®iÒu khiÓn ng¾t 59
  12. Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN Interrupt Source: Nguån ng¾t (bé ®Þnh thêi, c¸c ch©n vµo ra ®a chøc n¨ng... ) Interrupt Taken or INT_CLRx Write: Thi hµnh ng¾t hoÆc xãa ng¾t INT_MSKx: LËp mÆt n¹ che ng¾t Post Interrupt: Th«ng b¸o ng¾t Pending Interrupt: Ng¾t chê Priority Encoder: Bé m· hãa møc −u tiªn cña ng¾t GIE (CPU_F[0]): Cho phÐp ng¾t toµn côc (Global Interrupt Enable) Interupt Request: Yªu cÇu ng¾t H×nh 4-2: S¬ ®å khèi cña bé ®iÒu khiÓn ng¾t D·y c¸c sù kiÖn x¶y ra khi mét ng¾t ®−îc thi hµnh nh− sau: 1. Khi mét ng¾t ®−îc kÝch ho¹t, cã thÓ lµ do mét ®iÒu kiÖn ng¾t ®−îc sinh ra (do trµn bé ®Õm ch¼ng h¹n) vµ tr−íc ®ã th«ng b¸o ng¾t ®−îc cho phÐp bëi thanh ghi mÆt n¹ che ng¾t, hoÆc cã mét ng¾t ®ang chê ®−îc xö lý vµ GIE (global interrupt enable - cho phÐp ng¾t toµn côc) ®−îc ®Æt tõ 0 sang 1 trong thanh ghi cê cña CPU. 2. LÖnh thi hµnh hiÖn thêi kÕt thóc ë biªn giíi lÖnh (biªn giíi lÖnh lµ thêi ®iÓm CPU chuyÓn tõ lÖnh nµy sang lÖnh kh¸c). 3. Thñ tôc ng¾t bªn trong ®−îc thùc hiÖn, tiªu tèn 13 chu kú m¸y. Trong kho¶ng thêi gian nµy th× CPU thùc hiÖn nh÷ng c«ng viÖc sau: - L−u byte cao, byte thÊp cña bé ®Õm ch−¬ng tr×nh (PCH vµ PCL) vµ thanh ghi cê (CPU_F) vµo trong Stack theo thø tù nh− trªn. - Thanh ghi cê ®−îc xãa tr¾ng vµ tõ ®ã bit GIE bÞ xãa vÒ 0 vµ nh÷ng ng¾t míi sinh ra t¹m thêi bÞ cÊm. - Byte cao cña bé ®Õm ch−¬ng tr×nh (PC[15:8]) ®−îc xãa vÒ 0 (zero) - Vector ng¾t ®−îc ®äc tõ bé ®iÒu khiÓn vector ng¾t vµ gi¸ trÞ cña nã ®−îc ®Æt vµo trong byte thÊp cña bé ®Õm ch−¬ng tr×nh (PC[7:0]). ViÖc nµy sÏ ®Æt bé ®Õm ch−¬ng tr×nh trá vµo ®Þa chØ thÝch hîp trong b¶ng vector ng¾t. 4. Ch−¬ng tr×nh sÏ thi hµnh vector trong b¶ng vector ng¾t. Nh×n chung th× mét lÖnh LJMP trong b¶ng vector ng¾t sÏ chuyÓn sù thi hµnh cña CPU tíi tr×nh phôc vô ng¾t cña ng−êi dïng ®Ó phôc vô cho ng¾t nµy. 60
  13. Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN 5. Tr×nh phôc vô ng¾t ®−îc thi hµnh. L−u ý r»ng tÊt c¶ c¸c ng¾t ®Òu bÞ v« hiÖu hãa kÓ tõ khi bit GIE = 0. C¸c ng¾t kh¸c cã thÓ ®−îc më l¹i trong tr×nh phôc vô ng¾t nÕu cÇn thiÕt b»ng c¸ch ®Æt bit GIE = 1 (h·y cÈn thËn trong viÖc nµy bëi v× nã cã thÓ lµm trµn Stack) 6. Khi tr×nh phôc vô ng¾t kÕt thóc víi lÖnh RETI th× thanh ghi cê (CPU_F), byte thÊp vµ byte cao cña bé ®Õm ch−¬ng tr×nh ®−îc lÊy ra khái Stack theo ®óng tr×nh tù nh− trªn. Tõ khi thanh ghi cê (CPU_F) ®−îc kh«i phôc l¹i gi¸ trÞ th× nã sÏ cho phÐp c¸c ng¾t. (GIE =1). 7. Ch−¬ng tr×nh sÏ b¾t ®Çu thi hµnh ë lÖnh kÕ tiÕp, ngay sau lÖnh ®−îc thùc hiÖn tr−íc khi x¶y ra ng¾t. Tuy nhiªn, nÕu nh− cã ng¾t ®ang chê ®−îc phôc vô th× nã sÏ ®−îc thùc hiÖn tr−íc. 2.2. C¸c thanh ghi ng¾t B¶ng 4-20 ®· cho ta mét c¸i nh×n tæng quan vÒ mèi quan hÖ cña c¸c thanh ghi ®èi víi ho¹t ®éng cña bé ®iÒu khiÓn vector ng¾t. Chi tiÕt vÒ sö dông c¸c thanh ghi ®−îc tr×nh bµy sau ®©y. 2.2.1. Thanh ghi INT_CLRx Cã 3 thanh ghi xãa ng¾t (INT_CLR0, INT_CLR1 vµ INT_CLR3) cã thÓ ®−îc quy vµo tªn gäi chung INT_CLRx. Nh÷ng thanh ghi INT_CLRx lµ t−¬ng tù nh− nh÷ng thanh ghi INT_MSKx nghÜa lµ chóng gi÷ mét bit cho mçi nguån ng¾t. Tuy nhiªn, vÒ mÆt chøc n¨ng th× thanh ghi INT_CLRx l¹i gièng nh− thanh ghi INT_VC mÆc dï ho¹t ®éng cña chóng hoµn toµn ®éc lËp víi nhau. Khi mét thanh ghi INT_CLRx ®−îc ®äc th× bÊt kú bit nµo ®−îc ®Æt ®Òu chØ râ lµ ng¾t nµo ®· th«ng b¸o cho tµi nguyªn phÇn cøng ®ã. Bëi vËy, ®äc nh÷ng thanh ghi ®ã sÏ gióp cho ng−êi sö dông x¸c ®Þnh ®−îc tÊt c¶ c¸c th«ng b¸o ng¾t. C¸ch mét gi¸ trÞ bit riªng rÏ ®−îc ghi vµo thanh ghi INT_CLRx ®−îc quyÕt ®Þnh bëi bit ENSWINT (Enable Software Interrupt) trong thanh ghi INT_MSK3. Khi bit ENSWINT ®−îc xãa (tr¹ng th¸i mÆc ®Þnh), viÖc viÕt 1 vµo mét bit nµo ®ã trong thanh ghi INT_CLRx ®Òu kh«ng cã t¸c dông g×. Tuy nhiªn, viÖc viÕt 0 vµo mét bit nµo ®ã trong thanh ghi INT_CLRx trong khi bit ENSWINT = 0 sÏ xãa th«ng b¸o ng¾t t−¬ng øng. NÕu bit ENSWINT = 1 th× viÖc viÕt 0 vµo bÊt cø bit nµo trong thanh ghi INT_CLRx sÏ bÞ bá qua. Tuy nhiªn, viÖc viÕt 1 vµo mét bit nµo ®ã trong thanh ghi INT_CLRx trong khi bit ENSWINT = 1 sÏ lµm cho mét ng¾t t−¬ng øng ®−îc th«ng b¸o. ViÖc më ng¾t mÒm sÏ cho phÐp m· cña ng−êi sö dông t¹o ra mét ng¾t mÒm vµ cã thÓ h÷u Ých cho viÖc gì rèi trong tr×nh phôc vô ng¾t, hay lo¹i trõ ¶nh h−ëng cña viÖc sinh ra ng¾t míi trong khi ng¾t cò vÉn ®ang ®−îc thùc thi. 2.2.2. Thanh ghi INT_MSKx Cã 3 thanh ghi mÆt n¹ che ng¾t (INT_MSK0, INT_MSK1, INT_MSK3) cã thÓ ®−îc quy vµo thanh ghi cã tªn gäi chung INT_MSKx. NÕu ®−îc xãa th× mçi bit trong thanh ghi INT_MSKx sÏ ng¨n chÆn mét ng¾t t−¬ng øng víi bit ®ã trë thµnh mét ng¾t chê ®−îc xö lý (®Çu vµo cña bé m· hãa −u tiªn). Tuy nhiªn mét ng¾t vÉn cã thÓ ®−îc th«ng b¸o ngay c¶ khi bit mÆt n¹ cña nã lµ 0. NghÜa lµ tÊt c¶ c¸c bit trong thanh ghi INT_CLRx ®Òu ®éc lËp víi c¸c bit trong thanh ghi INT_MSKx. NÕu mét bit trong thanh ghi INT_MSKx ®−îc set = 1 th× nguån ng¾t kÕt hîp víi bit mÆt n¹ cña nã sÏ sinh ra mét ng¾t ®Ó trë thµnh ng¾t chê. VÝ dô: nÕu bit INT_MSK0[5] ®−îc set vµ cã mét ch©n vµo ra ®a chøc n¨ng ®−îc cÊu h×nh ®Ó sinh ra mét ng¾t th× bé ®iÒu khiÓn ng¾t sÏ cho phÐp mét ng¾t cña GPIO yªu cÇu th«ng b¸o vµ trë thµnh mét ng¾t chê ph¶n håi 61
  14. Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN cña CPU. NÕu mét ng¾t cã møc −u tiªn cao h¬n ®−îc sinh ra tr−íc sù ph¶n håi cña CPU tíi ng¾t GPIO th× ng¾t cã yªu cÇu cao h¬n sÏ lµ ng¾t chê chø kh«ng ph¶i lµ ng¾t GPIO. INT_MSK3[7] (ENSWINT) lµ mét bit kh«ng cã mÆt n¹ ®Æc biÖt ®Ó ®iÒu khiÓn ho¹t ®éng cña thanh ghi INT_CLRx. (Xem thªm phÇn d−íi ®Ó biÕt thªm chi tiÕt). 2.2.3. Thanh chi INT_VC Thanh ghi INT_VC thùc hiÖn 2 nhiÖm vô. Khi thanh ghi ®−îc ®äc th× nã sÏ tr¶ vÒ gi¸ trÞ cña ng¾t chê cã møc −u tiªn cao nhÊt. VÝ dô: NÕu ng¾t GPIO vµ ng¾t I2C ®ang ë tr¹ng th¸i chê vµ thanh ghi INT_VC ®−îc ®äc th× nã sÏ ®äc ra gi¸ trÞ 1Ch (lµ gi¸ trÞ cña ng¾t GPIO). Tuy nhiªn, nÕu kh«ng cã ng¾t nµo ®ang ë tr¹ng th¸i chê th× viÖc ®äc thanh ghi INT_VC sÏ tr¶ vÒ gi¸ trÞ 00h. §©y lµ gi¸ trÞ cña vector reset trong b¶ng vector ng¾t. Tuy nhiªn lµ viÖc ®äc ®−îc gi¸ trÞ 00h tõ thanh ghi INT_VC kh«ng cã nghÜa lµ vector ng¾t reset ®ang chê mµ ®iÒu ®ã chØ nãi lªn r»ng ch¼ng cã vector ng¾t nµo ®ang ë tr¹ng th¸i chê c¶. Thanh ghi cã møc −u tiªn cao nhÊt ®−îc chØ râ bëi gi¸ trÞ ®äc vÒ tõ thanh ghi INT_VC vµ nã ®−îc gì bá khái danh s¸ch c¸c ng¾t chê khi CPU thùc hiÖn lÖnh ®äc vector ng¾t. ViÖc xãa ng¾t chê cã møc −u tiªn cao nhÊt x¶y ra kh«ng ®ång bé. 2.2.4. Thanh ghi CPU_F ChØ cã bit GIE trong thanh ghi CPU_F lµ cã ¶nh h−ëng tíi bé ®iÒu khiÓn ng¾t, bit nµy lµ bit cho phÐp ng¾t toµn côc (Global Interrupt Enable). ChØ khi bit nµy ®−îc set th× CPU míi cã thÓ thùc hiÖn mét ng¾t chê. Khi bit nµy ®−îc xãa th× CPU sÏ kh«ng thùc hiÖn mét ng¾t chê nµo c¶ (CÇn l−u ý lµ mét ng¾t vÉn cã th«ng b¸o vµ nÕu bit mÆt n¹ cho phÐp thi nã vÉn trë thµnh ng¾t chê mÆc dï bit GIE = 0, nh−ng nã chØ cã thÓ ®−îc thùc hiÖn khi bit GIE =1). Bit GIE cã gi¸ trÞ mÆc ®Þnh = 0. §Ó cã thÓ ®Æt hoÆc xãa bit GIE th× ta sö dông c¸c lÖnh logic nh− AND,OR,XOR thanh ghi F víi gi¸ trÞ thÝch hîp. TÊt nhiªn, ph−¬ng ph¸p sö dông ë ®©y lµ ph−¬ng ph¸p lËp mÆt n¹. VÝ dô: khi ta muèn xãa bit GIE th× ta sö dông lÖnh AND F,0FEh cßn khi muèn ®Æt bit GIE =1 th× ta sö dông lÖnh OR F,01h. 62
  15. Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN 3. C¸c cæng vµo ra ®a chøc n¨ng Cæng vµo ra ®a chøc n¨ng cung cÊp cho CPU mét giao diÖn víi bªn ngoµi. Chóng ®ßi hái mét sè l−îng lín thanh ghi cÊu h×nh ®Ó hç trî cho nhiÒu chÕ ho¹t ®éng vµo / ra bao gåm c¶ sè vµ t−¬ng tù. B¶ng 4-22: C¸c thanh ghi vµo ra ®a chøc n¨ng Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Access 0,xxh PRTxDR Data Register (Thanh ghi d÷ liÖu) RW:00 0,xxh PRTxIE Bit Interrupt Enable (Bit cho phÐp ng¾t) RW:00 0,xxh PRTxGS Global Select (Lùa chän toµn côc) RW:00 0,xxh PRTxDM2 Driver Mode 2 (Thanh ghi chÕ ®é ho¹t ®éng 2) RW:FF 1,xxh PRTxDM0 Driver Mode 0 (Thanh ghi chÕ ®é ho¹t ®éng 0) RW:00 1,xxh PRTxDM1 Driver Mode 1 (Thanh ghi chÕ ®é ho¹t ®éng 1) RW:FF 1,xxh PRTxIC0 Interrupt Control 0 (Thanh ghi ®iÒu khiÓn ng¾t 0) RW:00 1,xxh PRTxIC1 Interrupt Control 1 (Thanh ghi ®iÒu khiÓn ng¾t 1) RW:00 Chó ý: kÝ tù “x” sau dÊu phÈy trong tr−êng ®Þa chØ cã nghÜa lµ c¸c cæng vµo ra ®Òu cã riªng biÖt c¸c thanh ghi trªn. Mçi mét cæng th× c¸c thanh ghi sÏ cã mét ®Þa chØ riªng. Nh−ng ®Ó dÔ hiÓu th× ta chØ xÐt chung cho tr−êng hîp tæng qu¸t. C¸c cæng vµo ra ®a chøc n¨ng ®Òu cã ®é réng lµ 8 bit/ 1 cæng. Mçi mét cæng vµo/ra bao gåm 8 khèi GPIO gièng hÖt nhau. Mçi mét khèi GPIO ®Òu ®−îc kÕt nèi víi bit cã sè thø tù t−¬ng øng trong ®Þa chØ vµ thanh ghi. Bëi vËy, nh÷ng thanh ghi trong b¶ng 4-22 thùc sù chØ dµnh cho mét cæng (bao gåm 8 khèi GPIO). Trong ®ã th× vÞ trÝ cña bit sÏ chØ râ lµ khèi GPIO nµo trong 8 khèi ®−îc ®iÒu khiÓn víi cæng vµo ra. Mçi mét khèi GPIO cã thÓ ®−îc sö dông cho nh÷ng kiÓu vµo ra sau: - Vµo ra sè (Vµo ra sè ®iÒu khiÓn bëi phÇn mÒm) - Vµo ra toµn côc (Vµo ra cho c¸c khèi PSoC sè) - Vµo ra t−¬ng tù (Vµo ra cho c¸c khèi PSoC t−¬ng tù) Mçi mét ch©n vµo ra ®Òu cã vµi chÕ ®é ho¹t ®éng còng nh− lµ kh¶ n¨ng t¹o ng¾t. Trong khi tÊt c¶ c¸c ch©n ®Òu ®−îc nèi ®−êng vµo ra sè th× mét vµi ch©n l¹i kh«ng ®−îc kÕt nèi víi chøc n¨ng vµo ra cña khèi t−¬ng tù hoÆc bus toµn côc. • Vµo ra sè Mét trong nh÷ng chøc n¨ng ho¹t ®éng c¬ b¶n cña cæng vµo ra ®a chøc n¨ng lµ cho phÐp CPU göi th«ng tin ra ngoµi chip vµ lÊy th«ng tin tõ bªn ngoµi vµo. §iÒu nµy ®−îc thùc hiÖn nhê thanh ghi d÷ liÖu cæng (Port Data Register – PRTxDR). ViÖc viÕt d÷ liÖu vµo thanh ghi PRTxDR sÏ l−u l¹i tr¹ng th¸i d÷ liÖu, mçi bit cho mét ch©n GPIO. Trong chÕ ®é th−êng (standard non-bypass) th× mçi ch©n GPIO sÏ lÆp l¹i bit d÷ liÖu ®ã. NghÜa lµ khi ta viÕt mét gi¸ trÞ vµo trong thanh ghi d÷ liÖu PRTxDR th× ë ®Çu ra cña cæng t−¬ng øng sÏ cã gi¸ trÞ gièng nh− trong thanh ghi d÷ liÖu. §iÖn ¸p thùc ë ch©n ra phô thuéc vµo chÕ ®é ho¹t ®éng cña ch©n vµ t¶i bªn ngoµi ®−îc nèi vµo ch©n ®ã. (Xem cÊu tróc cña 1 ch©n vµo ra ®Ó hiÓu râ thªm) CPU cã thÓ ®äc gi¸ trÞ cña mét cæng b»ng c¸ch ®äc gi¸ trÞ cña thanh ghi PRTxDR. Khi CPU ®äc gi¸ trÞ cña PRTxDR th× gi¸ trÞ ®iÖn ¸p hiÖn thêi cña ch©n vµo ra sÏ ®−îc chuyÓn ®æi sang gi¸ trÞ logic vµ ®−îc tr¶ vÒ cho CPU. Ho¹t ®éng nµy sÏ ®äc gi¸ trÞ ®iÖn ¸p cña ch©n vµo ra chø kh«ng ph¶i lµ ®äc vÒ gi¸ trÞ chèt cña thanh ghi PRTxDR. 63
  16. Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN • Vµo ra toµn côc (Global IO) C¸c cæng vµo ra ®a chøc n¨ng còng ®−îc nèi liÒn víi c¸c khèi sè th«ng qua c¸c vµo ra toµn côc. TÝnh n¨ng vµo ra toµn côc cña mçi cæng ®−îc mÆc ®Þnh ë tr¹ng th¸i t¾t. §Ó sö dông tÝnh n¨ng nµy th× cã 2 th«ng sè cÇn ph¶i ®−îc thay ®æi. Thø nhÊt ®Ó cÊu h×nh cho mét ch©n GPIO ho¹t ®éng nh− lµ mét ®Çu vµo toµn côc th× bit lùa chän cæng toµn côc cÇn ph¶i ®−îc set ®Ó yªu cÇu GPIO sö dông thanh ghi PRTxGS. Thø hai lµ chÕ ®é ho¹t ®éng cña GPIO cÇn ph¶i ®−îc ®−a vÒ tr¹ng th¸i cao trë. §Ó cÊu h×nh cho mét ch©n GPIO ho¹t ®éng nh− lµ mét ®Çu ra toµn côc th× bit lùa chän cæng toµn côc cÇn ph¶i ®−îc set lÇn n÷a. Nh−ng trong tr−êng hîp nµy th× chÕ ®é ho¹t ®éng cña GPIO lµ bÊt k× trõ chÕ ®é cao trë. • Vµo ra t−¬ng tù TÝn hiÖu t−¬ng tù cã thÓ ®−îc truyÒn dÉn gi÷a CPU vµ ch©n cña chÝp th«ng qua ch©n AOUT cña khèi. Ch©n nµy ®−îc nèi víi khèi th«ng qua mét ®iÖn trë (kho¶ng 300 ohms). Ch©n vµo ra ®a chøc n¨ng cÇn ph¶i ®−a vÒ chÕ ®é cao trë trong tr−êng hîp nµy. • C¸c ng¾t cña khèi GPIO. Mçi mét khèi GPIO ®Òu cã thÓ ®−îc cÊu h×nh mét c¸ch ®éc lËp cho kh¶ n¨ng ng¾t. C¸c khèi GPIO ®−îc cÊu h×nh cho phÐp lùa chän ng¾t cho tõng ch©n vµ còng cã thÓ lùa chän kiÓu ng¾t phï hîp. NghÜa lµ c¸c khèi cã thÓ sinh ra ng¾t khi ch©n ë møc logic cao, thÊp hoÆc khi nã thay ®æi so víi lÇn ®äc tr−íc. C¸c khèi ®Òu cã mét ®Çu ra ng¾t riªng (INTO), nã ®−îc nèi víi c¸c khèi GPIO kh¸c b»ng mét kiÓu nèi d©y lo¹i OR. Do tÊt c¶ c¸c ch©n ®Òu ®−îc nèi víi nhau theo kiÓu OR ®Ó sö dông chung mét hÖ thèng ng¾t GPIO. Nªn nÕu mét ng¾t GPIO ®−îc chia sÎ cho nhiÒu ch©n vµo ra th× tr×nh phôc vô ng¾t cña ng−êi sö dông cÇn ph¶i sö dông vµi kü thuËt ®−îc thiÕt kÕ s½n ®Ó quyÕt ®Þnh xem lµ ch©n nµo ®−îc chän lµ nguån sinh ng¾t. Sö dông mét ng¾t GPIO yªu cÇu nh÷ng b−íc sau: 1. §Æt chÕ ®é ng¾t cho khèi ch©n GPIO. 2. Më bit ng¾t cho khèi ch©n GPIO. 3. Më bit mÆt n¹ ng¾t cho ng¾t GPIO. 4. X¸c nhËn bit ng¾t toµn côc GIE. ë ph¹m vi khèi GPIO, x¸c nhËn ®−êng ra ng¾t phô thuéc duy nhÊt vµo bit cho phÐp ng¾t vµ tr¹ng th¸i cña ch©n quan hÖ víi sù lùa chän chÕ ®é ng¾t. ë cÊp ®é chip, do tr¹ng th¸i tù nhiªn cña cæng nèi d©y OR, ng¾t GPIO kh«ng ph¶i lµ ng¾t nh¹y theo s−ên hay ng¾t nh¹y theo møc. Chóng cã thÓ ®−îc lùa chän lµ nh¹y theo s−ên nh−ng nh¹y theo møc ph¶i ®−îc th¸o bá khái ®−êng ra ng¾t cña cæng nèi d©y OR. NÕu kh«ng cã ng¾t GPIO nµo ®ang x¸c nhËn, th× mét ng¾t GPIO sÏ ®−îc sinh ra bÊt cø khi nµo bit cho phÐp ng¾t cña mét ch©n GPIO ®−îc set vµ ch©n GPIO chuyÓn sang cao hoÆc thÊp mét c¸ch thÝch hîp. Mét khi ®iÒu nµy x¶y ra, ®−êng ra cña ng¾t INTO sÏ ®−îc kÐo xuèng thÊp ®Ó x¸c nhËn ng¾t GPIO (Gi¶ ®Þnh r»ng c¸c ®iÒu kiÖn sinh ng¾t cña hÖ thèng lµ cho phÐp, nh− lµ cho phÐp ng¾t GPIO toµn côc vµ cho phÐp ng¾t toµn côc). L−u ý r»ng cho phÐp ng¾t ë ch©n cã thÓ x¸c nhËn ®Çu ra ng¾t INTO ngay lËp tøc, nÕu nh− ®iÒu kiÖn chÕ ®é ng¾t ®· s½n sµng xuÊt hiÖn ë ch©n. Mét khi INTO ®−îc kÐo xuèng møc thÊp, nã sÏ tiÕp tôc gi÷ INTO ë møc thÊp cho ®Õn khi mét trong c¸c ®iÒu kiÖn sau ®©y thay ®æi: 64
  17. Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN - Bit cho phÐp ng¾t ë ch©n ®−îc xãa - §iÖn ¸p ë ch©n chuyÓn ®æi sang tr¹ng th¸i ®èi lËp - Trong chÕ ®é thay ®æi ng¾t, thanh ghi d÷ liÖu ®−îc ®äc, do ®ã thiÕt lËp møc ®é ng¾t néi t¹i sang tr¹ng th¸i ®èi lËp. - ChÕ ®é ng¾t bÞ thay ®æi do ®ã tr¹ng th¸i hiÖn thêi cña ch©n kh«ng sinh ra ng¾t. Khi mét trong c¸c ®iÒu kiÖn trªn x¶y ra th× ®Çu ra INTO ®−îc gi¶i phãng. T¹i thêi ®iÓm nµy, c¸c ch©n kh¸c (hoÆc chÝnh ch©n nµy) cã thÓ x¸c nhËn ®Çu ra ng¾t cña nã, kÐo ®−êng chung xuèng thÊp ®Ó x¸c nhËn mét ng¾t míi. L−u ý r»ng nÕu mét ch©n ®ang x¸c nhËn ®−êng ra ng¾t INTO vµ khi ®ã mét ch©n kh¸c l¹i x¸c nhËn ®Çu ra ng¾t cña nã th× khi ch©n tr−íc gi¶i phãng ®−êng ra ng¾t cña nã mµ ch©n thø hai ®· ®iÒu khiÓn ®Çu ra ng¾t INTO cña nã th× sÏ kh«ng cã sù thay ®æi nµo ®−îc ph¸t hiÖn ra ë ®Çu ra ng¾t INTO. Tøc lµ sÏ kh«ng cã ng¾t míi nµo ®−îc x¸c nhËn trªn ng¾t GPIO. Chó ý, sö dông AND/OR tr¹ng th¸i cña ch©n GPIO vµ cña bit cho phÐp ng¾t toµn côc ®Ó n¾m b¾t ®−îc toµn bé c¸c ng¾t cña cæng nèi d©y OR trong khèi GPIO. 3.1. M« t¶ cÊu tróc cña mét ch©n vµo ra ®a chøc n¨ng S¬ ®å khèi chÝnh cña mét khèi GPIO ®−îc minh häa trong h×nh 4 -3. L−u ý r»ng mét vµi ch©n kh«ng cã ®ñ c¸c chøc n¨ng nh− h×nh vÏ, phô thuéc vµo kÕt nèi ë bªn trong. H×nh 4 – 3 : S¬ ®å mét khèi GPIO 65
  18. Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN H×nh 4 - 4: S¬ ®å khèi chÕ ®é ng¾t cña GPIO 3.2. C¸c thanh ghi cña GPIO §èi víi mét khèi GPIO ®· ®−îc lùa chän, nh÷ng thannh ghi ®éc lËp ®−îc ®Þnh ®Þa chØ nh− trong b¶ng 4 - 23. Trong phÇn tªn cña thanh ghi, ký hiÖu “x” lµ sè thø tù cña cæng. ®−îc cÊu h×nh theo cÊp ®é chÝp (x=0 tíi 7). DA[1:0] ®−îc quy vµo 2 träng sè nhá nhÊt cña ®Þa chØ thanh ghi. B¶ng 4-23: §Þa chØ bit cña thanh ghi bªn trong XOI DA[1:0] Register Reset to: (Name) Function 0 00b PRTxDR 0 DIN Data 0 01b PRTxIE 0 IE Interrupt Enable 0 10b PRTxGS 0 BYP Global Select 0 11b PRTxDM2 1 DM2 Driver Mode, Bit 2 1 00b PRTxDM0 0 DM0 Drive Mode, Bit 0 1 01b PRTxDM1 1 DM1 Driver Mode, Bit 1 1 10b PRTxIC0 0 IM0 Intrpt. Mask, Bit 0 1 11b PRTxIC1 0 IM1 Intrpt. Mask, Bit 1 3.2.1. Thanh ghi PRTxDR Ghi d÷ liÖu vµo 1 bit trong thanh ghi PRTxDR sÏ lµm cho tr¹ng th¸i ®Çu ra cña ch©n t−¬ng øng ë møc cao (DIN=1) hoÆc ë møc thÊp (DIN=0). Trõ khi chÕ ®é bypass ®−îc lùa chän (hoÆc I2C Enable =1 hay thanh ghi lùa chän toµn côc ®−îc viÕt ë møc cao). ViÖc ®äc gi¸ trÞ cña PRTxDR sÏ tr¶ vÒ gi¸ trÞ thùc tr¹ng th¸i cña ch©n, ®−îc quan s¸t bëi bé ®Öm ®Çu vµo. Gi¸ trÞ ®ã cã thÓ kh«ng gièng víi gi¸ trÞ mong muèn ë ®Çu ra nÕu nh− t¶i ®−îc nèi víi ch©n qu¸ lín. 3.2.2. Thanh ghi PRTxIE Thanh ghi PRTxIE ®−îc dïng ®Ó më vµ ®ãng viÖc cho phÐp ng¾t néi t¹i tíi mét khèi GPIO. Gi¸ trÞ 1 sÏ cho phÐp ng¾t ë ®Çu ra INTO vµ gi¸ trÞ 0 sÏ kh«ng cho phÐp ng¾t ë ®Çu ra INTO do ®ã nã cã thÓ ë tr¹ng th¸i cao trë. 3.2.3. Thanh ghi PRTxGS Thanh ghi PRTxGS ®−îc sö dông ®Ó lùa chän khèi cho sù kÕt nèi tíi ®Çu vµo hoÆc ®Çu ra toµn côc. ViÖc viÕt gi¸ trÞ logic cao vµo thanh ghi nµy sÏ cho phÐp global bypass. NÕu chÕ ®é cæng ra lµ cao trë th× ch©n ®ã ®−îc lùa chän cho ®Çu vµo toµn côc. 66
  19. Tµi liÖu vÒ PSoC – B¶n quyÒn thuéc NguyÔn Xu©n S¬n – §KT§1 – K44 – §HBKHN NÕu chÕ ®é cæng ra kh¸c chÕ ®é cao trë th× ch©n ®ã ®−îc lùa chän lµ ®Çu ra toµn côc, bá qua gi¸ trÞ cña thanh ghi d÷ liÖu. (gi¶ sö I2C enable = 0). NÕu thanh ghi ®−îc xãa vÒ kh«ng th× chøc n¨ng vµo ra toµn côc cña ch©n ®ã bÞ khãa 3.2.4. Thanh ghi PRTxDMx Cã 8 chÕ ®é ®iÒu khiÓn cho mçi mét ch©n cña cæng. Ba bit chÕ ®é ®−îc sö dông ®Ó lùa chän mét trong 8 chÕ ®é nãi trªn. Ba bit chÕ ®é ®−îc ph©n chia trong ba thanh ghi kh¸c nhau. (PRTxDM0, PRTxDM1,PRTxDM2). VÞ trÝ t−¬ng øng cña bit trong ba thanh ghi sÏ t−¬ng øng víi vÞ trÝ ch©n ra cña cæng. (VÝ dô ba bit ®iÒu khiÓn cho ch©n P2[1] sÏ lµ bit PRT2DM0[1], PRT2DM1[1], PRT2DM2[2]). Tuy r»ng ba bit nµy ®−îc ph©n chia trong ba thanh ghi kh¸c nhau nh−ng chóng l¹i hay ®−îc sö dông cïng nhau theo c¸c cÆp bit t−¬ng øng. VÝ dô ®Ó xÐt chÕ ®é cho ch©n ra P2[1] th× ta quan t©m ®Õn c¸c bit trong DM2,DM1,DM0 hay DM[2:0]. B¶ng 4-22 sÏ cho ta c¸i nh×n tæng quan vÒ sù ph©n chia nµy. B¶ng 4 - 24: C¸c chÕ ®é ®iÒu khiÓn ch©n ra cña chÝp ChÕ ®é DM[2:0] Tr¹ng th¸i cña ch©n M« t¶ 000b Resistive pull down Kháe ë møc cao, ®iÖn trë treo ë møc thÊp 001b Strong driver ChÕ ®é kháe ë c¶ møc cao vµ thÊp 010b High Impedance Trë kh¸ng cao c¶ ë møc cao vµ thÊp, cho phÐp ®Çu vµo sè 011b Resistive pull up Kháe ë møc thÊp, ®iÖn trë treo ë møc cao. 100b Open drain high ChËm, kháe ë møc cao, trë kh¸ng cao ë møc thÊp 101b Slow strong driver ChÕ ®é chËm, kháe ë møc thÊp vµ cao. 110b High Impedance, analog ChÕ ®é cao trë cho c¶ cao vµ thÊp, ®Çu vµo sè bÞ khãa, 111b Open drain low ChÕ ®é chËm, kháe ë møc thÊp, cao trë ë møc cao. §Ó lùa chän ®Çu vµo t−¬ng tù, chÕ ®é ®iÒu khiÓn cæng ra cÇn ph¶i ®−îc chän lµ mét trong c¸c chÕ ®é cao trë, cã thÓ lµ 010b hoÆc 110b. ChÕ ®é 110b cã mét −u ®iÓm lµ bé ®Öm ®Çu vµo khèi sè bÞ khãa, v× thÕ kh«ng cã dßng ®iÖn “crowbar” ch¹y qua ngay c¶ khi ®Çu vµo t−¬ng tù kh«ng gÇn víi ®−êng nguån. Khi ®Çu vµo sè ®−îc cÇn ®Õn trong nh÷ng ch©n ®−îc dïng nh− ®Çu vµo t−¬ng tù th× nªn sö dông chÕ 010b. Khi chÕ ®é 110b ®−îc sö dông th× ch©n sÏ lu«n ®−îc CPU ®äc nh− lµ mét gi¸ trÞ kh«ng vµ ch©n ®ã sÏ kh«ng thÓ sinh ra ®−îc mét ng¾t h÷u Ých. (Kh«ng hoµn toµn yªu cÇu mét chÕ ®é cao trë cÇn ph¶i ®−îc lùa chän khi ho¹t ®éng víi tÝn hiÖu t−¬ng tù). Víi ®Çu vµo toµn côc sö dông cïng víi vµo ra t−¬ng tù th× chÕ ®é ®iÒu khiÓn cÇn ph¶i ®−îc ®Æt lµ 010b. Khèi vµo ra ®a chøc n¨ng GPIO cung cÊp mét chÕ ®é cao trë mÆc ®Þnh. §iÒu nµy ®¹t ®−îc nhê vµo ¶nh h−ëng cña viÖc reset tr¹ng th¸i cña tÊt c¶ c¸c thanh ghi PRTxDM1 vµ PRTxDM2 vÒ FFh. ChÕ ®é ®iÒu khiÓn resistive ®Æt mét ®iÖn trë nèi tiÕp víi ®Çu ra ë bªn trong, cho ®Çu ra ë møc thÊp (chÕ ®é 000b) hoÆc ®Çu ra ë møc cao (chÕ ®é 011b). ChÕ ®é kháe (strong) 001b cung cÊp mét s−ên lªn nhanh nhÊt vµ chÕ ®é 101b còng cung cÊp mét s−ên xuèng nhanh nhÊt. ChÕ ®é open drain còng ®−îc dïng ®iÒu khiÓn tèc ®é s−ên xuèng. C¸c chÕ ®é ®ã cho phÐp chøc n¨ng cùc m¸ng ®Ó ngá nh− lµ chÕ ®é I2C 111b. (mÆc dï tèc ®é s−ên thÊp vÉn kh«ng ®ñ chËm ®Ó gÆp ®−îc chÕ ®é I2C nhanh ®−îc ®Þnh nghÜa). 3.2.5. Thanh ghi PRTxICx ChÕ ®é ng¾t cña tõng ch©n ®−îc quyÕt ®Þnh bëi c¸c bÝt trong hai thanh ghi PRTxIC0 vµ PRTxIC1. Chóng ®−îc quy vµo lµ IM0 vµ IM1 hay IM[1:0]. 67
  20. Tµi liÖu PSoC – biªn dÞch tõ Datasheet bëi NguyÔn Xu©n S¬n §KT§1 – K44 - §HBKHN Cã 4 chÕ ®é ng¾t cã thÓ cã cho ch©n cña cæng. Hai bit chÕ ®é ®−îc yªu cÇu ®Ó lùa chän c¸c chÕ ®é nãi trªn vµ tõng cÆp bit nµy ®−îc ph©n chia trong 2 thanh ghi kh¸c nhau (PRTxIC0 vµ PRTxIC1). VÞ trÝ cña bit lµ t−¬ng øng víi vÞ trÝ cña ch©n. VÝ dô ch©n 2 cña cæng 1 sÏ t−¬ng øng víi bit 2 trong c¶ hai thanh ghi PRT1IC0 vµ PRT1IC1. Tõng cÆp bit nµy ®−îc xem nh− lµ mét nhãm. B¶ng sau sÏ cho ta thÊy râ h¬n vÒ c¸c chÕ ®é ng¾t trong GPIO. B¶ng 4 - 25: ChÕ ®é ng¾t cña GPIO ChÕ ®é ng¾t IM[1:0] M« t¶ 00b V« hiÖu hãa ng¾t, kh«ng x¸c nhËn ®Çu ra INTO 01b X¸c nhËn ng¾t khi ch©n ë møc thÊp 10b X¸c nhËn ng¾t khi ch©n ë møc cao 11b X¸c nh¹n ng¾t khi cã sù thay ®æi tr¹ng th¸i logic cña ch©n ChÕ ®é 00b sÏ v« hiÖu hãa ng¾t cña ch©n, kÓ c¶ khi bit cho phÐp ng¾t GPIO lµ 1 (cña thanh ghi PRTxIE). ChÕ ®é 01b cã t¸c dông lµ khèi GPIO sÏ x¸c nhËn mét ®−êng ng¾t (INTO) khi ®iÖn ¸p cña ch©n ë møc thÊp. Bit cho phÐp ®−êng ng¾t cña khèi GPIO ®−îc ®Æt lªn møc cao. ChÕ ®é 10b cã t¸c dông lµ khèi GPIO sÏ x¸c nhËn mét ®−êng ng¾t (INTO) khi ®iÖn ¸p cña ch©n ë møc cao. Bit cho phÐp ®−êng ng¾t cña khèi GPIO ®−îc ®Æt lªn møc cao. ChÕ ®é 11b cã t¸c dông lµ khèi GPIO sÏ x¸c nhËn mét ®−êng ng¾t (INTO) khi ®iÖn ¸p cña ch©n ®èi lËp so víi gi¸ trÞ ®äc tr−íc ®ã. ChÕ ®é nµy thay ®æi theo hai chÕ ®é trªn, tïy thuéc vµo gi¸ trÞ mµ tr−íc ®ã nã ®äc ®−îc tõ cæng trong qu¸ tr×nh ®äc thanh ghi d÷ liÖu cæng (PRTxDR). NÕu tr−íc ®ã nã ®−îc gi¸ trÞ 0 tõ GPIO th× GPIO sÏ chuyÓn sang ng¾t ë møc cao. Cßn nÕu gi¸ trÞ nã ®äc ®−îc tr−íc ®ã lµ 1 th× GPIO sÏ chuyÓn sang ng¾t ë møc thÊp. Gi¸ trÞ tr−íc ®ã cña ch©n lµ 0 Gi¸ trÞ tr−íc ®ã cña ch©n lµ 1 GPIO pin interrupt enable set : cho phÐp ng¾t cña ch©n GPIO Interrupt occus : x¶y ra ng¾t Pin State Waveform : d¹ng xung ë ch©n H×nh 4 - 5: ChÕ ®é ng¾t 11b cña GPIO H×nh 4-5 gi¶ thiÕt r»ng bit cho phÐp ng¾t toµn côc GIE = 1, bit mÆt n¹ ng¾t ®· ®−îc ®Æt = 1, chÕ ®é ng¾t cña GPIO lµ 11b. Sù thay ®æi chÕ ®é ng¾t kh¸c víi c¸c chÕ ®é kh¸c, dùa vµo gi¸ trÞ mµ nã ®äc ®−îc tr−íc ®ã cña ch©n ®Ó quyÕt ®Þnh nÕu nh− tr¹ng th¸i cña ch©n thay ®æi. V× thÕ, cæng chøa ch©n GPIO quan t©m cÇn ph¶i ®−îc ®äc trong suèt qu¸ tr×nh phôc vô ng¾t. NÕu cæng kh«ng ®−îc ®äc th× chÕ ®é ng¾t sÏ chØ ho¹t ®éng ë chÕ ®é cao nÕu gi¸ trÞ tr−íc ®ã lµ 0 vµ ë chÕ ®é møc thÊp nÕu gi¸ trÞ tr−íc ®ã lµ 1. 68
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2