Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Konuyu başlatan: Andromeda - 11 Ekim 2011, 11:40:40

Başlık: ARM nedir....?
Gönderen: Andromeda - 11 Ekim 2011, 11:40:40
Başlıklara baktım ama ,ben mi bulamadım.......
Entegre  mi, PIC mi, kit mi , kart mı , zart mı......?
Kısa ve öz olarak nedir...?
Başlık: Ynt: ARM nedir....?
Gönderen: MC_Skywalker - 11 Ekim 2011, 11:48:06
ARM mikro işlemci çekirdeği tasarlayan bir firmanın adı ve bir kaç sene öncesine kadarda bu çekirdeklere verdiği isimdir. artı CORTEX olarak adlandırlıyor. 32 bit mimariye sahiptir.

Chip üreticileri bu firmanın çekirdeklerini alıp çevre birmleri vs. ekleyerek fiziksel chip üretirler. NXP, ST, Ti vb.

CORTEX - M  MCU Micro Controller Unit Core
CORTEX - A  Aplication based Core
CORTEX - R  Realtime Core
Başlık: Ynt: ARM nedir....?
Gönderen: CoşkuN - 11 Ekim 2011, 11:52:58
Devamlı blogumun reklamını yapıyor gibi de görünmek istemiyorum ama konuyla ilgili bir yazı yazmıştım: http://coskuntasdemir.net/arm
Reklama giriyorsa lütfen admin arkadaşlar uyarsın beni...
Başlık: Ynt: ARM nedir....?
Gönderen: The Gariban - 11 Ekim 2011, 11:57:37
peki 2.soruyu ben sorayım.
Biz örneğin ST nin satın aldığı ARM nin işlemcisi için kod yazdığımızda ST " Tamam ben bu kodları anladım çalışırım " dediğinde; bu kodlar Texas Inc.yada Philips in ARM işlemcisi takılı cihazlarda da "kodda hiçbir değişiklik yapmadan" çalışacakmı?
Başlık: Ynt: ARM nedir....?
Gönderen: Andromeda - 11 Ekim 2011, 12:01:20
1. soruya devam edeyim... :)
Bizim gibi son kullanıcıları ARM nin ürettiği  (anladığım kadarı ile fiziksel birşey üretmiyor, plan proje çiziyor... :)...)
ilgilendirmiyor...
Peki diğerlerinin ürettiği entegre devre değil yani...(PIC gibi değil...)  bir çeşit kart üretiyorlar....
Başlık: Ynt: ARM nedir....?
Gönderen: MC_Skywalker - 11 Ekim 2011, 12:13:36
2.)

Değişiklik yapman gerekmekte. Her Chip üreticisin en azında pin adlandırmalarında farklılıklar olamkta (bağzı pic modellerinde GPIO ve PORTA farkı gibi) Fakat her C/C++ projesi gibi kod taşıman çok kolay

1.) devamı
ARM sadece işlemci kısmını tasarlamakta üretim yapmamakta. (ASIC)
NXP, ST, Ti. Nvidia vb. fiziksel olarak chip üretmekte (pic gibi). Ayrıca  bu üreticiler kendi chipleri için geliştirme kartları üretmekteler.

Örnek verekcek olursak Ge Force ekran kartı chip üreticisi Nvidia,  ARM firmasından CPU çekirdeğini lisanslayıp kendi GPU çekrtiği ile birleştirerek Tegra250 bir chip üretti.

Aşağıdaki örnekler de bahsetiğim minik farkı görmektesizni. Fakat her içi chip NXP firmasının üretimi ama Core farkı var.


ARM7 cerkirdekli NXP LPC2138 için yazıldı


#include <LPC21xx.H> //islemcinin kaynak dosyasi ekleniyor.
/* Gecikme Fonksiyonu */
void Gecikme (long int sure)
{
long int i,k; // 16 bitlik i degiskeni tanimlaniyor.
for (i=1;i<=sure;i++) // girilen deger i degiskeninden büyük olana kadar for içerisinde dön
{
for (k=0;k<=12000;k++)
{}
}
}
/* Ana Fonksiyon */
int main (void) {
IODIR0 = 0x00000001; //giris cikis ayarlama komutu 1 cikis 0 giris
// 1. biti cikis digerleri giris
while (1)
{ //sonsuz döngü
IOSET0 = 0x00000001; //1. biti 1 yap
Gecikme(500); //bekleme yap (yaklasik 500 msn - 12Mhz de)
IOCLR0 = 0x00000001; //1. biti 0 yap
Gecikme(500); //bekleme yap (yaklasik 500 msn - 12Mhz de)
}
}




CortexM3 cerkirdekli NXP LPC1768  için ufak değişiklikler yapıldı.


#include <LPC17xx.H> //islemcinin kaynak dosyasi ekleniyor.
/* Gecikme Fonksiyonu */
void Gecikme (long int sure)
{
long int i,k; // 16 bitlik i degiskeni tanimlaniyor.
for (i=1;i<=sure;i++) // girilen deger i degiskeninden büyük olana kadar for içerisinde dön
{
for (k=0;k<=12000;k++)
{}
}
}
/* Ana Fonksiyon */
int main (void) {
LPC_GPIO1->FIODIR = 0x000000FF; //giris cikis ayarlama komutu 1 cikis 0 giris
// 1. biti cikis digerleri giris
while (1)
{ //sonsuz döngü
LPC_GPIO1->FIOSET = 0x00000001; //1. biti 1 yap
Gecikme(500); //bekleme yap (yaklasik 500 msn - 12Mhz de)
LPC_GPIO1->FIOCLR = 0x00000001; //1. biti 0 yap
Gecikme(500); //bekleme yap (yaklasik 500 msn - 12Mhz de)
}
}

Başlık: Ynt: ARM nedir....?
Gönderen: The Gariban - 11 Ekim 2011, 12:26:49
Yani son örneğe göre:
Philips bir işlemci için ARM den lisans alıp  PH1 diye işlemci çıkardıysa ,bir süre sonra PH2 yi de ARM den aldı ise ,PH1 de çalışan kodlarımız ,PH2 için çalışmıyor olabilecekmi?(yada onlarda bile küçük değişiklikler mi yapılmalı?)
*Takılı olan işlemcinin ismi hızı vb kodlar hariç demek istiyorum
Başlık: Ynt: ARM nedir....?
Gönderen: MC_Skywalker - 11 Ekim 2011, 12:42:31
çalışmayan kod olmayacak sadece ufak değişklikler yapmak gerekecek.

Söyle düşünün yazdığınız kodu güncellemiş olcaksınız.
Başlık: Ynt: ARM nedir....?
Gönderen: aykut54 - 11 Ekim 2011, 12:56:36
Alıntı yapılan: CoşkuN - 11 Ekim 2011, 11:52:58
Devamlı blogumun reklamını yapıyor gibi de görünmek istemiyorum ama konuyla ilgili bir yazı yazmıştım: http://coskuntasdemir.net/arm
Reklama giriyorsa lütfen admin arkadaşlar uyarsın beni...


Merhaba Coşkun hocam  yazmış olduğunuz yazı en azından arm için birkaç bilgi içermekte. Açıkçası kendi görüşüm reklama girdiğini zannetmem. Sonuça bir bilgi içeriyor. İlginize teşekkürler.

MC_Skywalker Hocam LPC2138 ve cortex tabanlı  arm işlemciler için yazdığınız kodları gördüm. Yani şöyle söylemem gerekirse. ARM7 için yazılan bir kodu CORTEX tabanlı bir işlemcide sadece LPC_GPIO1 Tanımlamalarını değiştirerek kodu çalıştırabilirimiyim?

Vermiş olduğunuz öyle diyor. Fakat kod içeriği arttıkça ne olur bilmiyorum.

Ayrıca vermiş olduğunuz kod için teşekkür ederim.
Başlık: Ynt: ARM nedir....?
Gönderen: Andromeda - 11 Ekim 2011, 13:03:38
Bu forumda da adı geçen "geliştirme kartları"  yazılan kodun kontrol edildiği deneme kartı mıdır...?
En basit "mikro denetleyici" ve en basit "mikroişlemci" hangisidir...?
Başlık: Ynt: ARM nedir....?
Gönderen: MC_Skywalker - 11 Ekim 2011, 13:23:15
LPC2138 ve LPC1768 ile çok basit uygulamalar yaptım.
Daha yolun çok başındayım. Bu minik kod çalışıyor, fakat daha büyük ve komplike kodda nasıl bir yol izlemek gerekmekte onu açıkçası tam anlamıyla bilmiyorum. Benimde öğrenmem gerekmekte. Hatta LPC2138 için yapılmış bir PWM kodunu lpc1768 nasıl aktarırım diye uğraşıyorum.

Daha doğrusu elimde LPC2138 için yapılmış örnekler var fakat benim elimde LPC1768 kit var örnekleri akararak uygulamaya çalışıyorum
sanırm bunalmış üstamızın vereceği dersler ile bunu çözecek konuma geleceğiz.
Başlık: Ynt: ARM nedir....?
Gönderen: The Gariban - 11 Ekim 2011, 13:40:27
MC_SkyWalker
Cevaplarınız için teşekkür ederim.
Peki bu ARM nin işlemcilerine C ve Assambler dışında hangi programlama dilleri kullanılabilir?
Yada o dillerin hangi özellik yada kapasiteleri varsa ARM lere program yazılabilir?
Bu konuda bilginiz varmı acaba?
Başlık: Ynt: ARM nedir....?
Gönderen: MC_Skywalker - 11 Ekim 2011, 13:49:14
Bildiğim kadarını aktarayım.

HBBR Basic  adında bir BASIC derleyicisi var fakat desteklediği ARM işlemci sayısı çok ama çok az.

Mikroelektronika geniş bir ARM işlemci yelpazesi olan Kendi C, BASIC ve PASCAL derleyicilerini geliştirmekte. Bu ay sonu satışa çıkacakmış.

Tavsiyem KEIL uvision kullanmanız dan yana çünkü ARM firmasının kendi derleyicisi. bu adresten https://www.keil.com/demo/eval/arm.htm lite versionunu indirip denemelere başlaya bilirisiniz
Başlık: Ynt: ARM nedir....?
Gönderen: yamak - 11 Ekim 2011, 15:33:46
Yukarıdaki iki kod arasındaki farklılıklar kullanılan kütüphaneden kaynaklanıyo.Kütüphanenin içeriğine bakarsanız ne demek istediğimi anlarsınız.Mesela LPC17xx.h kütühanesinde her çevrebirimini ait registerlar bir struct içinde toplanmış.Mesela gpio portları için konuşursak:
2.portun 3. pinini high yapacaksan LPC_GPIO2->FIOSET=1<<3 deriz 0.portun 4. pinini aktif yapacaksan GPIO0->FIOSET=1<<4; deriz görüldüğü gibi gpıolar LPC_GPIO struct ı içinde toplanmış. Aşağıda daki kodlarda lpc17xx.h kütüphanesi içindeki gpıo struct ına aittir.

typedef struct
{
  union {
    __IO uint32_t FIODIR;
    struct {
      __IO uint16_t FIODIRL;
      __IO uint16_t FIODIRH;
    };
    struct {
      __IO uint8_t  FIODIR0;
      __IO uint8_t  FIODIR1;
      __IO uint8_t  FIODIR2;
      __IO uint8_t  FIODIR3;
    };
  };
  uint32_t RESERVED0[3];
  union {
    __IO uint32_t FIOMASK;
    struct {
      __IO uint16_t FIOMASKL;
      __IO uint16_t FIOMASKH;
    };
    struct {
      __IO uint8_t  FIOMASK0;
      __IO uint8_t  FIOMASK1;
      __IO uint8_t  FIOMASK2;
      __IO uint8_t  FIOMASK3;
    };
  };
  union {
    __IO uint32_t FIOPIN;
    struct {
      __IO uint16_t FIOPINL;
      __IO uint16_t FIOPINH;
    };
    struct {
      __IO uint8_t  FIOPIN0;
      __IO uint8_t  FIOPIN1;
      __IO uint8_t  FIOPIN2;
      __IO uint8_t  FIOPIN3;
    };
  };
  union {
    __IO uint32_t FIOSET;
    struct {
      __IO uint16_t FIOSETL;
      __IO uint16_t FIOSETH;
    };
    struct {
      __IO uint8_t  FIOSET0;
      __IO uint8_t  FIOSET1;
      __IO uint8_t  FIOSET2;
      __IO uint8_t  FIOSET3;
    };
  };
  union {
    __O  uint32_t FIOCLR;
    struct {
      __O  uint16_t FIOCLRL;
      __O  uint16_t FIOCLRH;
    };
    struct {
      __O  uint8_t  FIOCLR0;
      __O  uint8_t  FIOCLR1;
      __O  uint8_t  FIOCLR2;
      __O  uint8_t  FIOCLR3;
    };
  };
} LPC_GPIO_TypeDef;
Başlık: Ynt: ARM nedir....?
Gönderen: zamzam23 - 11 Ekim 2011, 17:14:48
Ben de şunu merak ediyorum:
dspic ler le arm kullanılarak yapılmıs işlemci arasındakı fark nedır.
suan piclere asınayız ve dspic32 mesela ogrenmek daha mantıklı gıbı duruyor farkları yoksa.ama eger belırgın farkları varsa tabıkı arm ögrenmek mantıklı olur.bu konudakı fıkırlerınız nedır
picleri programlamak daha kolay dip entegrelerı mevcut. arm ler ıcın de aynı sey gecerlı mı?
Başlık: Ynt: ARM nedir....?
Gönderen: yamak - 11 Ekim 2011, 18:32:26
Dspicler daha cok sinyal isleme gibi konularda kendini gosteriyo 1msps adc hizlari olanlar var ama arm cekirdekli islemcilerde adc hizi bu kadar fazla degil mesela lpc1768 inki 200ksps. Ama cevre birimlerinin zengiligi ve cevre birimleri bircok sekjlde ozellestirebilme bakimindan arm cekirdekli mcu lar daha fazla on plandadir.
Başlık: Ynt: ARM nedir....?
Gönderen: buzkırıcı - 03 Kasım 2011, 02:00:56
Alıntı yapılan: yamak - 11 Ekim 2011, 15:33:46
Yukarıdaki iki kod arasındaki farklılıklar kullanılan kütüphaneden kaynaklanıyo.Kütüphanenin içeriğine bakarsanız ne demek istediğimi anlarsınız.Mesela LPC17xx.h kütühanesinde her çevrebirimini ait registerlar bir struct içinde toplanmış.Mesela gpio portları için konuşursak:
2.portun 3. pinini high yapacaksan LPC_GPIO2->FIOSET=1<<3 deriz 0.portun 4. pinini aktif yapacaksan GPIO0->FIOSET=1<<4; deriz görüldüğü gibi gpıolar LPC_GPIO struct ı içinde toplanmış. Aşağıda daki kodlarda lpc17xx.h kütüphanesi içindeki gpıo struct ına aittir.

typedef struct
{
  union {
    __IO uint32_t FIODIR;
    struct {
      __IO uint16_t FIODIRL;
      __IO uint16_t FIODIRH;
    };
    struct {
      __IO uint8_t  FIODIR0;
      __IO uint8_t  FIODIR1;
      __IO uint8_t  FIODIR2;
      __IO uint8_t  FIODIR3;
    };
  };
  uint32_t RESERVED0[3];
  union {
    __IO uint32_t FIOMASK;
    struct {
      __IO uint16_t FIOMASKL;
      __IO uint16_t FIOMASKH;
    };
    struct {
      __IO uint8_t  FIOMASK0;
      __IO uint8_t  FIOMASK1;
      __IO uint8_t  FIOMASK2;
      __IO uint8_t  FIOMASK3;
    };
  };
  union {
    __IO uint32_t FIOPIN;
    struct {
      __IO uint16_t FIOPINL;
      __IO uint16_t FIOPINH;
    };
    struct {
      __IO uint8_t  FIOPIN0;
      __IO uint8_t  FIOPIN1;
      __IO uint8_t  FIOPIN2;
      __IO uint8_t  FIOPIN3;
    };
  };
  union {
    __IO uint32_t FIOSET;
    struct {
      __IO uint16_t FIOSETL;
      __IO uint16_t FIOSETH;
    };
    struct {
      __IO uint8_t  FIOSET0;
      __IO uint8_t  FIOSET1;
      __IO uint8_t  FIOSET2;
      __IO uint8_t  FIOSET3;
    };
  };
  union {
    __O  uint32_t FIOCLR;
    struct {
      __O  uint16_t FIOCLRL;
      __O  uint16_t FIOCLRH;
    };
    struct {
      __O  uint8_t  FIOCLR0;
      __O  uint8_t  FIOCLR1;
      __O  uint8_t  FIOCLR2;
      __O  uint8_t  FIOCLR3;
    };
  };
} LPC_GPIO_TypeDef;


Peki hocam bu örnekte yazılmış olan "LPC_PINCON->PINSEL4 = ( 0 << 20);"   "LPC_GPIO0->FIODIR=0x000000FF;" buradaki ile aynı işimi görüyor. Ben bu Pınsel4 kısmını anlayamadım. Ben yeni başladım ARm ye ALttaki kodları yorumlamaya çalışıyodum.Biraz yardımcı olurmusunuz?


#include "LPC17xx.H"                    /* LPC17xx definitions                */

volatile unsigned long SysTickCnt;      /* SysTick Counter                    */
 
void SysTick_Handler (void) {           /* SysTick Interrupt Handler (1ms)    */
  SysTickCnt++;
}  

void Delay (unsigned long tick) {       /* Delay Function                     */
  unsigned long systickcnt;

  systickcnt = SysTickCnt;
  while ((SysTickCnt - systickcnt) < tick);
}

int main (void) {                       // Main Program                       
  SystemInit();
  //SysTick_Config(SystemFrequency/1000 - 1); // Generate interrupt each 1 ms   


    LPC_PINCON->PINSEL4 = ( 0 << 20);  // set pin P0.20 as GPIO Pin 0       
LPC_GPIO0->FIODIR = (1 << 20);     // set pin P0.20 as output (Output = 1, Input = 0)   

   
 
  for (;;) {                            /* Loop forever                       */

  LPC_GPIO0->FIOPIN |=  (1<< 20);  //Turn On  LED - set pin P0.20 to HIGH
       Delay(100);                       // Delay 500ms                       
        LPC_GPIO0->FIOPIN &= ~(1<< 20);  //Turn On  LED - set pin P0.20 to LOW
         Delay(500);                     // Delay 500ms                        */
  }
}
Başlık: Ynt: ARM nedir....?
Gönderen: yamak - 03 Kasım 2011, 09:01:24
Bu kodlar çalışıyo mu? GPIO0 ın 20. pinine ait konfigrasyonlar pinsel1 den yapılıyo fakat yukarıda pinsel4 kullanılmış bir de "SysTick_Config(SystemFrequency/1000 - 1);" yazan satır yorum haline getirilmiş bu kod çalışmazsa delay de çalışmaz. Şimdi gelelim asıl sorunuza FIODIR ilgili porta ait istenilen pinlerİ çıkış yapmaya yarıyo.Mesela gpıo0 ın 6. pinini çıkış yapmak istersen LPC_GPIO0->FIOPIN=1<<6; yazarsın.PINSEL ile ilgili pinin hangi çevre birimi tarafından kullanılması gerektiğini belirliyosun. Mesela GPIO0.20 için örnek verecek olursak. LPC_PINCON->PINSEL1|=0<<8|0<<9; yapılırsa normal giriş çıkış portu olarak kullanılır yani gpio. Eğer LPC_PINCON->PINSEL1|=1<<8|1<<9; dersek i2c nin clock giriş çıkışı olarak  olarak kullanmış oluruz.
Başlık: Ynt: ARM nedir....?
Gönderen: buzkırıcı - 03 Kasım 2011, 11:02:52
Hocam bu kod çalışıyor :) Keil derliyo lpc1769 ledi yakıp söndürüyor. LPC_PINCON->PINSEL1|=0<<8|0<<9; buradaki kodun ne olduğunu anladım ama 0<<8 0<<9 buradaki mantığı nedir?
Başlık: Ynt: ARM nedir....?
Gönderen: yamak - 03 Kasım 2011, 12:15:19
Bit kaydırma işlemi yapılıyo orda. Mesela 1<<2=4 dür yani 1 i 2 bit sola kaydırdım.Bir de bişey soracam  "SysTick_Config(SystemFrequency/1000 - 1);" bu komutu neden yorum haline getirdin. Yani başına // karakterlerin neden koydun.
Başlık: Ynt: ARM nedir....?
Gönderen: buzkırıcı - 03 Kasım 2011, 14:07:51
hocam aslında o komut yorum halinde değildi ilk derlediğimde .hex i başarılı şekilde oluşturmuştu. SystemFrequency de keil hata veriyodu yaklaşık 1 hafta önce bende yorum haline getirdim program derledi ama kite atıp denemedim. Hala aynı problem mevcut .hex i çıkarmıyor.

https://www.picproje.org/index.php/topic,35833.msg255923.html#msg255923 burada yazmış olduğunuz SystemCoreClock i değiştirdim ve .\Flash\Blinky.axf: Error: L6218E: Undefined symbol SystemCoreClock (referred from blinky.o). bu hatayı verdi. Teşekkürler.
Başlık: Ynt: ARM nedir....?
Gönderen: buzkırıcı - 28 Kasım 2011, 02:46:22

#include <LPC17xx.h>
#include "system_LPC17xx.c"
volatile unsigned long SysTickCnt;      /* SysTick Counter                    */
 
void SysTick_Handler (void) {           /* SysTick Interrupt Handler (1ms)    */
  SysTickCnt++;
}  

void Delay (unsigned long tick) {       /* Delay Function                     */
  unsigned long systickcnt;

  systickcnt = SysTickCnt;
  while ((SysTickCnt - systickcnt) < tick);
}
int main(void)

SystemInit();
 
   SysTick_Config(SystemCoreClock/1000 - 1); // Generate interrupt each 1 ms   
 


    LPC_PINCON->PINSEL0 = 0 << 8 | 0 << 9  |0 << 10 |0 << 11 |0 << 12 |0 << 13 |0 << 14 | 0 << 15 | 0 << 16 |0 << 17 |0 << 18 |0 << 19;  // Bacakları Gpıo olarak ayarladık     
LPC_GPIO0->FIODIR = 1 << 4 | 1 << 5 |1 << 6 |1 << 7 |1 << 8 |1 << 9;      // set pin P0.20 as output (Output = 1, Input = 0)   

  for (;;) {                                           

LPC_GPIO0->FIOSET =0x00000010; 
       Delay(100);                                             
        LPC_GPIO0->FIOCLR =0x00000010; 
         
LPC_GPIO0->FIOSET =0x00000020; 
       Delay(100);                                             
        LPC_GPIO0->FIOCLR =0x00000020; 
         
LPC_GPIO0->FIOSET =0x00000040; 
       Delay(100);                                             
        LPC_GPIO0->FIOCLR =0x00000040; 
         
LPC_GPIO0->FIOSET =0x00000080; 
       Delay(100);                                             
        LPC_GPIO0->FIOCLR =0x00000080; 
         
LPC_GPIO0->FIOSET =0x00000100; 
       Delay(100);                                             
        LPC_GPIO0->FIOCLR =0x00000100; 
       
LPC_GPIO0->FIOSET =0x00000200; 
       Delay(100);                                             
        LPC_GPIO0->FIOCLR =0x00000200;                                             
  }
   
}


Ben bunu yazdım gecikme kısmını da örneklerden aldım. program çalışıyor. ama set ve clr ederken çok meşakketli oldu her pin içinhexleri buldum falan daha kısa bir yolu yokmudur?  Gecikme kısmını SysTick gibi şeyler olmadan nasıl yazarız? Bu arada SysTick ne demek?
Başlık: Ynt: ARM nedir....?
Gönderen: yamak - 28 Kasım 2011, 08:10:21
SysTick timer benzeri bir çevre birimi. Ayarlarmaları yaptığında o ayarlardaki zamana göre kesme oluşturur. Ayrıca pin değerlerini bulmakta zorlanıyosun windows calculator ın programcı modunu kullanabilirsin.
Başlık: Ynt: ARM nedir....?
Gönderen: buzkırıcı - 29 Kasım 2011, 16:53:40
LPC_GPIO0->FIOPIN |=  (1<< 20);

örnekte böle yapmış, ledi yakıyor
LPC_GPIO0->FIOPIN &= ~(1<< 20);
Buda ledi söndürüyor. Ben tek tek bitleri buldum hex. çevirdim Örnekteki ledi yakıp söndürme mantığı nedir?
Başlık: Ynt: ARM nedir....?
Gönderen: JKramer - 29 Kasım 2011, 17:27:04
| --> VEYA  --> + (Toplama)

0 | 0 -->  0 VEYA 0 --> 0+0 = 0
0 | 1 -->  0 VEYA 1 --> 0+1 = 1
1 | 0 -->  1 VEYA 0 --> 1+0 = 1
1 | 1 -->  1 VEYA 1 --> 1+1 = 1

& --> VE --> x (Çarpma)

0 & 0 -->  0 VE 0 --> 0x0 = 0
0 & 1 -->  0 VE 1 --> 0x1 = 0
1 & 0 -->  1 VE 0 --> 1x0 = 0
1 & 1 -->  1 VE 1 --> 1x1 = 1

1<<20 : 1'i 20 kez sola kaydır.

LPC_GPIO0->FIOPIN |=  (1<< 20);
ile
LPC_GPIO0->FIOPIN = (LPC_GPIO0->FIOPIN) | (1<< 20);
aynı şey.
Başlık: Ynt: ARM nedir....?
Gönderen: buzkırıcı - 14 Aralık 2011, 12:56:29
Peki
LPC_GPIO0->FIOPIN &= 1<< 20);
buradaki "~" işaretide terslememi yapıyor?
Başlık: Ynt: ARM nedir....?
Gönderen: haydarpasamikro - 14 Aralık 2011, 13:17:40
~ operatörü bit tersleme yapar. Mesela:
x sayısı 0000 0001 olsun.
~x ise  1111 1110 olur.

~(1<<20) ise 1 uzuntamsayı olarak değerlendirilip 20 bit sola kaydırılır ve bu uzuntamsayı bitleri terslenir.Yani

(1<<20) işlemi
0000 0000 0001 0000 0000 0000 0000 0000
ardından ~ işlemi
1111 1111 1110 1111 1111 1111 1111 1111

sonra &= işlemi ile AND yapılarak sadece 20.bit sıfırlanmış olur. Diğer bitler konumları korunmuş olur.
Başlık: Ynt: ARM nedir....?
Gönderen: haydarpasamikro - 14 Aralık 2011, 13:29:39
x sayısı 0000 0001 olsun.
~x ise  1111 1110 olur.

~(1<<20) ise 1 uzuntamsayı olarak değerlendirilip 20 bit sola kaydırılır ve bu uzuntamsayı bitleri terslenir.Yani

(1<<20) işlemi
0000 0000 0001 0000 0000 0000 0000 0000
ardından ~ işlemi
1111 1111 1110 1111 1111 1111 1111 1111

sonra &= işlemi ile AND yapılarak sadece 20.bit sıfırlanmış olur. Diğer bitler konumları korunmuş olur.
Başlık: Ynt: ARM nedir....?
Gönderen: yusufburak - 12 Mart 2013, 15:16:03
afedersiniz :S ARM ile FPGA arasındaki ilişki nedir acaba ?
Başlık: Ynt: ARM nedir....?
Gönderen: berat23 - 12 Mart 2013, 15:48:39
Alıntı yapılan: yusufburak - 12 Mart 2013, 15:16:03
afedersiniz :S ARM ile FPGA arasındaki ilişki nedir acaba ?

yok. sadece içinde arm olan fpga ler var.
Başlık: Ynt: ARM nedir....?
Gönderen: speak48 - 12 Mart 2013, 15:54:20
içli dışlı veya yanyana ilişkileri mevcuttur.
arm işlemci çekirdekleridir fpga proglanabilir lojik.
yanyana: aynı pcb üzerinde arm coru ile fpga olabilir
dışlı:  fpga çipinin içine arm konmuş olabilir.
içli:  armcoru fpga içine programlanmış olabilir.
Başlık: Ynt: ARM nedir....?
Gönderen: yusufburak - 12 Mart 2013, 16:34:55
:) peki programlamasında benzerlik var mıdır ? bildiğim kadarı ile FPGA'da giriş çıkışları belirlemek bizim elimizde ya ARM'de durum böyle mi ? yoksa ARM bi PIC'ın dahada gelişmiş hali mi ?
Başlık: Ynt: ARM nedir....?
Gönderen: muhittin_kaplan - 12 Mart 2013, 17:01:48
Evet,
ARM bir işlemci çekirdeği bunu alıp NXP,ST, TI gibi firmalar yanına yönüne başka çevresel üniteler koyup (usart, eeprom vb) kullanıyor

ST için örnek STM32F407
NXP için LPC1769
Başlık: Ynt: ARM nedir....?
Gönderen: yusufburak - 12 Mart 2013, 17:57:23
ARM modifiye edilmiş PIC gibi o zaman :) eğlenceli...
Başlık: Ynt: ARM nedir....?
Gönderen: muhittin_kaplan - 12 Mart 2013, 19:50:38
Alıntı yapılan: yusufburak - 12 Mart 2013, 17:57:23
ARM modifiye edilmiş PIC gibi o zaman :) eğlenceli...
Yok, Yapıları Oldukça Farklı.
Modifiyeden Kastın, eğer "daha güçlü" ise, oda söföre göre değişir.
Başlık: Ynt: ARM nedir....?
Gönderen: yusufburak - 12 Mart 2013, 21:11:05
hmm :S kastım donanımının daha iyi olduğu ve daha çok işlevi olduğu idi. ve bu ek donanımlar elimizi güçlendirip işimizi kolaylaştıran şeyler olur genelde :S
Başlık: Ynt: ARM nedir....?
Gönderen: muhittin_kaplan - 12 Mart 2013, 21:15:10
Yusuf bey. İşlemcinin kendiside farklı modifiye felan değil.
"PIC" microchip firmasının ürettiği bir MCU ailesi. Ve kendisinden başkası üretmiyor. ARM dediğimiz ise bir MCU çekirdeği.

yada şöyle yapalım. ARM, otomobil motoru üreten bir firma. Bunu Renoda alıyor, Ford da diğer markalarda  (Bu arada aynı sistemi kullanan bir PSA motors vardır, citroen, ford ve pejo kullanıyordu motoru)

ama PIC, woswos ve motorunuda kendi yapıyor çamurluğunuda.
Başlık: Ynt: ARM nedir....?
Gönderen: yusufburak - 12 Mart 2013, 21:31:42
Peki şimdi anladım :) kızdırdı isem afedersiniz :S
Başlık: Ynt: ARM nedir....?
Gönderen: muhittin_kaplan - 13 Mart 2013, 09:45:12
Yok neden Kızayım.
Başlık: Ynt: ARM nedir....?
Gönderen: yusufburak - 13 Mart 2013, 13:58:06
:) anlamamakta ısrar ettim de :) teşekkür ederim