ccs c ile spi kullanımı

Katılım
10 Şub 2008
Mesajlar
14
Puanları
1
Yaş
39
arkadaŞlar 8 bİtlİk serİ verİyİ alip Üzerİnde İŞlem yapmam gerekİo ama read_spi();setup_spi() gİbİ komutlarin kullanimini bİlmorum.
bİlgİ vermesİ aÇisindan kullanacaim sİstemden bahsedİyİm; sİstemİn gereĞİ max232 entegresİ t1out ÇikiŞi 16f877 kodlu entegremİn gİrİŞİ olacaktir. ben bu serİ gİrİŞİn her 8 bİtİnİ İŞlemem gerekİyor. ama bahsettİĞİm gİbİ 8 bİt olarak gelen verİyİ 1 bİtlİk gİrİŞten nasil elde edeceĞİmİ bİlmİorum. bu konuda yardimlarinizi beklİorum.
teŞekkÜr eder İyİ ÇaliŞmalar dİlerİm...
 
Moderatör tarafında düzenlendi:
Hocam, anlatımın çok karışık olmuş. Hiç anlaşılmıyor.

max232 kullanarak seri porttan bilgi alacaksanız spi portu ile alakanız nedir? t1out'u 877 ye tekrar neden veriyorsunuz?
 
şöyle söylüyüm; rs232 haberleşmeli 2 pic var. biri sıcaklık değerini okuyup rs232 aracılığı ile diğer pic e gönderiyor. alıcı kısımdaki pic bu 8 bitlik bilgiyi nasıl alır? max232 nin rcvin girişi rs232 ye rcvout pini pic e giricek... hangi ccs c komutlarını kullanmalıyım ?
 
SPI değil de USART kullansan daha iyi olmaz mı? CCS'nin yardımından RS232 I/O hazır fonksiyonlarını kullanarak doğrudan verileri okuyabilirsin. Mesela getchar() fonksiyonu ile.
Not: Eğer iki PIC'i haberleştiriyorsan MAX232'ye ihtiyacın yok. Birinin RX bacağını diğerinin TX'ine bağlarsın, olur biter. Ama eğer veri başka bir kaynaktan geliyorsa ve MAX232 kullanıyorsan o zaman MAX232 çıkışını PIC'in RX bacağına bağlamalısın.
Kolay gelsin. İyi çalışmalar.
 
burada rs232 kullanma zorunluluğum var. eğer mümkünse bahsettiğiniz gibi max232 çıkışının pic in rx bacağına bağlandığını düşünerek,diğer pic den gelen herbir 8 bitlik bilgiyi bir değişkene atıp onu da lcd ye yazdıran programı yazabilirmisiniz ??? devreye gerek yok sadece ccs c programı yeterli
 
do {
data = getchar();
printf( lcd_putc, "%c ", data );
} while ( TRUE );
 
yardımlarınız için teşekkür ederim ama sanırım problem başka bir yerde,baud hızı falan giricek sanırım işin içine. tekrar çok teşekkür ederim...
 
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

buradan baud rate'i değiştirebilirsiniz. Bunu kodun başına eklemek gerekiyor. Ama ben zaten biliyorsunuzdur diye yazmamıştım. Şu anda baud rate 9600'e ayarlı ama istediğiniz gibi değiştirebilirsiniz.

Not: Aşağıya benim yazdığım kodun tamamını koyuyorum. Fakat sisteminizin bazı parametrelerini bilmediğim için onları kafama göre seçtim. Onları değiştirip kendi uygulamanız için uyarlamanız gerekiyor. Osilatör tipi, clock frekansı gibi. Bu konuda da takıldığınız birşey olursa sorabilirsiniz.

#include <16F877.h>
#device adc=8

#FUSES NOWDT //No Watch Dog Timer

// Bu satır osilatör tipini tanımlıyor:
#FUSES LP //Low power osc < 200 khz

#FUSES NOPUT //No Power Up Timer
#FUSES PROTECT //Code protected from reads
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#FUSES NODEBUG //No Debug mode for ICD

// Bu satır clock frekansını tanımlıyor:
#use delay(clock=20000000)

// Burada baud rate'i değiştirmeniz gerekebilir.
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

#define LCD_TYPE 1
#include <lcd.c>


void main()
{
int8 data;

lcd_init();
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);

do {
data = getchar();
printf( lcd_putc, "%c ", data );
} while ( TRUE );

}
 
hocam ilginize çok teşekkür ederim... olayı çözdük,canavar gibi çalışıo :) size başarılar ve iyi çalışmalar...
 

Forum istatistikleri

Konular
128,164
Mesajlar
915,594
Kullanıcılar
449,927
Son üye
yusuf2023

Yeni konular

Geri
Üst