Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - tha

Pages: [1] 2 3 ... 104
1
ผมก็เพิ่งจะเล่นได้ไม่ถึงปี ผมใช้ตัวนี้ครับ IDE ใช้
AVR Studio 4.17 http://www.microchip.com/avr-support/avr-and-sam-downloads-archive เอ๊ะเป็นของ Microchip แล้วเร๊อะ ท่าน Wlasoi
ตัว compliler ใช้ WINAVR เป็น GCC
http://winavr.sourceforge.net/download.html
เป็นถ้าคล่องแล้ว น่าจะดีกว่า Arduio นะครับ

2
15.9.1. MCU Status Register
ในการใช้ประโยชน์ the Reset Flags เพื่อระบุ a reset condition, ผู้ใช้ควรอ่านและจากนั้นรีเซ็ท the MCUSR ให้เร็วที่สุดเท่าที่จะเป็นไปได้ในโปรแกรม ถ้ารีจิสเตอร์ถูกเคลียร์ก่อนการรีเซ็ตอื่นเกิดขึ้น แหล่งรีเซ็ตสามารถถูกตรวจพบโดยการตรวจสอบ the Reset Flags.
เมื่อระบุที่อยู่ I/O Registers ราวกับเป็น data space โดยใช้ LD and ST instructions, การจัดให้มีระยะชดเชยต้องถูกใช้ เมื่อใช้ the I/O specific commands IN and OUT, ระยะ the offset ถูกลดลงไป 0x20, เป็นผลให้ an I/O address offset อยูภายใน 0x00 - 0x3F.



Bit 3 – WDRF: Watchdog System Reset Flag
บิทนี้ถูกเซ็ทถ้า a Watchdog System Reset เกิดขึ้น. บิทนี้ถูกรีเซ็ทโดย a Power-on Reset, หรือโดยการเขียน '0'ไปยังมัน.

Bit 2 – BORF: Brown-out Reset Flag
บิทนี้ถูกเซ็ทถ้า a Brown-out Reset เกิดขึ้น. บิทนี้ถูกรีเซ็ทโดย a Power-on Reset, หรือโดยการเขียน '0'ไปยังมัน.

Bit 1 – EXTRF: External Reset Flag
บิทนี้ถูกเซ็ทถ้า an External Reset เกิดขึ้น. บิทนี้ถูกรีเซ็ทโดย a Power-on Reset, หรือโดยการเขียน '0'ไปยังมัน.

Bit 0 – PORF: Power-on Reset Flag
บิทนี้ถูกเซ็ทถ้า a Power-onl Reset เกิดขึ้น. บิทนี้ถูกรีเซ็ทโดยการเขียน '0'ไปยังมันเพียงอย่างเดียวเท่านั้น.

ปล. หมู่นี้ตาไม่ค่อยดี ตาขวาพร่า ไปลอกตาก็ไม่ได้ ติดเป็นเบาหวาน เลยไม่ค่อยจะได้แปล

3
ไม่ลองสอบถามไปทาง ETT ส่งกลับไปแก้ได้ป่าว?

4
ตัวอย่างต่อไปนี้แสดงฟังก์ชันสำหรับการปิด the Watchdog Timer. ตัวอย่างทึกทักเอาว่า interrupts ถูกควบคุม (เช่นโดยการปิดใช้งาน interrupts globally(โดยรวม)) ดังนั้นไม่มี interrupts จะเกิดขึ้นในระหว่างการปฏิบัติของฟังชั่นเหล่านี้.



หมายเหตุ: หาก Watchdog เปิดการใช้งานโดยไม่ตั้งใจตัวอย่างเช่นโดย a runaway pointer หรือ brown-out condition, the device จะถูกรีเซทและ the Watchdog Timer จะยังคง enabled. หาก the code ไม่ได้ set up ให้รับมือกับ the Watchdog, นี้อาจนำมาซึ่งการวนลูปอย่างไม่รู้จบของ timeout resets. เพื่อหลีกเลี่ยงปัญหานี้ ซอฟต์แวร์แอ็พพลิเคชันควรเคลียร์ the Watchdog System Reset Flag (WDRF) และ the WDE control bit ในการเริ่มต้นงานประจำแม้ว่า Watchdog ไม่ได้ใช้งาน

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการเปลี่ยนค่าการหมดเวลาของ the Watchdog Timer.



หมายเหตุ: The Watchdog Timer ควรถูกรีเซ็ทก่อนการเปลี่ยนของ the WDTCSR.WDP bits, เนื่องจากการเปลี่ยนแปลงใน the WDTCSR.WDP bits สามารถเป็นผลใน a time-out เมื่อสวิทช์ไปใช้ระยะเวลาการหมดเวลาที่สั้นลง (a shorter time-out period)

5
The Watchdog always on (WDTON) fuse, ถ้าโปรแกรม, จะฟอร์ซให้ the Watchdog Timer เป็น System Reset mode. ด้วย the fuse ที่โปรแกรม the System Reset mode bit (WDE) and Interrupt mode bit (WDIE) ถูกล็อคเป็น 1 และ 0 ตามลำดับ. เพื่อให้มั่นใจถึงความปลอดภัยของโปรแกรมยิ่งขึ้น, การปรับเปลี่ยนการตั้งค่า the Watchdog  ต้องเป็นไปตามลำดับเวลาที่กำหนด ลำดับสำหรับการเคลียร์ WDE และการเปลี่ยนการกำหนดค่าหมดเวลาเป็นดังต่อไปนี้ :

1. ในการดำเนินการเดียวกัน, เขียนลอจิก "1" ไปยัง the Watchdog change enable bit (WDCE) และ Watchdog System Reset Enable (WDE) ใน Watchdog Timer Control Register (WDTCSR.WDCE และ WDTCSR.WDE). ลอจิก "1" ต้องถูกเขียนไปยัง WDTCSR.WDE โดยไม่คำนึงถึงค่าก่อนหน้าของ the WDTCSR.WDE
2. ภายใน 4 clock cycles ถัดไป, เขียน the WDTCSR.WDE และกลุ่ม Watchdog prescaler bits group (WDTCSR.WDP) ตามที่ต้องการ, แต่ the
WDTCSR.WDCE ถูกเคลียร์ด้วย. นี้ต้องถูกทำใน one operation.

ปล. ยังไม่แน่ใจตรง but with the WDTCSR.WDCE cleared หมายถึงถูกเคลียร์โดยอัตโนมัติไปด้วยใช่หรือไม่

6
ใน Interrupt mode, the WDT ให้ an interrupt เมื่อ the timer หมดเวลาลง. interrupt สามารถถูกใช้เพื่อปลุก the device จาก sleep-modes, และเป็นดัง a general system timer ได้อีกด้วย. ตัวอย่างหนึ่งคือเพื่อจำกัดเวลาสูงสุดที่ยอมได้สำหรับการดำเนินงานบางอย่าง, ให้ an interrupt เมื่อการทำงานได้รันยาวนานกว่าที่คาดไว้. In System Reset mode, the WDT ให้ a reset เมื่อ the timer หมดเวลาลง.  โดยปกติจะใช้เพื่อป้องกันไม่ให้ system hang-up(วางลง,แฮ๊ง) ในกรณีของ runaway code. โหมดที่สาม, Interrupt and System Reset mode, รวมสองโหมดก่อนหน้าโดยอันดับแรกให้ an interrupt และจากนั้นจึงสวิทช์ไปยัง System Reset mode. โหมดนี้จะช่วยให้สามารถปิดระบบได้อย่างปลอดภัยโดยการบันทึกพารามิเตอร์ที่สำคัญก่อนที่จะรีเซ็ตระบบ

8
15.8. Watchdog Timer
ถ้า the watchdog timer ไม่ถูกต้องการใช้ใน the application, the module ควรถูก turned off. ถ้า the watchdog timer ถูก enabled, มันจะถูก enabled ใน sleep modes ทั้งหมดและดังนั้นจึงกินพลังงานเสมอ. ใน the deeper(ลึกๆนานๆ) sleep modes, นี้จะมีส่วนร่วมอย่างมากต่อ the total current consumption.
โปรดดู Watchdog System Reset เพื่อดูรายละเอียดเกี่ยวกับการกำหนดค่า the watchdog timer.

15.8.1. Features
• สัญญานนาฬิกาจาก separate(ที่แยกต่างหาก) On-chip Oscillator
• สามโหมดการทำงาน :
  – Interrupt
  – System Reset
  – Interrupt and System Reset
• Time-out period ที่สามารถเลือกได้จาก 16ms ถึง 8s
•  Hardware fuse Watchdog เป็นไปได้ที่จะออนเสมอ (WDTON) สำหรับ fail-safe mode

15.8.2. Overview
The device มี an Enhanced Watchdog Timer (WDT). The WDT คือ a timer ที่นับรอบของ a separate(ที่แยกต่างหาก) on-chip 128kHz oscillator. The WDT ให้เกิด an interrupt หรือ a system reset เมื่อการนับถึงค่าการหมดเวลาที่กำหนด. ในโหมดการทำงานปกติ, มันมีความจำเป็นที่ระบบจะใช้คำสั่ง the Watchdog Timer Reset (WDR) เพื่อรีสตาร์ท the counter ก่อนที่จะถึง the time-out value . ถ้า the system ไม่เริ่มต้นนับ the counter ใหม่, an interrupt หรือ system reset ก็จะถูกปล่อยออกมา.



ปล. เดี๋ยวจะลองทำตัวอย่าง watchdog time ดู แต่ต้องให้อธิบายแต่ละบิทเสร็ฐก่อนเพื่อความเข้าใจบิทและ library ตอนนี้ก็ลองเสริจกูเกิ้ลด้วย avr watchdog timer เพื่อหาตัวอย่างดูไปพรางๆก่อนนะ  ;)

Pages: [1] 2 3 ... 104