

อุปกรณ์วัดบางชนิดไม่ได้ส่งค่าที่มีหน่วยพร้อมใช้กลับมา แต่ส่งสัญญาณเป็นพัลส์ให้บอร์ดนับต่อ เช่น จำนวนรอบหรือการเคลื่อนผ่านแต่ละช่วง พอเห็นตัวนับเพิ่มได้ก็เหมือนว่าส่วนรับข้อมูลสำเร็จแล้ว เหลือเพียงนำเลขไปแสดงบนหน้าจอ
แต่เลขที่นับได้ยังต้องมีความหมายประกอบ เรากำลังนับขอบขาขึ้นอย่างเดียวหรือทั้งสองขอบ นับมาตั้งแต่เปิดเครื่องหรือเฉพาะช่วงล่าสุด และหนึ่งรอบของอุปกรณ์สร้างสัญญาณกี่ครั้ง หากส่วนนี้ไม่ตรงกัน ตัวเลขอาจเพิ่มอย่างสม่ำเสมอแต่แปลงเป็นหน่วยผิดอยู่ตลอดก็ได้
ก่อนใช้ยอดนับเป็นค่าความเร็วหรือปริมาณ จึงควรแยกเส้นทางจากสัญญาณถึงหน่วยปลายทางให้ตรวจได้ทีละขั้นครับ
Pulse Counter หรือ PCNT ของ ESP32 ใช้นับการเปลี่ยนขอบสัญญาณตามการตั้งค่า โดยกำหนดได้ว่าจะเพิ่ม ลด หรือไม่เปลี่ยนค่าบนขอบแต่ละชนิด บางงานยังใช้สัญญาณระดับอีกเส้นประกอบการตัดสินทิศทางได้
หากตั้งนับทั้งขาขึ้นกับขาลง แต่สูตรแปลงคิดว่านับเฉพาะขาขึ้น ยอดที่ได้ก็มีความหมายต่างกันทันที จึงควรเขียนให้ชัดว่าหนึ่งหน่วยการนับแทน edge แบบไหน ไม่ใช้คำว่าพัลส์โดยยังไม่ได้ตกลงว่ากำลังนับช่วงสัญญาณหรือขอบของมัน
ส่วนจำนวนต่อหนึ่งรอบหรือหนึ่งหน่วยงานต้องมาจากคุณสมบัติอุปกรณ์และการต่อจริง ไม่เดาจากชื่อรุ่นกว้างๆ หรือถือว่าเซนเซอร์ทุกตัวให้หนึ่งพัลส์ต่อรอบ การที่ PCNT อ่านค่าได้ไม่ได้ทำขั้นยืนยันความสัมพันธ์เชิงกลแทนเรา

ก่อนเข้าตัวนับ ต้องตรวจระดับแรงดัน ชนิดเอาต์พุตและการดึงระดับตามเซนเซอร์กับขา GPIO ที่เลือก อุปกรณ์ที่ใช้ไฟเลี้ยงคนละระดับไม่ได้แปลว่าส่งสัญญาณเข้าขาบอร์ดได้ตรงๆ เสมอไป ต้องอ่านวงจรเอาต์พุตกับข้อจำกัดของชิปก่อนเชื่อม
สายยาว สัญญาณรบกวนหรือขอบที่ไม่สะอาดอาจทำให้เกิดการเปลี่ยนที่ไม่ใช่งานจริง การไปแก้สูตรหารที่ปลายทางไม่ช่วยบอกว่าขอบใดควรถูกนับ เพราะความต่างเริ่มอยู่ก่อนส่วนคำนวณแล้ว
PCNT มี glitch filter สำหรับละเลยพัลส์ที่สั้นกว่าเงื่อนไขที่ตั้งไว้ แต่ต้องเลือกจากทั้งสัญญาณจริงที่ต้องรักษาและสิ่งรบกวนที่อยากกรอง หากตั้งยาวเกินไป พัลส์ที่ถูกต้องแต่สั้นก็อาจถูกตัดไปด้วย จึงไม่ใช่การเปิดกรองแล้วรับรองว่าสัญญาณทุกชนิดจะถูกต้องเอง
ตัวกรองยังสัมพันธ์กับ clock และการจัดการพลังงานของ peripheral เอกสาร driver อธิบายการใช้ power-management lock เพื่อรักษาเงื่อนไขที่เกี่ยวข้อง จึงควรตรวจรุ่น driver กับโหมดพลังงานร่วมด้วย ไม่คัดลอกค่าตัวกรองแล้วถือว่าพฤติกรรมคงเดิมเมื่อเปลี่ยนการตั้งค่าระบบ
ถ้าต้องการความถี่ของเหตุการณ์ที่นับ แนวคิดคือดูจำนวนที่เพิ่มภายในช่วงหนึ่งแล้วหารด้วยระยะเวลาจริงของช่วงนั้น โดยใช้หน่วยให้ตรงกัน เช่น จำนวนครั้งต่อวินาที ขอบเขตเวลาจึงสำคัญพอๆ กับยอดตัวนับ
หาก task ตั้งใจตื่นทุกช่วงเวลาหนึ่งแต่ทำงานช้ากว่าที่คาด การใช้ค่าช่วงเวลาที่เขียนไว้แทนเวลาที่ผ่านจริงอาจทำให้ผลคลาดเคลื่อน ควรเก็บเวลาของจุดอ่านและนิยามว่าค่าที่รายงานเป็นค่าเฉลี่ยระหว่างจุดใด ไม่เรียกเป็นค่าขณะเดียวโดยไม่บอกช่วง
ช่วงสั้นตอบสนองต่อการเปลี่ยนได้เร็ว แต่ถ้างานเกิดน้อยก็อาจมีรอบที่นับไม่ถึงหนึ่งเหตุการณ์แล้วค่ากระโดด ส่วนช่วงยาวช่วยรวมข้อมูลมากขึ้นแต่เปลี่ยนตามช้าลง การเลือกจึงต้องสัมพันธ์กับจังหวะของอุปกรณ์และงาน ไม่ใช้ความเรียบของเส้นกราฟเป็นหลักฐานว่าค่าแม่นขึ้นเสมอไป
ถ้าจะเปลี่ยนความถี่เป็นรอบต่อนาทีหรืออัตราการไหล ยังมีตัวคูณหรือความสัมพันธ์ของอุปกรณ์อีกชั้นหนึ่ง ควรแยกสูตรแต่ละขั้นและที่มาของค่าประกอบ เพื่อให้ตรวจได้ว่าผิดจากการนับ เวลา หรือการแปลงหน่วย

ตัวนับไม่ได้มีช่วงค่าไม่จำกัด เอกสาร ESP-IDF5.4 สำหรับ ESP32 อธิบายว่าค่าฮาร์ดแวร์จะเริ่มศูนย์เมื่อถึงขอบ high หรือ low ที่กำหนด หากอ่านเพียงค่าล่าสุดโดยไม่ตามการข้ามขอบ ยอดสะสมระยะยาวก็อาจเสียความหมายได้
Driver มีแนวทางชดเชยผ่าน accum_count ร่วมกับ watch point ของขอบที่กำหนด ไม่ใช่เปิด flag อย่างเดียวแล้วละขั้นที่เอกสารต้องการ ส่วนการ clear count จะล้างค่าที่สะสมด้วย จึงต้องรู้ว่าคำสั่งเริ่มช่วงใหม่ไปเปลี่ยนหลักฐานยอดระยะยาวตรงไหนบ้าง
การอ่านแล้วล้างเป็นสองขั้นตอนก็ต้องคิดถึงขอบของช่วงนับ เพราะสัญญาณยังอาจเข้ามาระหว่างขั้นตามการทำงานจริง หากงานต้องรักษาความต่อเนื่อง อาจออกแบบให้อ่านยอดสะสมแล้วหาผลต่างภายใต้กติกาที่รองรับขอบเขตตัวนับ แทนการล้างโดยยังไม่ได้ตรวจช่วงรอยต่อ
ยอดรวมใช้ตอบว่าเกิดงานมาเท่าไร ส่วนอัตราล่าสุดใช้ตอบว่าช่วงนี้งานเกิดเร็วแค่ไหน การเก็บแยกทำให้ไม่ต้องล้างยอดรวมเพียงเพื่อคำนวณกราฟรอบล่าสุด และช่วยอธิบายผลที่ค้างอยู่หลังหยุดอุปกรณ์ได้ชัดขึ้น
แต่ยอดสะสมในหน่วยความจำก็อาจหายเมื่อบอร์ดเริ่มใหม่ ต้องระบุว่ามันสะสมมาตั้งแต่เมื่อใด หากต้องรักษาข้ามการรีสตาร์ตจะมีเรื่องการบันทึกและการกู้สถานะอีกชั้น ไม่ถือว่าใช้ PCNT แล้วได้ตัวนับถาวรที่ครบทุกเหตุการณ์โดยอัตโนมัติ
การตรวจควรใช้สัญญาณอ้างอิงที่รู้จำนวนและจังหวะได้ แล้วลองทั้งช่วงช้า ช่วงเร็วและการข้ามขอบ พร้อมตรวจค่ากรองกับขอบเวลาตามที่ตั้งไว้ หากต้องอ้างความแม่นของหน่วยปลายทางก็ต้องมีขั้นเทียบกับปริมาณจริงด้วย บทนี้ยังไม่มีผลจากเครื่องกำเนิดสัญญาณหรือการคาลิเบรตอุปกรณ์มาแสดง
ในงานที่ตั้งให้ทั้งเพิ่มและลด ค่า signed ที่อ่านได้อาจแทนการเคลื่อนสุทธิ ไม่ใช่จำนวนขอบทั้งหมดที่เคยเข้ามา หากต้องการยอดกิจกรรมรวมโดยไม่สนทิศทาง ก็ต้องมีนิยามการนับที่รองรับคำถามนั้นแยก ไม่ใช้ค่าสุทธิที่เป็นศูนย์มายืนยันว่าอุปกรณ์ไม่ได้เคลื่อนเลย
การนับพัลส์ให้ใช้ต่อได้ต้องมีสัญญาของ edge ช่วงเวลาและหน่วย พร้อมดูแลวงจรรับกับการข้ามขอบตัวนับ เมื่อแยกยอดสะสมออกจากอัตราล่าสุดและตรวจด้วยข้อมูลอ้างอิง เราจะตามที่มาของค่าได้ครบกว่าเลขที่เพิ่มบนหน้าจอ ส่วนความแม่นของงานจริงยังต้องยืนยันจากการวัดตามอุปกรณ์และเงื่อนไขใช้งานนั้น