Merhaba Arkadaşlar,
XC8 i kurdum öğreneyim dedim. Ama işin başında çuvalladım. Yardımınızı rica ediyorum.
projemi oluşturdum. code configrator ile ayarları yaptım. led yakma uygulaması yazdım derledim ve çalıştı. ama en basit şekliyle led yakma satırını farklı bir fonksiyon olarak tanımlayınca çalışmıyor.
çalışan kod
long i=0;
void main(void) {
SYSTEM_Initialize();
TRISEbits.TRISE1 = 0;
while (1) {
// Add your application code
LATEbits.LATE1 = 1;
for(i=0;i<60000;i++);
LATEbits.LATE1 = 0;
for(i=0;i<60000;i++);
}
}
çalışmayan kod
long i=0;
void led_yak(void)
{
LATEbits.LATE1 = 1;
}
void main(void) {
SYSTEM_Initialize();
TRISEbits.TRISE1 = 0;
while (1) {
// Add your application code
led_yak();
for(i=0;i<60000;i++);
LATEbits.LATE1 = 0;
for(i=0;i<60000;i++);
}
}
bir de her seferinde bu uyarıyı veriyor:
:: warning: (1459) peripheral library support is missing for the 18F46K22
herkese iyi çalışmalar
Led yanık mı kalıyor yoksa hiç yanmıyor mu?
Ek: Olmayan çevre birim kütüphaneleri eklenmiş diyor anladığım kadarıyla.
http://ww1.microchip.com/downloads/en/DeviceDoc/xc8-v1.21-readme.pdf (http://ww1.microchip.com/downloads/en/DeviceDoc/xc8-v1.21-readme.pdf)
Sayfa.5
hiç yanmıyor
proteus projesi varsa(7.10 versiyonlu), xc8 projenizi ve proteus projenizi gönderin ben de bir deneyim.
Hocam proje dosyasını ekliyorum. ben gerçek kartla deniyorum. zaten proteus şemasında bişey yok. e1 pinini açması yeterli
https://www.dropbox.com/sh/kkwtud6oagjwdfk/AAA3lTKwpr8jodMfTmSTkQX1a?dl=0 (https://www.dropbox.com/sh/kkwtud6oagjwdfk/AAA3lTKwpr8jodMfTmSTkQX1a?dl=0)
zip yapıp da ekleseydiniz daha kolay olurdu 50 tane dosya indirip klasöre koyup denememiz zor oalcak.
neyse ki yukarıda download as zip yazıyormuş hepsi tek seferde indi
siz yazınca farkettim hocam hemen düzeltiyorum
https://www.dropbox.com/s/xitgzzb06luyobd/cx8%20lcd.rar?dl=0 (https://www.dropbox.com/s/xitgzzb06luyobd/cx8%20lcd.rar?dl=0)
hocam şimdi denedim. proteus ta iki kod da çalışıyor. ama gerçekte fonkisyonlu olan çalışmıyor
fonksiyon çalışıyor. proteusta gördüm. fakat çok hızlı çalıştığı için belki siz göremediniz. işlemci hızı 4Mhz seçiliydi onu değiştirmeden çalıştırdım. göründü
aşağıdaki şekilde çalışıyor. yakma işini fonksiyon yapıyor
while (1) {
// Add your application code
led_yak();
for(i=0;i<60000;i++);
LATEbits.LATE1 = 0;
for(i=0;i<60000;i++);
}
hocam ben de şimdi denedim proteusta iki şekilde de çalışıyor. ama gerçekte fonksiyonlu olanı çalıştıramadım.
#include "mcc_generated_files/mcc.h"
satırını;
#include "mcc_generated_files\mcc.h"
olarak değiştiriniz. Ayrıca bu satırın üstündeki satırı siliniz...
Bekleme kısmı gerçekte çok hızlı olduğu için görünmemiş olabilir mi? proteus yavaş çalışarak göstermiştir.
belki de bu pin open drain olabilir. gerçek devrede pull up gerekebilir.
Alıntı yapılan: mehmet - 14 Eylül 2015, 18:48:38
#include "mcc_generated_files/mcc.h"
satırını;
#include "mcc_generated_files\mcc.h"
olarak değiştiriniz. Ayrıca bu satırın üstündeki satırı siliniz...
denedim hocam bi değişiklik yok
mesaj birleştirme:: 14 Eylül 2015, 19:03:13
t2 hocam gerçekte lcd ledini yakıyorum. foknsiyon yokken yanıp söndüğünü görebiliyorum. fonksiyonu çağırınca iş bozuluyor.
pin_manager.c içerisinde ANSELE = 0x07; tanımlanmış. PORTE ve hatta
tüm pinler analog yapılmış...
code configrator den e1 pinini çıkış yapıyorum. ANSELE = 0x05 oluyor.
yine de değişen bişey yok. fonksiyon bir türlü çalışmıyor. her iki ayarda da fonksiyonsuz her türlü çalışıyor ama
:: warning: (1459) peripheral library support is missing for the 18F46K22
hatası için;
Proje üzellikleri->XC8 global options->Additional options
bölümüne:
--runtime=-plib
satırını ilave ediniz.
Bir de;
mcc.c içerisindeki;
OSCCON = 0x72;
satırını
OSCCON = 0x70;
olarak değiştirip deneyiniz...
Elimde ilgili mcu olmadığı için ancak simülator
ve isis 7.10 ile test edebildim...