msp430G programlama

Başlatan cann, 21 Mart 2018, 21:24:55

cann

İ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)
{......}

mehmet

#1
Mesajınıza kod beklerken "KOD"
düğmesini kullanınız.

Buradaki videoları da izleyiniz.
https://drive.google.com/folderview?id=0B7qdCk48lHGaTjV1X2dKTHZfclU
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

cann

KOD düğmesi göremiyorum

mehmet

Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

mehmet

Ayrıca Muhammed Fatih İnanç
Hoca' nın bir çok videosu ve anlatımımı
bulabilirsiniz.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

cann

katkılarınız için teşekkürler, türkce ve ingilizce kitaplara baktım, şimdiye kadar, ancak öğrenemedim,

cann

konu başlığının msp430 programlamayı nereden öğrenirim olmadığına dikkat çekmek isterim.

cann

#7
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.

cann

G_CTRL_REG.ENBL    = 0x01;

"Detected consecutive bitfield assigns. Recommend using bit mask instead" hatası alıyorum.

sinus

#9
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

cann

Teşekkürler Mustafa Hocam,


cann

#11
 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?

cann

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.