มอนิเตอร์พอร์ทอนุกรม RS232 ด้วย PSoC
Using the PSoC microcontroller as RS232 Serial Port Monitor
วัตถุประสงค์
แสดงตัวอย่างการสร้างเครื่องมอนิเตอร์พอร์ทอนุกรมแบบ RS-232
ขั้นตอนการสร้าง
1. ให้รันโปรแกรม PSoC Designer แล้วทำการสร้างโปรเจคใหม่ โดยใช้ไมโครคอนโทรลเลอร์เบอร์ CY8C29466-24PXI ส่วน Main file ให้เลือกเป็นภาษา C
2. เมื่อเข้าสู่ PSoC designer ในหน้าแรกจะเป็น User Module Selection View ในหน้าต่างนี้ให้เลือกใช้โมดูล แอลซีดี (LCD) และ UART
3. หลังจากเลือกโมดูลต่างๆแล้ว ให้คลิก (Interconnect View) เพื่อทำการวางอุปกรณ์และกำหนดค่าพารามิเตอร์ ของ LCD และ UART ดังนี้
พารามิเตอร์ของ LCD
อุปกรณ์
PSoC CY8C27443
โมดูลแอลซีดีแบบดอทแมทริก
MAX-232
เครื่องมือ
PSoC Designer 5.2
ความสามารถ
อ่านสัญญาณจากพอร์ทอนุกรมำด้ทั้งแบบ UART และ RS-232 ที่ใช้ Baudrat 4800
แสดงค่าออกทาง LCD ในรูปแบบ HEX
วงจร
พารามิเตอร์ของ Global
พารามิเตอร์ของ UART
อธิบายเพิ่มเติม
การทดลองนี้ต้องการใช้ UART ที่ความเร็ว 4800 บิตต่อวินาที ณ ที่ความเร็วนี้ โมดูล UART ต้องการสัญญาณนาฬิกาที่มีความถี่สูงกว่า 8 เท่า ดังนั้นเมื่อกำหนดให้ใช้สัญญาณนาฬิกาจาก VC3 จึงต้องกำหนดพารามิเตอร์ของ VC3 ดังนี้
VC3 = 8 x Baudrate = 8 x 4800 = 76.8 K
VC3 = VC1/n
VC1 = SysClk/16 = 24 MHz/16 = 1.5 MHz
จากกำหนดพารามิเตอร์ของ Global Resource
VC3 = 76.8 K = 3 MHz/n
n = 3000/76.8 = 39.0625
ดังนั้นจึงกำหนดตัวหารสำหรับ VC3 เป็น 39
4. ทำการเชื่อมต่ออินพุทและเอาท์พุทของโมดูล UART_1 เข้ากับขาไมโครคอนโทรเลอร์ โดยจะสังเกตได้ว่า จากค่าพารามิเตอร์ที่กำหนด สัญญาณ TX Output และ สัญญาณ RX Input จะต่ออยู่กับ Row_0_Output_2 (RO0[2]) และ Row_0_Input_0 (RI0[0])
การต่อสัญญาณ TX Output จากโมดูลออกไปที่ขาให้ใช้เมาส์คลิกขวาที่สัญญาณ TX Output จะปรากฏวงจรแสดงการต่อของสัญาณไปยัง GOE มีทั้งหมด 4 ทางเลือก ให้คลิกขวาที่ทางเลือก ต่อบนสุด แล้วคลิกขวาอีกครั้งเลือกเป็น GlobalOutEven_2 เพื่อต่อออกไปยัง GOE _2 แล้วคลิก Close
ที่สายสัญญาณ GOE_2 นี้สามารถที่จะตรวจสอบได้ว่า จะต่อกับขาใดได้บ้าง โดยให้คลิกขาวที่สัญญาณนั้น จะปรากฏ Pop up ว่าต้องการต่อกับ Pin หรือ Interconnect เมื่อคลิกขวาที่ Pin จะปรากฏตัวเลือกว่าต้องการต่อกับขา Port_0_2 หรือ Port_2_2 หรือไม่ต่อ (None) ให้เลือกเป็น Port_0_2 จะได้ผลดังรูป
5. ส่วนการต่อสัญญาณ RX_Input ก็ทำในทำนองเดียวกัน ให้ต่อออกยังขา Port_0_0
การกำหนดค่าพารามิเตอร์ดังกล่าวทำให้การจัดสัญญาณ Pinout เป็นดังนี้
6. เมื่อเสร็จแล้วให้กด (Generate Application) เพื่อสร้างซอร์ไฟล์ต่างๆ
7. ให้คลิกที่ปุ่ม (Application Editor) เพื่อเปิดหน้าต่าง Application เพื่อเขียน Source file ให้แก้ไขโปรแกรม main.c เป็น ดังนี้
โปรแกรม
//----------------------------------------------------------------------------
// Count-down Timer clock with UART communication
//----------------------------------------------------------------------------
#include <m8c.h> // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules
#include <stdlib.h>
//DWORD Time = 0;
char TextBuff[6];
void main(void)
{
BYTE i,j,Number;
LCD_1_Start(); // Initialize LCD
UART_1_CmdReset(); // Reset Command Buffer
UART_1_Start(UART_1_PARITY_NONE); // Start UART
M8C_EnableGInt; //Enable global interrupts
UART_1_DisableInt(); // Disable UART interrupt
LCD_1_Position(0,0);
LCD_1_PrCString("BaudRate = 4800");
i = 0;
LCD_1_Position(1,0);
while(1)
{
Number = UART_1_cGetChar();
UART_1_CmdReset();
if(i>4)
{
LCD_1_Position(0,0);
for (i=0;i<5;i++)
{
LCD_1_PrHexByte(TextBuff[i]);
LCD_1_PrCString(" ");
}
i = 0;
LCD_1_Position(1,0);
LCD_1_PrCString(" ");
LCD_1_Position(1,0);
}
LCD_1_PrHexByte(Number);
LCD_1_PrCString(" ");
TextBuff[i] = Number;
i++;
}
}
แล้วทำการบันทึกไฟล์
8. ให้ทำการแปลโปรแกรมโดยคลิกที่ปุ่ม (Build) เพื่อแปลโปรแกรม หากไม่มีข้อผิดพลาด
จะได้ไฟล์ Hex ที่มีชื่อเหมือนกับชื่อของโปรเจค อยู่ในโฟดเดอร์ Output สำหรับใช้ดาว์นโหลดลงชิพไมโครคอนโทรลเลอร
9. ทำการติดตั้ง LCD เข้ากับบอร์ด และสัญญาณระหว่าง Port_0 กับขั้วต่อ สัญญาณของ RS-232 ดดำพโดยต่อสายจาก P00 เข้ากับขา RX และ P02 เข้ากับขา TX