MF9BF506N DMAC

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

Previous topic - Next topic

tha

4. Transfer state => Disable state / Successful completion of transfer
เมื่อการ transfers สำเร็จสมบูรณ์แล้วเป็นจำนวนผลคูณที่คำนวณโดย (BC+1) x (TC+1), ชาแนลใน Transfer state จะเคลียร์ EB, PB และ ST และเคลื่อนไปสู่ Disable state. มันเซต SS=101 เพื่อแจ้งให้ทราบถึงการเสร็จสมบรูณ์นั้น. ดูตัวอย่างที่ 1 ในรูปที่ 4-2. ถ้า successful transfer completion interrupt ถูกเปิดใช้งานก่อนแล้วโดย CI, an interrupt ก็จะเกิดขึ้น. ถ้าการโหลดซ้ำ(reload)ถูกระบุถึง BC, TC, DMACSA and DMACDA, การ reload นั้นจะถูกกระทำตามที่กำหนดโดย the specified transfer content(คงหมายถึงค่าที่จะเขียนไปยังรีจีสเตอร์ต่างๆ).



ช่วงนี้หันมาใช้ firfox เพราะ chrome มีปัญหา pop up หรือคุกกี้ ที่ขึ้นมาที่มุมด้านล่างขวา ไม่รู้เป็นเหมือนกันหรือเปล่า  :o

tha

5. Transfer state => Disable state / Transfer error stop
     The channel ใน Transfer state ยกเลิกขบวนการการ transfer ไว้ชั่วคราว, ถ้าเกิด an address overflow, transfer source access error หรือ transfer destination access error. มันจะเคลียร์ EB, PB และ ST และเคลื่อนไปสู่ Disable state. มันจะเซตค่าที่แสดงการ error นั้นไปยัง SS[2:0] เพื่อแจ้งให้ทราบถึง error ที่ทำให้หยุด (error stop). ดูตัวอย่างที่ 2 ในรูปที่ 4-2. ถ้า unsuccessful transfer completion interrupt ถูกเปิดใช้งานไว้ก่อนแล้วโดย EI, an interrupt จะเกิดขึ้น. BC, TC, DMACSA and DMACDA ซึ่งการ reload ไม่ได้ระบุไว้จะคงค่าเซตที่เวลาที่การ transfer ถูกยกเลิกนั้น

โดยปกติ, a transfer error เกิดขึ้น, เมื่อมีความพยายามที่จะเข้าถึง address area ที่ไม่มีอยู่ใน system bus หรือ an address area ที่ห้ามเข้าถึงจาก DMAC. จะไม่มี error เกิดขึ้นในการใช้งานทั่วไป

tha

    อยากจะทำบอร์ด MB9BF506N สักบอร์ด เอาไว้ติดต่อกับตัว stamp จะกัดแผ่นปริ้นท์เองก่อน แผ่นปริ้นท์หน้าเดียวง่ายๆ ใช้ pcb conver smd ตัวนี้ครับ http://www.ett.co.th/product/pcb/ET-PCB-TQFP100.html พอดีมีของอยู่ ทำแบบมี jtag port , ไม่มี power supply(เอาไว้นอกบอร์ดจะได้เปลี่ยน 5V หรือ 3.3V ได้) ทำ I/O port pin
     ควรมีอะไรเพิ่มเติมอีกครับ จอ LCD ควรทำ port pin เอาไว้หรือเปล่าหรือใช้สายต่อเอา ท่านใดมีประสบการณ์แนะนำหน่อย :)
http://www.es.co.th/vp.asp?keyword=&catc=034016&mfrc=001&F2=ARM&t=1


tha

6. Transfer state, Pause state => Disable state / Forced transfer stop
     ถ้ามีคำสั่งให้ปิดการใช้งาน individual-channel operation หรือมีคำสั่งให้ปิดการใช้งาน all-channel operation ออกมาจาก CPU ไปถึง channel หนึ่งใน Transfer state หรือ Pause state, การ transfer operation ของชาแนลนั้นสามารถถูกบังคับให้หยุด (สำหรับการทำงานเมื่อมีคำสั่งให้ปิดการใช้งานการทำงานที่ออกมาไปหาชาแนลใน Disable state, ดู Step 11 ใน the software procedure).

    ถ้าคำสั่งนี้ถูกให้จาก CPU, ชาแนลที่ถูกสั่งนั้นจะยกเลิกการ transfer process ของมัน. มันจะเคลียรื EB, PB และ ST และเคลื่อนไปสู่ Disable state.  มันเซต SS[2:0]=010 และแจ้งให้ทราบถึงการ transfer ของชาแนลที่ถูกบังคับหยุดนั้น ถ้า unsuccessful transfer completion interrupt ถูกเปิดใช้งานไว้ก่อนแล้วโดย EI, an interrupt จะเกิดขึ้น. BC, TC, DMACSA และ DMACDA ซึ่งการ reload ไม่ได้ระบุไว้จะคงค่าเซตที่เวลาที่การ transfer ได้ถูกยกเลิก

   หลังจากคำสั่งนี้ออกจาก CPU, การ transfer จะหยุดที่เวลาเมื่อชาแนลที่ถูกสั่งนั้นไม่กำลังกระทำการ transfer (ใน Transfer Gap ก่อน the transfer starts), ดังแสดงในตัวอย่างที่ 3 ใน Figure 4-2. ในกรณีของ a channel ใน Pause state, การ transfer จะหยุดลงทันที จะมีเวลาที่แตกต่างกัน(Transition state)ระหว่างการออกคำสั่งและการหยุด มันอาจใช้เวลาบ้างขึ้นอยู่กับการเซตของ BC. ดังนั้นการ transfer ใหม่ไม่สามารถถูกเซตหรือสตาร์ทในช่วงเวลานี้, ต้องแน่ใจเสมอว่าการทำงานได้หยุดลงก่อนที่จะเซตการ transfer ถัดไป

   ใกรณีของมีคำสั่งให้ปิดการใช้งาน all-channel operation, เวลาที่หยุดจะแปรถันขึ้นอยู่กับ the channel.ขณะที่ DS ถูกเซตเมื่อชาแนลทั้งหมดหยุด, ก็จะสามารถยืนยันได้ว่าชาแนลทั้งหมดได้หยุดลงแล้ว

   ถึงแม้ว่าคำสั่งนี้ออกจาก CPU, การ transfer อาจจะไม่ถูกบังคับหยุด และอาจจะเสร็จการ transfer โดยสมบูรณ์แทน เนื่องจากปัจจัยอย่างเช่น transfer mode (Burst/Block/Demand) และ transfer status (จำนวนของการ transfers ที่กระทำ, เวลาที่ออกคำสั่งปิดการใช้งานการทำงาน). ถ้า transfer error เกิดขึ้นก่อนที่การ transfer จะหยุด, error stop นำไปใช้กับการ transfer อีกด้วย

tha

7. Disable state / Post-transfer process(หลังขบวนการ transfer)
  SS ถูกอ่านจาก CPU เพื่อเช็คสถานะของการเสร็จสมบูรณ์ของการ transfer. CPU เคลียรื SS เพื่อเตรียมการสำหรับการ transfer ถัดไป. ถ้า interrupts ถูกเปิดใช้งานเอาไว้แล้ว, the interrupt signal จาก DMAC จะถูกถอดการถือสิทธิ์นั้นโดยการเคลียร์ SS.

   ในกรณีที่สำเร็จโดยสมบูรณ์, CPU รีเซต the transfer content, ตามที่ต้องการ. ถ้าแต่ละการโหลดซ้ำ(reload) ถูกระบุเอาไว้แล้ว, ค่าที่เซตก่อนการสตาร์ทการ transfer จะถูกโหลดซ้ำไปที่ BC, TC, DMACSA และ DMACDA. ถ้าแต่ละการโหลดซ้ำ(reload) ไม่ถูกระบุเอาไว้, BC และ TC จะถูกตั้งต้นที่ "0". DMACSA และ DMACDA แสดง address ของการ transfer ถัดไป

   ในกรณีของ error stop และ forced stop, BC, TC, DMACSA และ DMACDA ต้องถูกรีเซตเสมอ, เพราะว่ามันอาจจะมีค่าที่เซตไว้ ณ ทีเวลาที่มีการยกเลิกนั้น

   ถ้าการ transfer ถูกทำให้หยุดเนื่องจากคำสั่งปิดการใช้งาน all-channel operation, DE ถูกเซตให้เป็น "0"; ดังนั้นการ transfer ถัดไปจะต้องการคำสั่งเปิดการใช้งาน all-channel operation และคำสั่งเปิดการใช้งาน individual-channel operation.

tha

8. Transfer state / Transfer pause
    ถ้าคำสั่งที่ส่ง individual-channel operation ไปหยุดพักหรือคำสั่งที่ส่ง all-channel operation ไปหยุดพักถูกสั่งออกจาก CPU ไปยัง channel ใน Transfer state, การ transfer operation ของ channel(s) นั้นสามารถถูกส่งไปหยุดพัก (สำหรับการทำงานเมื่อมีคำสั่งที่ส่งให้การทำงานไปหยุดพักถูกสั่งออกมาไปหา a channel ใน Disable state, ดุ Step 11 ใน the software procedure).

   ถ้าคำสั่งที่ถูกให้จาก CPU, the relevant channel(s) นั้นจะค้างขบวนการ  transfer ไว้ชั่วคราว มันจะเซต SS=111 และแจ้งให้ทราบถึงการที่มันอยู่ใน Pause state. ในกรณีนี้  interrupt ไม่สามารถเกิดขึ้นได้

   หลังจากคำสั่งจาก CPU, การ transfer จะหยุดที่เวลาเมื่อ the relevant channel นั้นไม่กระทำการ transfer (ใน Transfer Gap ก่อนการสตาร์ทของการ transfer). จะมีช่วงเวลาที่แตกต่าง (Transition state) ระหว่างการออกคำสั่งและการหยุด มันอาจใช้เวลาช่วงหนึ่งขึ้นอยู่กับการเซต BC  ดู Figure 4-3

   ในกรณีของคำสั่งที่ส่งให้ all-channel operation ไปหยุดพัก, เวลาที่หยุดจะแปรผันขึ้นอยู่กับ channel นั้นๆ. ดังที่ DS ถูกเซตเมื่อชาแนลทั้งหมดหยุด, มันก็สามารถยืนยันได้ว่าชาแนลทั้งหมดได้หยุดลง. ดู Figure 4-3.

    ถึงแม้ว่าคำสั่งนี้ออกจาก CPU, การ transfer อาจจะไม่ถูกส่งไปหยุดพัก และอาจจะเสร็จการ transfer โดยสมบูรณ์แทน เนื่องจากปัจจัยอย่างเช่น transfer mode (Burst/Block/Demand) และ transfer status (จำนวนของการ transfers ที่กระทำ, เวลาที่ออกคำสั่งส่งให้การทำงานไปหยุดพัก). ถ้า transfer error เกิดขึ้นก่อนที่การ transfer จะหยุด, ทำให้ error stop มีผลต่อการ transfer อีกด้วย



แปลไปแปลมาร้อนชักจะแปรไม่ออกและดูฟุตบอลบ้าง เลยขาดช่วงขาดตอนไป เริ่มจะจับต้นชนปลายไม่ถูก กรุณาตรวจสอบความถูกต้องโดยการดู manual ภาษาอังกฤษเปรียบเทียบไปด้วยก็ดีครับ  ;D


tha

9. Pause state
   SS ถูกอ่านจาก CPU เพื่อยืนยันการหยุดพักของการ transfer. The SS ของ a channel ใน Pause state คือ "111". ขณะที่ใน state นี้, มันไม่สามารถถูกเคลียร์จาก CPU.

    แม้แต่ในระหว่างการหยุดพัก, the transfer content ไม่สามารถถูกระบุหรือเปลี่ยน (การเขียน DMACSA, DMACDA, DMACA[29:0] or DMACB[31:1]). ยิ่งกว่านั้นเมื่อ a channel ใน Pause state ถูกสั่งให้หยุดพัก, มันก็ยังคงอยู่ใน Pause state ต่อไป

tha

10. Pause state / Cancellation of transfer pause
    ถ้าคำสั่งให้เปิดใช้งาน individual-channel operation ถูกส่งไปถึง a channel ที่อยู่ใน Pause state ก่อนแล้วเนื่องจากคำสั่งที่ส่งให้ individual-channel operation ไปหยุดพัก, channel นั้นจะกลับคืนสู่ Transfer state. ถ้าคำสั่งให้เปิดใช้งาน all-channel operation ถูกส่งไปถึง channels ที่อยู่ใน Pause state ก่อนแล้วเนื่องจากคำสั่งที่ส่งให้ all-channel operation ไปหยุดพัก, channel เหล่านั้นจะกลับคืนสู่ Transfer state ถ้า the pause instructions ของทั้งคู่ถูกสั่งไว้ก่อนแล้่ว, ออกคำสั่งนี้จะยกเลิก  the pause instructions ของทั้งคู่นั้น

  หลังจากคำสั่งนี้, SS[2:0] ถูกเคลียร์เป็น "000" โดยทาง DMAC.

    ถ้าคำสั่งให้เปิดใช้งาน individual-channel operation และ  ถ้าคำสั่งให้เปิดใช้งาน all-channel operation ถุกออกมาใน Pause state, มันจะสั่งให้การหยุดพักถูกยกเลิกไป ถ้ามันถูกออกมาใน Disable state, ต้องเอาใจใส่ระมัดระวัง, เพราะมันอาจสั่งการ transfer ใหม่ให้สตาร์ทขึ้นมาได้. ดู Step 11 ใน the software procedure.

   รูปที่ 4-3 แสดงตัวอย่างของกรณีที่คำสั่งที่ส่ง all-channel operation ไปหยุดพัก. การอธิบายของรูปเป็นดังต่อไปนี้

   ณ ที่เริ่มแรก, ชาแนลทั้งสาม, ที่ชื่อว่า ch.0, ch.1 และ ch.2, กระทำการ transfer operations ของมันใน Block transfer mode. ch.2 สำเร็จการ transfer ของมันโดยสมบรณ์, เคลื่อนไปสู่ Disable state และเซต SS=101. จากนั้น, ch.0 และ ch.1 กระทำการ transfers สลับกันไป

   ถ้าคำสั่งที่ส่ง all-channel operation ไปหยุดพักถูกออกมาจาก CPU ที่จุดนี้, ใช้การทำงานดังต่อไปนี้. ตามที่ ch.0 อยู่ภายใต้เวลา Transfer Gap, มันเคลื่อนไปสู่ Pause state โดยทันทีและเซต SS=111. ตามที่ ch.1 อยู่ในตอนกลางของ transfer operation, มันกระทำการ transfer จนกระทั่งถึงเวลาของ Transfer Gap ถัดไป, และจากนั้นเคลื่อนไปสู่ Pause state และเซต SS=111. ตามที่ ch.2 อยู่ใน Disable state, มันยังคงอยู่ใน Disable state ปราศจากการเปลี่ยน SS. DS ถูกเซต, เมื่อชาแนลทั้งหมดหยุดการทำงานของมัน

  ต่อไป,  ถ้าคำสั่งให้เปิดใช้งาน all-channel operation (คำสั่งที่ยกเลิกการหยุดพัก) ถูกออกมาจาก CPU,  ใช้การทำงานดังต่อไปนี้. ch.0 และ ch.1 กลับคืนสู่ Transfer state และเคลียร์ SS[2:0] เป็น "000". ตามที่ ch.2 อยู่ใน Disable state (DE=1, EB=0), มันยังคงอยู่ใน state นั้นโดยปราศจากการสตาร์ทการทำงาน. เพราะการหยุดพักของชาแนลทั้งหมดได้ถูกยกเลิกแล้ว, DS ถูกรีเซต.