Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

Dspic33EP64MC502 60MIPS

Başlatan rree, 20 Mayıs 2026, 20:03:04

rree

#include <33EP64MC502.h>
#device ADC=12
#FUSES NOWDT, NOCKSFSM, HS, PR_PLL

// Register bit tanımlamaları
#bit PLLPRE0 =  getenv("bit:PLLPRE0");
#bit PLLPRE1 =  getenv("bit:PLLPRE1")
#bit PLLPRE2 =  getenv("bit:PLLPRE2")
#bit PLLPOST0 = getenv("bit:PLLPOST0")
#bit PLLPOST1 =  getenv("bit:PLLPOST1")
#word PLLDIV =   getenv("SFR:PLLFBD")
#bit LOCK    =  getenv("bit:LOCK")

#use delay(crystal=20MHz, clock=60MHz)

#pin_select U1TX= PIN_B8
#pin_select U1RX= PIN_B9
#use rs232(baud=9600,xmit=PIN_B8,rcv=PIN_B9)

//#use delay(clock=80MHz)

unsigned long DegFosc = getenv("CLOCK");

unsigned int16 Sabitfrekans=50000;
unsigned int16 Degfrekans=0;

#define led1 PIN_B5
void SetupPLL(void)  //Main Dan cağırın
{
//---------Pll Ayari--20Mhmz Kristal 60mips-------
// PLLPRE = 3 (binary: 00011) › bölen 5
    PLLPRE0 = 1;PLLPRE1 = 1; PLLPRE2 = 0;
    // PLLPOST = 0 (binary: 00) › bölen 2
    PLLPOST0 = 0;PLLPOST1 = 0;
    // PLLDIV = 28 › çarpan 30
    PLLDIV = 28;
}
  Birilerine lazım olur Dspic33EP64MC502 kristal 20Mhz  60MIPS

mehmet

60Mips mi oluyor yoksa temel frekans 60MHz?
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

rree

#use delay(crystal=20MHz, clock=60MHz)
#use rs232(baud=9600,xmit=PIN_B8,rcv=PIN_B9)
Hesapları 60 Mips göre yaptım. nasıl ölçeriz bilmiyorum
Uart 9600   60MHZ Clock da düzgün çalışıyor. Tek veri bu

mehmet

#3
PIC serisi 1/4 mips çalışmıyor mu?
Mips ile çalışma frekansını karıştırmamak lazım.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

rree

O zaman

while(TRUE) { output_toggle(pin_B0); delay_cycles(1000); }
Osilaskopta 14.88 khz çıktı  1/60000000  * 2000  ... gidersek 30 Khz Çıkması lazım
Yapay zeka ile yazdık
Bu hesaba göre 30 Mips çıkıyor.  Bildiğiniz ölçüm tekniği varmı

rree

#5
output_toggle(pin_B0);
   #asm 
   nop 
   nop 
   nop  
   nop
   .
   .
   .
  //50 Adet nop while döngüsünde
Osilaskopta Çıkan Kare dalga 258.80 Khz
Pr= 1/258*10^3  Pr=3,8759689922480620155038759689922e-6
100 adet nop olduğuna göre Kare dalga oluşturan yüksek ve alçak kısmını oluşturduğuna göre
100 Adet Bölen Anlamında 1 Komutu  İşlemek için harcanan zaman BirKomut=3,8759689922480620155038759689922e-6/100  >>3,8639876352395672333848531684699e-8

Mips=1/3,8639876352395672333848531684699e-8 >>>=25.880.000 Mips  Bu hesaba göre 30 Mips


rree

void SetupPLL(void)  //Main Dan cağırın
{
//---------Pll Ayari--20Mhmz Kristal 60mips-------
// PLLPRE = 3 (binary: 00011) › bölen 5
    //PLLPRE0 = 1;PLLPRE1 = 1; PLLPRE2 = 0;
    PLLPRE0 = 0;PLLPRE1 = 0; PLLPRE2 = 0;
    // PLLPOST = 0 (binary: 00) › bölen 2
    PLLPOST0 = 0;PLLPOST1 = 0;
    // PLLDIV = 28 › çarpan 30
    //PLLDIV = 28;
    PLLDIV = 22;
}
Düzeltildi 60 Mips

mehmet

Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

rree


rree

#9
while(TRUE) {
 #asm 
   nop 
   nop 
   nop  
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   
   nop 
   nop 
   nop  
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   
   nop 
   nop 
   nop  
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   
   nop 
   nop 
   nop  
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   
   nop 
   nop 
  
   #endasm
   
   }
while döngüsü + output_toggle(pin_B0);  8 cycle harcıyor Toplam nop 42 Adet 
Kare dalga için 100 cycle
FPLLO=FIN*(PLLDIV+2)/((PLLRE+2)*2*(PLLPOST+1)) Formul Bu
FPLLO=200000000*(70+2)/((4+2)*2*(0+1))
FPLLO=200000000*(72)/12)
FPLLO=200000000*6
FPLLO=120 000 000
Dspic33EP clock/2   60MHZ


rree

#10
#include <33EP64MC502.h>
#device ADC=12
#FUSES NOWDT, NOCKSFSM, HS, PR_PLL

// Register bit tanımlamaları
#bit PLLPRE0 =  getenv("bit:PLLPRE0");
#bit PLLPRE1 =  getenv("bit:PLLPRE1")
#bit PLLPRE2 =  getenv("bit:PLLPRE2")
#bit PLLPOST0 = getenv("bit:PLLPOST0")
#bit PLLPOST1 =  getenv("bit:PLLPOST1")
#word PLLDIV =   getenv("SFR:PLLFBD")
#bit LOCK    =  getenv("bit:LOCK")

#use delay(crystal=20MHz, clock=120MHz)

#pin_select U1TX= PIN_B8
#pin_select U1RX= PIN_B9
#use rs232(baud=9600,xmit=PIN_B8,rcv=PIN_B9)

//#use delay(clock=80MHz)

unsigned long DegFosc = getenv("CLOCK");

void SetupPLL(void)  //Main Dan cağırın
{
//---------Pll Ayari--20Mhmz Kristal 60mips-------
  // Giris  20 Mhz
  // PLLPRE = 4 
    PLLPRE0 = 0;PLLPRE1 = 0; PLLPRE2 = 1;  //5MHZ
    PLLDIV = 70; //5*34 =120 MHZ
    PLLPOST0 = 0;PLLPOST1 = 0;  //  1/2  60 MHZ
}


void main() {
SetupPLL();
output_bit(PIN_B0, 0);
  
  while(TRUE) {
 
   output_toggle(pin_B0);
   #asm 
   nop 
   nop 
   nop  
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   
   nop 
   nop 
   nop  
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   
   nop 
   nop 
   nop  
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   
   nop 
   nop 
   nop  
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   
   nop 
   nop 
  
   #endasm
   
   }
}

Osilaskopta 600Khz kare dalga var. Yapay zekayı güvenmekle yanlış yapmışım.  Son Hali 60mips

_bif void setup_PLL(......................);  Kendimiz h dosyasına bu şekilde Library yapabiliyormuyuz?