Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Microchip PIC => Konuyu başlatan: Silberhaar - 31 Mayıs 2006, 14:56:39

Başlık: Siren türü uygulamalar
Gönderen: Silberhaar - 31 Mayıs 2006, 14:56:39
Sayın üstadlar ! ben pic programa konusunda yeniyim."pic programlama"(o.a)kitabı aldım.bayağı bir şeyler öğrendiğimi düşünüyordum.elektronikte olduğu gibi bir flip flop yapayım dedim fakat beceremedim.formlarda aradım bu kadar basit konuları hiçbir yerde bulamadım.sorum oldukça basit bir flip flop nasıl yapabilirim ve hangi değişkenleri değiştirerek frekansını değiştirebilirim.ileri aşamada farklı ses veren bir siren (ambulans sireni gibi )nasıl yapabilirim.
 yardımlarının için şimdiden teşekkürler.
Başlık: Siren türü uygulamalar
Gönderen: trinitrotoluen - 31 Mayıs 2006, 17:34:57
ben de pic işinde yeniyim ama bu konu ile ilgili bir ödevim olduğu için sana az da olsa yardım edebileceğimi sanıyorum. pic ile epromu kontrol ederek dac  ve amplifikatör yardımı ile eproma kaydettiğin sesi dışarı verebilirsin ;ISD  serisi entegreler kullanarak ta bu işi yapabilirsin;sana en fazla bukadar yardım edebilirim bakalım üstatların bu konuda ki önerileri ne olacak;ii çalışmalar
Başlık: Siren türü uygulamalar
Gönderen: Klein - 31 Mayıs 2006, 22:44:26
Pic konusunda söyleyecek fazla sözüm yok. Ancak genel ilkelerden bahsedeyim biraz.  Pic'e uyarlama da sana kalsın.

1- Ses çıkarmak için önce bir dalga çıkarmak gerekli. bunu hepimiz biliyoruz. Önce basit dalgalardan başlayıp daha karmaşık dalgalara doğru adım adım ilerlemeni öneririm.
2-mikrokontrolcü ile dalga üretmenin en doğru yolu zamanlayıcı (Timer) kullanmaktır. Ancak sen yeni olduğun için harware timer ile bir süre uğraşma.
3- Önce en basit dalgayı üretmekle başlayalım. Sabit frekanslı sabit oranlı kare dalga.

    çıkış = 1
    bekle ( bekleme süresi )
    çıkış= 0
    bekle (bekleme süresi )

    elimizde şimdi sabit periyot ve sabit oranlı bir kare dalgamız var. bekleme sürelerini değiştirerek değişik frekanslar elde edebiliriz. ilk bekleme ve son bekleme süresini farklı değerlere ayarlayarak da oranları değiştirebiliriz.

4- şimdi biraz daha ileriye gidelim
   bekleme süresi = bekleme süresi +1
   
    bunu da ekleyince elimizde tizden basa doğru giden bir ses oldu.
5- bir adım sonrası bekleme süresini  artırmak ve azaltmak olacak
    yukarıdaki kodu şöyle değiştirelim
    eğer  sayma yönü bayrağı 1 ise {
      bekleme süresi = bekleme süresi+1
      eğer bekleme süresi 1000 den büyük ise sayma yönü bayrağı=0
    }
     
    eğer sayma yönü bayrağı 0 ise {
       bekleme süresi=bekleme süresi-1
       eğer bekleme süresi 0 ise sayma yönü bayrağı=1
   }

   şimdi elimizde bastan tize ve sonrada tizden basa giden bir ses var.
6-  Bunları koda çevirmek de sana kalmış.
7- Bunları bir dene , temeli bir at , daha ileri teknikler için hepimiz yardımcı oluruz.
Başlık: Siren türü uygulamalar
Gönderen: Silberhaar - 02 Haziran 2006, 11:24:38
Sayın üstadlar..değerli cevaplarınız için teşekkürler.amacım pic öğrenmek ,ışık tuttuğunuz yönde çalışmaya başladım ve yaklaşık 1Khz e (kulakmetre ile ölçtüm)yakın bir sinyal ürettim.bunu yaklaşık (20+20)adet "NOP" komutu kullanarak yaptım.biraz uzun bir program oldu ama çalıştı.nop adetlerinde azaltma çogaltma ile frekans değişiyor.
  acemi işi olduğu bayağı belli.o:) gördüğüm değişik türdeki pic programlarında böyle bir uygulama yok gibi.
   bekleme süresi+1 türü uygulama için daha epeyi uğraşmam gerekli anlaşılan (vakit buldukça uğraşıyorum).
   nop'lardan ziyade döngülerle zaman oluşturmanın uygun olacağını düşündüğüm halde "hoca bildiğini okurmuş" misali oldu.sadeleştirmeye çalışırken gelebilecek yardımlara hayır demiyeceğim kesin.o:) selamlar
Başlık: Siren türü uygulamalar
Gönderen: Klein - 02 Haziran 2006, 13:32:57
Uzun zamandır pic ASM kullanmıyorum. Jargonu unuttuğum için hata yapabilirim. ama mantık anlaşıldıktan sonra düzenlemeyi yaparsınız artık.

equ sayac 10

mainloop:
bsf 1 ,  porta  ; sanıyorum böyle yazılıyordu port a nın 1. biti
call delay
bcf 1,porta
call delay
goto mainloop

delay :
movlw 200,sayac
delayloop:
decfsz sayac
goto delayloop
return
Başlık: Siren türü uygulamalar
Gönderen: PhD - 02 Haziran 2006, 13:59:52
Bende arkadaşa biraz düzeltme yapayım... ;)


list p=16f84a
include "p16f84a.inc"

sayac equ 10

org 0x000
goto start

org 0x004
return

org 0x005
start

clrf porta

bsf status,5
movlw b'00000000'
movwf trisa
bcf status,5

mainloop
bsf porta,1
call delay
bcf porta,1
call delay
goto mainloop

delay
movlw d'200'
movwf sayac

delayloop
decfsz sayac
goto delayloop
return

end


kolay gelsin...
Başlık: Siren türü uygulamalar
Gönderen: Silberhaar - 17 Haziran 2006, 12:07:47
Selam üstadlar.
Her çalışkan öğrenci (!) gibi bende,hemen çömlekçiler kardeşimizin gönderdiği metni kopyalayım mplab'a yapıştırdım fakattt mpasmwin ayak koydu. :cry: bütün uğraşmalarıma rağmen ikna olmadı.bende daha evvel okuduğumu sandığım "pic programlama" kitabını tekrardan okurken orada
bir flip flop işi yapan program buldum.denedim mükemmel çalışıyor.benim gibi acemiler yararlansın diye buraya gönderirken.Klein kardeşimizin yazdığı "gittikçe hızlanan ve belli bir hızdan sonra geri yavaşlayan bir osilatör" yapma fikri kafama girdi.Elimdeki elmanın neresinden ısırmaya başlamalıyım diye düşünüp duruyorum.yardımcı olursanız sevinirim.şimdiden teşekkürler.

;YANIP SÖNEN LED'LER
         LIST   P=16F84
INCLUDE "P16F84.INC"

SAYAC1   EQU      h'0C'
SAYAC2   EQU      h'0D'
        CLRF     PORTB
        BSF      STATUS, 5
        CLRF     TRISB
        BCF      STATUS, 5

        MOVLW    h'0F'
        MOVWF    PORTB
TERSLE
COMF PORTB, F
CALL GECIKME
GOTO TERSLE              
   
GECIKME
        MOVLW    h'FF'
        MOVWF    SAYAC1
DONGU1
        MOVLW    h'FF'
        MOVWF    SAYAC2
DONGU2
        DECFSZ   SAYAC2, F
        GOTO     DONGU2
        DECFSZ   SAYAC1, F
        GOTO     DONGU1
   RETURN
END
Başlık: Siren türü uygulamalar
Gönderen: Silberhaar - 28 Temmuz 2006, 12:22:17
Selam üstadlar..uzun uğraşmalarıma karşın yavaştan başlayarak hızlanan belirleyaceğimiz bir değerden  itibaren geri yavaşlayan bir programı yazamadım.  :cry:
  belki picbasicpro ile daha kolay olur dediysemde oradada başarılı olamadım (sıfırdan 39 000 Hz ye çıkarmayı hedeflemiştim)(sıfırdan itibaren
yükselmesine rağmen 10 000 Hz civarına kadar çıkıyor)
 yardımlarınız için şimdiden teşekkürler