XC8 "struct/union required" hatası tanımlamaları görmüyor ?

Başlatan baran123, 25 Ocak 2015, 23:35:50

baran123

18F basit bir projeyi 16F877A ya çevirmeye çalışıyorum.Bir kaç hatayı düzeltemedim.

#define OLED_CS       LATBbits.LATB6
#define TRIS_CS       TRISBbits.TRISB6
#define OLED_DC       LATBbits.LATB7
#define TRIS_DC       TRISBbits.TRISB7


Tanımlamalarını yaptıktan sonra, şu şekilde kullanıma hata veriyor.

TRIS_CS = 0;
TRIS_DC = 0;
OLED_CS = 1;
OLED_DC = 0;


Ayrıca 16F serisi için SPI kütüphanesi var mı ? yoksa yazmak gerekiyor mu ? Çünkü <plib/spi.h> kütüphanesinin açıklamasında 18F için yazıyor.


esensoy

O işlemcide LAT register ı yok, port yapacaksın, bir de hangi satırda hata verdi? 4 satırda da mı?
En tehlikeli an "zafer" anıdır.

Gökhan BEKEN

Bir register adını yazıp devamına bits yazıp nokta koyduktan sonra ctrl+space yaptığında otomatik tamamlama gelmiyorsa yanlış yazmışsındır, yani o register yoktur.

örn: LATBbits. yazıp ctrl+space yaptığında bir şey gelmemesi lazım 16f877a'da
Özel mesaj okumuyorum, lütfen göndermeyin.

baran123

Hocam
#define OLED_CS       PORTBbits.RB6
#define TRIS_CS       TRISBbits.TRISB6
#define OLED_DC       PORTBbits.RB7
#define TRIS_DC       TRISBbits.TRISB7

Şöyle yapınca hata verdi yinede

esensoy

En tehlikeli an "zafer" anıdır.

baran123

SSD1306.c:8: error: (192) undefined identifier "TRISBbits"

hatası veriyor tıklayınca

TRIS_CS = 0;
TRIS_DC = 0;
OLED_CS = 1;
OLED_DC = 0;

bu kısıma geliyor. her satırın altı kırmızı çizgili

esensoy

SSD1306.c içine 16F877a başlık dosyasını dahil ediyor musun?
#include "pic16f877a.h"
En tehlikeli an "zafer" anıdır.

baran123

Yok artık düzeldi :D
18 lerde etmeyince çalışmıştı ama.
Teşekkürler.

Tagli

Alıntı yapılan: meftun - 25 Ocak 2015, 23:48:13
Bir register adını yazıp devamına bits yazıp nokta koyduktan sonra ctrl+space yaptığında otomatik tamamlama gelmiyorsa yanlış yazmışsındır, yani o register yoktur.
Nadir de olsa bunun istisnaları var. Şimdi aklımda değil ama denk gelmiştim. Galiba 2 seri portu olan dsPIC30F2010'da, ikinci seri port register'ı mı yoktu onun gibi bir şeydi. Sanırım MPLAB'den kaynaklanan bir hata.

Alıntı yapılan: esensoy - 25 Ocak 2015, 23:56:47
SSD1306.c içine 16F877a başlık dosyasını dahil ediyor musun?
#include "pic16f877a.h"

XC serisi derleyicilerde bu yaklaşım yanlış. Doğrusu, kodun başında xc.h'ı eklemektir. Derleyiciye PIC modelinin ne olduğunu MPLAB kendisi söylüyor zaten (tahminimce gizlice bir #define ekliyor).
Gökçe Tağlıoğlu