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:

Forum istatistikleri

Konular
7,557
Mesajlar
126,548
Üyeler
3,058
Son üye
mgozalan

Son kaynaklar

Son profil mesajları

Python Geliştirmeye eklediğim yapay zeka sunucusu, yeni başlayanlar için roket etkisi
Bir insanın zeka seviyesinin en kolay tesbiti, sorduğu sorulardır.
yapay zeka interneti yedi bitirdi, arama motoru kullanan, forumlara yazan kaldı mı ?
Freemont2.0 herbokolog Freemont2.0 wrote on herbokolog's profile.
nick iniz yakıyor
:D
az bilgili çok meraklı
Back
Top