MF9BF506N DMAC

Started by tha, February 18, 2015, 08:36:17 AM

Previous topic - Next topic

tha

11. Operation in Disable state
   channel หนึ่งใน Disable state ยังคงอยู่ใน the Disable state, เว้นแต่มีเงื่อนใขอย่างเช่น DE=1, DH=0000, EB=1, และ PB=0 ถูกสร้างขึ้น. ถึงแม้ว่าใน 1-2 ของ the software procedure, DE ถูกเซตจากเงื่อนใขที่ DE=0 และ EB=0, และจากนั้น, EB ถูกเซต, มันไม่มีปัญหาที่เซต EB ก่อน DE. DE สามารถถูกเซตหลังสุดหลังจาก the transfer settings ทั้งหมดของหลายชาแนลที่ทำให้เกิดการ transfer นั้นเสร็จสมบรูณ์ ในกรณีนี้, คำสั่งสามารถถูกออกมาเพื่อยอมให้ the multiple channels ที่ทำให้เกิดการ transfer สตาร์ท transfer operations ของมันขึ้นพร้อมกัน. ถ้าคำสั่งเพื่อสตาร์ทการ transfer ขึ้นพร้อมกันเช่นนี้ถูกออกมา, DMAC เลือก the channels ซึ่งการ transfers ถูกสตาร์ท, ตามการเซตของ PR setting (PR สามารถถูกเซตหรือเปลี่ยน, ได้เพียงเมื่อ all-channel operation ถูกปิดการใช้งาน).

   ถ้าคำสั่งปิดการใช้งาน individual-channel operation, คำสั่งที่ส่งให้ individual-channel operation ไปหยุดพัก, คำสั่งปิดการใช้งาน all-channel operation หรือคำสั่งที่ส่งให้ all-channel operation ไปหยุดพักถูกออกมาไปถึง channel หนึ่งใน Disable state, มีเพียงการเซตของ DE, DH, EB และ PB ที่ถูกเปลี่ยน, แต่สภาวะของ DE=1, DH=0000, EB=1 and PB=0 ไม่ถูกสร้างขึ้น. ดังนั้น, ชาแนลนั้นจะไม่ทำอะไรและไม่เปลี่ยน SS. ถ้าคำสั่งที่ส่งให้ all-channel operation ไปหยุดพักถูกออกมาจาก CPU ไปถึง channel หนึ่งใน Disable state, ตามที่แสดงในตัวอย่างของ ch.2 operation ในรูปที่ 4-3, ที่ channel ไม่เปลี่ยนสถานะของมันโดยที่ SS[2:0] แสดงการเสร็จสมบรุณ์ของการ transfer ก่อนหน้า.

  ถ้าคำสั่งที่ส่งให้ individual- หรือ all-channel operation ไปหยุดพักถูกออกมาไปถึงชาแนลหนึ่งใน Disable state, มันอาจจะส่งใน Disable state ด้วย DE=1, EB=1, (DH=0000 or PB=1). ถึงแม้ว่าค่าของบิตใน state นี้จะเหมือนกันตาม DE, EB, DH and PB, มันสามารถถูกทำให้แตกต่างเป็นพิเศษเพราะว่า SS[2:0] มีค่าที่แตกต่าง. Figure 4-4 แสดงตัวอย่างเช่นนี้.



  ชาแนลที่แน่นอนหนึ่งกำลังกระทำการ transfer operation. CPU ออกคำสั่งที่ส่งให้ individual-channel operation ไปหยุดพักไปที่ชาแนลนั้น. คำสั่งถูกออกมาหลังจากการ transfer เสร็จแล้วและมันเคลื่อนไปสู่ Disable state (DE=1, DH=0000, EB=0, PB=0). ปรากฏการณ์นี้สามารถเกิดขึ้นได้, เพราะว่าชาแนลที่กำลังกระทำการ transfer operation เปลี่ยนสถานะของมันนอกเหนือความตั้งใจของ CPU. ในกรณีนี้, ค่าบิตของชาแนลนั้นเปลี่ยนไปสู่ (DE=1, DH=0000, EB=1, PB=1) เนื่องจากคำสั่งจาก CPU, แต่ SS[2:0] ยังคงr "101", ค่าที่เซตขึ้นอยู่กับการเสร็จสมบรูณ์. ถ้าการทำงานถูกหยุดลงโดยคำสั่ง pause, SS[2:0] จะเป็น "111"; ดังนั้น, มันอาจเป็นไปได้ที่จะทำให้แตกต่างระหว่าง pause state และสถานะในที่ซึ่งการ transfer ถูกทำให้เสร็จสมบรูณ์แล้ว. ควรจดจำไว้ว่าถ้าคำสั่งเพื่อยกเลิกการหยุดพักถูกออกมาโดยปราศจากการเช็คสถานะของชาแนลโดย SS[2:0], การ transfer ใหม่จะสตาร์ทขึ้นโดนไม่ได้ตั้งใจ, ดังแสดงใน Figure 4-4.

tha

Additional Matter 1(เพิ่มเติมเรื่องที่ 1)
  ตามที่ ST ถูกเคลียร์ในเวลาที่การ transfer เสร็จสมบรูณ์, การอ่านค่าของ ST เป็น "0" หลังจากการ transfer เสร็จสมบูรณ์. ในกรณีของ software transfer, ควรจดจำไว้ว่า "1" ต้องถูกเขียนไปยัง ST เสมอ, โดยไม่คำนึงถึงค่าที่อ่านได้ของมัน

tha

Additional Matter 2
   คำสั่งเปิดใช้งาน individual-channel operation ไม่สามารถถูกออกมาในระหว่างคาบเวลาช่วงหลังจากคำสั่งเปิดใช้งาน individual-channel operation ก่อนหน้าออกคำสั่งสตาร์ทของการ transfer และก่อนที่การ transfer เสร็จสมบรูณ์ได้ถูกยืนยัน. เป็นเพราะว่าชาแนลที่ถูกควบคุมอาจเปลี่ยนสถานะของมันนอกเหนือจากความตั้งใจของ CPU และคำสั่งสตาร์ทการ transfer ใหม่อาจถูกออกมาเมื่อ DMAC ได้เคลื่อนไปสู่ Disable state (EB=0). แม้ว่าค่า SS[2:0] ยืนยันว่าชาแนลที่ถูกควบคุมอยู่ใน Transfer state, ชาแนลที่ถูกควบคุมนั้นอาจเคลื่อนไปสู่ Disable state ในระหว่างคาบเวลาระหว่างจุดนั้นและการดำเนินการเขียน


tha

Additional Matter 3
   ค่า DE และ DH สามารถถูกเขียนใหม่ได้เพียงจาก CPU และ registers เหล่านี้ไม่เคยถูกเคลียร์จาก DMAC. ดังนั้น, มันไม่มีปัญหาที่เขียน DE=1 และ DH=0000 ในระหว่างการ transfer operation.

   DH ไม่ถูกเคลียร์, ถ้าคำสั่งปิดการใช้งาน individual-channel operation ถูกออกมาไปยังชาแนลหนึ่งใน all-channel Pause state (DE=1, DH=0000, EB=1, PB=0).หลังจากออกคำสั่ง, ชาแนลนั้นก็เคลื่อนไปสู่ Disable state (DE=1, DH=0000, EB=0, PB=0). เพื่อสตาร์ทการ transfer ใหม่ของชาแนลนั้น, เขียน DE=1 และ DH=0000. นี่แสดงว่าการยกเลิกการหยุดพัก(pause) ของ all-channel operation ถูกต้องการเพื่อที่จะสตาร์ทการ transfer ใหม่ของเฉพาะแต่ละชาแนล (individual channel).

tha

Additional Matter 4
  ค่าSS[2:0] ถูกเซตจาก DMAC ในเวลาที่การ transfer หนึ่งเสร็จสมบูรณ์และมันไม่เคยถูกเขียนใหม่จาก DMAC ตราบเท่าที่มันอยู่ใน Disable state. ถึงแม้ว่าค่า SS[2:0] ไม่ถูกเคลียร์, การ transfer ถัดไปก็สามารถถูกสตาร์ทได้. อย่างไรก็ตาม, ถ้ามันเคลื่อนไปสู่ Transfer state, ค่า SS[2:0]อาจถูกเคลียร์จาก DMAC (หรืออาจไม่ถูกเคลียร์). เมื่อ interrupt หนึ่งจาก DMAC ถูกใช้, ควรจดจำไว้ว่า interrupt signal ถูกถอดการครองสิทธิ์ที่เวลาซึ่งไม่ได้ตั้งใจโดย CPU, ถ้ามันเคลื่อนไปสู่ Transfer state โดยปราสจากการเคลียร์ SS[2:0]

tha

4.3. DMAC Operation and Control Procedure for Hardware (EM=0) Transfer
  ในส่วนนี้อธิบาย DMAC operation and control procedure for hardware (EM=0) transfer.

   

   รูปที่ 4-5 แสดงไดอะแกรมการเปลี่ยนผ่านของสถานะของชาแนลที่ถูกควบคุมของ hardware (EM=0) transfer. ตัวเลขถัดจากเส้นเปลี่ยนผ่านในรูปจะตรงกันกับตัวเลขซึ่งปรากฏใน control procedures ที่จะกล่าวต่อไป. เส้นเปลี่ยนผ่านทึบบ่งบอกถึงการเปลี่ยนผ่านของสถานะที่ถูกสั่งโดย CPU, ขณะที่เส้นเปลี่ยนผ่านปะบ่งบอกถึงการเปลี่ยนผ่านของสถานะเนื่องจาก DMAC/Peripheral operation

  บางส่วนของการอธิบายข้างล่างที่กล่าวว่า "ดู the software transfer procedure". หมายถึงว่าที่ซึ่งการควบคุมที่เหมือนกันกับใน the software transfer procedure ถูกใช้, ไม่มีการอ้างถึงเป็นพิเศษถูกต้องการ ; ดังนั้น, การอธิบายที่ซ้ำซากจะถูกข้ามไป ในตัวอย่างนี้ การอธิบายนี้ทึกทักเอาว่า EM=0 ถูกเซต

tha

 Description of Each State(การอธิบายของแต่ละสถานะ)

   Disable state
   ดูการอธิบายของ Control Procedure ใน "4.2 DMAC Operation and Control Procedure for Software Transfer".

   Wait-1st-trigger state
   ในสถานะนี้, channel ที่ถูกควบคุมถูกเปิดใช้งานเพื่อกระทำการ transfer. channel ในสถานะนี้คอยเพื่อ transfer request แรกจาก a Peripheral ถูกถือสิทธ์. มันเปลี่ยนสถานะของมันในเวลาที่มีคำสั่งจาก CPU ได้อีกด้วย.

   Transfer state
    ในสถานะนี้, channel ที่ถูกควบคุมได้รับ transfer request แรกจาก the Peripheral แล้ว. channel ในสถานะนี้กระทำการ transfer operation ตามที่ระบุ. เมื่อการ transfer operation ทั้งหมดเสร็จสมบรูณ์, มันกลับไปสู่ Disable state. มันเปลี่ยนสถานะของมันในเวลาที่มีคำสั่งจาก CPU ได้อีกด้วย.

   Pause state
   ดูการอธิบายของ Control Procedure ใน "4.2 DMAC Operation and Control Procedure for Software Transfer".

wozniak

สุดยอดเลยครับ สำหรับการแปลข้อมูล ไม่ต้องหาจากที่ไหน
ยอดๆๆๆ
ช่วงนี้ มีของดีๆ เยอะเลย