กันยายน 15, 2019, 05:44:16 pm *
ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน
ส่งอีเมล์ยืนยันการใช้งาน?

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
   หน้าแรก   ช่วยเหลือ เข้าสู่ระบบ สมัครสมาชิก  
หน้า: [1]   ลงล่าง
  พิมพ์  
ผู้เขียน หัวข้อ: วิธีการเลือกใช้ uart ของ PIC18F ที่มี 2 uart  (อ่าน 1894 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
prayut_che
Newbie
*
ออฟไลน์ ออฟไลน์

กระทู้: 1


| |
« เมื่อ: ธันวาคม 16, 2016, 10:48:25 pm »

รบกวนท่านผู้รู้ ผู้มากประสบการณ์ ทั้งหลายหน่อยครับ
คือ กระผมเลือกบอร์ดใช้งาน ET-PIC18F8722 ของ ETT มาใช้งานส่งข้อมูลให้ Computer 2 เครื่อง
โดย RS-232_1 ติดต่อ Computer เครื่องที่ 1 และ RS-232_2 ติดต่อ Computer เครื่องที่ 2 แต่กระผม
ไม่ทราบว่าจะต้องใช้คำสั่งอย่างไร ขอรับ กระผมพอทำได้แค่ส่งทีละ uart นะขอรับ
Code ที่ลองเขียนดูแล้ว ก็ประมาณนี้ครับ แต่ยังไปต่อไม่เป็นเลย ขอความเมตตาด้วยครับ

#include <18F8722.h>

#define TX1   PIN_C6
#define RX1   PIN_C7
#define TX2   PIN_G1
#define RX2   PIN_G2

#fuses   H4,NOLVP,NOWDT,NOPROTECT,NOSTVREN

#use delay (clock = 10000000)
#use rs232(baud = 9600, xmit = TX1, rcv = RX1)

char Data,Data1;

#use fast_io(C)
#use fast_io(G)


#INT_RDA
void IntRDA_isr(void)
{
   #use rs232(baud = 9600, xmit = TX1, rcv = RX1)
   Data = getc();
   putc (Data);
}


#INT_RDA2
void IntRDA_isr2(void)
{
   #use rs232(baud = 9600, xmit = TX2, rcv = RX2)
   Data1 = getc();
   putc (Data1);
}


void main() {

  char Data,Data1;

       set_tris_c(0B10000000);
       set_tris_g(0B10000100);

      enable_interrupts(GLOBAL);
      enable_interrupts(INT_RDA);
      enable_interrupts(INT_RDA2);

     #use rs232(baud = 9600, xmit = TX1, rcv = RX1)
     printf("\f\n\rPROGRAM TEST Interrupt UART-1 and UART-2 of ET-BASE PIC8722\n\r");

     #use rs232(baud = 9600, xmit = TX2, rcv = RX2)
     printf("\f\n\rPROGRAM TEST Interrupt UART-1 and UART-2 of ET-BASE PIC8722\n\r");

   While (1)
   {
      //  nothing

   }
}
บันทึกการเข้า
ShadowMan
Administrator
Hero Member
*****
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 8272


ShadowWares


| |
« ตอบ #1 เมื่อ: ธันวาคม 17, 2016, 08:08:09 pm »

นี่เป็นตัวอย่างจาก https://www.ccsinfo.com ครับ

Code: (c)
#USE RS232 (BAUD = 9600, XMIT = PIN_B0, RCV = PIN_B1, STREAM = COM_A)
#USE RS232 (BAUD = 9600, XMIT = PIN_B2, RCV = PIN_B3, STREAM = COM_B)

void main(void) {
   char c;
   
   fprintf(COM_A, "Online\n\r");
   fprintf(COM_B, "Online\n\r");
   
   while(TRUE) {
      c = fgetc(COM_A);
     
      fputc(c, COM_A);
      fputc(c, COM_B);
   }
}
บันทึกการเข้า

By SDW: Do No Wrong Is Do Nothing
          If you want to increase your success rate, double your failure rate
Eloisleia
Newbie
*
ออฟไลน์ ออฟไลน์

กระทู้: 2


| |
« ตอบ #2 เมื่อ: สิงหาคม 17, 2018, 02:50:57 pm »

ใช้ตามที่ท่าน admin บอกเลยหรือเปล่าครับ
บันทึกการเข้า
Torageat
Newbie
*
ออฟไลน์ ออฟไลน์

กระทู้: 2


| |
« ตอบ #3 เมื่อ: สิงหาคม 14, 2019, 04:49:52 pm »

อ่อ แบบนี้นี่เอง
บันทึกการเข้า

หน้า: [1]   ขึ้นบน
  พิมพ์  
 
กระโดดไป: