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,158
Mesajlar
121,555
Üyeler
2,896
Son üye
banbul

Son kaynaklar

Son profil mesajları

az bilgili çok meraklı
Prooffy wrote on semih_s's profile.
Merhaba, sizden DSO2C10 hakkında bilgi rica ettim. Yanıtlarsanız sevinirim...
Unal wrote on taydin's profile.
Timur Bey, Arduino kontrollü bir akü şarj cihazı yapmaya çalışıyorum. Aklımdaki fikri basit bir çizim olarak konu açmıştım. Özellikle sizin fikirlerinizi çok önemsiyorum.
hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Back
Top