Picproje Elektronik Sitesi

DERLEYİCİLER => Microchip XC Serisi => Microchip XC8 => Konuyu başlatan: asergin - 27 Mart 2012, 06:25:16

Başlık: Microchip'in yeni derleyicisi: Mplab XCx
Gönderen: asergin - 27 Mart 2012, 06:25:16
Merhaba. Microchip, çatısı altındaki C derleyicilerini (Mplab c, Hi-Tech C), Mplab XCx ( Mplab XC8, Mplab XC16, Mplab XC32 gibi) yeniden düzenliyor. bunlar yeni derleyiciler gibi görünüyor. Aşağıdaki linkte konuyla ilgili bir miktar bilgi var:
http://www.microchip.com/pagehandler/en_us/promo/mplabxc/ (http://www.microchip.com/pagehandler/en_us/promo/mplabxc/)
Üstelik, üzretsiz olarak kullanıma sunuyor. Tek kısıtlaması, optimizasyon yapmaması.
XC8'i Downloadlar kısmından indirip kurdum bile ama Mplabx altından ulaşıp da derleme yapma şansım olmadı. Konu hakkında detaylı bilgisi olan varsa, paylaşırlarsa sevinirim. (Sanırım bu başlık bu konu için en uygun yer)
Başlık: Ynt: Microchip'in yeni derleyicisi: Mplab XCx
Gönderen: Tagli - 27 Mart 2012, 09:17:40
Bilgilendirme için teşekkürler. Bu habere sevindim. Aslında bunun olacağı belliydi biraz. Bir şirketin aynı ürüne hitap eden iki farklı derleyicisinin olması mantıklı değildi. Muhtemelen adamlar Hi-Tech'i aldıktan sonra birleştirme sürecini başlatmışlardır.
Başlık: Ynt: Microchip'in yeni derleyicisi: Mplab XCx
Gönderen: Erol YILMAZ - 27 Mart 2012, 09:38:01
Microchip in belirgin şekilde karıştırdığı bi konu olmaya başlamıştır derleyicileri...

Sanırım şimdi çözdüler konuyu :)
Başlık: Ynt: Microchip'in yeni derleyicisi: Mplab XCx
Gönderen: emrahmrcn - 27 Mart 2012, 09:44:15
Bu iyi bir haber . Microchip ortalığı bir dağıtmıştıki, kullanıcılar artık yeter noktasına geliyorlardı özelliklede yeni chip kullananlar. Hatta hitech forumlarında 'Bizi öldürüyorlar !' diye topicler açılmıştı.
Başlık: Ynt: Microchip'in yeni derleyicisi: Mplab XCx
Gönderen: Tagli - 27 Mart 2012, 10:29:47
Yalnız şimdi bir deneyeyim dedim, sonuç hüsran oldu. MPLAB X 1.10, XC8 derleyicisini tanımadı. Forumlarda yazdığına göre XC32'de sorun yokmuş. Derleyici PRO versiyonun deneme sürümü olarak yüklendiğinde MPLAB X'te Hi-Tech derleyicisi gibi gözüküyor ve kullanılabiliyormuş. Bunu denemedim.

Sanırım en iyisi MPLAB X'in bir sonraki versiyonunu beklemek olacak. Böyle bir sorun varken fazla bekleteceklerini sanmıyorum. MPLAB X kullanıcıları şimdilik eski derleyicilerle devam etse daha iyi olur.

MPLAB 8 serisinde durum nedir bilmiyorum.
Başlık: Ynt: Microchip'in yeni derleyicisi: Mplab XCx
Gönderen: asergin - 27 Mart 2012, 11:16:06
MPLAB 8 ile 16F628A için yaptığım denemede sorun çıkmadı (header'deki bir kaç güncellemem dışında) ancak, MPLABX desteği için sanırım IDE yükseltmesini beklemek gerekecek
Başlık: Ynt: Microchip'in yeni derleyicisi: Mplab XCx
Gönderen: Erol YILMAZ - 27 Mart 2012, 11:26:03
ben XC8 i kurarken en sonda hata alıyorum...  dolayısı ile kuramadım,
Başlık: Ynt: Microchip'in yeni derleyicisi: Mplab XCx
Gönderen: asergin - 27 Mart 2012, 11:36:44
Bu arada çok enteresan bir şey oldu  ::) Daha önce (Mplab 8 ile deneme yapmadan önce) MPLABX derleyiciler listesinde XC8 görünmez iken, Mplab 8 ile uygulama denememden sonra tekrar Mplabx IDEyi açtğımda şu anda HI-TECH PICC (v1.00) olarak görünüyor. Ancak Mplabx ile az önce Mplab 8 de başarılı bir şekilde XC8 tarafından derlenen kaynak dosyam, aşağıdaki gösterilen hata ile sonlandı:
error: unknown suboption "ramtest"
sanırım biraz daha çalışmak lazım. (ya da microchipin çalışması lazım  ::) )
Başlık: Ynt: Microchip'in yeni derleyicisi: Mplab XCx
Gönderen: Erol YILMAZ - 27 Mart 2012, 14:33:36
Alıntı yapılan: Allegro - 27 Mart 2012, 11:26:03
ben XC8 i kurarken en sonda hata alıyorum...  dolayısı ile kuramadım,

başka bir bilgisayarda kurdum...  Çalıştı...
Başlık: Ynt: Microchip'in yeni derleyicisi: Mplab XCx
Gönderen: emrahmrcn - 27 Mart 2012, 16:24:39
MPLAB IDE v8.84 ile sorunsuz çalışıyor.
Başlık: Ynt: Microchip'in yeni derleyicisi: Mplab XCx
Gönderen: Erol YILMAZ - 27 Mart 2012, 16:30:34
Microchip MPLAB XC8 C Compiler (PRO Mode)  V1.00
Copyright (C) 2012 Microchip Technology Inc.

Memory Summary:
    Program space        used     8h (     8) of   400h words   (  0.8%)
    Data space           used     2h (     2) of    40h bytes   (  3.1%)
    EEPROM space         used     0h (     0) of    80h bytes   (  0.0%)
    Configuration bits   used     0h (     0) of     1h word    (  0.0%)
    ID Location space    used     0h (     0) of     4h bytes   (  0.0%)


Benimkinde problem COMODO Antivirus yazılımıymış.....
Hiçbir virüs beni bu Antivirus kadar uğraştırmamışdı :D
Başlık: Ynt: Microchip'in yeni derleyicisi: Mplab XCx
Gönderen: OptimusPrime - 27 Mart 2012, 16:58:25
böyle bir şey ti ın ccs sinde başıma gelmişti. çipe program yüklemek 4 dakika debug moduna sokmak ise 2 dakika sürüyordu. antivirüs programını kapatınca düzeldi... ;D
Başlık: Ynt: Microchip'in yeni derleyicisi: Mplab XCx
Gönderen: Erol YILMAZ - 27 Mart 2012, 17:01:37
Alıntı yapılan: OptimusPrime - 27 Mart 2012, 16:58:25
...antivirüs programını kapatınca düzeldi... ;D

Hangi Antivirus müş o ?

Gerçi bunların geneli böle sanırım...

Bu arada Microchip XC serisini  Hi-tech ve C18 serisinin ortalamasını alarak yapmış sanırım,
ADCON0bits.CHS1=0;
Başlık: Ynt: Microchip'in yeni derleyicisi: Mplab XCx
Gönderen: OptimusPrime - 27 Mart 2012, 17:09:57
yanlış hatırlamıyorsam nod32 idi...
Başlık: Ynt: Microchip'in yeni derleyicisi: Mplab XCx
Gönderen: Elektroemre - 27 Mart 2012, 23:03:04
Hayırlısı olsun,
MPLAB X adam olmaya başladı. Compiler larda bir düzene girerse süper olur.

İnşallah 18F serleri için şu "rom", "udata" ve #pragma"larla bildirelen saçma şeylerde giderilir.
Konfor için kullanıyoruz sonuçta, abidik gubidik işlerle uğraştırmasın bizi.

16F serilerinde zaten sıkıntı yok, canavar gibi artık derleyicileri.

Haydı bakalım gelsin küreklerde keyfimize bakalım   ::)
Başlık: Ynt: Microchip'in yeni derleyicisi: Mplab XCx
Gönderen: Tagli - 27 Mart 2012, 23:09:44
Alıntı yapılan: Elektroemre - 27 Mart 2012, 23:03:04
İnşallah 18F serleri için şu "rom", "udata" ve #pragma"larla bildirelen saçma şeylerde giderilir.
Konfor için kullanıyoruz sonuçta, abidik gubidik işlerle uğraştırmasın bizi.
Bu konuda aynı fikirde değilim. Derleyicinin programcıya düşük seviye ayrıntılara müdahele etme imkanı vermesi bence güzel bir özellik. Böyle imkanlar olmasa, elimizde kalan şey CCS C derleyicisi gibi birşey olurdu.
Başlık: Ynt: Microchip'in yeni derleyicisi: Mplab XCx
Gönderen: Elektroemre - 27 Mart 2012, 23:34:44
Keil IAR vs  de bu kadar çeşit yok abidik gubidik tanımlama yok, fakat low-level'a erişme konusundada sıkıntı yaşamadım şansen.
Yani sonuçta bunlar gerekli şeyler ama biraz daha az görüntü kirliliği yapacak birşeyler düşünülebilir.
Hi-tech mesela const ile gayet gayet güzel halletmiş işi, c18 de rom yazıyoruz. Diğer adamların elinde sihirli değnek mi vardı?
Koda bakınca sanki C de dğilmişte basic d yazıyormuş hissi uynadırıyor kod penceresi bunları görünce  :)
Başlık: Ynt: Microchip'in yeni derleyicisi: Mplab XCx
Gönderen: ahfxg - 28 Mart 2012, 00:13:27
PIC32'yi artık kullanmayacağımı düşünüyorum. 32 bit istiyorsam mis gibi ARM var.
Yalnız dsPIC'lerde özellikle motor uygulamalarında deli dehşet işlemciler çıkmış. Zamanında kılı kırk yardığım, algoritmalar çürüttüğüm şeyi adamlar artık iki register bitine koymuşlar. Yeni seri dsPIC'lere dikkat diyorum o yüzden. C30 zaten iyi bir derleyici idi, yeni sürümde bakalım ne getirecek bize Microchip.

8bit işlemcilere gelirsek C18'in ilginçliklerinden kurtulmak hoş olur açıkçası. Biraz daha ANSI C olsun. Emre'ye katılıyorum #pragma değil de şu udata rom ram gibi saçma şeylerden kurtarsınlar bizi.
Başlık: Ynt: Microchip'in yeni derleyicisi: Mplab XCx
Gönderen: erolca - 29 Mart 2012, 14:42:15



#include<xc.h>
#include <stdio.h>
#include <stdlib.h>

__CONFIG(FOSC_XT &WDTE_OFF&PWRTE_ON &LVP_OFF );


/*
* Example code for using timer0 on a 16F84
* Just sets up a 1 second interrupt and increments a variable
*/

/*
* Calculate preload value for one second timer
*/

#define PERIOD 1000000 // period in uS - one second here
#define XTAL 4000000 // crystal frequency - 4MHz

#define IPERIOD (4 * 1000000 / XTAL) // Period of instruction clock in uSeconds

#define SCALE 256 // Timer 0 prescaler
#define T0_TICKS 256 // Number of counts for interrupt

#define TICK_PERIOD (SCALE * IPERIOD) // Period (uSec) of one increment of timer 0

#define RELOADS ((PERIOD/T0_TICKS)/TICK_PERIOD)

unsigned long seconds; // second count
near char reload = 0;

/* service routine for timer 0 interrupt */
void interrupt
timer0_isr(void)
{
if(reload == 0){
// effect a change on PORTB whenever our desired period is reached.
// Note this timing will contain a margin of error.
reload = RELOADS + 1;
seconds++;
PORTB++; // effect a change on PORTB
}
reload--;
T0IF = 0;
}






void main(void)
{
OPTION_REG  = 0b0111; // prescale by 256
T0CS = 0; // select internal clock
T0IE = 1; // enable timer interrupt
GIE = 1; // enable global interrupts
TRISB = 0; // output changes on LED
PORTB=0;


while(1)
{

//PORTB++;
}
}


derleme sonucu:
Microchip MPLAB XC8 C Compiler (Free Mode)  V1.00
Copyright (C) 2012 Microchip Technology Inc.
(1273) Omniscient Code Generation not available in Free mode (warning)

Memory Summary:
    Program space        used    4Ch (    76) of   800h words   (  3.7%)
    Data space           used     Ch (    12) of    E0h bytes   (  5.4%)
    EEPROM space         used     0h (     0) of    80h bytes   (  0.0%)
    Configuration bits   used     1h (     1) of     1h word    (100.0%)
    ID Location space    used     0h (     0) of     4h bytes   (  0.0%)
Başlık: Ynt: Microchip'in yeni derleyicisi: Mplab XCx
Gönderen: Logan - 29 Mart 2012, 15:36:39
MPLAB X IDE ile XC8 kullanıyorum. Henüz bir sıkıntı çıkmadı. Fakat config ayarlarını programdan yapamıyorum. Var mı yardımı dokunabilecek?
Başlık: Ynt: Microchip'in yeni derleyicisi: Mplab XCx
Gönderen: erolca - 29 Mart 2012, 15:44:25
Alıntı yapılan: Logan - 29 Mart 2012, 15:36:39
MPLAB X IDE ile XC8 kullanıyorum. Henüz bir sıkıntı çıkmadı. Fakat config ayarlarını programdan yapamıyorum. Var mı yardımı dokunabilecek?

Merhaba,

Hi-Tech kullandıysan cok rahatlıkla yapabilirsin. xc8 'in  hi-tech den farkı kullanılan config. isimlerinin farklı olması.
__CONFIG(FOSC_XT &WDTE_OFF&PWRTE_ON &LVP_OFF );
ayrıntılı bilgi için" Microchip\xc8\v1.00\docs" altındaki manual'i okuman yeterli.


Başlık: Ynt: Microchip'in yeni derleyicisi: Mplab XCx
Gönderen: Logan - 29 Mart 2012, 16:06:32
Aslında mesajı yazmadan önce denemiştim. Fakat olmadı. Şimdi dökümanları inceliyorum. Hala çözebilmiş değilim. Nerdesin @allegro?
Başlık: Ynt: Microchip'in yeni derleyicisi: Mplab XCx
Gönderen: Erol YILMAZ - 29 Mart 2012, 16:12:21
MPLAB® XC8 C Compiler User's Guide sayfa 74 / 434

#pragma config WDT=ON, WDTPS = 0x1A

Consider the following PIC18-only examples.
#pragma config WDT = ON // turn on watchdog timer
#pragma config WDT = 1 // an alternate form of the above
#pragma config WDTPS = 0x1A // specify the timer postscale value



The configuration bits for baseline and mid-range devices can be set with the
__CONFIG macro which was supported in HI-TECH C, for example:
#include <xc.h>
__CONFIG(WDTDIS & HS & UNPROTECT);



NE VAR gibi bütün CONFIG tanımlamalarını değiştirmişler:
Tutmuyor önceki Hi-tech kodlarını....

// Config Register: CONFIG1
#define CONFIG1                                             0x2007
// Oscillator Selection bits
// RC oscillator: CLKOUT function on RA6/OSC2/CLKOUT pin, RC on RA7/OSC1/CLKIN
#define FOSC_EXTRC_CLKOUT                                   0xFFFF
// RCIO oscillator: I/O function on RA6/OSC2/CLKOUT pin, RC on RA7/OSC1/CLKIN
#define FOSC_EXTRC_NOCLKOUT                                 0xFFFE
// INTOSC oscillator: CLKOUT function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN
#define FOSC_INTRC_CLKOUT                                   0xFFFD
// INTOSCIO oscillator: I/O function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN
#define FOSC_INTRC_NOCLKOUT                                 0xFFFC
// EC: I/O function on RA6/OSC2/CLKOUT pin, CLKIN on RA7/OSC1/CLKIN
#define FOSC_EC                                             0xFFFB
// HS oscillator: High-speed crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN
#define FOSC_HS                                             0xFFFA
// XT oscillator: Crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN
#define FOSC_XT                                             0xFFF9
// LP oscillator: Low-power crystal on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN
#define FOSC_LP                                             0xFFF8
// Watchdog Timer Enable bit
// WDT enabled
#define WDTE_ON                                             0xFFFF
// WDT disabled and can be enabled by SWDTEN bit of the WDTCON register
#define WDTE_OFF                                            0xFFF7
// Power-up Timer Enable bit
// PWRT disabled
#define PWRTE_OFF                                           0xFFFF
// PWRT enabled
#define PWRTE_ON                                            0xFFEF
// RE3/MCLR pin function select bit
// RE3/MCLR pin function is MCLR
#define MCLRE_ON                                            0xFFFF
// RE3/MCLR pin function is digital input, MCLR internally tied to VDD
#define MCLRE_OFF                                           0xFFDF
// Code Protection bit
// Program memory code protection is disabled
#define CP_OFF                                              0xFFFF
// Program memory code protection is enabled
#define CP_ON                                               0xFFBF
// Data Code Protection bit
// Data memory code protection is disabled
#define CPD_OFF                                             0xFFFF
// Data memory code protection is enabled
#define CPD_ON                                              0xFF7F
// Brown Out Reset Selection bits
// BOR enabled
#define BOREN_ON                                            0xFFFF
// BOR enabled during operation and disabled in Sleep
#define BOREN_NSLEEP                                        0xFEFF
// BOR controlled by SBOREN bit of the PCON register
#define BOREN_SBODEN                                        0xFDFF
// BOR disabled
#define BOREN_OFF                                           0xFCFF
// Internal External Switchover bit
// Internal/External Switchover mode is enabled
#define IESO_ON                                             0xFFFF
// Internal/External Switchover mode is disabled
#define IESO_OFF                                            0xFBFF
// Fail-Safe Clock Monitor Enabled bit
// Fail-Safe Clock Monitor is enabled
#define FCMEN_ON                                            0xFFFF
// Fail-Safe Clock Monitor is disabled
#define FCMEN_OFF                                           0xF7FF
// Low Voltage Programming Enable bit
// RB3/PGM pin has PGM function, low voltage programming enabled
#define LVP_ON                                              0xFFFF
// RB3 pin has digital I/O, HV on MCLR must be used for programming
#define LVP_OFF                                             0xEFFF
// In-Circuit Debugger Mode bit
// In-Circuit Debugger disabled, RB6/ICSPCLK and RB7/ICSPDAT are general purpose I/O pins
#define DEBUG_OFF                                           0xFFFF
// In_Circuit Debugger enabled, RB6/ICSPCLK and RB7/ICSPDAT are dedicated to the debugger
#define DEBUG_ON                                            0xDFFF
Başlık: Ynt: Microchip'in yeni derleyicisi: Mplab XCx
Gönderen: Logan - 29 Mart 2012, 17:36:30
Erol tanımlamaları "#pragma config CONFIG1H = 0x11" şeklinde yapıyorum sorun çıkmıyor. Fakat CONFIG kullanamıyorum. Ayrıca header dosyalarında WDT veya FOSC gibi konfigürasyon bitleri tanımlı değil ya da ben yanlış dosyaya bakıyorum.
Başlık: Ynt: Microchip'in yeni derleyicisi: Mplab XCx
Gönderen: asergin - 29 Mart 2012, 21:26:05
Önceki birkaç mesajdan anlaşıldığı kadarıyla bazı arkadaşlar, Mplab X IDE ile XC8 kullanımı problemini çözmüşler ama benim gibi bu sorunu yaşayanlar için Microchip'in plugin çözümü yardımcı olacaktır. Aşağıdaki linkte pdf'de gerekli açıklamalar var
http://ww1.microchip.com/downloads/en/Market_Communication/addXC8ToMplabX.pdf (http://ww1.microchip.com/downloads/en/Market_Communication/addXC8ToMplabX.pdf)
Başlık: Ynt: Microchip'in yeni derleyicisi: Mplab XCx
Gönderen: NecroCapo - 03 Nisan 2012, 16:03:32
Daha önceden MPLAB C18 projesi olup da, XC8 ile Compile işlemini başaran var mı ?

Mevcut kodlarımda birçok yeri değiştirmek zorunda kaldım, hataların bir çoğundan kurtuldum, fakat şurada takıldım :

C18 deki #pragma udata access , idata vs.. yerleri kaldırmak zorunda kaldığım için herhalde ? Hi Tech veya XC8'de bu işler nasıl yapılıyor ?


:0: error: can't find 0x1D6 words (0x1d6 withtotal) for psect "text15" in class "CODE" (largest unused contiguous range 0x8A)
:0: error: can't find 0x1CA words (0x1ca withtotal) for psect "text35" in class "CODE" (largest unused contiguous range 0x8A)
:0: error: can't find 0x1BE words (0x1be withtotal) for psect "text22" in class "CODE" (largest unused contiguous range 0x8A)
:0: error: can't find 0x1A4 words (0x1a4 withtotal) for psect "text24" in class "CODE" (largest unused contiguous range 0x8A)
:0: error: can't find 0x190 words (0x190 withtotal) for psect "text3" in class "CODE" (largest unused contiguous range 0x8A)
:0: error: can't find 0x190 words (0x190 withtotal) for psect "text48" in class "CODE" (largest unused contiguous range 0x8A)
:0: error: can't find 0x16C words (0x16c withtotal) for psect "text30" in class "CODE" (largest unused contiguous range 0x8A)
:0: error: can't find 0x168 words (0x168 withtotal) for psect "text36" in class "CODE" (largest unused contiguous range 0x8A)
:0: error: can't find 0x146 words (0x146 withtotal) for psect "text41" in class "CODE" (largest unused contiguous range 0x8A)
:0: error: can't find 0x142 words (0x142 withtotal) for psect "text69" in class "CODE" (largest unused contiguous range 0x8A)
:0: error: can't find 0x142 words (0x142 withtotal) for psect "text80" in class "CODE" (largest unused contiguous range 0x8A)
:0: error: can't find 0x13E words (0x13e withtotal) for psect "text8" in class "CODE" (largest unused contiguous range 0x8A)
:0: error: can't find 0x13E words (0x13e withtotal) for psect "text11" in class "CODE" (largest unused contiguous range 0x8A)
:0: error: can't find 0x128 words (0x128 withtotal) for psect "text25" in class "CODE" (largest unused contiguous range 0x8A)
:0: error: can't find 0x126 words (0x126 withtotal) for psect "text59" in class "CODE" (largest unused contiguous range 0x8A)
:0: advisory: too many errors (21)