LAB 5 Final :: THE INTER-INTREGRATED CIRCUIT PROTOCOL (I2C)
จากโจทย์ที่ได้รับมอบหมาย
จากโจทย์ให้ทำการเชื่อมต่อ NucleO กับ IC Eeprom 24LC64 เพื่อทำการอ่านค่าและเก็บค่าข้อมูล โดยที่ให้มันสามารถทำงานได้ทั้ง 2 mode คือ อ่านและเก็บข้อมูล
Mode เก็บข้อมูล
ให้ Nucleo อ่านค่า Digital 7 bits จาก Switch on/off จากบอร์ด nx-100 แล้วเก็บค่าไว้ที่ eeprom โดยการเก็บค่านั้นให้ใช้ Debounce Switch เพื่อเก็บข้อมูลลง eeprom
Mode อ่านข้อมูล
ให้ Nucleo อ่านข้อมูลที่เก็บใน eeprom มาแสดงผลบนหลอด LED 7 ดวง โดยการใช้ Debounce Switch เพื่ออ่านข้อมูลที่เก็บใน eeprom
สิ่งที่ได้เรียนรู้จากการทำ Lab ครั้งนี้
ก่อนทำการเขียนโปรแกรมนั้น ได้กำหนดไว้ว่า
ใช้ Switch D7 จากบอร์ด NX-100 เป็นตัวเปลี่ยนโหมด โดยกำหนดค่าว่า
ถ้าค่า D7 = 1 eeprom จะอยู่ในโหมดเก็บข้อมูล โดยการเก็บข้อมูลนั้น จะเก็บค่าที่อ่านจาก Switch D0-D6 มาเก็บไว้ที่ IC eeprom
ถ้าค่า D7=0 eeprom จะอยู่ในโหมดอ่านข้อมูล โดยการอ่านข้อมูลนั้น จะนำค่าที่อยู่ใน eeprom มาแสดงผลที่หลอด LED บนบอร์ด NX-100
เพื่อป้องกันการเก็บ/อ่าน ข้อมูลของ eeprom ที่มากเกินไปนั้น จึงกำหนดให้ปุ่ม Debounce Switch sw-2 เป็นตัวสั้งว่า เมื่อเราพร้อมที่จะเก็บ/อ่านข้อมูลนั้น เราจะต้องกดปุ่ม sw-2 1 ครั้งเพื่อทำการเก็บหรืออ่านข้อมูลนั้น
ในการเขียนโปรแกรมนั้น ในส่วนของ MODE เก็บข้อมูลนั้น เราก็ต้องทำการเลื่อน Switch D0-D6 ว่าจะให้มันจ่าย logic อะไรให้ nucleo และเมื่อจะทำการเก็บข้อมูลนั้น เราก็ต้องมากด Debownce sw-2 1 ครั้ง เพื่อสั่งให้ nucleo อ่านค่าของแต่ละ Switch และจากนั้นค่าที่ nucleo อ่านมานั้นก็จะถูกเก็บไว้ที่ IC eeprom
และในส่วนของ MODE อ่านข้อมูลนั้น ในครั้งแรกที่เขียนโปรแกรมนั้นได้ปัญหาว่าข้อมูลที่อ่านจาก eeprom สามารถอ่านข้อมูลได้เฉพาะข้อมูลอันดับแรกเท่านั้น ไม่สามารถอ่านข้อมูลที่เหลือได้ ทางกลุ่มเราจึงแก้ปัญหาโดยลองเก็บข้อมูลและอ่านข้อมูลเป็นแบบ Array ดู ผลปรากฏว่าอ่านข้อมูลได้ครบตามที่เขียนไว้ แต่รู้สึกว่ามันเป็นการเปลือง เลยกลับไปใช้การเก็บข้อมูลแบบ int แบบเดิม แต่คราวนี้แก้เพียงที่อยู่ที่จะอ่านข้อมูลนั้น ผลเลยว่า เมื่อนำมาทดสอบแล้วสามารถอ่านข้อมูลจาก IC eeprom ได้ครบทุกตัวและจากนั้นก็ให้ nucleo ทำการอ่านค่าจาก IC eeprom ไปแสดงผลบนหลอด LED ทั้ง 7 ดวงบนบอร์ด NX-100 โดยการอ่านค่าจาก IC นั้น เราก็ต้องมากด Debownce sw-2 ทุกๆครั้ง เพื่อไล่อ่านค่าใน eeprom ที่เก็บไว้ตามลำดับ
ในการอ่านค่านั้นทางกลุ่มได้เขียนไว้เป็น 2 รูปแบบคือ
1) จะอ่านค่าตามจำนวนที่เขียนไว้ เมื่ออ่านค่าได้ครบตามที่เขียนแล้วโปรแกรมจะทำการอ่านค่าแรกใหม่อีกครั้ง
2) เมื่อกดปุ่ม Reset บน NucleO ทุกครั้งๆ ก็จะอ่านค่าไปเรื่อยๆแบบไม่มีที่สิ้นสุด
ใช้ Switch D7 จากบอร์ด NX-100 เป็นตัวเปลี่ยนโหมด โดยกำหนดค่าว่า
ถ้าค่า D7 = 1 eeprom จะอยู่ในโหมดเก็บข้อมูล โดยการเก็บข้อมูลนั้น จะเก็บค่าที่อ่านจาก Switch D0-D6 มาเก็บไว้ที่ IC eeprom
ถ้าค่า D7=0 eeprom จะอยู่ในโหมดอ่านข้อมูล โดยการอ่านข้อมูลนั้น จะนำค่าที่อยู่ใน eeprom มาแสดงผลที่หลอด LED บนบอร์ด NX-100
เพื่อป้องกันการเก็บ/อ่าน ข้อมูลของ eeprom ที่มากเกินไปนั้น จึงกำหนดให้ปุ่ม Debounce Switch sw-2 เป็นตัวสั้งว่า เมื่อเราพร้อมที่จะเก็บ/อ่านข้อมูลนั้น เราจะต้องกดปุ่ม sw-2 1 ครั้งเพื่อทำการเก็บหรืออ่านข้อมูลนั้น
และนี่คือวีดีโอการทำงาน LAB_5 ของกลุ่มนะครับ^^
ในการเขียนโปรแกรมนั้น ในส่วนของ MODE เก็บข้อมูลนั้น เราก็ต้องทำการเลื่อน Switch D0-D6 ว่าจะให้มันจ่าย logic อะไรให้ nucleo และเมื่อจะทำการเก็บข้อมูลนั้น เราก็ต้องมากด Debownce sw-2 1 ครั้ง เพื่อสั่งให้ nucleo อ่านค่าของแต่ละ Switch และจากนั้นค่าที่ nucleo อ่านมานั้นก็จะถูกเก็บไว้ที่ IC eeprom
และในส่วนของ MODE อ่านข้อมูลนั้น ในครั้งแรกที่เขียนโปรแกรมนั้นได้ปัญหาว่าข้อมูลที่อ่านจาก eeprom สามารถอ่านข้อมูลได้เฉพาะข้อมูลอันดับแรกเท่านั้น ไม่สามารถอ่านข้อมูลที่เหลือได้ ทางกลุ่มเราจึงแก้ปัญหาโดยลองเก็บข้อมูลและอ่านข้อมูลเป็นแบบ Array ดู ผลปรากฏว่าอ่านข้อมูลได้ครบตามที่เขียนไว้ แต่รู้สึกว่ามันเป็นการเปลือง เลยกลับไปใช้การเก็บข้อมูลแบบ int แบบเดิม แต่คราวนี้แก้เพียงที่อยู่ที่จะอ่านข้อมูลนั้น ผลเลยว่า เมื่อนำมาทดสอบแล้วสามารถอ่านข้อมูลจาก IC eeprom ได้ครบทุกตัวและจากนั้นก็ให้ nucleo ทำการอ่านค่าจาก IC eeprom ไปแสดงผลบนหลอด LED ทั้ง 7 ดวงบนบอร์ด NX-100 โดยการอ่านค่าจาก IC นั้น เราก็ต้องมากด Debownce sw-2 ทุกๆครั้ง เพื่อไล่อ่านค่าใน eeprom ที่เก็บไว้ตามลำดับ
ในการอ่านค่านั้นทางกลุ่มได้เขียนไว้เป็น 2 รูปแบบคือ
1) จะอ่านค่าตามจำนวนที่เขียนไว้ เมื่ออ่านค่าได้ครบตามที่เขียนแล้วโปรแกรมจะทำการอ่านค่าแรกใหม่อีกครั้ง
2) เมื่อกดปุ่ม Reset บน NucleO ทุกครั้งๆ ก็จะอ่านค่าไปเรื่อยๆแบบไม่มีที่สิ้นสุด
และนี่คือไฟล์ Code ของกลุ่มครับ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น