วันศุกร์ที่ 13 พฤศจิกายน พ.ศ. 2558

DIGITAL ELECTRONICS WEEK#12

สิ่งที่ได้เรียนรู้
  • I2C สามารถเชื่อมต่อ Slave ได้เป็นจำนวนมาก ใน BUS เดียวกัน โดยใช้สายเพียงแค่ 2 เส้น คือ
    • SDA = DATA
    • SCL = CLOCK ( โดย Clock ถูกควบคุมด้วย Master )
  • มี Master หลายตัวใน BUS เดียวกันได้
  • ข้อความที่ส่งแบ่งเป็น 2 ชนิดคือ
    • Address frame ส่งเพียงเฟรมเดียวเพื่อระบุ Slave ที่ต้องการคุยด้วย
    • Data frame ส่งได้หลาย frame เพื่อระบุข้อมูลที่ต้องการส่ง
Lab 5 เป็นแลปที่ต้องใช้ IC I2C EEPROM เพื่อเก็บและ อ่านข้อมูล โดยให้สามารถทางานได้ 2 modeคือ mode เกบค่า และ mode อ่านค่า โดยมี Switch 1 ตัวในการเปลี่ยน mode
  • การส่งข้อมูล - รับเป็นจำนวน 7bits จากการอ่านค่าของ Switch และใช้การกด debounce switch สำหรับการส่งข้อมูลแต่ละครั้ง
  • การรับข้อมูลจาก EEPROM - อ่านค่าจาก EEPROM เป็นจำนวน 7 bits แล้วทำการแสดงค่าไปบน LED



  • ปัญหาที่พบจากการทำ LAB
    • ไม่สามารถส่งและอ่านค่าจาก IC EEPROM ได้ เพราะขา SCL และ SDAไม่ได้ต่อ Pull up
    • ตอนแรกพยายามใช้  Handtek ต่อกับโปรแกรม Logic เพื่อศึกษาการส่งและอ่านข้อมูล จาก EEPROM แต่โปรแกรมไม่สามารถ connect กับ Handtek ได้
โหลดโปรแกรม LAB5 คลิกที่นี่

วันพฤหัสบดีที่ 5 พฤศจิกายน พ.ศ. 2558

DIGITAL ELECTRONICS WEEK#11

สิ่งที่ได้เรียนรู้
  • การรับ-ส่งข้อมูลโดย SPI จะมี Master เพียงตัวเดียวและจะทำหน้าที่ส่ง Clock ลงบนสาย SCK
  • ข้อมูลที่ส่งไปยัง Slave จะส่งบนสาย MOSI ส่วนข้อมูลที่ Slave ส่งกลับมาให้ Master จะถูกส่งบนสาย MISO
*** หมายเหตุ การส่งข้อมูลจาก Slave กลับมาที่ Master ต้องใช้ Clock ด้วย โดย Master ต้องเป็นตัวส่ง ดังนั้น Master ต้องรู้ล่วงหน้าว่า Slave จะคืนค่ามากี่ไบต์เพื่อที่จะสร้าง Clock บนสาย SCK ได้เหมาะสม ***
  • ข้อดีของ SPI
    • เร็วกว่าการส่งแบบ Asynchronous serial
    • สามารถมี Slave ได้หลายตัว
  • ข้อเสียของ SPI
    • ใช้สายสัญญาณเยอะ
    • ต้องรู้จำนวนข้อมูลที่จะรับส่งล่วงหน้า
    • Master จะต้องควบคุมการสื่อสารเองทั้งหมด
Lab 4 เป็นการสร้างคลื่นสัญญาณ Sine Wave ส่งการสื่อสารแบบ SPI โดยผ่าน IC DAC (MCP4922-E/P) โดยกำหนด Amplitude และความถี่เอง

จะได้สมการ y = (sin(i)+1)*(2000)
โดยที่ i จะเพิ่มขึ้น 0.0001 ทั้งๆรอบของการส่งข้อมูล
  • โดยแนวคิดที่ใช้คือ Sine Wave จะเกิดขึ้นได้คือการน้ำค่า Sine ของมุมตั้งแต่ 0-360 องศามาพลอตเป็นกราฟโดยการเปลี่ยนค่ามุมทีละน้อยๆเพื่อที่จะให้กราฟที่ออกมานั้นละเอียดที่สุด
  • ทำการบวกค่า Sine แต่ละค่าด้วย 1 เพราะถ้าไม่บวกด้วย 1 จะทำให้กราฟมองเห็นเฉพาะค่าในฝั่งบวก
  • และทำการใส่ตัวคูณเข้าไปเพื่อทำให้ค่าของ Sine แต่ละค่ามีแอมพลิจูดที่สูงขึ้นทำให้มองเห็นกราฟได้ง่ายขึ้น
  • ปัญหาที่พบจากการทำ LAB
    • มองไม่เห็นค่า Sine ในฝั่งลบ จึงทำการบวกค่า Sine ทุกค่าด้วย 1 เพื่อแก้ปัญหานี้

    • มองไม่เห็นกราฟเนื่องจากไม่ใส่ ตัวคูณเพื่อเพิ่ม Amplitude ของกราฟ
โหลดโปรแกรม LAB4 คลิกที่นี่

วันพุธที่ 4 พฤศจิกายน พ.ศ. 2558

DIGITAL ELECTRONICS WEEK#10

สิ่งที่ได้เรียนรู้
  • Parallel Communication ส่งข้อมูลหลายๆบิตในเวลาเดียวกัน
  • Serial Communication ส่งข้อมูลทีละบิตในหนึ่งช่วงเวลา
  • การส่ง Serial Communication ต้องมีโปรโตคอลที่เหมือนกันจึงจะสื่อการกันรู้เรื่อง คือต้องมี
    • Buad rate
    • Data bits
    • Synchronization bits
    • Paraty bits
  • ที่เหมือนกัน 
Lab 3 เป็นการส่งข้อมูลผ่าน Serial Communication ผ่าน Serial Monitor โดยโจทย์ในสัปดาห์นี้คือการให้ Nucleo สื่อสารกับ computer แล้วทำโปรแกรมออกมาเป็น 2 Menu

  • Menu ที่ 1 กดเพื่อเข้าสู่การทํางาน mode ที่ 1 การสั่งงานไฟวิ่ง LED 8ดวง 
เมื่อเข้าสู่ mode นี้ระบบจะรอรับคําสั่งจากแป้นพิมพ์3 ตัวคือ a,s,d
เมื่อกด a‐‐>ไฟ LED8 ดวงจะทํางานใน pattern โดยจะเป็นชุดไฟกระพริบสลับกัน
เมื่อกด d‐‐>ไฟ LED8ดวงจะทํางานในอีก pattern โดยจะเป็นไฟวิ่งจากขวาไปซ้าย
เมื่อกด s‐‐>ไฟ LED ทั้ง 8ดวงจะหยุดทํางาน และออกจาก Mode 1 กลับสู่ Menu หลักรอรับคําสั่ง ต่อไป 

  • Menuที่ 2 กดเพื่อเข้าสู่การทํางาน mode ที่ 2 อ่านสถานะสวิตซ์ logic input 1 bits 
ใน mode นี้ ระบบจะทําการอ่านสถานะของสวิตซ์ D0 บนบอร์ด NX‐100 และแสดงสถานะบน Serial monitor หากสวิตซ์อยู่ตําแหน่ง OFF จะแสดงเลข 0 หากสวิตซ์อยู่ตําแหน่ง ON จะแสดงเลข 1

  • ปัญหาที่พบจากการทำ LAB
    • การใช้ Switch : Case ทำให้การทำ loop ยากขึ้นในตอนแรกไม่สามารถทำให้ไฟกระพริบต่อเนื่องได้ จึงเปลี่ยนมาใช้เป็น loop while แทน
    • ค่าจาก switch ออกมามั่ว และไฟกระพริบตลอดเวลาเหมือนไฟจะเสีย เนื่องจากลืมต่อ GND ระหว่าง NX-100 และ Nucleo



โหลดโปรแกรม LAB3 คลิกที่นี่