สอบถาม MPLAB+Hi-techC PIC10-16 กับ PIC 24 30

Started by Original, February 28, 2013, 10:06:40 AM

Previous topic - Next topic

Original

ปัญหาตรงที่ Library Functions ของhi-tech c  เรื่อง การประกาศ clock ที่ใช้ ดังนี้

#define  _XTAL_FREQ  7372800 

ถ้าผมประกาศแบบนี้ในhi-tech c  pic10-16 ใช้งาน _delay_usได้
แต่ถ้าผมประกาศแบบนี้  hi-tech c dspic  กลับไม่ผ่าน แจ้งว่าผมประกาศ ไม่ถูกต้อง error code 111

ก็เลยลองกลับไปอ่าน manual ของcompiler hi-tech ก็ได้ความว่า
#define  _XTAL_FREQ  7372800  แบบนี้ มีแต่ hi-tech c PIC10-16  ส่วน hi-tech c dspic ไม่มีให้ใช้

- ก็เลย ไม่เข้าใจว่า compilerเดียวกัน ทำไม ถึงใช้function เดียวกันไม่ได้

- Hi-tech c ในdspic รูปแบบเหมือนC30 ยังงัยยังงั้น แล้วมีข้อแตกต่างกันอย่างไร

ขอบคุณครับ 




p_chusak

คิดว่าเพื่อให้เกิดความแตกต่างมัีงครับ
โดย pic10F,12F,16F,18F พวกนี้ MIPS มันจะเท่ากับ clock/4 เลยให้ประกาศเป็น clock ของ XTAL ไปเลย

แต่พอมาหลังเริ่มคิดได้ว่า clock ของ PIC มัน option เยอะมาก PLL ก็มี แล้วตัว pic24 เป็น clock/2 pic30 เป็น clock/4 จะทำให้คนใช้ปวดหัวเปล่าๆ เลยให้ประกาศเป็น MIPS แทน

ตัวอย่าง
#define FCY 16000000UL // ใช้กับ XC16  แปลว่ารันที่ 16MIPS
#define _XTAL_FREQ 16000000UL // ใช้กับ xc8  แปลว่าใช้ xtal ที่ 16Mhz ที่ จะรันที่ 4 MIPS

Original



Original

Hi-tech c ในdspic รูปแบบเหมือนC30 ยังงัยยังงั้น แล้วมีข้อแตกต่างกันอย่างไร


จากที่ลองๆใช้ Hitech c   กับC30    ที่เห็นๆแตกต่างคือ มีfunction EEPROM มาให้ใช้เลยในHitech  แต่ก็ดูแล้วไม่ใช้จุดสำคัญอะไร
แต่ที่เห็นชัดๆเลย คือ     optimize   Hitech C ทำได้เหนือกว่า หลายช่วงตัว เรียกว่า 30-40% กันเลย  ในcodeเดียวกัน
ส่วนจุดอื่นๆยังต้องค้นหาต่อไป  แต่Hitech C ก็เจอปัญหาการเรียกชื่อ Reg bit บางตัว ใช้ชื่อไม่ตรงกับ datasheet  ต้องตามแก้ ผมก็ไม่เข้าใจว่า ทำไม่
ต้อง define มาคนละชื่อกัน   

แต่โดยรวม ผมชอบC30มากกว่าในdspic pic24   แต่ถ้า pic10-18 Hitech cใช้ง่ายกว่า 

****Hitech C กับ C30 ของผมใช้เป็นรุ่นproแล้ว