Picproje Elektronik Sitesi

DERLEYİCİLER => Microchip XC Serisi => Microchip XC8 => Konuyu başlatan: fryrmnd - 26 Temmuz 2012, 13:02:50

Başlık: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: fryrmnd - 26 Temmuz 2012, 13:02:50
Merhaba arkadaşlar. Bir türlü boş main fonksiyonunu derleyemedim. picc.ini de 16f628A nın başına pic ekledim olmadı. bir arkadaş bölgesel dil ayarlarından bahsetmiş. 2 . bir çözüm olarak da make file ların birinde bir değişiklik göstermişti sanırım onu da denedim bir sonuç alamadım. 16f seris için XC8 i mplab ile kullanan varsa yardım edebilir mi?
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: a.zorba - 26 Temmuz 2012, 13:38:51
herhangi bir sıkıntı yok pic tanımlamalaırnı aşagıdaki örnek yol gösterebılir.
ide olarak  mplabx ,  compıler    xc8  kullanıldı.

dil ayarları filan yanlış hatırlamıyorsam hitech i mplabx ile kullanmak istersen yapılıyordu .


#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
#include <pic16f876a.h>
#include "delay.h"


#define buton PORTAbits.RA1  // porta1 e buton ad? ver?ld?
#define led1  PORTCbits.RC0   // led lerle portlar e?le?t?r?ld?
#define led2  PORTCbits.RC1
#define led3  PORTCbits.RC2


void main (void)
{
    ADCON1 = 0x0F; // ADC iptal.
TRISA=0xFF;
TRISC=0x00;
PORTA=0;
PORTC=0;

     if (buton==0)  // buton a basılmışsa
         led1=1;    // led1 i yak
         DelayMs(100);    // bekle
         led1=0;        // led1 i söndur

led2=1;    // program koşma sırasında davranışı gormek ıçın yazıldı led2 ve led3 yanar soner
DelayMs(100);  // 100 ms lik gec?kme
led2=0;
DelayMs(100);
led3=1;
DelayMs(100);  // 100 ms lik gec?kme
led3=0;
DelayMs(100);

return;  // programın daima koşması için

}


Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: fryrmnd - 26 Temmuz 2012, 13:46:48
hocam yazdığım şu

#include <xc.h>
#include <pic16f628a.h>
void main(void)
{
   
}



verdiği hata da bu

:: error: chip "PIC16F628A" not present in chipinfo file "C:\Program Files (x86)\Microchip\xc8\v1.01\dat\picc.ini"
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: Tagli - 26 Temmuz 2012, 14:47:00
#include <pic16f628a.h> satırını kullanmana gerek yok. Hatta belki de hataya sebep olan odur. PIC seçimini MPLAB X'in proje ayarlarından yap.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: fryrmnd - 26 Temmuz 2012, 15:04:14
yok tagli hocam. ben de picin header ını eklemiyordum. zorba hocamın örnek koduna binaen deniyim dedim gene aynı. pic seçimini de dediğiniz gibi proje ayarlarından yapıyorum. ama gene aynı sonuç.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: a.zorba - 26 Temmuz 2012, 16:05:43
bir sorun yok ,  programı kaldırıp  yenıden kurmayı dene .

#include <xc.h>
#include <pic16f628a.h>
void main(void)
{
   
}


buda cıkdısı
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory `C:/New Folder/628deneme.X'
make  -f nbproject/Makefile-default.mk dist/default/production/628deneme.X.production.hex
make[2]: Entering directory `C:/New Folder/628deneme.X'
"C:\Program Files\Microchip\xc8\v1.01\bin\xc8.exe" --pass1  --chip=16F628A -Q -G --asmlist  --double=24 --float=24 --emi=wordwrite --opt=default,+asm,-asmfile,+speed,-space,-debug,9 --addrqual=ignore -P -N255 --warn=0 --summary=default,-psect,-class,+mem,-hex,-file --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+config,+clib,+plib "--errformat=%%f:%%l: error: %%s" "--warnformat=%%f:%%l: warning: %%s" "--msgformat=%%f:%%l: advisory: %%s"  -obuild/default/production/_ext/1697874529/newmain.p1  "C:/New Folder/628deneme.X/newmain.c"
"C:\Program Files\Microchip\xc8\v1.01\bin\xc8.exe"  --chip=16F628A -G --asmlist -mdist/default/production/628deneme.X.production.map  --double=24 --float=24 --emi=wordwrite --opt=default,+asm,-asmfile,+speed,-space,-debug,9 --addrqual=ignore -P -N255 --warn=0 --summary=default,-psect,-class,+mem,-hex,-file --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+config,+clib,+plib "--errformat=%%f:%%l: error: %%s" "--warnformat=%%f:%%l: warning: %%s" "--msgformat=%%f:%%l: advisory: %%s"   -odist/default/production/628deneme.X.production.cof  build/default/production/_ext/1697874529/newmain.p1     
Microchip MPLAB XC8 C Compiler (Free Mode)  V1.01
Copyright (C) 2012 Microchip Technology Inc.
(1273) Omniscient Code Generation not available in Free mode (warning)

Memory Summary:
    Program space        used     4h (     4) of   800h words   (  0.2%)
    Data space           used     2h (     2) of    E0h bytes   (  0.9%)
    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%)


Running this compiler in PRO mode, with Omniscient Code Generation enabled,
produces code which is typically 40% smaller than in Free mode.
See http://microchip.com for more information.

make[2]: Leaving directory `C:/New Folder/628deneme.X'
make[1]: Leaving directory `C:/New Folder/628deneme.X'

BUİLD SUCCESSFUL (total time: 6s)
Loading code from C:/New Folder/628deneme.X/dist/default/production/628deneme.X.production.hex...
Loading symbols from C:/New Folder/628deneme.X/dist/default/production/628deneme.X.production.cof...
Loading completed
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: fryrmnd - 26 Temmuz 2012, 16:27:14
acaba derleyiciden mi mplabx den mi. C18 de 18F serisi ile sıkıntı yok. şimdi baktım. XC8 18 serisini de derlemesi gerkmiyor mu. 18 serisi için proje oluşturdum. C18 derleyicisini görüyor sadece.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: a.zorba - 27 Temmuz 2012, 14:09:07
kullandıgın XC8 versiyonu nedir 1,0,0  ise 1,0,1 e yukseltıp denermısın 
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: Tagli - 27 Temmuz 2012, 14:18:35
MPLAB X'in XC plugin'i yüklü mü?
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: fryrmnd - 27 Temmuz 2012, 15:12:25
versiyon 1.01 ama plugin yüklü değil. aslında plugin i olduğundan hbaerim bile yok. bir de plugin yükleyip deneyeyim. teşekkürler arkadaşlar.

mesaj birleştirme:: 27 Temmuz 2012, 16:39:53

mplabx 1.3 yükledim. kurulum başlangıcında xc8 ile ilgili tüm ayar kutucuklarını da tik ledim. şuan derleyebiliyorum.

http://www.microchip.com/forums/m647154.aspx (http://www.microchip.com/forums/m647154.aspx)

şurda yazdığına göre de 1.2 sonrası plugin mplabx ile beraber geliyormuş.  tekrardan teşekkürler arkadaşlar.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: a_a_sezen - 07 Ağustos 2012, 12:24:16
Alıntı yapılan: Tagli - 26 Temmuz 2012, 14:47:00
#include <pic16f628a.h> satırını kullanmana gerek yok. Hatta belki de hataya sebep olan odur. PIC seçimini MPLAB X'in proje ayarlarından yap.

Hocam, satırı çıkarınca ilgili header da define edilmiş hiç bir şeyi tanımıyor.
Dediğiniz gibi proje oluştururken pic seçimini zaten yapıyorum.

Bir de XC8 ile delay_ms() gibi içinde delay geçen hiç bir makro yok galiba.
delay.h diye bir kütüphane yok. delays.h var onda da tanımlı bir şey göremedim. İşe de yaramadı zaten.
Help dosyasında xc8 için görünmüyor.
XC8 ile hemen her şey programcının sırtında mı yoksa? Herkes kendi kütüphanesini mi yazacak. "otursun yazsın makro nesine" mi demişler.
Ya da siz yorumlarmısınız.
Yazdıklarımı "giriş seviyesinden" değerlendirirseniz memnun olurum.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: fryrmnd - 07 Ağustos 2012, 16:53:52
ben işlemciyi sadece project oluştururken seçtim ve sadece "xc.h" dosyasını include ettim. mplabx 1.3, xc8 1.01. isterseniz tekrar kurulum yapın.
delay kütüphanesi 16F serisi için bildiğim benim de yok. hitech in delay kütüphanelerini kullanabilirsin. pek iyi değil diyorlar ama. 18F serisi için C18 in kütüphaneleri kullanılıyor bildiğim. 16F serisi için ya netten bulucaksınız yada kendiniz yazıcaksınız.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: a_a_sezen - 07 Ağustos 2012, 19:15:03
En yukarıdaki kodu kopyala yapıştır yapıp denemiştim.
PORTAbits tanımınıda çözemedim uyarısı verince yazdım.
1.30 versiyonu indirip öncekini kaldırıp kurunca şimdi sadece DelayMs kaldı tanımsız olarak.
İşin başında MicroC kullandığım Ansi C string fonksiyonlarında saçmalayınca (strcmp, strtok) güvenli bir derleyiciye alışayım alışmışken diye düşünmüştüm.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: fryrmnd - 08 Ağustos 2012, 00:01:47
Delay ms için

delay.h
/*
* Delay functions for HI-TECH C on the PIC
*
* Functions available:
* DelayUs(x) Delay specified number of microseconds
* DelayMs(x) Delay specified number of milliseconds
*
* Note that there are range limits: x must not exceed 255 - for xtal
* frequencies > 12MHz the range for DelayUs is even smaller.
* To use DelayUs it is only necessary to include this file; to use
* DelayMs you must include delay.c in your project.
*
*/

/* Set the crystal frequency in the CPP predefined symbols list in
HPDPIC, or on the PICC commmand line, e.g.
picc -DXTAL_FREQ=4MHZ

or
picc -DXTAL_FREQ=100KHZ

Note that this is the crystal frequency, the CPU clock is
divided by 4.

* MAKE SURE this code is compiled with full optimization!!!

*/

#ifndef XTAL_FREQ
#define XTAL_FREQ 4MHZ /* Crystal frequency in MHz */
#endif

#define MHZ *1000L /* number of kHz in a MHz */
#define KHZ *1 /* number of kHz in a kHz */

#if XTAL_FREQ >= 12MHZ

#define DelayUs(x) { unsigned char _dcnt; \
  _dcnt = (x)*((XTAL_FREQ)/(12MHZ)); \
  while(--_dcnt != 0) \
  continue; }
#else

#define DelayUs(x) { unsigned char _dcnt; \
  _dcnt = (x)/((12MHZ)/(XTAL_FREQ))|1; \
  while(--_dcnt != 0) \
  continue; }
#endif

extern void DelayMs(unsigned char);



delay.c
/*
* Delay functions
* See delay.h for details
*
* Make sure this code is compiled with full optimization!!!
*/

#include "delay.h"

void
DelayMs(unsigned char cnt)
{
#if XTAL_FREQ <= 2MHZ
do {
DelayUs(996);
} while(--cnt);
#endif

#if    XTAL_FREQ > 2MHZ
unsigned char i;
do {
i = 4;
do {
DelayUs(250);
} while(--i);
} while(--cnt);
#endif
}


dosyalarını kullanın.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: Tagli - 08 Ağustos 2012, 09:03:15
MPLAB X'i vd XC derleyicilerini tam oturtamadılar henüz. Çeşitli sorunlar çıkabiliyor. Oturması biraz zaman alacaktır, sabretmek lazım.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: a_a_sezen - 08 Ağustos 2012, 10:46:01
 fryrmnd hocam, mahçup oldum. İlginiz için teşekkür ederim.
............
Hocam xc8 in helpinde açıklanan xc.h de şöyle bir kullanım daha varmış.
_delay() ve _delay3()
Ancak fonksiyon prototipini eklemeden çalışmıyor.



#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
void _delay(unsigned long cycles);
void _delay3(unsigned char cycles);
int main(int argc, char** argv) {
    char i,j,c;   
    TRISD = 0;
    PORTD = 0;
    TRISB = 0;
    PORTB = 0;
    _delay(100);
    while(1){
        for(i = 128, j = 1; i > 0; i /= 2, j *= 2){
            PORTD = i;
            PORTB = j;
            PORTB = ~PORTB;
            for(c = 0; c < 3; c++)
            _delay3(100000);
        }
    }
    return (EXIT_SUCCESS);
}

Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: fryrmnd - 08 Ağustos 2012, 16:20:37
ben pek aramamıştım direk işimi gördüğü için hitech in delay fonksiyonlarını kullandım. çalıştırabildiğinize sevindim.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: a_a_sezen - 08 Ağustos 2012, 17:14:33
Buraya örneği kopyaladığımda isis denemesini de yapmıştım.
Kod üzerinde hiç bir şeyi değiştirmediğim halde derlemeye kalktığımda  _delay3() için hata vermeye başladı. Satırı iptal ettim _delay() için çalışıyor.
Çok ilginç bir durum. MicroC de benzeri davranışları sıkça sergiliyordu. Kapatıp açınca sorun gideriliyordu. Olur ya.. deyip denedim ama olmadı.
İlerde kodlardan yararlanacak arkadaşlara bilgi olsun diye yazdım.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: fryrmnd - 08 Ağustos 2012, 20:29:28
aynen dediğiniz gibi. tam oturmadığı için hata olmadığını bildiğiniz bir kodda hata veriyor. kapayıp açıp yada yeni projeye kopyalayıp derlediğinizde hata vermiyor. hala sıkıntısı var.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: ArGeMaNiA - 28 Ağustos 2012, 00:15:05
Arkadaşlar 16f628A projesi oluşturup, "Source Files" a main.c dosyası ekliyorum
Dosya içinde aşağıdaki kodlar var.

#include "pic.h"
int main(void) {
        return 0;
    }

Derlemeye çalışınca
[jstex]BUİLD FAILED (exit value 2, total time: 870ms)[/jstex]
bu hatayı veriyor.
Bir de alakası var mı bilmiyorum ama derleyicilerin seçildiği kısımda
derleyicilerin yanında küçük yeşil yuvarlaklar oluyor ya, XC8'in yanında o çıkmıyor.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: a_a_sezen - 28 Ağustos 2012, 02:12:49
Uğraşmadan önce XC8 i yeniden kurup deneyin isterseniz.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: Tagli - 28 Ağustos 2012, 08:53:25
Yukarıda yazmıştım ama tekrarlayayım: XC Plugin yüklü olmalı. MPLAB'in son versiyonunda yüklü olarak geliyormuş ama senin elinde daha eski bir versiyon varsa plugin yüklü olmayabilir.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: ArGeMaNiA - 28 Ağustos 2012, 09:28:33
Yok hocam son sürümleri.Yine de kontrol ettim plugini yüklü görünüyor.
Antivirusu kapattım, firewall'ı kapattım.Dosyayı yeniden indirdim.
Admin olarak çalıştırdım.Artık kurulmuyor.
"Licensing Error" veriyor.
Aynen aşağıdaki...
http://www.microchip.com/forums/m671517.aspx (http://www.microchip.com/forums/m671517.aspx)

mesaj birleştirme:: 28 Ağustos 2012, 10:41:03

Sonunda kuruldu ama değişik bir şey yapmadım.
Yaptıysamda farketmedim.Kur-sil kur-sil dün geceden beri
farklı bişey yapmadım.Sonunda çalıştı.

Ama şunu söyleyebilirim; derleyici seçme aşamasında derleyicinin yanındaki
yeşil küçük daire yoksa problem var.Önceden çıkmıyordu.Şimdi çıkıyor ve derledi.

Buna kıyas edersek lek yak söndür örneği bir ay sürer herhalde  >:(
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: ArGeMaNiA - 29 Ağustos 2012, 23:30:11
Arkadaşlar bütün problem Comodo Firewall'dan kaynaklanıyordu herhalde..
Silince hiç bir problem kalmadı.

Bir sorum var.Pro versiyonda %40 daha küçük kod oluşur diyor.
Bu durum sadece daha çok kod yazılabilinmesi ile mi  ilgili,
yoksa programın performansı da artıyor mu?
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: t2 - 08 Şubat 2013, 11:50:49
 XC8 ile 16F demo kodunu derliyorum. Bu kodların hex e dönüşmeden önceki nihai halini ifade eden dosya nedir acaba? asm olarak veya buna en yakın halini bulabilir miyim?
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: Tagli - 08 Şubat 2013, 12:13:15
IDE icinde disassembly listing gosteren bi yer var, C kodlarinin hangi asm kodlarina donustugunu gosteriyor. Bu bilginin ayri bir dosya olarak da saklandigini saniyorum ama nerede oldugunu bilmiyorum, merak edip bakmadim hic, hep IDE icinden eristim.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: t2 - 08 Şubat 2013, 13:14:40
Tamam bunu gördüm. acaba bu asm kodu alsak assembler ile derlesek olur mu? Daha sonra asm bazında rütüş yapmak veya Proton derleyicisinde oluşturduğum asm koddan buna ekleme yapmak istiyorum. veya tersi de olabilir. bundan alıp onun asm koduna yapıştırmak asm olarak derlemek.  deneme yapsam iyi olacak.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: Tagli - 08 Şubat 2013, 15:01:12
Sanırım olur. Ancak farklı derleyiciler tarafından derlenmiş kodları birleştirmek sıkıntı yaratır. Hatta XC8'i derlediği iki farklı programın asm kodlarını bile birbirine karıştırmak doğru değil. Derleyiciler yaptıkları neredeyse tüm işlemler için, dahili durumlarını ve bazı diğer değişkenleri sakladıkları yazılımsal bir yığın kullanıyorlar. İki farklı asm kodunu birleştirmeye çalışırsan bu yığınları bütünlüğünü bozarsın büyük ihtimalle.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: metaltrrocker - 02 Ağustos 2013, 05:58:22
Konuyu hortlatıyorum biraz ama.Başlık uygun olduğu için bu konunun altına yazmak istedim.
Bendeki ilaçlı XC8 de derleyici çıktıları mesela hex dosyası "projeismi.X.production.hex" tarzında oluyor.Arada bir nokta daha olmasını kaldıramayan proteus da bunu kabul etmiyor.Nette araştırınca da bununla alakalı birşey bulamadım.
yardımlarınızı bekliyorum.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: a_a_sezen - 03 Ağustos 2013, 15:37:48
Alıntı yapılan: metaltrrocker - 02 Ağustos 2013, 05:58:22
Konuyu hortlatıyorum biraz ama.Başlık uygun olduğu için bu konunun altına yazmak istedim.
Bendeki ilaçlı XC8 de derleyici çıktıları mesela hex dosyası "projeismi.X.production.hex" tarzında oluyor.Arada bir nokta daha olmasını kaldıramayan proteus da bunu kabul etmiyor.Nette araştırınca da bununla alakalı birşey bulamadım.
yardımlarınızı bekliyorum.

Project Properties -> Building  altında ImageName olarak tanımlı gördüm ancak düzenleme seçeneği sunmamış...
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: kantirici - 03 Ağustos 2013, 17:29:50
Proteus versiyonundan kaynaklı bir sorun olabilir çünkü ben sorusuz kullanıyorum.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: metaltrrocker - 03 Ağustos 2013, 18:15:58
Proteus 7.1 sp0 vardı.Sildim proteus 7.7 sp2 yükleyecektim ki yalnışlıkla portable indirmişim.denedim bu sürümde sorun çıkmıyor.Kurulumlu versiyonunu indirip deneyecem.Teşekkür ederim
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: skara1214 - 03 Ağustos 2013, 19:15:48
bende proteus 7.10 var wdt ve 18flerdeki simultane adc  düzgün çalışmıyor(gerçekte denedim hiç sıkıntı yok)
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: skara1214 - 03 Ağustos 2013, 23:50:07
Şimdi printf komutundan hiç cevap alamıyorum.Kendim ayar yapıp txrege yükleyince sıkıntı yok ama printf ile birşey yazınca hiçbirşey yollamıyor hatada  vermiyor(stdlib.h yüklü)
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: metaltrrocker - 04 Ağustos 2013, 00:38:36
Benim sorunumla ilgili olarak, proteus 7.7 sp2 yi yükledim simulasyon sorunsuz çalıştı.Neden biranda sapıttı onu anlamış değilim.Teşekkür ederim yardımlar için.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: yldzelektronik - 04 Ağustos 2013, 01:16:08
Alıntı yapılan: skara1214 - 03 Ağustos 2013, 23:50:07
Şimdi printf komutundan hiç cevap alamıyorum.Kendim ayar yapıp txrege yükleyince sıkıntı yok ama printf ile birşey yazınca hiçbirşey yollamıyor hatada  vermiyor(stdlib.h yüklü)

Her hangi biryerde yada main programda putc fonksiyonu tanımla.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: skara1214 - 04 Ağustos 2013, 01:21:28
nasıl yani?  örnek satır verebilirmisiniz
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: yldzelektronik - 04 Ağustos 2013, 01:29:01

void putch(char x){

    while(!TRMT);
    TXREG = x;
}
unsigned char getch(){
/* retrieve one byte */
while(!RCIF) /* set when register is not empty */
continue;
return RCREG;
}
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: skara1214 - 04 Ağustos 2013, 01:41:58
bunda sıkıntı yok ben printf komutunu arıyorum mesela 16 bitlik bir sayı nasıl yollanır? printf("sss %lu",x); böyle kullanım için
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: AsHeS - 04 Ağustos 2013, 01:48:14
Alıntı yapılan: skara1214 - 04 Ağustos 2013, 01:41:58
bunda sıkıntı yok ben printf komutunu arıyorum mesela 16 bitlik bir sayı nasıl yollanır? printf("sss %lu",x); böyle kullanım için
printf  fonksiyonu putch'ye çağrı yapar putch tanımlayın printf ile kullanın :)
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: skara1214 - 04 Ağustos 2013, 02:06:45
ok sağolun
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: z - 19 Ekim 2013, 17:27:43
XC8 de ilk programi yazmak uzere kollari sivadim. Bir an once kodu yazip kurtulmak istiyorum.

Bunun icin 16F628A icin interrupt kullanan basit bir programinizi sablon olarak kullanip uzerinden devam etmek istiyorum.

Boyle bir sablon verebilirmisiniz?

Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: Tagli - 19 Ekim 2013, 17:45:32
Elimde 16F887 icin olan bir kod var sadece. Henuz tamamlanmamis (ve yarim haliyle dsPIC30F'e gecirip oradan devam edecegim) bir BLDC surucu kodunun ana .c dosyasi. Belki fikir verir.
/*
* File:   bldcMain.c
* Author: tagli
*
* Created on July 3, 2013, 5:26 PM
*/

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

#include "utils.h"
#include "lcd.h"
#include "lcdMsgs.h"
#include "params.h"
#include "usart.h"
#include "status.h"
#include "protocol.h"
#include "cmd.h"

//Configuration Bits
#pragma config CPD = OFF
#pragma config BOREN = OFF
#pragma config IESO = OFF
#pragma config FOSC = HS
#pragma config FCMEN = OFF
#pragma config MCLRE = ON
#pragma config WDTE = OFF
#pragma config CP = OFF
#pragma config LVP = OFF
#pragma config PWRTE = ON
#pragma config CP = OFF

#define LCD_ENABLED

//Other Constants
const float RPM_RANGE = 4000.0;

//Allien Functions
char getCW(char hall);
char getCCW(char hall);

//Local Function Prototypes
void initialize(void);
void initPWM(void);
void interrupt isr(void);

//Variables
//None yet...

void interrupt isr(void){
if (RBIE == 1 && RBIF == 1){
char hall = updateHall();
if (s.direction == 0) PORTA = getCW(hall);
else if (s.direction == 1) PORTA = getCCW(hall);
RBIF = 0;
}
else if (TMR1IE == 1 && TMR1IF == 1){
++sysTick;
TMR1IF = 0;
}
else if (TXIE == 1 && TXIF == 1) txInt();
else if (RCIE == 1 && RCIF == 1) rxInt();
}

int main(void) {
initialize();
printGreatings();
lcdClear();

p.ki_s = 0.0005;
float duty = 0.0;

//Main Loop
while(1){
updateStatus();
if (proReceive() == 1){
processCommands(inProBuf);
}

//Calculating the reference (to be moved into updateStatus)
int pot = readADC(7);
float ref = (pot - 512) * (RPM_RANGE / 512.0);
ref = fabs(ref);

float err = ref - abs(s.spdNow);
duty += err * p.ki_s * s.dt;
duty = limit(duty, 0, 0.90);

#ifdef LCD_ENABLED
//LCD Update
lcdClear();
printRef((int)ref);
printRpm(s.spdNow);
printPwm((int)(duty*100));
printErr();
#endif

//PWM Update
setDuty(duty);

delayMs(100);
}
panic();
return (EXIT_SUCCESS);
}

void initialize(void){
//Pin Settings
PORTA = 0;
PORTB = 0;
PORTC = 0;
PORTD = 0;
PORTE = 0;

TRISA = 0b11000000;
TRISB = 0b11111111;
TRISC = 0b11001000;
TRISD = 0b00000111;
TRISE = 0b11111111;

//ADC Settings
ANSEL = 0b10000000; //RE2 -> Analog input
ANSELH = 0;
ADCON0 = 0b10011101;
ADCON1 = 0b10000000;

//PWM Settings
T2CON = 0b00000101; //TMR2 on, prescaler 1:4
PR2 = (PWM_PERIOD - 1);
CCP2CON = 0b00001100;
setDuty(0.0);

//Timer1 Initialization
TMR1H = 0;
TMR1L = 0;
T1CON = 0b00110101; //Prescaler -> 1:8

//USART initialization
usartInit(B115200);

//Variable initializations
sysTick = 0;
phaseCounter = 0;

//Module Initializations
initStatus();
initParameters();

#ifdef LCD_ENABLED
lcdInit();
lcdHome();
#endif

//Interrupt Settings
IOCB = 0b00010101;
INTCON = 0b11001000; //PORTB int. is enabled
TMR1IF = 0;
TMR1IE = 1; //Timer1 interrupt is enabled

//Initilization Done Signal
DEBUG_LED = 1;
delayMs(50);
DEBUG_LED = 0;
delayMs(50);
}
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: z - 19 Ekim 2013, 17:49:14
Yeni bir proje olustur demistim ve kullanacagim cip olarak da 16F628A yi secmistim.

Bu durumda senin programina daha baska bir sey ilave etmeme gerek kalacakmi?

Dogrudan register isimleri ile donanima erismeyi dusunuyorum. Bunun icin 16F628 ile ayri bir tanim (include vs) yapmam gerekecekmi?
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: Tagli - 19 Ekim 2013, 17:53:41
Hayir. MPLABX projede secilen modele gore bir #define olusturuyor kendi icinde sanirim. xc.h, bu tanimlamaya gore ilgili header dosyasini include ediyor. Bu sebeple sadece xc.h'in include edilmesi yeterli. Ancak yanlis hatirlamiyorsam bunun tum diger .c dosyalarinda da (veya baska header dosyalari uzerinden dolayli olarak) yapilmasi tavsiye ediliyordu.

Bu arada, stdlib ve stdio'ya gerek olmayabilir. Kendi genel template'i ile gelmislerdi bende belki ise yararlar diye silmemistim galiba. Ancak hazir genel template'deki main'in argumanlarini silersen birkac byte kazanabilirsin. Donusunu void yapmak da 1 byte kazandirabilir belki, her nedense onu yapmamisim.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: z - 19 Ekim 2013, 22:59:28
16F628'i 16 Mhz Kristal ile calistiracagim. Reset pini lazim oldugu icin Input pini olarak kullanacagim.
Watch Dog'a ihtiyacim yok. Brown Out dedektorle de isim olmayacak.
Kod koruma da istemiyorum.

Bu sartlarda asagidaki ayarlamalar dogrumudur?

Brenner programlayici bu ayarlamalari uretilen hex Koddan ogrenebiliyormu? Daha onceleri aklimda kaldigi kadariyla konfig ayarlarini haricten Brenner'e ayrica tanimliyordum.

MPLAB + XC8 ile Brenner entegrelestirilebiliyormu?

#pragma config CPD = OFF
#pragma config BOREN = OFF
#pragma config FOSC = HS
#pragma config MCLRE = OFF
#pragma config WDTE = OFF
#pragma config CP = OFF
#pragma config LVP = OFF
#pragma config PWRTE = ON
#pragma config CP = OFF

programi derledikten sonra Programlayiciya dosya yolunu asagidaki sekilde veriyorum.

Proje klasoru\Dist\Default\Production\Projedosyam.hex

Dogru dosyayimi aliyorum.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: dnacikaya - 19 Ekim 2013, 23:12:35
Config from hex file seçerseniz usburn bu ayarlamaları yapmanızı sağlar. Seçmezseniz kodlamanızdaki ayarları değiştirmez sizde değiştiremezsiniz. Usburb için basit bir kılavuz hazırlamıştım. Linki;

http://elektroinfo.blogspot.com/2010/03/brenner8-9-usb-programlayici-arayuz.html?m=1 (http://elektroinfo.blogspot.com/2010/03/brenner8-9-usb-programlayici-arayuz.html?m=1)

Kolaygelsin.

Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: AsHeS - 19 Ekim 2013, 23:24:21
@z hocam config bitlerini MPLAB X de bir tool yardımıyla otomatik kod üretimiyle yapabilirsiniz aşağıda ki linkte arkadaş anlatıyor:http://ramazansubasi.net/mplab-x-baslamadan-pratik-bilgiler/ (http://ramazansubasi.net/mplab-x-baslamadan-pratik-bilgiler/)
Tool içerisinde açıklamalarda mevcut.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: z - 19 Ekim 2013, 23:27:27
XP de kullandigim program dnacikayanin sitesindeki ekran gorunumune sahipti ve onda bir sekilde programlama yapabiliyordum.

Simdi MAC icin yeni bir program kullaniyorum. Ekran goruntusu XP dekinden biraz farkli.

(http://s1310.hizliresim.com/1g/m/tr8yz.png) (http://bit.ly/c25MCx)

mesaj birleştirme:: 19 Ekim 2013, 23:48:40

Yazdigim deneme programini cipe yukleyip voltajini verip xtal pinlerine scopla bakinca sinyal goremeyince brennerin config ayarlarini dogru yapip yapmadigindan killandim.

Yukarida verdigim ayar kodlari amacima uygun degilmi?

mesaj birleştirme:: 20 Ekim 2013, 00:10:25

Proglamlayiciyi XP PC'ye takip cipi programladim ve cip devre uzerinde calisti.

Demekki ya MAC'de bir seyleri yanlis yapiyorum yada indirdigim MAC programda sorun var.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: z - 20 Ekim 2013, 00:52:43
Zurna = Zurna XOR 1 islemini yapmak icin

Zurna^1=1 dan suphelendim sonra da Zurna=Zurna^1;

komutlarini yazip asm ciktisina baktim.

   375                           ;main.c: 55: Zurna = Zurna ^ 1;
   376  0035  0879                  movf   _Zurna,w
   377  0036  3A01                  xorlw   1
   378  0037  00F0                  movwf   ??_isr
   379  0038  0870                  movf   ??_isr,w
   380  0039  00F9                  movwf   _Zurna

Buradaki;


   378  0037  00F0                  movwf   ??_isr
   379  0038  0870                  movf   ??_isr,w

satirlarina neden ihtiyac duymus anlamadim.

Kufredecem de acaba ben mi yanlis dusunuyorum. XC8 de optimizasyon ayari yokmu? Goya 60 gun profosyonel ozelliklerde kullanacaktim. Acaip optimizasyon yapiyor falan diyorlardi tanitim sayfasinda.

Belki de ben PIC asm yi unuttum.

Zurna ^=1;
i=Zurna & 0xF0;

islemine bakin.

   375                           ;main.c: 55: Zurna = Zurna ^ 1;
   376  0035  0879                  movf   _Zurna,w
   377  0036  3A01                  xorlw   1
   378  0037  00F0                  movwf   ??_isr
   379  0038  0870                  movf   ??_isr,w
   380  0039  00F9                  movwf   _Zurna
   381                           
   382                           ;main.c: 57: i=Zurna & 0xF0;
   383  003A  0879                  movf   _Zurna,w
   384  003B  39F0                  andlw   240
   385  003C  00F0                  movwf   ??_isr
   386  003D  0870                  movf   ??_isr,w
   387  003E  00F6                  movwf   isr@i

Kufredecem. Bu C derleyicisini yazan gerizekali galiba.

Birisi yanlis dusundugumu soylesin.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: AsHeS - 20 Ekim 2013, 01:07:32
File->Project Properties->XC8 Global options->XC8 compiler->Option categories->Optimizations
Buraya girdikten sonra en altta Operation mode bulunur burada Free, Standart, PRO bulunur. PRO yu kullanmanız halinde maksimum optimizasyonu alırsınız.
Edit:Proje başlangıcında Free olarak açılıyor bu seçenek haberiniz olsun hocam.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: z - 20 Ekim 2013, 01:10:13
Hemen deneyecegim de bu adamlarin isi asagidaki deyise benziyor o zaman;

Allah fakiri sevindirmek icin once esegini kaybettirirmis sonra da buldururmus.

Eger optimizasyon diye bu fazlaliklari kaldiracaksa bu is esek isine donecek.

Hic optimizasyona kafa yormadan kod uret araya da fazladan kodlar ekle. Bak simdi nasil optimizasyon yapacam diye sonra o fazla kodlari cikart.

Eger bunu yapiyorsa cok ayip.

Derleme islemi sonunda su mesaji veriyor XC8

Running this compiler in PRO mode, with Omniscient Code Generation enabled,
produces code which is typically 40% smaller than in Free mode.
See http://microchip.com (http://microchip.com) for more information.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: AsHeS - 20 Ekim 2013, 01:18:53
23:                x^=1;
002D  3001     MOVLW 0x1
002E  06A4     XORWF x, F
24:                y=x&0xF0;
002F  0824     MOVF x, W
0030  00A3     MOVWF y
0031  30F0     MOVLW 0xF0
0032  05A3     ANDWF y, F

Hocam optimize halinde bu şekilde oluyor sizin yazdığınız kod.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: z - 20 Ekim 2013, 01:19:44
Operation modu Free den Pro'ya aldim. Speed optimizasyonunu actim ayni kodlari uretti.

Eger bu derleyici bu sekilde kod uretecekse kafamdaki projeyi mumkun degil 16F628 icine yerlestiremem.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: AsHeS - 20 Ekim 2013, 01:20:53
Alıntı yapılan: AsHeS - 20 Ekim 2013, 01:18:53
23:                x^=1;
002D  3001     MOVLW 0x1
002E  06A4     XORWF x, F
24:                y=x&0xF0;
002F  0824     MOVF x, W
0030  00A3     MOVWF y
0031  30F0     MOVLW 0xF0
0032  05A3     ANDWF y, F

Hocam size üretilen kod bu şekilde mi  ?
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: z - 20 Ekim 2013, 01:25:57
Hayir hala ilk verdigim sekilde uretiliyor.

Bu senin verdigin kod tami tamina esek hikayesine uydu.

Siradan bir asm yazimda bu kod yazilir. Fakat hala optimizasyon yapilacak durumda. 1 satir fazla gorundu gozume ama iddia edemeyecegim PIC'e asm yazmayali belki 10 sene oldu.

Adamlarin bir amaci var ama ne? Araya fazla fazla kod koyup sonra onlari kaldirinca optimizasyon yapiyorlarmis durumu var.

Debug yapmak icin boyle yaptik deseler mevcut degiskenlerle de debug yapilir.

Acaba XC8'in MAC versiyonu mu boyle?

Bir de sen derleyiciyi PRO moddan free moda alsan nasil kod uretecek acaba?


Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: AsHeS - 20 Ekim 2013, 01:30:52
23:                x^=1;
003D  3001     MOVLW 0x1
003E  00A5     MOVWF 0x25
003F  0825     MOVF 0x25, W
0040  06A9     XORWF x, F
24:                y=x&0xF0;
0041  0829     MOVF x, W
0042  39F0     ANDLW 0xF0
0043  00A5     MOVWF 0x25
0044  0825     MOVF 0x25, W
0045  00AA     MOVWF y

Bu da Free Mode üretimi.
Hocam Apply yaptıktan sonra OK tuşuna basın belki sorun ondandır ?
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: Mr.Java - 20 Ekim 2013, 01:32:43
MPLAB X'e HI-TECH C PRO yükleyip deneyin bir.XC8 MAC sistemde belki tam oturmamış olabilir.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: z - 20 Ekim 2013, 01:36:45
Hocam apply da denedim Ok de denedim, programi kapatip actim proje ciktilarini sildim yeniden derledim.
Degisen bir sey yok.

Yarin MPLAP+XC8'i  birde PC'ye yukleyeyim ama installation icin gene sizlerden destek almam gerekecek.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: AsHeS - 20 Ekim 2013, 01:40:24
Alıntı yapılan: z - 20 Ekim 2013, 01:36:45
Hocam apply da denedim Ok de denedim, programi kapatip actim proje ciktilarini sildim yeniden derledim.
Degisen bir sey yok.

Yarin MPLAP+XC8'i  birde PC'ye yukleyeyim ama instalation icin gene sizlerden destek almam gerekecek.
Hocam burada bir arkadaşımız resimlerle anlatmış kurulumu, optimizasyon ayarlarını ve gerekli bazı yapıları
http://ramazansubasi.net/xc8-kurulumu/#.UmMJ8hCbyOo (http://ramazansubasi.net/xc8-kurulumu/#.UmMJ8hCbyOo)
http://ramazansubasi.net/mplab-x-baslamadan-pratik-bilgiler/#.UmMJ9hCbyOo (http://ramazansubasi.net/mplab-x-baslamadan-pratik-bilgiler/#.UmMJ9hCbyOo)
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: z - 20 Ekim 2013, 01:41:16
Bu kod en optimize su sekilde yazilir.

   

         ;main.c: 55: Zurna = Zurna ^ 1;

         movf   _Zurna,w
         xorlw   1
         movwf   _Zurna

        ;main.c: 57: i=Zurna & 0xF0;

         andlw   240
         movwf   isr@i



Hatali dusunmuyorsam 5 satirda biter is.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: AsHeS - 20 Ekim 2013, 01:43:55
Hocam hatta kürek lazımsa şu işinizi görür.
Alıntı yapılan: files - 02 Ağustos 2013, 02:41:50
sonsivrideki ekli dosyanın içeriği;

Fix for MPLAB® XC v1.10 Compilers
=================================

Windows, Linux & Mac OS X

August 13, 2012 Updated for v1.10 compilers.
August 14, 2012 MPLAB XC32 C++ license activated.

http://filesmelt.com/dl/MXCF11011.7z
http://mir.cr/0XGTYNWW
http://www.multiupload.com/Y7RGAZP2C2

Password: sonsivri

Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: Tagli - 20 Ekim 2013, 09:23:36
XC8'in asm ciktisinda bana da cok gereksiz satirlar var gibi gelmisti. Ozellikle arka arkaya gelen 3-4 tane goto komutu surekli tekrarlaniyor. Benzer yapilar goto tablosu icin kullanilir normalde ama bu komutlarin ustunde PC'yi degistiren bir komut da gozukmuyor, bu durumda birkac tanesi cop gibi.

z'nin de dedigi gibi, sanki ucretsiz versiyonda kodu sisirmek icin araya rasgele gereksiz kodlar atiyor gibi.

Ama z'nin verdigi ornekteki fazladan birkac tasima isleminde art niyet olmayabilir. Derleyici tasarimi konusunda pek bilgili degilim ama bildigim kadariyla derleyiciler her islemin sonucunu bir yerlerde (muhtemelen stack'ta) saklamak ister, belki sonradan kullanilir diye. Optimizasyonlar acik olmayinca, daha sonradan kullanilmadigini da farketmedigi icin o kisimlari silmiyor tahminimce.

Tek basina yazilan ++i; ve i++; satirlari arasindaki farki duymussunuzdur belki. Optimizasyon yapilmazsa, ++i; ifadesinin daha iyi oldugu soylenir. Cunku i++; ifadesinde i'nin eski degeri isleme girecegi icin oncelikle o bir yerde saklanir, daha sonda i arttirilir. Elbette ki tek basina kullanildigi zaman i'nin eski degeri kullanilmadigi icin bu eskiyi saklama isi gereksiz bir yuk oluyor. Optimizasyon bu gibi durumlari farkedip siliyor.

Belki XC8'de de buna benzer bir durum vardir. Gunahini aliyor olabiliriz yani.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: sadogan - 20 Ekim 2013, 12:59:32
 Aynı işlemi ccs de test edeyim dedim

  char i,zurna;
   zurna^=1;
   i=Zurna & 0xF0;
çıkan asm:
0026:  MOVLW  01
0027:  XORWF  22,F
....................    i=Zurna & 0xF0;
0028:  MOVF   22,W
0029:  ANDLW  F0
002A:  MOVWF  21
002B:  GOTO   026
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: z - 20 Ekim 2013, 14:41:06
XC8 daha bebek. Biraz daha buyumesi lazim.

Benzer tartismalar microchipn sitesinde de yapiliyormus.

http://www.microchip.com/forums/m707047.aspx (http://www.microchip.com/forums/m707047.aspx)
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: t2 - 20 Ekim 2013, 14:45:42
Maksimum  optimizasyonu ayarlayınca XC8 canavar gibi oldu.

Bedava modu çok pis uzun kod üretir işe yaramaz. mutlaka optimizasyonlu kullanılmalıdır.

Sorun bundan kaynaklanıyor olsa gerek. Belki de bilmeden sallamışlar.
Başlık: Ynt: MPLABX 'de XC8 ile 16F serisi kullanımı
Gönderen: Tagli - 20 Ekim 2013, 14:51:17
Tesekkurler z. O fazlalik goto'lardan nasil kurtulacagimi ogrenmis oldum.