Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Texas Instruments => Konuyu başlatan: cann - 21 Mart 2018, 21:24:55

Başlık: msp430G programlama
Gönderen: cann - 21 Mart 2018, 21:24:55
İyi Günler
Msp430g2553 le bir program yapmak istiyorum ancak hiç bilmediğim bir dil. bir çok kaynakdan baktım ancak tam kavrayamadım. Örnek bir programı revize etmeye çalıştım.

S1-S8 buton
X, Z, Q giriş, Y çıkış olarak ayarlamalıyım ve butonlar dahil hepsinde interupt kullanmalıyım

aşağıda ki gibi başladım. kontrol edebilirmisiniz. Teşekkürler

// GPIO Port 1 Definitions
#define S1        BIT0    // P1.0
#define S2        BIT1    // P1.1
#define S3        BIT2    // P1.2
#define S4        BIT3    // P1.3
#define S5   BIT4    // P1.4

// GPIO Port 2 Definitions
#define S6       BIT0    // P2.0
#define S7       BIT1    // P2.1
#define S8       BIT2    // P2.2
#define X               BIT4    // P2.4
#define Y               BIT5    // P2.5
#define Z               BIT6    // P2.6
#define Q               BIT7    // P2.7     

typedef enum {low, high} gpio;

// Configure GPIO

         P1SEL  &= ~(S1 | S2 |S3 |S4 |S5);
   P1SEL2 &= ~(S1 | S2 |S3 |S4 |S5);

   P1DIR  |= (S1 | S2 |S3 |S4 |S5);
   P1OUT  |= (S1 | S2 |S3 |S4 |S5);

   P1DIR &= ~(S1 | S2 |S3 |S4 |S5);
   P1REN |= (S1 | S2 |S3 |S4 |S5);
   P1IE |= (S1| S2 |S3 |S4 |S5);

   P2SEL  &= ~(S6 | S7 | S8 | X | Y | Z | Q);
   P2SEL2 &= ~(S6 | S7 | S8 | X | Y | Z | Q);

   P2DIR |= (S6 | S7 | S8 | X | Y | Z | Q);
   P2OUT |= (S6 | S7 | S8 |Y );
   P2OUT &= ~(X | Y | Z | Q);
        P2IN  |=(X | Y | Z | Q)

   P2DIR &= ~(X | Y | Z | Q);
   P2REN |= (S6 | S7 | S8| X | Y | Z | Q);
   P2IE |= (S6 | S7 | S8| X | Y | Z | Q);
------------------------------------------------------
gpio G_S1 = high;
gpio G_S2 = high;
gpio G_S3 = high;
gpio G_S4 = high;
gpio G_S5 = high;
gpio G_S6 = high;
gpio G_S7 = high;
gpio G_S8 = high;
gpio G_X = low;
gpio G_Y = low;
gpio G_Z = low;
gpio G_Q = low;


   #pragma vector=PORT1_VECTOR, PORT2_VECTOR
_interrupt void Port_1 (void)
{......}
Başlık: Ynt: msp430G programlama
Gönderen: mehmet - 21 Mart 2018, 22:34:30
Mesajınıza kod beklerken "KOD"
düğmesini kullanınız.

Buradaki videoları da izleyiniz.
https://drive.google.com/folderview?id=0B7qdCk48lHGaTjV1X2dKTHZfclU
Başlık: Ynt: msp430G programlama
Gönderen: cann - 21 Mart 2018, 22:36:25
KOD düğmesi göremiyorum
Başlık: Ynt: msp430G programlama
Gönderen: mehmet - 21 Mart 2018, 22:55:29
https://drive.google.com/file/d/0B7qdCk48lHGaSmNjcExpQ3JKVW8/view?usp=drivesdk
Başlık: Ynt: msp430G programlama
Gönderen: mehmet - 21 Mart 2018, 23:07:45
Ayrıca Muhammed Fatih İnanç
Hoca' nın bir çok videosu ve anlatımımı
bulabilirsiniz.
Başlık: Ynt: msp430G programlama
Gönderen: cann - 21 Mart 2018, 23:23:45
katkılarınız için teşekkürler, türkce ve ingilizce kitaplara baktım, şimdiye kadar, ancak öğrenemedim,
Başlık: Ynt: msp430G programlama
Gönderen: cann - 22 Mart 2018, 11:21:32
konu başlığının msp430 programlamayı nereden öğrenirim olmadığına dikkat çekmek isterim.
Başlık: Ynt: msp430G programlama
Gönderen: cann - 22 Mart 2018, 20:56:32
bir yerde okumuştum PxSEL ayarı yapmaya gerek yok yazıyoyordu, default olarak GPİO ayarlıdır zaten, diyordu. doğru hatırlıyormuyum

P1DIR  |= (S1 | S2 |S3 |S4 |S5);
P1OUT  |= (S1 | S2 |S3 |S4 |S5);

P1REN |= (S1 | S2 |S3 |S4 |S5);
P1IE |= (S1| S2 |S3 |S4 |S5);

P2DIR |= (S6 | S7 | S8 | Y |X | Z | Q);
P2OUT |= (S6 | S7 | S8 | Y);
P2IN  |= (X |Z | Q);

P2REN |= (S6 | S7 | S8| Y );
   P2IE |= (S6 | S7 | S8| Y | X |Z | Q);

Bu şekilde revize ettim.
Başlık: Ynt: msp430G programlama
Gönderen: cann - 24 Mart 2018, 17:18:18
G_CTRL_REG.ENBL    = 0x01;

"Detected consecutive bitfield assigns. Recommend using bit mask instead" hatası alıyorum.
Başlık: Ynt: msp430G programlama
Gönderen: sinus - 24 Mart 2018, 21:48:55

PxDIR&=~(BIT0 + BIT1 + BIT2);  // Bit 0..2 giriş olarak ayarlandı.
PxREN|=(BIT0 + BIT1 + BIT2);  // Bit 0..2 pull-up/down dirençleri aktif
PxOUT|=(BIT0 + BIT1 + BIT2);  // Pull-up/down dirençleri Vcc'ye çekildi. PxOUT aynı zamanda çıkışları 1/0 yapar.
PxIE|=(BIT0 + BIT1 + BIT2); // Bit 0..2 interrupt aktif
PxIES|=(BIT0 + BIT1 + BIT2); // Bit 0..2 interrupt yükselen/düşen kenar  (Yükselen kenar aktif)
PxIFG&=~(BIT0 + BIT1 + BIT2); //  Bit 0..2 interrupt bayrağı temizlendi.
_BIS_SR(GIE); // Genel kesmeler aktif 


#pragma vector=PORTx_VECTOR __interrupt void Port_x(void)
{
if(PxIFG&BIT0)
{
Yapılacak işlemler;
PxIFG&=~BIT0;
}
if(PxIFG&BIT1)
{
Yapılacak işlemler;
PxIFG&=~BIT1;
}
}





PxSEL ile işiniz yok. Bit 1 ise çıkış, 0 ise giriş.


Energia da kullanabilirsiniz aynı kodlar orda da çalışır.

http://processors.wiki.ti.com/index.php/MSP430_LaunchPad_PushButton (http://processors.wiki.ti.com/index.php/MSP430_LaunchPad_PushButton)
Başlık: Ynt: msp430G programlama
Gönderen: cann - 24 Mart 2018, 22:16:19
Teşekkürler Mustafa Hocam,

Başlık: Ynt: msp430G programlama
Gönderen: cann - 28 Mart 2018, 14:37:37
 CTRL_REG.ENBL    ayarını bir bir türlü yapamadım. extern struct, struct ve extern hepsi bir birine karıştı.




"CTRL_Register is undefined"
bu tanımlamayı nasıl yaparım

define komutu ilemi, typdef enum ile mi?
Başlık: Ynt: msp430G programlama
Gönderen: cann - 30 Mart 2018, 20:39:01
ayarları yapabildim, sorun hata veren struct yada extern struct dan değil, main.c de pragma vector ADC10_VECTOR ü kullanmadığım halde silmemiş olmamdan kaynaklanmış. Program launcpedde çalıştı. Katkısı olanlara teşekkürler.