XC8 Yeni başlayanlar için basit sorular

Başlatan Extreme, 02 Mart 2015, 15:50:54

Extreme

Ramazan hocam dediğiniz net bir şekilde anlaşıldı teşekkürler.

xc8 'de yazılım bir yere 1000 kere girdiğinde tüm yazılımı resetlemek istiyorum.

Böyle bir komutumuz var mı ?

Yardımcı olurmusunuz ?

Tagli

PIC18 ve üstü işlemcilerde reset komutu var. XC8'de var mıydı hatırlamıyorum ama zaten tek komut olduğu için asm kodu olarak C kodu içinde rahatlıkla çağrılabilir.

Galiba asm("RESET"); şeklinde kullanılıyor.
Gökçe Tağlıoğlu

JOKERAS


OxfordBlue

#33
FrequenceHigh=255;

if(!(40<=FrequenceHigh<=70)){FrequenceHigh=75;}
((bu kodun yerine if((FrequenceHigh<=40)||(FrequenceHigh>=70))  bunu yazsam çalışıyor )

cevap : FrequenceHigh=255;
Neden FrequenceHigh=75 olmuyor.

neden olabilir ?

Tagli

Çünkü C'de karşılaştırma ifadeleri 3'lü yazılmaz. (40<=FrequenceHigh<=70) dediğin zaman muhtemelen önce 40<=FrequenceHigh işlemi yapılıyor ve cevap 1 çıkıyor. Sonra 1<=70 işlemi yapılıyor ve cevap yine 1 çıkıyor. Başına ! gelince 0 oluyor ve haliyle FrequenceHigh=75 komutu işletilmiyor hiçbir zaman.
Gökçe Tağlıoğlu

Gökhan BEKEN

Merhaba @OxfordBlue bu sorular xc8 ile alakalı değil, lütfen C bölümünde sorun.
Özel mesaj okumuyorum, lütfen göndermeyin.

OxfordBlue

#36
Gökhan Hocam, Dikkat ederim.


OxfordBlue

mplabx , xc8 'de bir projem var project1.x
ve bir main.c dosyası var buna header ve c dosyalarıyla ayırmak istiyorum.
örnek communication.h,communication.c,misc.c,misc.h
fakat başarılı olamadım.
ilk olarak com.h ve com.c adlı iki dosya açtım

com.c içeriği
#include "com.h"
void SerialGW(void)
{
fonksiyon içeriği
}


com.h içeriği
#include <xc.h>
void SerialGW(void);


main.c içeriği
#include <pic18f4620.h>
#include <pic18.h>
#include <xc.h>
#include <stdio.h>
#include <stdlib.h>
#include "com.h"

değişkenler v.s.


void SerialGW(void);




gelen hata:
com.c:9: error: (192) undefined identifier "ComWait"
com.c:11: error: (192) undefined identifier "ComWaitCounter"
.
.
.
.

Gökhan BEKEN

#38
ComWait ve ComWaitCounter değişkenleri nerde tanımlıysa
aynısını com.c veya com.h içerisinde başına extern koyarak tekrar tanımlayın ama ilk değer vermemeniz lazım.
Özel mesaj okumuyorum, lütfen göndermeyin.

OxfordBlue

Peki o zaman örnek vereyim.

main.c
Tanımlamar , değişkenler v.s.
FrequenceRead();



com.c
#include "com.h"

extern unsigned int    FrequenceTotal;
extern unsigned int    Frequence;
extern unsigned int    FrequenceCounter;
extern bit SquareWave;
extern bit FrequenceRec;

void FrequenceRead(void)
{
    if(SquareWave==0)
    {FrequenceRec=1;}
    if((FrequenceRec)&&(SquareWave))
    {
     FrequenceTotal++;FrequenceRec=0;
    }

    FrequenceCounter++;
    if(FrequenceCounter>=49650)
    {
        Frequence=FrequenceTotal;
        FrequenceTotal=0;
        FrequenceCounter=0;
    }
}



com.h
#include <xc.h>
void FrequenceRead(void);



build ve gelen hata:
:0: error: (499) undefined symbol:
        _SquareWave(dist/default/production\Mainboard.X.production.obj)

Gökhan BEKEN

#40
main.c dosyasına şunu eklemelisiniz:
extern void FrequenceRead(void);

mantığı anladınız mı?
bütün değişken ve fonksiyonlar için bu yöntem geçerlidir. Bir dosyadaki değişkeni başka bir dosyada kullanacaksanız extern ile tekrar tanımlayacaksınız.

bu _SquareWave adlı değişken mi fonksiyon mu artık neyse onu da dediğim gibi extern yapın kullandığınız yere.
Özel mesaj okumuyorum, lütfen göndermeyin.

OxfordBlue

#41
Oldu. teşekkürler,

hex dosyasının oluşturulduğu yeri değiştirmek istiyorum.

Mainboard.X/dist/default/production/Mainboard.X.production.hex...
hex dosyası bu konuma oluşturuluyor.

Mainboard.X/hex/Mainboard.X.production.hex...
dosya konumuna oluşturulmasını istiyorum
propertiese bakıyorum ama uygun bir yer bulamadım.

Bu konuda bilginiz var mı ?

Gökhan BEKEN

Bildiğim kadarıyla değiştirilmiyor.
Bu sayfayı inceleyin: http://microchip.wikidot.com/mplabx:directory-structure
görüldüğü üzere, "şu şekilde değiştirebilirsiniz" felan da yazmamışlar.
Özel mesaj okumuyorum, lütfen göndermeyin.

Tagli

MPLAB X proje ayarlarında derlemeden sonra çalıştırılacak programlar tanımlanabiliyor. Basit bir betik yazarak .hex dosyasını oluştuktan sonra otomatik taşımak mümkün olabilir.
Gökçe Tağlıoğlu

OxfordBlue

Herkese iyi bayramlar,

while ((SSPCON2 & 0x1F) | (SSPSTATbits.R_W))

bu kodun anlamını bana açıklayabilirmisiniz ?