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.
 
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
8,447
Mesajlar
138,551
Üyeler
3,343
Son üye
Yigitaatalay

Son kaynaklar

Son profil mesajları

mechanic ayhanarican mechanic wrote on ayhanarican's profile.
https://www.allmystery.de almanca biliyorsan burada araştır. Yapay zekada çeviriyor gerçi.
Almanların matematik bilgisi daha iyi oluyor.
“Kendi yolunu çizen kişi, kimsenin izinden gitmez.” – Nietzsche
Kim İslâm’da güzel bir çığır açarsa (güzel bir alışkanlık başlatırsa), onun sevabı ve kendisinden sonra ona uyanların sevapları, onların sevaplarından hiçbir şey eksilmeksizin ona da yazılır.
erdemtr55 taydin erdemtr55 wrote on taydin's profile.
Merhaba Taydin bey,
Gruba spms serisi yapıcak mısınız?
ben 3 sargılı toroid ile 2 adet flyback sürücek bir devre yapmayı düşünüyorum.size soracak sorularım vardı?
Mutluluğun resmi illa güzel çizilmiş tablo olmak zorunda değil.Bazen basit bir çizgi,doğru bir renk,yada küçük bir detay
Back
Top