C for PIC “PCWH BUILT-IN FUNCTIONS”

ประมวลฟังก์ชั่นต่างๆ ที่ PCWH มีให้ใช้งาน ผม copy มาจาก help ของตัวโปรแกรมเอง จะเห็นว่ามีฟังก์ชั่นให้ใช้งานอยู่อย่างมากมายเลยทีเดียว RS232 I/Ogetc() , putc() , gets() , puts() , printf() , kbhit() , set_uart_speed() , perror , assert I2C I/Oi2c_start() , i2c_stop() , I2C_read , i2c_write() , i2c_poll() Discrete I/Ooutput_low() , output_high() , output_float() , output_bit() , input() , output_X() , input_X() , port_b_pullups() , set_tris_X() SPI two wire I/Osetup_spi() , spi_read() , spi_write() , spi_data_is_in() Parallel Slave I/Osetup_psp() , psp_input_full() , psp_output_full() , psp_overflow() […]

PIC micro with C , แนะนำ CCS PCW

article2003-04-08_01

มาแล้วกับการเขียนโปรแกรมสำหรับ PIC ไมโครคอนโทลเลอร์ด้วยภาษาซี โดยใช้ CCS Compiler ก่อนอื่นขอแนะนำเจ้า CCS ให้สำหรับคนที่ยังไม่รู้ว่ามันคืออะไรก่อนนะครับ CCS คือ บริษัทผู้ผลิตโปรแกรมแปลภาษาซีที่ชื่อ PCW โดยแปลจากภาษาซีให้เป็นภาษาแอสแซมบลีและทำการแปลภาษาแอสแซมบลีให้เป็นภาษาเครื่องหรือก็คือเจ้า Hex File ที่เรานำไปโหลดให้กับ PIC นั่นเอง แท้จริงแล้ว PCW เป็นเพียง IDE เท่านั้น ตัวคอมไพล์เลอร์จริงๆจะมีอยู่ 3 ตัวด้วยกันก็คือ 1. PCB เป็นคอมไพล์เลอร์สำหรับ PIC ชนิด 12 บิต 2. PCM เป็นคอมไพล์เลอร์สำหรับ PIC ชนิด 14 บิต 3. PCH เป็นคอมไพล์เลอร์สำหรับ PIC ชนิด 16 และ 18 บิต รูปที่ 1 หน้าต่างของโปรแกรม CCS ก่อนที่จะทำการเขียนโปแกรมได้นั้นต้องทำการสร้าง Project ขึ้นมาก่อน โดยคลิกที่ Menu Bar ดังนี้ Project -> New -> PIC Wizard รูปที่ 2 การสร้าง Project ทำการตั้งชื่อ Project ตามที่ต้องการและคลิก OK […]

โปรแกรม รับข้อมูลจาก PCF8574 โดย Mr.T

'โปรแกรม รับข้อมูลจาก PCF8574 โดย SCL=PORTA.1 SDA=PORTA.2'เมื่อรับข้อมูลแล้วแสดงผลทาง PORTB'วันที่ 10 มี.ค. 46 โดย Mr.T BitCnt var byteI2COUT var byteI2CADD var byteI2CDATA var byteD var byteB var byteI2CIN var byte CMCON=$07TRISA=$0TRISB=$0 loop: I2CADD=0GoSub I2CRECPORTB=I2CINGoto loop ' Do it forever '************************************************************************'ส่งข้อมูลไปที่ PCF8574 โดยส่งข้อมูลจาก I2COUT'************************************************************************I2CSEND:GoSub STBit 'ส่งข้อมูลให้กับ PCF8574 สร้าง start conditionI2CDATA=$70+2*I2CADD 'RW=0GoSub GenDataI2CDATA=I2COUT 'ส่งข้อมูลที่อยู่ใน I2COUTGoSub GenDataGoSub STPBit 'สร้าง stop conditionreturn '************************************************************************'รับข้อจาก PCF8574 เก็บไว้ที่ I2CIN'************************************************************************I2CREC:GoSub STBit 'รับข้อมูลจาก PCF8574I2CDATA=$70+2*I2CADD+1 'RW=1GoSub GenData 'ส่ง control byteGoSub RecDataGoSub STPBit 'สร้าง stop conditionI2CIN=I2CDATA 'รับข้อมูลไว้ที่ I2CINreturn'************************************************************************'ส่งข้อมูลไปที่ PCF8574'************************************************************************GenData:For […]

RS485 – Appendix A EIA Specification Summary [ by Mr.T ]

article2003-03-29_01

RS485 – Application Note [ by Mr.T ]

article2003-03-24_01

Application NoteRS-485ระบบเครือข่าย RS-485 – สามารถต่ออุปกรณ์ในระบบได้ไม่เกิน 32 ตัว- ติดต่อกันแบบ Half-Duplex ( Half-duplex คือการสื่อสารที่สามารถส่งได้ 2 ทิศทางแต่คนละเวลา ห้ามส่งพร้อมกัน )- ระบบสมดุลย์ ( Balanced system ) ใช้สายสัญญาณ 1 คู่ และ สายกราวด์ 1 เส้น- ติดต่อกันระยะทางไม่เกิน 1,200 เมตร หรือ 4,000 ฟุต- ความยาวของระบบและจำนวนโหนดสามารถขยายได้โดยตัวทวนสัญญาณ หรือ Repeater Hardware ของ RS-485ระบบเครือข่าย RS-485 สามารถติดต่อกันผ่านสาย 2 เส้น ( โดยทั่วไปใช้สายคู่ตีเกลียว หรือ twisted pair ) สัญญาณข้อมูลที่ส่งจะถูกวัดความแตกต่างของสัญญาณที่ตัวรับ ซึ่งมีข้อดีคือ สามารถส่งข้อมูลในระยะไกลและกำจัดปัญหาสัญญาณรบกวนได้ดี ลักษณะการเชื่อมต่อของ RS-485 สามารถทำได้ใน 2 ลักษณะคือ 2 สาย ( two-wire ) และ 4 สาย ( four-wire ) ในระบบ 2 สาย ตัวส่งและตัวรับของแต่ละอุปกรณ์ต่อเข้ากับสายคู่ตีเกลียว 1 เส้น […]

RS485 – Chapter 6 Selecting RS-485 Devices [ by Mr.T ]

Chapter 6 Selecting RS-485 Devicesในการเลือกซื้ออุปกรณ์สำหรับระบบ RS-485 จำเป็นต้องรู้คุณลักษณะการสื่อสารของอุปกรณ์ก่อนเสร็จสิ้นการออกแบบระบบเพื่อหลีกเลี่ยงข้อผิดพลาดต่างๆ โดยตัวอย่างข้างล่างนี้เป็นหลักในการเลือกอุปกรณ์1. อุปกรณ์ที่จะใช้ถูกนำไปเชื่อมต่อในระบบอย่างไร ( แบบ 2 สาย หรือ 4 สาย )2. การต่อสัญญาณกราวด์เป็นอย่างไร3. อุปกรณ์มีการป้องกันทรานเชี้ยนหรือไม่ อย่างไร4. มีความต้านทานกระแสไบอัสมีค่าเท่าไรและสามารถปรับเปลี่ยนได้หรือไม่ อย่างไร5. อุปกรณ์มีการต่อขั้วปลายหรือไม่ สามารถปรับเปลี่ยนได้หรือไม่ อย่างไร6. ค่า turn arund delay มีค่าเท่าไร7. ช่วงตำแหน่งของอุปกรณ์มีค่าอยู่ในช่วงเท่าไร8. อุปกรณ์สามารถมีอัตราการส่งข้อมูลเท่าไร วิธีที่ดีอีกวิธีหนึ่งคือการทราบถึงแบบของพอร์ตอนุกรมของอุปกรณ์ในระบบ ซึ่งแบบสามารถให้ข้อมูลเพิ่มเติมที่เป็นประโยชน์ในการแก้ไขปัญหาหรือการซ่อมอุปกรณ์ในระบบได้

16F628 กับ PCF8574A ด้วยคำสั่ง I2CWrite

article2003-03-01_01

ไม่ได้เขียนบทความมาให้อ่านกันก็นานมากแล้ว สบโอกาสได้ทำงานที่ต้องใช้ I2C จึงเอามาเขียนบทความซะเลย ก่อนอื่นก็ให้ต่อวงจรตามนี้ซะก่อนนะ ตรงจุด L0 – L7 ให้นำไปต่อกับ LED ไว้สำหรับแสดงผล ทีแรกว่าจะลงทั้งคำสั่ง I2CRead และ I2CWrite แต่คำสั่ง I2CRead ยังไม่สามารถใช้งานได้สักที ไม่รู้เป็นเพราะอะไรเหมือนกันครับ ฉนั้นอ่านกันเฉพาะ I2CWrite เท่านั้นก่อนก็แล้วกัน PCF8574A เป็น IC ขยาย port I/O ขนาด 8 บิตโดยใช้การติดต่อชนิดอนุกรม I2C รูปแบบของคำสั่ง I2CWRITE คือ I2CWRITE DataPin,ClockPin,Control,{Address,}[Value{,Value...}]{,Label} Address ใช้กับการติดต่อกับ EEPROM เท่านั้น ตัวอย่าง code ใช้งานแบบง่ายๆ SDA var porta.0 ‘ Data pin SCL var porta.1 ‘Clock pin buffer var byte buffer = 0 control con %01110000 main: I2cWrite SDA,SCL,control,[buffer] pause 500 buffer = buffer + 1 […]

RS485 – Chapter 5 Software [ by Mr.T ]

Chapter 5 Software RS-422 และ RS-485 เป็นข้อกำหนดทางฮาร์ดแวร์ แต่ไม่รวมถึงข้อกำหนดทางซอฟท์แวร์โปรโตคอล ซึ่งจะขึ้นอยู่กับผู้ออกแบบระบบที่จะตัดสินใจเลือกใช้โปรโตคอลที่เหมาะสมกับระบบของผู้ออกแบบเอง บทนี้จะไม่กล่าวถึงพื้นฐานของโปรโตคอล แต่จะกล่าวถึงหลักที่ต้องพิจารณาในการเลือกใช้โปรโตคอลไม่ว่าผู้ออกแบบจะซื้อหรือเขียนเองก็ตาม ระบบ RS-422 ( RS-422 System ) ซอฟท์แวร์ของระบบ RS-422 แตกต่างจากระบบสื่อสาร RS-232 Point – to – Point เล็กน้อย RS-422 มักถูกใช้ขยายระยะทางระหว่างโหนดที่ระบบ RS-232 ไม่สามารถส่งได้ นอกจากนี้ RS-422 ยังสื่อสารในลักษณะโหนดแม่และโหนดลูกในการเชื่อมต่อแบบ 4 สายได้ ( Four – Wire Master – Slave Network ) ในการเลือกซื้อหรือเขียนซอฟท์แวร์ ผู้ออกแบบจะต้องเข้าใจถึงสัญญาณที่จำเป็นต่อการทำงานของฮาร์ดแวร์ในระบบ บ่อยครั้งที่ระบบ RS-422 ที่ต่ออยู่ในระบบ RS-232 ไม่มีการต่อฮาร์ดแวร์บางชนิดเช่น handshake line อาจมีเหตุผลมาจากต้องมีการเดินสายเพิ่มซึ่งหมายถึงการลงทุนที่สูงขึ้นด้วย การควบคุมตัวส่งของอุปกรณ์ RS-485 ( RS-485 Driver Control ) ข้อแตกต่างหลักระหว่าง RS-422 และ RS-485 คือการทำ High Impedance หรือ tri-state คือการยินยอมให้ตัวส่งอื่นๆสามารถส่งข้อมูลผ่านสายคู่เดียวกันได้ มี 2 วิธีในการทำ […]

RS485 – Chapter 4 Transient Protection of RS-422 and RS-485[By Mr.T]

article2003-02-22_01

Chapter 4 Transient Protection of RS-422 and RS-485 System ในการป้องกันระบบ RS-422 และ RS-485 จากการทรานเชี้ยนต้องเข้าใจธรรมชาติของพลังงาน ซึ่งเกิดมาจากหลายแหล่ง ส่วนมากแล้วเกิดมาจากสิ่งแวดล้อม หรือการถูกเหนี่ยวนำจากการสวิตชิ่งโหลดที่เป็นขดลวดเหนี่ยวนำขนาดใหญ่ ( heavy inductive load ) ลักษณะของทรานเชี้ยน (Surge Specifications) แม้ว่าจะไม่มีข้อกำหนดที่เป็นไปในทางเดียวกันเกี่ยวกับทรานเชี้ยน แต่ทั้ง IEEE( Institute of Electrical and Electronics Engineers ) และ IEC ( International Electrotechnical Commission ) ได้พยายามพัฒนาแบบจำลองทรานเชี้ยนเพื่อใช้ในการบอกค่าและทดสอบการปราศจาก surge ของอุปกรณ์ทางไฟฟ้าและอุปกรณ์ทางอิเล็กทรอนิกส์ แบบจำลองเหล่านี้สามารถทำให้เข้าใจถึงพลังงานซึ่งต้องถูกควบคุมเพื่อป้องกันความเสียหายต่อระบบ IEC และ IEEE ได้มีการกำหนดการทดสอบอุปกรณ์ในหัวข้อเกี่ยวกับการทดสอบทรานเชี้ยน โดยมาตรฐาน IEC ได้กำหนดไว้ในหัวข้อ “IEC-1000-4-5:1995″ หรือ “Surge Immunity Test” และมาตรฐาน IEEE ได้กำหนดไว้ใน “IEEE-C62.41-1991″ หรือ “IEEE Recommended Practice on Surge Voltages in Low-Voltage AC Power Circuits” ทั้งสองมาตรฐานได้ทำการทดสอบทั้งด้านกระแสและแรงดันซึ่งอาจถูกเรียกรวมว่า […]

RS485 – Chapter 3 Selecting RS-422 and RS-485 Cabling [by Mr.T]

article2003-01-01_01

Chapter 3 Selecting RS-422 and RS-485 Cabling การเลือกสายเคเบิ้ลเป็นสิ่งที่ควรให้ความสำคัญอย่างหนึ่งในการออกแบบระบบแม้จะเป็นรายละเอียดเล็กๆน้อยๆ เพื่อให้ได้สายเคเบิ้ลที่มีคุณภาพเหมาะสมและราคาไม่แพงเกินความจำเป็น จำนวนของตัวนำในสายเคเบิ้ล ( Number of Conductor ) สายกราวด์เป็นสายที่ไม่ควรลืมในการสั่งซื้อสายเคเบิ้ล ควรเลือกสายเคเบิ้ลให้มีตัวนำเพียงพอในการส่งสัญญาณทั้งสัญญาณข้อมูลและสัญญาณกราวด์ ยกตัวอย่างเช่น ถ้าเราเลือกใช้สายคู่ตีเกลียวในระบบแบบ 2 สาย ต้องใช้สายคู่ตีเกลียว 2 คู่ และสำหรับระบบแบบ 4 สาย ต้องใช้สายคู่ตีเกลียว 3 คู่ เป็นต้น การชิลด์ ( Shielding ) เป็นการยากในการคำนวณว่าควรใช้สายที่มีการชิลด์หรือไม่ แต่อย่างไรก็ตามควรเลือกสายเคเบิ้ลที่มีการชิลด์เนื่องจากมีความปลอดภัยมากกว่าเมื่อเทียบกับราคาที่แพงกว่าสายเคเบิ้ลที่ไม่มีการชิลด์เพียงเล็กน้อย คุณสมบัติของสายเคเบิ้ล ( Cable Characteristic ) การเลือกใช้สายเคเบิ้ลสำหรับระบบ RS-422 หรือ RS-485 ขึ้นอยู่กับระยะทางและอัตราการส่งข้อมูลของระบบในสายเคเบิ้ลมีค่าอิมพีแดนซ์หลายชนิด เช่น ความนำไฟฟ้า(conductance) , ความต้านทาน(resistance) , คาปาซิเตอร์(capacitance) และความเหนี่ยวนำ(inductance) เป็นต้น ซึ่งค่าอิมพีแดนซ์เหล่านี้มีผลต่อระยะทางในการส่ง โดยเฉพาะค่าคาปาซิเตอร์ขนานยิ่งมีค่ามาก ระยะทางการส่งข้อมูลจะลดลง ค่าความเร็วของสัญญาณที่วิ่งในสายเคเบิ้ล หรือเรียกว่า Propagation velocity เป็นสิ่งที่ควรพิจารณาถึงอีกประการหนึ่ง ผู้ผลิตสายเคเบิ้ลจะบอกค่านี้เป็นเปอร์เซ็นต์ และเราสามารถหาค่า Propagation velocity ได้จากผลคูณของค่าที่ผู้ผลิตให้กับความเร็วแสง ( 3x10e8 ) เช่น สายเคเบิ้ลมีค่า Propagation velocity […]