muiim
|
|
« Reply #150 on: November 10, 2009, 05:40:44 PM » |
|
ตอนนี้มีปัญหาแล้วครับ คือตอนกด sw มันไม่สามารถทำเป็นแบบระบุแอดเดรสได้ครับไม่รู้จาทำไงดี(มันได้แต่ปิดทั้งหมดกับเปิดทั้งหมด) ผมงงอีกแล้วครับ
|
|
|
Logged
|
|
|
|
muiim
|
|
« Reply #151 on: November 10, 2009, 05:49:13 PM » |
|
อีกอย่างครับ code ตรงนี้ void X10FuncExeADR(int House,int Number,int Fn) ตรง int House มันต้องเป็น char House รึป่าว
|
|
|
Logged
|
|
|
|
smitdh
Administrator
Hero Member
Offline
Gender:
Posts: 381
อาจารย์ที่ปรึกษา
|
|
« Reply #152 on: November 10, 2009, 07:12:54 PM » |
|
ใน X10Demo2.c มีแต่ฟังก์ชั่น void X10FuncExe(int House,int Number,int Fn) นะครับ ในกรณีของ CCS ตัวแปร int ,char จะมีขนาด 8 บิทเท่ากันครับ ใช้ร่วมกันได้(อย่างระมัดระวัง) จริงๆแล้วผมตั้งใจให้เป็น int (ตัวเลข) ครับ คือ 0x41-0x50 แต่กลัวว่านานๆไป เวลาดูจะงง เวลากำหนด ก็เลยใช้ 'A' คอมไพล์เลอร์จะเปลี่ยนให้เป็น 0x41ครับ เช่น #rom 0x2100={'A',0x04}
|
|
|
Logged
|
|
|
|
plom
|
|
« Reply #153 on: November 10, 2009, 08:41:24 PM » |
|
หวัดดีครับ พี่สมิธ ตอนนี้ผมได้ต่อวงจรไปเเล้ว 2 ชุดครับ ปรับความเเต่งความถี่ที่ขา C ของ Q1 ทั้ง 2 วงจรได้ 120kHz ตามที่พี่บอกเเล้ว จากนั้นผมลองเทสตามคุณ Coldman โดยการใช้สัญญาณไฟกระพิบ IC 555 ส่งตามคุณ Coldman เเต่ผลออกมา led ที่ต่อกับขา 6 ของ U1 ไม่กระพิบ มันติดบ้างเเล้วมันก็ดับหายไปเลย ปรับลดค่า VR ก็ไม่มีสัญญาณจากขา C เเต่ตอนปรับจูนที่ Jump J1 ยังมีสัญญาณอยู่ครับ ผมขอคำเเนะนำหน่อยครับ ขอบคุณครับ
|
|
|
Logged
|
|
|
|
muiim
|
|
« Reply #154 on: November 11, 2009, 08:11:45 AM » |
|
ขอบคุณครับอาจารย์ ตอนนี้ผมเลยคิดว่าน่าจะเป็นเพราะมันไม่สามารถอ่านแอดเดรสจาก eepromได้มากกว่าครับ (ที่มันไม่สามารถสั่งแบบระบุแอดเดรสได้นะ) คือตอนนี้ คอมไพล์เป็น 18F ครับ ขอตอบคุณ plom นะครับ ถ้าต่อ jumper j1 แล้วมีสัญญาณที่ขา 6 ของ 4069 (เอาled ต่อไว้มันจะติดค้างเลยนะ) แสดงว่า pc-817 ไม่ทำงานละครับ แต่ถ้ามีสัญญาณที่ขาCของQ1แต่ไม่มีสัญญาณที่ขา 6 ของ 4069 แสดงว่า Q2ไม่ทำงานครับ (ในความเข้าใจของผมนะ)
|
|
|
Logged
|
|
|
|
muiim
|
|
« Reply #155 on: November 11, 2009, 09:07:23 AM » |
|
ผมมีอีกคำถามครับ ใน X10FuncExe เราสามารถกำหนดใน int H,N,P;
//Get Address form EEPROM House & Number H=read_eeprom(0); N=read_eeprom(4);
//Private Function if(H==House && N==Number) แทนที่จะอ่านจาก eeprom (คือระบุแอดเดรสไปเลยนะครับ)
|
|
|
Logged
|
|
|
|
smitdh
Administrator
Hero Member
Offline
Gender:
Posts: 381
อาจารย์ที่ปรึกษา
|
|
« Reply #156 on: November 11, 2009, 10:44:20 AM » |
|
สำหรับ PIC18 เปลี่ยน แอดเดรส EEPROM เป็น 0xF00000 ก็ยังใช้ไม่ได้หรือครับ ให้ลองศึกษา EEPROM จาก http://www.thaimicrotron.com/CCS-628/EEPROM/InEEPROM.htmจะได้ทราบสาเหตุที่แท้จริง ฟังก์ชั่น X10FuncExe parameter สามารถระบุเป็นค่าคงที่ได้ครับ แต่จะทำให้เปลี่ยนแปลงทีหลังไม่ได้ ขอบคุณ คุณ muiim ครับที่ช่วยวิเคราะห์ปัญญา ให้กับคุณ plom ด้วย ส่วนของคุณ plom ที่ต่อไว้ ต่อแบบไหนครับบนโปรโตบอร์ด หรือว่าทำ PCB หากว่าทำ PCB ได้แก้ไขตรงนี้หรือยังครับ http://www.thaimicrotron.com/webboard2/index.php?topic=22.msg671#msg671ต้องขอโทษอีกครั้ง ที่ไม่ได้ตรวจให้ละเอียด เพราะทำไว้หลายเวอร์ชั่น ตอนประกอบเห็นว่าน่าจะมีอะไรเพิ่มเติม แต่แก้เฉพาะที่ PCB ส่วน prototype ไม่ได้ทำใหม่ครับ ใช้โยงสายเอา ต้องขอขอบคุณ คุณ muiim อีกครั้งที่ช่วยตรวจสอบให้
|
|
|
Logged
|
|
|
|
plom
|
|
« Reply #157 on: November 11, 2009, 12:57:34 PM » |
|
|
|
|
Logged
|
|
|
|
plom
|
|
« Reply #158 on: November 11, 2009, 01:06:47 PM » |
|
|
|
|
Logged
|
|
|
|
smitdh
Administrator
Hero Member
Offline
Gender:
Posts: 381
อาจารย์ที่ปรึกษา
|
|
« Reply #159 on: November 11, 2009, 06:54:14 PM » |
|
เนืองจาก X10-LAB 1.0 ได้ออกแบบมาให้ทำงานทั้งรับและส่งอยู่แล้วครับ แต่เป็นแบบ Half Duplex คือเป็นการส่งและรับข้อมูลแบบสลับกัน - เมื่อเป็นภาคส่ง L2+Q2,L1+Q1 จะทำงานทั้งหมด - เมื่อเป็นภาครับ L2+ U1(4069)
ส่วนที่ว่า "แต่สัญญาณที่รับได้ แรงดันจะเหลือประมาณครึ่งหนึ่งของแรงดันที่ส่งไป" นั้นวัดจากที่ไหนครับ ส่วนที่จะเพิ่มการขยายของ 4069 ซึ่งเอาต์พุตออกมาทางขา 6 นั้นจะเป็นพัลซ์ 0-5V เสมอครับ (ถ้ารับได้) ถ้าไม่ใช้ให้ตรวจภาครับใหม่ หากต่อ LED กับเอาต์พุตที่ขา 6 ควรจะต่ออนุกรมกับ R 1K ครับเอาแค่พอมองเห็นไม่เช่นนั้นจะโหลดเกินไปทำให้แรงดันตก
|
|
|
Logged
|
|
|
|
muiim
|
|
« Reply #160 on: November 11, 2009, 08:53:14 PM » |
|
ผมขอชี้แจงคุณplomก่อนนะครับ เท่าที่ทดลองทำเครื่องนี้มา ผมใช้หม้อแปลง1A ปรับ VR จนสุด ปรากฏว่าไม่ร้อนครับ แต่ผมก็ไม่กล้าปรับไว้นานยกเว้นต้องการให้ส่งได้ไกล ระยะที่เคยทดสอบ 50 - 100 เมตร confirm (ระยะนี้เท่าทีมีสายนะ เวลาที่ใช้ 1 ชม) อาจารย์ครับขอถามอีกที ถ้าผมกำหนดอย่างนี้ถูกต้องรึป่าว (กำหนดแบบตรงตัวครับ) void X10FuncExeADR1(int House,int Number,int Fn) { int H,N,P;
//Get Address form EEPROM House & Number // H=read_eeprom(0); // N=read_eeprom(1); H='A' ; N= 01 ;
|
|
|
Logged
|
|
|
|
muiim
|
|
« Reply #161 on: November 11, 2009, 09:00:45 PM » |
|
ถามอีกอย่างครับ #rom 0x2100={'A',0x04} ตรง 0x04 เรามองมันเป็นเลขฐาน 16 ใช่มั้ยครับ
แต่ถ้าเปลี่ยนเป็น #rom 0x2100={'A',4} จะได้มั้ย
|
|
|
Logged
|
|
|
|
smitdh
Administrator
Hero Member
Offline
Gender:
Posts: 381
อาจารย์ที่ปรึกษา
|
|
« Reply #162 on: November 11, 2009, 11:30:42 PM » |
|
เรื่องระยะทาง หากเป็นสายเปล่า ไม่มีโหลดอื่นมาต่ออยู่ตรงกลางจะส่งได้ไกลมากครับ แต่ถ้ามีโหลด ระยะทางก็จะลดลงไปเรื่อยๆ ยิ่งโหลดอื่นมาก ระยะทางจะสั่นลงครับ ยิ่งโหลด บางประเภทมี วารีสเตอร์,MOV สำหรับป้องกันไฟเกิน ยิ่งลดฮวบๆ ครับ
ตอบคุณ muiim ได้ทั้งสองกรณีครับ
|
|
|
Logged
|
|
|
|
muiim
|
|
« Reply #163 on: November 12, 2009, 08:15:37 AM » |
|
อาจารย์ครับแล้วกำหนดค่าแบบนี้มันจะได้รึป่าวกำหนดตายตัวไม่แก้ทีหลังนะครับ void X10FuncExe(int House,int Number,int Fn) { int H,N,P;
//Get Address form EEPROM House & Number // H=read_eeprom(0); // N=read_eeprom(1); H='A' ; N= 0x01 ;
|
|
|
Logged
|
|
|
|
smitdh
Administrator
Hero Member
Offline
Gender:
Posts: 381
อาจารย์ที่ปรึกษา
|
|
« Reply #164 on: November 12, 2009, 08:38:06 AM » |
|
ในฟังก์ชั่น X10FuncExe(); ตัวแปร H,N สร้างขึ้นมารับ ข้อมูลจาก eeprom ครับ ถ้าไม่ใช้ข้อมูลใน eeprom ก็ตัดออกได้ โดยระบุเป็นค่าคงที่ ในฟังก์ชั่น X10Write(); ได้เลยครับ
int P; . . . X10Write('A',1,X10FN_STATUS_ON);
|
|
|
Logged
|
|
|
|
|