Msp430 İle RF Modül
-
Merhabalar,Belki daha önce kullananlar için basit gelebilir ama Rf modül ile Led yakıp söndürmeyi bile beceremiyorum . :(
http://www.fatiherdem.net/atx-arx-rf-modullerinizi-test-edin/ bu linkteki kodu Msp430 'a uyarlayamadım.Amacım tuşa basıldığında alıcı devresindeki ledi yakmak sadece ama programlam konusunda acayip sıkıntılarım var.Yardımcı olur musunuz?
-
MSP430'ların farklı modelleri var her modele göre farklı bir pin yapısı oluyor. Pinlerden emin misin?
-
Hocam önceki konuda da belirttiğim gibi, modül ile iletişim için UART protokolünü kullanman gerekiyor. Doğru konfigürasyonu yaptıktan sonra, gönderici için veriyi UCA0TXIFG registerına yazman gerekiyor. Aşağıdaki örnek koda bakabilirsin (mcu-turkey sitesinden alıntıdır -> http://www.mcu-turkey.com/msp430-launchpad-msp430g2553-donanimsal-uart-kullanimi/).
Konfigürasyonla ilgili olan kısım;
UCA0BR0 = 52;
UCA0BR1 = 0;
//Modulator ayari
UCA0MCTL = 0x11;//formule gore bkz.
http://mspgcc.sourceforge.net/baudrate.html Bu adreste baud rate'ine uygun register ayarlarını hesaplayabilirsin
#include
//foksiyon prototipleri
void UARTInit(void);
void TXData(unsigned char c);
void main(void){
WDTCTL = WDTPW + WDTHOLD;// watchdog timer kapali
//DCO clock frekansi ayarlari
BCSCTL1 = CALBC1_8MHZ;
DCOCTL = CALDCO_8MHZ;
UARTInit();//Uart ayarlari cagirildi
P1DIR = 0x41;//P1.3 input, P1.0 & P1.6 output
P1OUT = 0x00; // output bitleri temizleme
__bis_SR_register(GIE);//kesmeler aktif
while(1){
if(!(P1IN&BIT3)){
P1OUT = 0x01;
TXData('M');
__delay_cycles(16000000);//8MHZ de calistigi icin 2 sn lik bir bekleme
}
else
P1OUT = 0x40;
}
}
//Uart Ayarlari
void UARTInit(void){
P1SEL |= (BIT1 + BIT2);//P1.1 = RXD P1.2 = TXD
P1SEL2 |= (BIT1 + BIT2);//P1.1 = RXD P1.2 = TXD
UCA0CTL1 = UCSSEL_2; // clock source SMCLK
//UCOS16 = 1 icin Baudrate ayarlari
UCA0BR0 = 52;
UCA0BR1 = 0;
//Modulator ayari
UCA0MCTL = 0x11;//formule gore bkz.
UCA0CTL1 &= ~UCSWRST; // USCI islemleri icin UCSWRST registeri temizlendi
IE2 |= UCA0RXIE; // RXD kesmesi aktif edildi
}
void TXData(unsigned char c){
while(!(IFG2&UCA0TXIFG));//UCA0TXIFG UCA0TXBUF bos iken set edilir.
UCA0TXBUF = c; // data gonderiliyor
}Düzenleme: Yukarıdaki gönderici kodu. Alıcı tarafta TXData yerine UCA0RXBUF registerını kullanarak gelen veriyi okuman gerekiyor. Yani oda aşağıdakine benzer birşey olacak;
int RXData(){
int data = -1;
if (IFG2 & UCA0RXIFG) {
data = UCA0RXBUF;return data;
}Interrupt aracılığı ile okuma yapmazsan yukarıdaki fonksiyonu main fonksiyonu içerisinde sonsuz döngü içerisinde kullanman gerekiyor (Eğer interrupt aktif edersen sadece karakter geldiğinde okuma yapabilirsin). Eğer gönderdiğin karakteri okursan da tanımladığın porttan çıkış alırsın.
org00h tarafından 02/Ara/15 14:29 tarihinde düzenlenmiştir -
org00h bunu yazdı
Hocam önceki konuda da belirttiğim gibi, modül ile iletişim için UART protokolünü kullanman gerekiyor. Doğru konfigürasyonu yaptıktan sonra, gönderici için veriyi UCA0TXIFG registerına yazman gerekiyor. Aşağıdaki örnek koda bakabilirsin (mcu-turkey sitesinden alıntıdır -> http://www.mcu-turkey.com/msp430-launchpad-msp430g2553-donanimsal-uart-kullanimi/).
Konfigürasyonla ilgili olan kısım;
..........ben yapamıyorum kafam basmıyor kaçıncı sabahlamam yok olmuyor.Çok fazla yardımınız dokundu teşekkür ederim ama sonuç olarak pes ediyorum :(
mt93 tarafından 06/Ara/15 04:48 tarihinde düzenlenmiştir
