ãã€ã¯ãã³ã³ãããŒã©MAXQ610ã®ã·ãªã¢ã«ããŒãã®äœ¿çšæ³
ãã€ã¯ãã³ã³ãããŒã©MAXQ610ã®ã·ãªã¢ã«ããŒãã®äœ¿çšæ³
èŠçŽ
ãã€ã¯ãã³ã³ãããŒã©MAXQ610ã¯ã2ã€ã®æšæºçãªUSARTã·ãªã¢ã«ããŒããåããŠããŸããMAXQ610ã®ã·ãªã¢ã«ããŒãããµããŒãããŠããã¢ãŒãã®1ã€ã§ããéåæã¢ãŒã1ã䜿çšããŠãPCã®COMããŒãããã®ä»ã®æ§ã ãªçš®é¡ã®ã¬ã¬ã·ãŒæ©åšãšéä¿¡ãè¡ãããšãã§ããŸãããã®ã¢ããªã±ãŒã·ã§ã³ããŒãã§ã¯ãã·ãªã¢ã«ããŒãã®éåä¿¡åäœçšã«MAXQ610ãæäŸããå²èŸŒã¿åŠçãµããŒãã«ãã£ãŠãæ°ãããã£ã©ã¯ã¿ãåä¿¡ãããšããŸãã¯ãã£ã©ã¯ã¿ã®éä¿¡ãå®äºãããšãã«ã¢ããªã±ãŒã·ã§ã³ãè¿ éã«ã·ãªã¢ã«ããŒãã«å¿çããããšãã§ããããšã説æããŸãã
æŠèŠ
ãã€ã¯ãã³ã³ãããŒã©MAXQ610ã¯ãå€éšã®ããã€ã¹ãã·ã¹ãã ãšã®éä¿¡ãå¯èœã«ããããªãã§ã©ã«ãå èµããŠããŸãããããã®ããªãã§ã©ã«ã«ã¯ããã¹ã¿ãŒ/ã¹ã¬ãŒãã®ã·ãªã¢ã«ããªãã§ã©ã«ã€ã³ã¿ãã§ãŒã¹(SPIâ¢)ãèµ€å€ç·(IR)éä¿¡çšã®ãã£ãªã¢çæ/å€èª¿ã·ã¹ãã ãããã³äžè¬çã«ã·ãªã¢ã«ããŒããšããŠç¥ããã2ã€ã®ç¬ç«ããæ±çšåæ/éåæã¬ã·ãŒã/ãã©ã³ã¹ããã¿(USART)ãå«ãŸããŸãã
ãã®ã¢ããªã±ãŒã·ã§ã³ããŒãã§ã¯ãMAXQ610ã®ã·ãªã¢ã«ããŒãã10ãããéåæã¢ãŒãã§äœ¿çšããæ¹æ³ã瀺ããŸãããã®ã¢ãŒãã¯ãPCã®æšæºCOMããŒãã«å¯Ÿããéä¿¡ããã³/ãŸãã¯ãããã°åºåã®éä¿¡ã«åºã䜿çšãããŠããŸãããã®ã¢ãŒãã§ã¯ãéä¿¡ãã£ãã«åæ¹ã®å®éã®åäœåšæ³¢æ°ã«é¢ä¿ãªããå ±éã®ããããã©ãŒããããšããŒã¬ãŒããèšå®ãããŠããç¶æ ã§ã2ã€ã®ããã€ã¹ãŸãã¯ã·ã¹ãã éã§éä¿¡ãè¡ãããšãã§ããŸãã
ãã®ã¢ããªã±ãŒã·ã§ã³ããŒãã®ãã¢çšã³ãŒãã¯ãã¢ã»ã³ããªèšèªããŒã¹ã®MAX-IDEç°å¢ã䜿çšããŠãMAXQ610ããã³MAXQ610ã®EV (è©äŸ¡)ãããåãã«èšè¿°ãããŠããŸãããã®ã¢ããªã±ãŒã·ã§ã³ããŒãã§åãäžãããã¢ã¢ããªã±ãŒã·ã§ã³ã®ã³ãŒããšãããžã§ã¯ããã¡ã€ã«ãããŠã³ããŒãããããšãã§ããŸãã
ãã¢çšã³ãŒããå®è¡ããããã«ã¯ã以äžã®ããŒããŠã§ã¢ãšãœãããŠã§ã¢ãå¿ èŠã§ãã
- MAXQ610ã®EVãããã®ããŒã
- MAXQJTAGããŒã(ã·ãªã¢ã«-JTAGã€ã³ã¿ãã§ãŒã¹)
- JTAGããã°ã©ãã³ã°ã±ãŒãã«(2 à 5ãã¡ã¹/ã¡ã¹0.100ã€ã³ããããã10ã³ãã¯ã¿ãªãã³ã±ãŒãã«)
- DB9ãã¹ãã¬ãŒãããªã¹-ã¡ã¹ã·ãªã¢ã«ã±ãŒãã«
- ã»ã³ã¿ãŒãã©ã¹ã®5VDCå®å®å黿º
- 空ãCOM (ã·ãªã¢ã«)ããŒããŸãã¯USB-ã·ãªã¢ã«å€æã¢ããã¿ãåããPC
- MAX-IDEç°å¢
- ã¿ãŒããã«ãšãã¥ã¬ãŒã¿(ãã ã¿ãŒããã«ã¢ãŒãã§åäœããMTKããã€ããŒã¿ãŒããã«ãTeraTermãªã©)
MAX-IDEç°å¢ã®ææ°ã®ã€ã³ã¹ããŒã«ããã±ãŒãžãšããã¥ã¡ã³ãããç¡åã§ããŠã³ããŒãããããšãã§ããŸãã
- MAX-IDEã®ã€ã³ã¹ããŒã«ããã±ãŒãž
- MAXQ Core Assembly Guide (è±æã®ã¿)
- Development Tools Guide (è±æã®ã¿)
CèšèªããŒãžã§ã³ã®ãã¢çšã³ãŒããå®è¡ããããã«ã¯ãIAR Embedded Workbench®ãã€ã³ã¹ããŒã«ããå¿ èŠããããŸãããã®ãœãããŠã§ã¢ã®è©äŸ¡çšã³ããŒãMAXQ610ã®EVãããã®CDã«å«ãŸããŠããŸãã
MAXQ610ã®EVãããã®ã»ããã¢ãã
ãã®ã¢ããªã±ãŒã·ã§ã³ããŒãã§åãäžãããã¢çšã³ãŒãã¯ãMAXQ610ã®EVãããäžã§åäœããŸããããããã³ãŒããæ£ããåäœãããã³ãŒãäžã®æ©èœãæå¹åããããã«ã¯ãEVãããã®ããŒãäžã®ãžã£ã³ããæ£ããèšå®ããå¿ èŠããããŸãããããã®ããŒãäžã®ãžã£ã³ãèšå®ã¯ããã¢ãå®è¡ããããã®äž¡æ¹ã®ã¹ããã(ããªãã¡ãã³ãŒãã®ããŒããšã³ãŒãã®å®è¡)ã§åäžã®èšå®ã䜿çšããŸãã
MAXQ610ã®EVãããã®ãžã£ã³ãã®èšå®
- JH1ïŒãã³2-3éãæ¥ç¶ããŠãã ããã
- JH2ïŒãã³2-3éãæ¥ç¶ããŠãã ããã
- JH3ïŒãã³2-3éãæ¥ç¶ããŠãã ããã
- 以äžã®ãžã£ã³ããæ¥ç¶ããŠãã ãã(ãã³1-2é)ïŒJH14ãJH20ãJH22ãJH23ãJH24ãJH25ãããã³JH26ã
MAXQ610ã®EVãããã®ããŒããæ£ããèšå®ããåŸããã¢çšã³ãŒãã®ã³ã³ãã€ã«ãšããŒãã®ããã®ããŒããŠã§ã¢ã®ã»ããã¢ãããè¡ããŸãã
- ã·ãªã¢ã«-JTAGããŒãäžã®ãžã£ã³ãJH1ãJH2ãããã³JH3ãæ¥ç¶ããŠãã ããã
- 5VDC黿ºãã·ãªã¢ã«-JTAGããŒãäžã®ãã©ã°J2ã«æ¥ç¶ããŠãã ããã
- DB9ã±ãŒãã«ã§PCã®COM1ããŒããšã·ãªã¢ã«-JTAGããŒãã®J1ã³ãã¯ã¿ã®éãæ¥ç¶ããŠãã ããã
- JTAGããã°ã©ãã³ã°ã±ãŒãã«ã§ã·ãªã¢ã«-JTAGããŒãã®P2ãšMAXQ610ã®EVãããã®ããŒãã®P5ã®éãæ¥ç¶ããŠãã ãããJTAGã±ãŒãã«ã®èµ€ãç·ãäž¡æ¹ã®ã³ãã¯ã¿ã®ãã³1 (TCK)åŽã«æ¥ãããã«ããŠãã ããã
- 5VDC黿ºãžçµŠé»ããŠãã ããã
ã·ãªã¢ã«ããŒãã®ã¢ãŒããšåæå
MAXQ610ã®2ã€ã®USARTããªãã§ã©ã«ã®ããããããåæã¢ãŒããŸãã¯éåæã¢ãŒãã§åäœããããšãã§ããŸããåæã¢ãŒã(ã¢ãŒã0)ã§åäœããå Žåããã¹ãŠã®ãã©ã³ã¶ã¯ã·ã§ã³ã«ã€ããŠMAXQ610ããã¹ãã¹ã¿ãŒã®åœ¹å²ãæãããŸããTXDã©ã€ã³ãéä¿¡ãšåä¿¡ã®äž¡æ¹ã«ã€ããŠã·ããã¯ããã¯ãšããŠåäœããããã«èšå®ããŠãRXDã¯åæ¹åã®ããŒã¿ã©ã€ã³ãšããŠäœ¿çšããŸãããã®æ§æã§ã¯ãããŒã¿ã¯1床ã«çæ¹åã«ã®ã¿(åäºé)ããããŠãã¹ã¿ãŒãèŠæ±ãããšãã«ã®ã¿éä¿¡ãããŸãã
éåæåäœã¢ãŒã(ã¢ãŒã1ã2ãããã³3)ã®å ŽåãTXDãšRXDã®2ã€ã®åæ¹åããŒã¿ã©ã€ã³ãååšããŸããTXDã©ã€ã³ã¯MAXQ610ã®ã·ãªã¢ã«ããŒãããå€éšããã€ã¹ãžã®éåæããŒã¿ãæ¬éããRXDã©ã€ã³ã¯å€éšããã€ã¹ããMAXQ610ã«è¿ãããéåæããŒã¿ãæ¬éããŸããéä¿¡ãè¡ãããã«ã¯ãMAXQ610ãšå€éšããã€ã¹ãšããå ±éã®ãã©ãŒããã(ããŒã¿ãããã®æ°ãããªãã£ããããããã³ã¹ãããããã)ãšå ±éã®ããŒã¬ãŒã(ãã¹åšæ³¢æ°)ã«ã€ããŠåæããå¿ èŠããããŸããTXDã©ã€ã³ãšRXDã©ã€ã³ã®è»¢éã¯ç¬ç«ããŠè¡ãããçžäºã«åæãããå¿ èŠã¯ãªãããããããã®ã¢ãŒãã§ã¯å šäºéæ¹åŒã§ããŒã¿ãéä¿¡ããããšãã§ããŸããMAXQ610ã¯TXDã©ã€ã³äžã®å€éšããã€ã¹ã«å¯ŸããŠããã®å€éšããã€ã¹ãçŸåšRXDäžã§éä¿¡ãè¡ã£ãŠãããã©ããã«é¢ä¿ãªããä»»æã®æç¹ã§ããŒã¿ãéä¿¡ããããšãå¯èœã§ãéããŸãåæ§ã§ãã
ãã®ãã¢ã§ã¯ã以äžã®ç¹æ§ãæã€ã¢ãŒã1ãéžæããŸãã
- ã·ãªã¢ã«ããŒã¿ã®éåæéä¿¡(TXD)ããã³åä¿¡(RXD)
- ããŒã¯ããã¯ã¯å°çšã®ããŒã¯ããã¯ãžã§ãã¬ãŒã¿ã«ãã£ãŠäŸçµŠ(PRã¬ãžã¹ã¿ã䜿çšããŠããã°ã©ã å¯èœ)
- 8ããŒã¿ãããã1ã¹ã¿ãŒããããã1ã¹ãããããã
- ããªãã£ãªã
ã¢ãŒã1ã§ã·ãªã¢ã«ããŒãã䜿çšããããŒã¬ãŒã(1ç§éã«éåä¿¡ããããããæ°)ã¯ã(MAXQ Family User's Guideã§è§£èª¬ããŠããããã«)以äžã®2ã€ã®åŒã«ãã£ãŠæ±ºãŸããŸãã
ããŒã¯ããã¯åšæ³¢æ°(BAUD) = ã·ã¹ãã ã¯ããã¯åšæ³¢æ° Ã PR/217
ããŒã¬ãŒã = BAUD à 2(SMOD à 2)/26
åŒ1ã¯ãããŒã¯ããã¯ãžã§ãã¬ãŒã¿ã®åºåã衚ããŠããŸããçæãããåºåã®åšæ³¢æ°ã¯ã16ãããã®PR (äœçž)ã¬ãžã¹ã¿ã®å 容ã«ãã£ãŠå¶åŸ¡ãããŸããPRã¬ãžã¹ã¿ã«ããŒãããå€ã倧ããã»ã©ãããŒã¯ããã¯ã®åšæ³¢æ°ãé«ããªããŸãã
åŒ2ã§ã¯ãSMD (ã·ãªã¢ã«ããŒãã¢ãŒã)ã¬ãžã¹ã¿äžã®å¶åŸ¡ããã(SMOD)ã®å¹æãèšç®ã«å ¥ã£ãŠããŸãããã®ãããã«1ãã»ãããããšãæçµçãªããŒã¬ãŒãã4åã«å¢å ããŸããããªãã¡åŒ2ã¯ãSMODã®å€ã«å¿ããŠæ¬¡ã®ããããã®åœ¢ã§è¡šãããšãã§ããŸãã
SMOD = 0ã®ãšããããŒã¬ãŒã = BAUD/64
SMOD = 1ã®ãšããããŒã¬ãŒã = BAUD/16
æ°Žæ¶ã®é床ãšããŒã¬ãŒãã®ã»ãšãã©ã®çµã¿åããã«ã€ããŠãã©ã¡ãã®SMODã®èšå®ã§ã䜿çšããããšãã§ããŸããSMODã®èšå®ã¯ãPRã¬ãžã¹ã¿ã«ããŒãããå€ã«åœ±é¿ããããšã«æ³šæããŠãã ããã以äžã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯SMOD = 1ãéžæãããã®ãšãããããã£ãŠããŒã¬ãŒãã®åŒã¯æ¬¡ã®åœ¢ã«éå ãããŸãã
ããŒã¬ãŒã = (ã·ã¹ãã ã¯ããã¯åšæ³¢æ° Ã PR/217)/16
ããªãã¡ã
ããŒã¬ãŒã = (ã·ã¹ãã ã¯ããã¯åšæ³¢æ° Ã PR)/221
ãããPRã®å€ã«ã€ããŠè§£ããšãæã ã«ãšã£ãŠæãé¢å¿ã®ããåŒãåŸãããŸããéåžžã¯ãããŒã¬ãŒããšã·ã¹ãã ã¯ããã¯åšæ³¢æ°ã¯æ±ºãŸã£ãŠãããããç®çã®ããŒã¬ãŒããçæããããã«å¿ èŠãªPRã¬ãžã¹ã¿ã®èšå®ãæ±ããããšãã§ããã°è¯ãããã§ãããããã£ãŠã
PR = ããŒã¬ãŒã à 221/(ã·ã¹ãã ã¯ããã¯åšæ³¢æ°)
ããšãã°ãMAXQ610ã®EVãããã«æèŒãããŠããæšæºçãª12MHzã®æ°Žæ¶ã䜿çšããŠãããŒã¬ãŒãã9600ããŒã«èšå®ãããšããŸããå¿ èŠãªPRã¬ãžã¹ã¿ã®èšå®ã¯(9600 x 221/12000000)ã§ãããããã¯çŽ1677ãŸãã¯068Dhã«ãªããŸãã
PRãšSMODã®å€ãèšç®ããåŸã¯ãUSARTãé©åãªã¢ãŒãã«èšå®ããŠãPRãšSMODã®å€ãæžã蟌ãããšã«ãã£ãŠã·ãªã¢ã«ããŒãã®åæåãå®äºããŸããããã§ã¯ã·ãªã¢ã«ããŒã0ã䜿çšããããã以äžã®ã³ãŒãã§ãã®ã·ãªã¢ã«ããŒãã«è©²åœããã¬ãžã¹ã¿ã®ã»ãã(SCON0ãSMD0ãPR0ãããã³SBUF0)ã«å¯ŸããŠæžèŸŒã¿ãè¡ããŸãã
;========================================================================== ==== ;= ;= InitSerial0 ;= ;= Set up serial port 0 to run in 10-bit asynchronous mode at ;= 9600 baud. ;= InitSerial0: move SCON0.6, #1 ; Set to mode 1 (10-bit asynchronous). move SCON0.4, #1 ; Enable receiver. move SMD0.1, #1 ; Baud rate = 1/16 of baud clock move PR0, #0068Dh ; P = 2^21 Ã 9600/12.000MHz move SCON0.0, #0 ; Clear received character flag. move SCON0.1, #0 ; Clear transmit character flag. move SMD0.2, #1 ; Enable receive/transmit interrupt. ret
USARTããªãã§ã©ã«ã®åäœã¢ãŒãã®è©³çްã«ã€ããŠã¯ãMAXQ610 User's Guideããã³ïœ¢MAXQ Family User's Guideã®ç¬¬10é (Serial I/O Module)ãåç §ããŠãã ããã
ãã£ã©ã¯ã¿ã®éä¿¡ãšåä¿¡
ã·ãªã¢ã«ããŒããé©åã«èšå®ããåŸã¯ããã£ã©ã¯ã¿ã®éä¿¡ãšåä¿¡ãè¡ãããšãã§ããŸããã¢ãŒã1ã®å Žåã1ã¹ã¿ãŒããããã8ããŒã¿ããããããã³1ã¹ããããããã§ãã£ã©ã¯ã¿ãæ§æãããŸããã¹ã¿ãŒãããããšã¹ããããããã¯åæã®ããã«äœ¿çšãããUSARTããŒããŠã§ã¢ã«ãã£ãŠåŠçãããŸããæ®ãã®8ããããå®éã®ããŒã¿ã転éããããã8ãããã®ãã€ãã1床ã«1ã€ã·ãªã¢ã«ããŒãã§éä¿¡ãŸãã¯åä¿¡ããããšãã§ããŸãã
ã·ãªã¢ã«ããŒãã®ãã£ã©ã¯ã¿éä¿¡ã¯ã以äžã®3ã¹ãããã§è¡ããŸãã
- éä¿¡ãããã€ãå€ãSBUFã¬ãžã¹ã¿ã«æžã蟌ã¿ãŸãã
- SCONã¬ãžã¹ã¿ã®TI (éä¿¡å²èŸŒã¿)ãããããã€ã«ãªããŸã§(1ãã»ããããããŸã§)åŸ ã¡ãŸããããã¯ãããŒããŠã§ã¢ãã·ãªã¢ã«ããŒãã®ãã£ã©ã¯ã¿éä¿¡ãå®äºããããšã瀺ããŸãã
- TIãããã0ã§ã¯ãªã¢ããŸãã
åžžã«1ã€ã®éä¿¡ã®å®äºãåŸ ã£ãŠããæ°ããéä¿¡ãéå§ããå¿ èŠããããŸããåœä»€å®è¡ã®ãµã€ã¯ã«ã¿ã€ã ãšæ¯èŒããŠãã·ãªã¢ã«ããŒãã®éä¿¡ã«ã¯é·ãæéãå¿ èŠã§ãããããã£ãŠãã¹ããã2ã§ã·ãªã¢ã«ããŒãã®éä¿¡å®äºãåŸ ã€éã«ãä»ã®æäœãå®è¡ããããšãå¯èœã§ããããšãã°ã12MHzã®æ°Žæ¶ã䜿çšããŠ115200ããŒã®ããŒã¬ãŒãã§éä¿¡ãè¡ãå Žåãéä¿¡ã«å¿ èŠãªåèšæéã¯çŽ10 x (1/115200)ããªãã¡87µsã«ãªããŸãããããšåãæéã®éã«ãMAXQ610ã¯æå€§1041ãã®åœä»€ãå®è¡ããããšãã§ããŸã(87µs/(1/12MHz))ã
ã·ãªã¢ã«ããŒãã«ãããã£ã©ã¯ã¿ã®åä¿¡ããåæ§ã®æé ã§è¡ããŸãã
- RI (åä¿¡å²èŸŒã¿)ãããããã€ã«ãªãã®ãåŸ ã¡ãŸããããã¯ãã·ãªã¢ã«ããŒããæ°ãããã£ã©ã¯ã¿ãåä¿¡ããããšã瀺ããŸãã
- SBUFã¬ãžã¹ã¿ããèªåããè¡ã£ãŠããŒã¿ãã€ããååŸããŸãã
- RIãããã0ã§ã¯ãªã¢ããŸãã
åä¿¡ãããã£ã©ã¯ã¿ã¯1床ã«1ã€ã®ã¿ã·ãªã¢ã«ããŒãã®ããŒããŠã§ã¢ã«æ ŒçŽ(ãããã¡)ãããŸãããããã£ãŠãããŒããŠã§ã¢ã«ãã£ãŠRIãããã«1ãã»ãããããå Žåã¯(ãã£ã©ã¯ã¿ãåä¿¡ããŠããããšã瀺ããŸã)ãã·ãªã¢ã«ããŒããæ¬¡ã®ãã£ã©ã¯ã¿ãåä¿¡ããåã«ãSBUFã¬ãžã¹ã¿ãèªã¿åã£ãŠãã£ã©ã¯ã¿ãååŸããŠãRIããããã¯ãªã¢ããå¿ èŠããããŸããã·ãªã¢ã«ããŒããæ°ãããã£ã©ã¯ã¿ãåä¿¡ããæç¹ã§RIãããããŸã ãã€ã ã£ãå Žåã¯ãæ°ãããã£ã©ã¯ã¿ã倱ãããããšã«ãªããŸãã
ã·ãªã¢ã«ããŒãå²èŸŒã¿ã®åŠç
ã·ãªã¢ã«ããŒããæäœããç°¡åãªæ¹æ³ãšããŠã¯ãåã ã®éä¿¡ãŸãã¯åä¿¡æäœã«ã€ããŠãå¿ èŠã«å¿ããŠRIããã³TIãããã®å€ãåã«ããŒãªã³ã°(ç¹°ãè¿ããŠãã§ãã¯)ããŸããããšãã°ããã£ã©ã¯ã¿ã®æžèŸŒã¿ãè¡ãå Žåãã¢ããªã±ãŒã·ã§ã³ã®ã³ãŒãã¯ããŒã¿ãã€ããSBUFã«æžã蟌ãã åŸãããŒããŠã§ã¢ã«ãã£ãŠ1ãã»ããããããŸã§TIããããããŒãªã³ã°ããããšã«ãªããŸããéä¿¡ãå®äºãããŸã§ãä»ã®æäœã¯è¡ãããŸãããåæ§ã«ãæ°ãããã€ããåä¿¡ããå Žåã¯ãã¢ããªã±ãŒã·ã§ã³ã¯ããŒããŠã§ã¢ã«ãã£ãŠãã€ã«ã»ããããããŸã§åã«RIããããããŒãªã³ã°ããŠãåä¿¡ããããã€ããSBUFã®èªåãã«ãã£ãŠåãåºããŸãã
RIããã³TIããããããŒãªã³ã°ãããã®æ¹æ³ã¯ããã£ã©ã¯ã¿ã®éåä¿¡åŸ ã¡ã«çžåœã®æéãè²»ãããããããç°¡åããšåŒãæãã«æ§èœãç ç²ã«ãªããŸããããã«ããã€å€éšããã€ã¹ããæ°ãããã£ã©ã¯ã¿ãæ¥ããããããããã¢ããªã±ãŒã·ã§ã³ãææ¡ããŠããå¿ èŠããããã¢ããªã±ãŒã·ã§ã³ããã£ã©ã¯ã¿ã®éä¿¡ãšåä¿¡ãåæã«è¡ãããšãã§ããŸããã
ããæè»ãª(ãã ãè¥å¹²è€éãª)æ¹æ³ã¯ãTIãšRIãåãªãã¹ããŒã¿ã¹ãããã§ã¯ãªãåæå²èŸŒã¿ãœãŒã¹ã«ããªã£ãŠãããšããäºå®ãå©çšããŸããTIããã³RIãããã®ç¶æ ãç¶ç¶çã«ããŒãªã³ã°ããŠéä¿¡ãŸãã¯åä¿¡åäœã®å®äºã倿ãã代ããã«ãMAXQ610ã§ã¯TIãŸãã¯RIã0ãã1ã«å€åãããšãã«å²èŸŒã¿ãçºçãããããšãå¯èœã§ãããã®æ¹æ³ã®å Žåãã¢ããªã±ãŒã·ã§ã³ã¯å¿ èŠãªãšãã«ã®ã¿ã·ãªã¢ã«ããŒãã«å¿çããã°è¯ããããããçç£çãªããšã«æéãè²»ããããšãã§ããŸãã
ãã®ããã»ã¹ã®æåã®ã¹ãããã¯ãIGEããã(IC.0)ã1ã«ã»ããããããšã«ãã£ãŠããã¹ãŠã®å²èŸŒã¿ãèš±å¯ãããŸããããã«ãã£ãŠãMAXQ610ã®ãã¹ãŠã®å²èŸŒã¿åŠçãèš±å¯ããããšãå¯èœã«ãªããŸãã
次ã«ãå²èŸŒã¿åŠçã«ãŒãã³ãçµã¿èŸŒãå¿ èŠããããŸããMAXQ610ã¯ãè€æ°ã®åºå®å²èŸŒã¿ãã¯ã¿ã·ã¹ãã ã䜿çšããŠãããåã ã®å²èŸŒã¿ãœãŒã¹ãŸãã¯å²èŸŒã¿ãœãŒã¹ã®ã°ã«ãŒãã«å¯ŸããŠããããç°ãªã(ããã°ã©ã äžå¯)ãã¯ã¿ã¢ãã¬ã¹ãå²ãåœãŠãããŸããããã§ã¯ãã¯ãŒãã¢ãã¬ã¹0040hã«å²ãåœãŠãããã·ãªã¢ã«ããŒãå²èŸŒã¿ãã¯ã¿ã察象ã«ãªããŸãã
次ã«ç€ºãå²èŸŒã¿ãã³ãã©ã«ãŒãã³ã¯ã以äžã®æ©èœãå®è¡ããŸãã
- äžæçã«IC.0ã«0ãã»ããããŠã(åªå é äœã®é«ã)ä»ã®å²èŸŒã¿ã®çºçãé²ããŸãã
- PSFããã³Accã¬ãžã¹ã¿ãã¹ã¿ãã¯ã«ããã·ã¥ããŠå€ãä¿åããŸããå²èŸŒã¿ã¯ãã€çºçãããåãããªããããå²èŸŒã¿ãã³ãã©ã§ã¯åžžã«ä»ã®ã¢ããªã±ãŒã·ã§ã³ã³ãŒãã§äœ¿çšããŠããã¬ãžã¹ã¿ã®ä¿åãšåŸ©å ãè¡ãå¿ èŠããããŸãã
- ã·ãªã¢ã«ããŒãå²èŸŒã¿ã¯TI (éä¿¡)ãŸãã¯RI (åä¿¡)ããããã®ãã©ã°ã«ãã£ãŠããªã¬ãããå¯èœæ§ãããããããªãå²èŸŒã¿ãèµ·åãããã®ãããã³ãã©ã®ã³ãŒãã§èª¿ã¹ãå¿ èŠããããŸãã
- éä¿¡å²èŸŒã¿ãèµ·åãããå Žåã¯ãTIããããã¯ãªã¢ããŠããã©ã°å€(A[15]ã«æ ŒçŽ)ãã»ããããŠéä¿¡ãå®äºããããšãã¢ããªã±ãŒã·ã§ã³ã«éç¥ããŸããããã¯åã«ãã¢ãç®çãšããŠããŸããå²èŸŒã¿ãã³ãã©ã¯ãã®ç¶æ³ãžã®å¿çãšããŠãSBUFã«æ°ããå€ãããŒãããŠæ¬¡ã®ãã£ã©ã¯ã¿ãéä¿¡ããããšãã§ããŸãã
- åä¿¡å²èŸŒã¿ãããªã¬ãããå Žåã¯ãRIããããã¯ãªã¢ããŠãåä¿¡ãããã£ã©ã¯ã¿ãSBUFããèªã¿åããåä¿¡ãããã£ã©ã¯ã¿ã«å¿ããŠé©åãªåäœãè¡ããŸãã
- Accããã³PSFã¬ãžã¹ã¿ã®å€ãã¹ã¿ãã¯ãããããããŠåŸ©å ããŸãã
- IC.0ã«1ãã»ããããŠåã³å²èŸŒã¿ãèš±å¯ããŸãã
- RETIåœä»€ã䜿çšããŠå²èŸŒã¿ãã³ãã©ãçµäºããŸãã
org 0040h serialInt: move IC.0, #0 ; Block any other interrupts from triggering. push PSF push Acc move C, SCON0.0 ; Check for receive character interrupt. jump C, serialInt_Rx serialInt_Tx: move SCON0.1, #0 ; Clear transmit complete interrupt flag. move A[15], #1 ; Set flag to indicate transmit complete. serialInt_done: move IC.0, #1 ; Re-enable interrupts. pop Acc pop PSF reti serialInt_Rx: move SCON0.0, #0 ; Clear receive character interrupt flag. move Acc, SBUF0 ; Get character from serial port. cmp #'0' jump E, serialInt_Rx0 cmp #'1' jump E, serialInt_Rx1 cmp #'2' jump E, serialInt_Rx2 cmp #'3' jump E, serialInt_Rx3 cmp #'4' jump E, serialInt_Rx4 jump serialInt_done serialInt_Rx0: move Acc, PO3 or #0Fh ; Turn all LEDs off. move PO3, Acc jump serialInt_done .... serialInt_Rx3: move Acc, PO3 xor #04h ; Toggle P3.2 state. move PO3, Acc jump serialInt_done serialInt_Rx4: move Acc, PO3 xor #08h ; Toggle P3.3 state. move PO3, Acc jump serialInt_done
ãã¢ã¢ããªã±ãŒã·ã§ã³ã®ãã«ã
ãã®ã·ãªã¢ã«ãã¢ã¢ããªã±ãŒã·ã§ã³ã®å šäœçãªæ çµã¿ã¯ã以äžã®éãã§ãã
- ããŒã端åããã³ã·ãªã¢ã«ããŒããåæåããŸãã
- å²èŸŒã¿ãèš±å¯ããŸãã
- 以äžã®ãããŒããã¹ããã·ãªã¢ã«ããŒãçµç±ã§éä¿¡ããŸãã
MAXQ610 Serial Port Demo Type characters "1"-"4" to toggle LEDs or '0' to turn all LEDs off.
- 1ã2ã3ã4ããŸãã¯ïœ¢0ã®åãã£ã©ã¯ã¿ãåä¿¡ããå Žåãããããã«å¿ããŠLEDã®ç¶æ ã倿ŽããŸãã
äžã§ç€ºããå²èŸŒã¿ãã³ãã©ã®ã³ãŒãããåããããã«ãåä¿¡ãããã£ã©ã¯ã¿ãžã®å¿çãšããŠãã¢ããªã±ãŒã·ã§ã³ã¯ããŒã端åP3.0ãP3.1ãP3.2ãããã³P3.3ã®åºåã®ç¶æ ãå€åãããŸããMAXQ610ã®EVãããã®ããŒãã§ã¯ã(ãžã£ã³ãJH22ãJH23ãJH24ãããã³JH25ãç絡ãããŠããå Žå)ãããã®ããŒã端åã¯4ã€ã®LEDãDS1ãDS2ãDS3ãããã³DS4ãé§åããŸããããŒã端åãããŒç¶æ (0)ã§LEDããªã³ã«ãªã(ç¹ç¯)ãããŒã端åããã€ç¶æ ã§LEDããªãã«ãªããŸãã
main: move WDCN, #0 move PD3.0, #1 ; Set P3.0 to output mode. move PO3.0, #1 ; Drive P3.0 high (LED off). move PD3.1, #1 ; Set P3.1 to output mode. move PO3.1, #0 ; Drive P3.1 low (LED on). move PD3.2, #1 ; Set P3.2 to output mode. move PO3.2, #1 ; Drive P3.2 high (LED off). move PD3.3, #1 ; Set P3.3 to output mode. move PO3.3, #0 ; Drive P3.3 low (LED on). move PD0.2, #1 ; Set P0.2 (TXD) to output mode. move PO0.2, #1 ; Idle high when not transmitting. call InitSerial0 move IC.0, #1 ; Enable interrupts. move LC[0], #12000 ; Give transceiver time to power on. djnz LC[0], $ ; Print string to serial port. move CP, #0800h printLoop: move Acc, @CP++ nop jump Z, printLoop_done move GR, Acc move Acc, GRL call TxChar0 move Acc, GRH call TxChar0 jump printLoop printLoop_done: nop mainLoop: nop jump mainLoop ;========================================================================== ==== ;= ;= TxChar0 ;= ;= Outputs a character to serial port 0. ;= ;= Inputs : Acc - Character to send. ;= TxChar0: push Acc move SBUF0, Acc ; Send character. move A[15], #0 ; Clear interrupt service routine flag. TxChar0_Loop: nop nop nop move Acc, A[15] ; Check flag. jump Z, TxChar0_Loop move SCON0.1, #0 ; Clear the transmit flag. pop Acc ret ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; org 800h db 0Dh, 0Ah, 0Dh, 0Ah db "MAXQ610 Serial Port Demo", 0Dh, 0Ah, 0Dh, 0Ah db "Type characters '1'-'4' to toggle LEDs or '0' to turn all LEDs off" db 0Dh, 0Ah, 0Dh, 0Ah dw 0000h
ãããŒããã¹ãã¯DBã¹ããŒãã¡ã³ãã䜿çšããŠã¯ãŒãã¢ãã¬ã¹0800h以éã«æ ŒçŽãããŸãããã®å®æ°ããŒã¿ã¯ãããã°ã©ã ã³ãŒãã®ä»ã®éšåãšãšãã«MAXQ610ã®ãã©ãã·ã¥ã¡ã¢ãªã«ããŒããããäžã®ã³ãŒã(printLoopã®éšå)ã瀺ãããã«ãã³ãŒããã€ã³ã¿CPã䜿çšããŠåãåºãããšãã§ããŸããCPã䜿çšããããã°ã©ã ã¡ã¢ãªããã®ãã§ããã§ã¯1床ã«1ã¯ãŒãã®ããŒã¿ãåãåºããããããåã¯ãŒãã®èªã¿åãåŸã«2ã€ã®ãã£ã©ã¯ã¿ãã·ãªã¢ã«ããŒãããéä¿¡ããŠããŸãã
ãã¢ã®å®è¡
MAX-IDEã䜿çšããŠãã¢çšã³ãŒããã³ã³ãã€ã«ããŠãMAXQ610ã®EVãããã«ããŒãããåŸã¯ã以äžã®ããã«ããŠå®è¡ããããšãã§ããŸãã
- 黿ºããªãã«ããŠãJTAGã黿ºãããã³ã·ãªã¢ã«ã®åã±ãŒãã«ãæããŠãã ããã
- ã·ãªã¢ã«ã±ãŒãã«ã§PCã®COM1ãšMAXQ610ã®EVãããã®ããŒãã®ãã©ã°J1ãæ¥ç¶ããŠãã ããã
- 黿ºã±ãŒãã«ãMAXQ610ã®EVãããã®ããŒãã®ãã©ã°J3ã«æ¥ç¶ããŠãã ããã
- 黿ºããªã³ã«ããŠãã ããã
- PCäžã§ã¿ãŒããã«ãšãã¥ã¬ãŒã¿ããã°ã©ã ãèµ·åããŠãã ãããCOM1äžã§ã9600ããŒã8ããŒã¿ãããã1ã¹ãããããããããªãã£ãªãã®éä¿¡ãè¡ãããã«èšå®ããŠãã ããã
- MAXQ610ã®EVãããã®ããŒãäžã®RESET (SW1)ãæŒäžããŠãæŸããŠãã ãããã¿ãŒããã«ãšãã¥ã¬ãŒã¿ã®ç»é¢ã«ãããŒããã¹ã(MAXQ610 Serial Port Demo...)ã衚瀺ãããã¯ãã§ãã衚瀺ãããªãå Žåã¯ãæ¥ç¶ããã³ãžã£ã³ãèšå®ããã§ãã¯ããŠãã ããã
- LEDã®ç¶æ ããã°ã«ããããã£ã©ã¯ã¿ã次ã®ããã«ã¿ã€ãããŠãã ããã1ãšã¿ã€ããããšDS1ããã°ã«ããŸãã2ãšã¿ã€ããããšDS2ããã°ã«ããŸãã3ãšã¿ã€ããããšDS3ããã°ã«ããŸãã4ãšã¿ã€ããããšDS4ããã°ã«ããŸãã0ãšã¿ã€ããããšãã¹ãŠã®LEDããªãã«ãªããŸãããã£ã©ã¯ã¿ã®ãšã³ãŒã¯è¡ãããŸããã
Cèšèªã«ãããã¢çšã³ãŒã
T以äžã®ãã¢çšã³ãŒãã¯ãåãã¢ããªã±ãŒã·ã§ã³ãIARâ¢ã®Embedded Workbench IDEåãã«Cèšèªã§å®è£
ãããã®ã瀺ããŠããŸããç°¡åã«ãããããå²èŸŒã¿åŠçã³ãŒãã¯é€å»ããŠãããŸããã·ãªã¢ã«ããŒã0ãããã£ã©ã¯ã¿ãåºåããããã«putchar
颿°ãå®è£
ããŠããããšã«æ³šæããŠãã ãããããã«ãã£ãŠãputs()
ãprintf()
ãªã©ã®æšæºå
¥åºåã©ã€ãã©ãªã®é¢æ°ã䜿çšããããšãå¯èœã«ãª
ããŸãã
int putchar(int c) { SBUF0 = c; while ((SCON0 & 0x02) == 0); SCON0 = (SCON0 ^ 0x02); return c; } void initUSART0(void) { int i2; PD0_bit.bit2 = 1; // Hold Tx0 line High. PO0_bit.bit2 = 1; // Hold Tx0 line High. SMD0 = 2; // Set baud rate select bit. SCON0 = 0x50; // Set mode 1 and receive enable for UART 0. PR0 = 0x068D; // 9600 baud: PR0 = 2^21 * 9600 / 12.000MHz for (i2 = 1; i2 < 10000; i2++); // Give transceiver time to power on. SCON0 = 0x50; } void main( void ) { int c; IC_bit.IGE = 0; WDCN = 0; PD3 = 0x0F; PO3 = 0x05; // Default - DS2 and DS4 on, DS1 and DS3 off initUSART0(); puts("MAXQ610 Serial Port Demo"); puts("Type characters "1"-"4" to toggle LEDs or "0" to turn all LEDs off\n"); while (1) { while ((SCON0 & 0x01) == 0); // Wait for RI flag to go high. c = SBUF0; // Receive character. SCON0 = (SCON0 ^ 0x01); // Clear RI flag. switch (c) { case '0' : PO3 = 0x0F; break; case '1' : PO3 = (PO3 ^ 0x01); // Toggle P3.0 break; case '2' : PO3 = (PO3 ^ 0x02); // Toggle P3.1 break; case '3' : PO3 = (PO3 ^ 0x04); // Toggle P3.2 break; case '4' : PO3 = (PO3 ^ 0x08); // Toggle P3.3 break; default : break; } } }
çµè«
MAXQ610ã¯å€ãã®MAXQãã€ã¯ãã³ã³ãããŒã©ãåããŠããæšæºçãªUSARTã·ãªã¢ã«ããŒãã®ã€ã³ã¹ã¿ã³ã¹ã2ã€æäŸããŸããMAXQ610ã®ã·ãªã¢ã«ããŒãããµããŒãããŠããã¢ãŒãã®1ã€ã§ããéåæã¢ãŒã1ã䜿çšããŠãPCã®COMããŒãããã®ä»ã®æ§ã ãªçš®é¡ã®ã¬ã¬ã·ãŒæ©åšãšéä¿¡ãè¡ãããšãã§ããŸããã·ãªã¢ã«ããŒãã®éåä¿¡åäœçšã«MAXQ610ãæäŸããå²èŸŒã¿åŠçãµããŒãã«ãã£ãŠãæ°ãããã£ã©ã¯ã¿ãåä¿¡ãããšããŸãã¯ãã£ã©ã¯ã¿ã®éä¿¡ãå®äºãããšãã«ã¢ããªã±ãŒã·ã§ã³ãè¿ éã«ã·ãªã¢ã«ããŒãã«å¿çããããšãã§ããŸãã
MAXQ610ã®USARTã·ãªã¢ã«ããŒãã¯ããã®ã¢ããªã±ãŒã·ã§ã³ããŒãã®å¯Ÿè±¡ç¯å²ãè¶ ããå¹ åºãèšå®ãªãã·ã§ã³ãšéä¿¡ã¢ãŒãããµããŒãããŠããŸãã詳现ã«ã€ããŠã¯ãåè¿°ã®ïœ¢MAXQ610 User's Guideããã³ïœ¢MAXQ Family User's Guideã®ç¬¬10é ãåç §ããŠãã ããã