ข้อผิดพลาดที่หลากหลายที่น่ารำคาญเป็นพิเศษในระบบที่ควบคุมด้วยไมโครโปรเซสเซอร์คือให้ไมโครโปรเซสเซอร์ทำการรีเซ็ตโดยไม่คาดคิด เครื่องมือสำคัญสำหรับการดีบักปัญหาประเภทนี้คือรายการสาเหตุที่เป็นไปได้ สิ่งใดที่ทำให้ไมโครคอนโทรลเลอร์รีเซ็ตโดยไม่คาดคิด
ข้อผิดพลาดที่หลากหลายที่น่ารำคาญเป็นพิเศษในระบบที่ควบคุมด้วยไมโครโปรเซสเซอร์คือให้ไมโครโปรเซสเซอร์ทำการรีเซ็ตโดยไม่คาดคิด เครื่องมือสำคัญสำหรับการดีบักปัญหาประเภทนี้คือรายการสาเหตุที่เป็นไปได้ สิ่งใดที่ทำให้ไมโครคอนโทรลเลอร์รีเซ็ตโดยไม่คาดคิด
คำตอบ:
สำหรับชิป PIC และ dsPIC ฉันได้ตรวจสอบสาเหตุของการรีเซ็ตที่ไม่คาดคิดต่อไปนี้
ฮาร์ดแวร์:
ซอฟต์แวร์:
ใน dsPIC บางตัว RCON register จะเก็บบิตที่ระบุสาเหตุของการรีเซ็ต สิ่งนี้มีประโยชน์มากเมื่อทำการดีบัก
RESET-pin จะต้องขับเคลื่อนอย่างถูกต้องโดยการตรวจสอบวงจรรีเซ็ตแรงดันสูง / ต่ำและสร้างสัญญาณรีเซ็ตที่ยาวพอ เมื่อนึกถึงประสบการณ์ของฉันในการรีเซ็ตฮาร์ดแวร์ที่ไม่สามารถควบคุมได้นั้นมาจาก:
ความเป็นไปได้เพิ่มเติมอย่างหนึ่งที่ฉันไม่เห็นในรายการนี้คืออุปกรณ์ที่รองรับ ICSP หากมีการใช้ pull ups ไม่เพียงพอบนบรรทัดที่ทริกเกอร์ในโหมดการเขียนโปรแกรมอนุกรมวงจรบางครั้งก็เป็นไปได้ที่จะเข้าสู่โหมดนั้นแบบสุ่ม สิ่งนี้นำไปสู่การรีเซ็ตช่วงเวลาสั้น ๆ ในภายหลังเมื่อไม่มีการอัปเดตโปรแกรมไปยังสายตัวรับอนุกรมที่กำหนด ฉันสงสัยว่ากำลังจ้องจับผิดตัวจับเวลาจ้องจับผิดภายในจะถูกรีเซ็ตหากเริ่ม ICSP และไม่มีการส่งข้อมูลการเขียนโปรแกรม นี่เป็นความผิดพลาดที่ฉันทำและใช้เวลาในการค้นหากับ 16F876
ตรวจสอบให้แน่ใจว่าคุณกำลังใช้ชิปตรรกะ CMOS หรือ TTL ในวงจรของคุณว่ามีตัวเก็บประจุแยกตัวเพียงพอใน Vdd และกราวด์ (ปกติคือ 0.1 ยูเอฟ) ฉันใช้ CD4021 ในการออกแบบและเมื่อมีการใช้งานดูเหมือนว่ามันเป็นสาเหตุที่ขัดขวางบางอย่างที่ทำให้ไมโครโปรเซสเซอร์เริ่มต้นใหม่ จากนั้นวงจรจะทำซ้ำ นี่เป็นเหตุผลที่ควรวางลำดับการทดสอบที่ชัดเจน (เช่นการเปิดและปิด LED สองสามครั้ง) ที่จุดเริ่มต้นของรหัสของคุณเพื่อให้คุณรู้ว่าไมโครโปรเซสเซอร์ทำงานและประมวลผลโค้ด
นี่คือหนึ่งในสิ่งที่หายากที่อาจปรากฏขึ้น:
ฉันมีโครงการที่เกี่ยวข้องกับไมโครคอนโทรลเลอร์และมันจะรีเซ็ตเป็นระยะ ๆ เรื่องสั้นสั้นปรากฎว่ามีตัวเลือกบางอย่างที่ต้องเปิดใช้งานหรือปิดใช้งานไม่เช่นนั้นอาจรีเซ็ตได้ ฉันพบสิ่งนี้ด้วยการอ่านข้อมูลที่ผิดพลาดหลังจากยอมแพ้ทุกอย่างอื่น
ตอนนี้ฉันทำให้มันเป็นนิสัยที่จะอ่าน errata ก่อนที่ฉันจะตัดสินใจใช้ชิปเพื่อรู้ว่าฉันกำลังทำอะไรอยู่และถ้ามันเป็นสิ่งที่ฉันสามารถจัดการได้ น่าเสียดายที่หลังจากสำเร็จการศึกษาฉันไม่ได้มีใครให้ความรู้ฉันเกี่ยวกับการปฏิบัติร่วมกันดังนั้นการเรียนรู้ในโลกแห่งความเป็นจริงของฉันได้ผ่านความล้มเหลวและความยุ่งยาก