Basit PIC Firmware

komut satırı da yeterli bendeki örneği derlemeye :)

Ama muhtemelen komut satırından internete girmek pek iç açıcı olmayacaktır o yüzden grafik arayüzü de olsa fena olmaz.
 
İşte bu! Grafik arayüzü ne kurdun?

Abi valla hiç bilmiyorum UBUNTU'ya hiç benzemiyor yalnız :D . ekranda bir kere hiç bir şey yok bomboş sol üst köşede Etkinlikler kısmı var oradan erişiyorum herşeye. bilmiyorum bunun kurulumu zaten baya zorladı beni. bazı şeyleri sen halledersin diye atlayarak geçti belki o yüzden böyledir.
 
O zaman teamviewer kurmayı dene de buradan bağlanmaya çalışayım.
 
Evet ilk firmware'imi çalıştırdım ve bir pinde kare dalga elde ettim :)

Kod:
#include <xc.h>

static void init_clock(void)
{
   /* islemci ve cevre birimleri saat frekanslarini ayarla */
   CLKDIV = 0x3100;

   /* osilator tam olarak ayarlanan merkez frekansinda calissin */
   OSCTUN = 0x00;

   /* saat kaynagi 8 MHz dahili osilator olsun */
   __builtin_write_OSCCONH((uint8_t) (0x07));
   __builtin_write_OSCCONL((uint8_t) (0x00));
}

static void init_peripherals(void)
{
   /* cihaz uzerindeki tum cevre birimlerini etkinlestir */
   PMD1 = 0x00;
   PMD2 = 0x00;
   PMD3 = 0x00;
}

static void init_gpios(void)
{
   /* portlara belli bir deger yaz */
   LATA = 0x0000;
   LATB = 0x0000;
   LATC = 0x0000;

   /* portlari giris veya cikis olarak yapilandir */
   TRISA = 0x079F;
   TRISB = 0xFE1F;
   TRISC = 0x03F7;
}

int main(void)
{
   int i;

   asm("NOP");   /* breakpoint bunlardan birisinde duracak */
   asm("NOP");
   asm("NOP");

   init_clock();

   init_peripherals();

   init_gpios();

   while (1)
   {
      _RB8 = 1;
      for (i = 0; i < 255; i++)
      {
         ;
      }
      _RB8 = 0;
      for (i = 0; i < 255; i++)
      {
         ;
      }
   }

   return 0;
}
 
Bu da delay için kütüphanenin sunduğu __delay_ms fonksiyonu kullanarak yapılmış hali. Aslında __delay_ms bir makro ve __delay32 fonksiyonunu çağırıyor. Bu fonksiyon ise, FCY makrosu ile belirtilen PIC'in saat frekansına göre bir döngü gecikmesi oluşturuyor.

Benim devrede PIC, harici 8 MHz lik bir osilatör ile çalıştırılıyor, o yüzden FCY 4000000 olarak tanımlı. Bu PIC'te (belki de hepsinde emin değilim) CPU frekansı her zaman saat frekansının yarısı oluyor.

Bu kodda 1ms gecikme ile porta 1 ve 0 yazıyoruz ve 1 kHz'e çok yakın bir kare dalga çıktı alıyoruz. Döngünün getirdiği ilave komutlardan dolayı 0.998 kHz alıyoruz.

Kod:
#include <xc.h>

#define FCY 4000000UL
#include <libpic30.h>

static void init_clock(void)
{
   /* islemci ve cevre birimleri saat frekanslarini ayarla */
   CLKDIV = 0x0000;

   /* osilator tam olarak ayarlanan merkez frekansinda calissin */
   OSCTUN = 0x00;

   /* saat kaynagi 8 MHz harici osilator olsun */
   __builtin_write_OSCCONH((uint8_t) (0x02));
   __builtin_write_OSCCONL((uint8_t) (0x00));
}

static void init_peripherals(void)
{
   /* MCU uzerindeki tum cevre birimlerini etkinlestir */
   PMD1 = 0x00;
   PMD2 = 0x00;
   PMD3 = 0x00;
}

static void init_gpios(void)
{
   /* portlara belli bir deger yaz */
   LATA = 0x0000;
   LATB = 0x0000;
   LATC = 0x0000;

   /* portlari giris veya cikis olarak yapilandir */
   TRISA = 0x079F;
   TRISB = 0xFE1F;
   TRISC = 0x03F7;
}

int main(void)
{
   asm("NOP");
   asm("NOP");
   asm("NOP");

   init_clock();

   init_peripherals();

   init_gpios();

   while (1)
   {
      _RB8 = 1;
      __delay_ms(1);
      _RB8 = 0;
      __delay_ms(1);
   }

   return 0;
}
 
Son düzenleme:

Çevrimiçi personel

Forum istatistikleri

Konular
5,657
Mesajlar
97,312
Üyeler
2,438
Son üye
İbrahimSönmez

Son kaynaklar

Son profil mesajları

cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Kesici/Spindle hızı hesaplamak için SpreadSheet UDF'leri kullanın, hesap makinesi çok eski kalan bir yöntem :)
Dr. Bülent Başaran,
Elektrik ve Elektronik Mühendisi
Yonga Tasarım Özdevinimcisi
Üç güzel "çocuk" babası
Ortahisar/Ürgüp/Konya/Ankara/Pittsburgh/San Francisco/Atlanta/Alaçatı/Taşucu...

Back
Top