PIC te GRAFIGI verilen Kare Dalgayı Ureten SINAV Sorusu???

Başlatan haxan_35, 10 Haziran 2013, 11:11:19

haxan_35

Herkese iyi günler arkadaşlar soru mikroişlemciler dersinin vize ve finalde çıktı ama bir türlü verilen şekli çizdiremedim.Cevabı bile arkadşlar yardımcı olurlasa çok sevinirim.Özellikle PIC C kodu olursa çok iyi olur.Şimdiden teşekkürler

SORU:
PIC 16F877 veya 16F628 mikrodenetleyicisinin timer0 zamanlayıcısı ve interrupt özelliğini kullanarak 100us'lik zamanlayıcı kodunu yazınız. Bu zamanlayıcıyı kullanarak aşağıdaki dalga şeklini D2 ledinde gösterecek C kodunu yazınız. İşlemci frekansının 10MHz olduğu varsayılacaktır. Delay fonksiyonları kullanılmayacaktır.

OG

FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

f15eagle

şimdi de bu moda oldu galiba sınav sorusu yazıp yardım isteme  ???

Ufak bir araştırmayla serdar çiçek beyin ccs c kitabını bulabilirsin. Burada timer0 birimi nasıl kurulur 10mhz ile 100us nasıl elde edilir (yada en fazla ne kadar) hepsi anlatılıyor.

Daha sonra yapacağın belli, en düşük 50us lik kara dalga var. Yani bir değişken belirle bu değişkeni 50us de 1 arttır ve değişkenin değerini kontrol et, grafikdeki yükselen kenar değerlerine geldiğinde gerekli pini 1 yap, düşüne kenarda 0 bu kadar

Hazır kod istersen ki ödev için hele, burada sana kimse yardımcı olmak istemez. Sen birşeyler yap önce problem varsa olmadıysa takıldıysan herkes severek yardım eder.

WrtM


haxan_35

Alıntı yapılan: f15eagle - 10 Haziran 2013, 12:58:43
şimdi de bu moda oldu galiba sınav sorusu yazıp yardım isteme  ???

Ufak bir araştırmayla serdar çiçek beyin ccs c kitabını bulabilirsin. Burada timer0 birimi nasıl kurulur 10mhz ile 100us nasıl elde edilir (yada en fazla ne kadar) hepsi anlatılıyor.

Daha sonra yapacağın belli, en düşük 50us lik kara dalga var. Yani bir değişken belirle bu değişkeni 50us de 1 arttır ve değişkenin değerini kontrol et, grafikdeki yükselen kenar değerlerine geldiğinde gerekli pini 1 yap, düşüne kenarda 0 bu kadar

Hazır kod istersen ki ödev için hele, burada sana kimse yardımcı olmak istemez. Sen birşeyler yap önce problem varsa olmadıysa takıldıysan herkes severek yardım eder.
hocam uğratım ama olmadı dediğiniz kitap bende var grafikten bişey anlamadım sınavda da bişeyler karalamıştım ama hiç puan almamışım aynı hoca soruyu tekrar soracağını söyleyince bende bu konuyu açtım herhangi bir art niyetim yoktu

Analyzer

Selam,

Art niyetiniz zaten yoktur estafurullah. Ancak forumumuz kurallarında yazılı olmasa dahi, hazır isteklere pek cevap verilmek istenmez. Sizin gibi öğrenci kardeşlerimizin öğrenerek mezun olması istenir. O yüzden forumdaki arkadaşlarımız hazır kod paylaşmayabilir. Siz bir noktaya kadar getirip de takıldığınız yer olursa onu sorun en iyisi. İyi çalışmalar.

Analyzer
Üşeniyorum, öyleyse yarın!

atioky_216

Belki böyle sorulara kod değil de algoritma yazılarak yardımcı olunabilir, şahsen ben bazen algoritma kurmakta zorlanıyorum. Koda dokmek zor değil kurduktan sonra

mehmet

Kalıp olarak yazalım herkes kendine göre düzenlesin olmaz mı?
//......
//config ayarları...

//genel değişkenler
unsigned char z = 0;


void init()
{
      //TimerX 10uS ye ayarlanacak şekilde ayarlanır.
     // örnek olarak 10uS (10'nun katlarına kolay ulaşabilmek için.)
      //Giriş çıkış ayarları yapılır.
      //Genel ve diğer kesme birimleri açılır...
}

void main()
{
   init();
   
   //0-200 high, 200-300 low, 300-350 high, 350-400 low, 400-500 high
   //0, 20, 30, 35, 40, 50
   while(1)
   {
        // eger z  =  0 ise led = 1;
        // eger z >= 20 ise led = 0;
        // eger z >= 30 ise led = 1;
        // eger z >= 35 ise led = 0;
        // eger z >= 40 ise led = 1;
        // eger z >= 50 ise z = 0;
   }
}

interrupt()
{
     //interruptta girince genel bir değişken bir artırılır,
     z++;
     //kesme değişkenleri temizlenir.
}
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

mehmet

Alıntı yapılan: mehmet - 11 Haziran 2013, 22:42:37
............................................

         // eger z >= 50 ise z = 0;

............................................

Satırını
............................................

        //eger z >= 50 ise { z = 0; led = 0;}

............................................

şeklinde düzeltmemiz gerekmekte....
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

Mr.Java

#9
Ben olsam pwm kütüphanemi yazarım mis gibi.Osilatörüme üretilecek frekansı belirlerim sonra da sadece pwmimi yazarım olur biter..

void Pwmhazir(unsigned int osilatör , unsigned int pwmfrekansım);


void StartPwm(unsigned int kanal, unsigned int deger);


örneğin
pwmhazir
fonksyonu için
unsigned int PR2_PRE_1 = ( FOSC / (pwmFreq * 4 * 1) ) - 1;
değeriyle de hesaplarım oldu bitti gitti.

Erol YILMAZ

Alıntı yapılan: haxan_35 - 11 Haziran 2013, 15:48:24
...grafikten bişey anlamadım sınavda da bişeyler karalamıştım ama hiç puan almamışım...

Evet grafik çok karışık, anlaşılması baya zor bu sene,
Bir sonraki sene çok rahat anlayacak seviyeye gelirsiniz.

Bence bu sene dersi bırakın, seneye anlaya anlaya geçin.
Benim niyetim de tamamen halis...

malpaslan1979

Alıntı yapılan: Allegro - 13 Haziran 2013, 14:40:46
Evet grafik çok karışık, anlaşılması baya zor bu sene,
Bir sonraki sene çok rahat anlayacak seviyeye gelirsiniz.

Bence bu sene dersi bırakın, seneye anlaya anlaya geçin.
Benim niyetim de tamamen halis...

kesinlikle sayın Allegro'ya katılıyorum. Yüksek okuldayken mikroişlemciler dersini 6502 ile aldım, anlamadım onlarca komut dört farklı adresleme modu vs vs. Kaldım, hayatımda bir dersten kalacağıma sevineceğimi düşünemezdim. Ertesi sene pic 16f84 assembler ile anlatıldı. Yüksekokuldaki tek 100 puanımı bu dersten aldım. :)

Mr.Java

Evet hayat çok garip hiç anlamadığım ders idi mikroişlemciler.Hatta bana ne gereği olacak dediğim derste şimdi mikroişlemci üzerine kurulan forum sitelerine günlük takılmaya başladım.  :D

CaFFeiNe

Alıntı yapılan: Fkarizmatik - 13 Haziran 2013, 13:47:32
Ben olsam pwm kütüphanemi yazarım mis gibi.Osilatörüme üretilecek frekansı belirlerim sonra da sadece pwmimi yazarım olur biter..

void Pwmhazir(unsigned int osilatör , unsigned int pwmfrekansım);


void StartPwm(unsigned int kanal, unsigned int deger);


örneğin
pwmhazir
fonksyonu için
unsigned int PR2_PRE_1 = ( FOSC / (pwmFreq * 4 * 1) ) - 1;
değeriyle de hesaplarım oldu bitti gitti.

burada pwmlik bir durum yok bence, sınav sorusu olmasa timer+interrupt ta gerekmez, basit çıkışı set et reset et ve delay komutları ile biter iş, ama sınav sorusu olduğu için timer vs. istemişler

Mr.Java

Alıntı yapılan: CaFFeiNe - 13 Haziran 2013, 15:31:49
burada pwmlik bir durum yok bence, sınav sorusu olmasa timer+interrupt ta gerekmez, basit çıkışı set et reset et ve delay komutları ile biter iş, ama sınav sorusu olduğu için timer vs. istemişler

neden ? Pwm sinyalini oluşturup duty cycle değiştirerek istenilen sinyaller sorunsuz çıkartılabilir.Dediğiniz doğru fakat amaç ezbere dayalı sistem değil de kişinin kendisini geliştirerek olaylara farklı bakış açısıyla , ufkunu açmaya çalışıyorum.