***KESME ALT PROGRAMI***

Başlatan HEXF2, 30 Nisan 2005, 08:55:01

HEXF2

Beyler ben DTMF chip kullanarak uzaktan kontrol devresi yaptım başka bir yerden almadım kendim tasarladım bu yüzden bazı problemleri var piyasada böyle devreler mevcut fakat benim yaptığım devrenin özellikleri çok farklı ama temel aynı DTMF ile cihaz kontrolü

Telefon çalıp hat açıldıktan sonra DTMF karşıdan bir ton alırsa ilgili bacağını lojik 1 yapıyor ve ben bu bilgiyi PIC e kesme olarak gönderiyorum RB0 kesmesi kesme alt programında ise DTMF çıkışlarını bağladığım PORTA yı okuyor ve sırasıyla 1,2,3... rakamları ile karşılaştırıyorum misal porta daki veri 1 ise 1ile karşılaştırma sonucu PORTB nin RB1 çıkışına bağlı xihazı sürüyorum ve böyule devam ediyor yalnız sorunum PORTA okunup eğer karşılaştırma uyuyorsa ilgili cihazı sürüp alt programdan çıkıyorum daha sonra karşıdan yeni bir tuşa basıldığı zaman DTMF nin ilgili bacağı tekrar kesme oluşturuyor ve başka bir cihazı cihazı sürüyorum fakat başka cihazı sürerken diğer cihaz devre dışı kalıyor yani 1 ile karşılaştırma yaptıım RB1 i sürdüm ve kesmeden çıktım şimdi yeni bir kesme geldi 2 cihazı sürücem karşılaştırmayı yaptım ve uyuyorsa 2.cihazı sürdüm FAKAT 1.CİHAZ KAPANIYOR ben aynı anda bir kaç cihazı devreye sokmak istiyorum
programın sadece bu kısmıyla ilgili ufak bir sample hazırladım aşağıdaki adreste

http://s45.yousendit.com/d.aspx?id=08CR5PUNJ0GXQ2OEYNU41A5AOK

yardımlarınızı bekliyorum

ete

@HexF2,

Sorunun çözümü aşağıdaki gibi olabilir.

Çözüm:
-------------
- PortB nin değerini (daha önceden her hangi bir pini DTMF tarafından set edilmiş olsun) set edilmesi gereken yeni pin değeri ile OR işlemine tabi tutarsan eskisi bozulmadan yeni pin de set edilir. SOnra bu değeri götürüp yeniden PortB nin tamamına yazarsan eski Port değeri + yeni pin değeri şeklinde bir değeri PortB de görürsün.
Bir önek vermek gerekir ise;
Diyelimki Önceki set edilme nedeni ile Port B nin değeri =%00000010 yani 1. bit set edilmiş. (PortB.1=1) vaziyette olsun.
Bu sefer PortA dan gelen bilgi nedeni ile PortB.3 set edelim. Ancak PortB.1 in set değeri bozulmasın.
Şayet PORTB=PortB OR %00001000 şeklinde bir komut verir isem portB nin eski değerini bozmadan Bit3'ü de set ederim.

ASM olarak yapılması gereken iş şu
Senin yazdığın bölümde P3 kısmına bu bölümü ilave etmeye çalışalım;
P3        ;******************************************************
                   movf      PORTA,W      ;Porta --> W
                   movwf     Dtmf         ;W --> Dtmf
                   movlw     0x03         ;W = 3
                   xorwf     Dtmf,W       ;Dtmf - W = W
                   btfss     STATUS,Z     ;Porta'daki veri 3 mü?
                   goto      SON          ;Değil programı sonlandır
                   Movf     PortB,W      ;PortB--->W
                   Iorlw   0x03           ; W or 3
                   Movwf  PortB          ;W--->PortB
                 
       SON         return

ETE
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

HEXF2

Ete buraya msj attıksan sonra dediğin olay benimde aklıma geldi denemedim ama şimdi diğer gelen bilgiyi yani PORTA daki veriyi 0x03 PORTB ile OR ladığım zaman RB0 kesme pini ne olcak bu yeni bir kesme oluşturmaz heralde değil mi ben bir deneyeyimde yazarım gene

ete

PortB.0 pinin kesme nedeni ile zaten giriş olması gerekir. Dolayısıyla port değerini okur iken o nolu pin daima 0 gelir ve senin yapacağın OR lama ile ilgisi olmayacaktır. Peki PortB nin set ettiğin bitleri nasıl sıfırlanacak?. Burasını düşündünmü. Programın geri tarafını görmediğim için fikir yürütemiyorum. Sanıyorum bir çözümü vardır.

Dene Bakalım olduğunu göreceksin.

ETE
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

HEXF2

Evet kapatmak istediğim cihazları kapatabiliyorum onda birşey yok misal 5'e birkez bastığında cihaz açılıyor ve aktif edilme sayısı bir değişkende tutuluyor 5 duşuna bir daha basarsan 2 ile karşılartırma yapılıyor iki kere basıldığından bu karşılatırma sonucu doğru oluyor değişken ile ilgili çıkış sıfırlanıyopr dediğini yarın deniycem ete sonucu buraya yazarım sağol

Veli B.

Senin yapmak istediğin devreyi ticari olarak 1 yıldır piyasaya sürüyoruz.Benim yöntemim de RB0 kullamnılmıyor(RB4-7 değişme kesmesi yeterli).Sen istersen tabiki kullanabilrsin.DTMF Recevierlarda aktif olarak 5 çıkış bacağı var.DTMF ready ve 4 bitlik çıkış.DTMF ready bacağı bir sinyal alındığında konum değiştirip sinyal kesildiğinde eski konumuna döner(L to H mı hatırlamıyorum)problem değil zaten.
diyelimki birinci cihazı on yapacaksın.bunun için bir tuş tanımla, mesela *,off içinde bir tuş tanımla, mesela # gibi.
Sistemi sıralı çalıştır.
Örnek:
5. cihazı on yapmak istiyorsun.dtmf 5 aldınve bunu değişkene atadın ardından * tuşuna bastın.Karşılaştırma yaptın * tuşu on olduğu için 5 nolu cihaza ait olan pin H oldu.
Şimdi 3 nolu cihazı off yapmak istiyorsun. 3 tuşuna bastın, 5 yüklü olan değişken içeriğine 3 yüklendi.ardından # tuşuna bastın 3 nolu cihaza ait olan pin L oldu.
Oldukça kısa bir kod ile bu sistemi çalıştırırsın.

HEXF2

Evet çeşitli fikirler çıkacak tabi dediğinde çok matılı devre ve programı bitti zaten ben sadece bir kısmında takıldım ilgilendiğiniz için teşekürrler asm dilini iyi biliyorum ama yaz allah yaz bazen tıkanıyo insan neyse @katana dostum * ve # tuşlarını başka işlerde kullıyorum mesela * tuşuna basınca şifre değiştiriliyo tabi ilk olarak eski şifre giriliyor eğer girilen şifre ile önceki şifre aynı değilse değiştirme işlemine izin verilmiyor # tuşu enter tuşu bunun yanıda devrenin fonksiyonları çok bende tam olarak bitireyim bilgisayar yazılımını filan da bir yerler ile anlaşmayı düşünüyorum devre aynı zamanda konuşma süresi belirleyebiliyor belirleediğin numara ile belirlediğin süre kadar konuşuyorsun sonra hat kapanıyor (şirketler için) aynı zamanda bilgisayar yazılımı sayesinde konuşmaları devreden otomatik bilgisayara aktarıp bunu wav olar kaydedip sıkıştırıp maille yollayabiliyor ama bu kısım daha çalışması sürüyor bitince güzel olcak inşallah sizede fikir oldu belki neyse dediklerinizi denedim şimdi oldu bir kaç cihazı sürebiliyorum sağolun beyler

HEXF2

ya beyle telefonun içini açmadan telefonun çaldığını nasıl algılarız yani ben bu devreyi bir yere kurmak istediğimde telefona müdahale etmek istemiyorum zaten kullanıcıda müsade etmez zilalgılama devresi düşündüm PIC in RB7 bacağına iki darbe gekdikten sonra hattı açmam gerek bu darbeleri PIC e saydırıp dijital anahtar yongası ile hattı açıyordum ama telefonu kurcalamadan olmuyor bunları dışardan nasıl yaparız @katana sen bu işi nasıl hallettin biraz fikir

CaFFeiNe

telefonun hattının iki ucunu 220 ohm dirençle birbirine bağla telefon açılmış gibi olur bir röle yardımıyla telefon 2-3 kez çaldıktan sonra yap tabiki
işin bitincede rölenin bırakmasını böylece telefonun tekrar normale dönmesini sağla

Veli B.

Eğer GSM kullanacaksan, en kolay yol otomatik cevap modu olan bir telefon kullanman olabilir.
Telekom hatlarını kullanacaksan, burada Yıldırım AK üstadın güzel bir çalışması var.Sanırım pekçok konuda gerçekten güzel bir kaynak olacaktır.Bu çalışmayı incelemeni tavsiye ederim.Bu arada tekrar teşekkürler Üstat.



Akıl Defterim

HEXF2

Abi bu çalışma nerde acaba @caffeine demek istediğin heralde telefon hattını dışardan açmak istersem bu iki hattı röle yardımıyla kısa devre yapıp daha sonra işim bitince bırakmasını sağlamak peki ben karşıdan aradım sabit telefonu 2 çalmadan sonra röle aktif oldu ve hattı kısa devre yaptı ben şimdi bu sabit telefonla bağlantıyı kurmuş mu oluyorum yav meşgul olmaz mı ?

Veli B.


HEXF2

ya abi bak bir arkadaş attı bişey çekildi kenara şimdi benim bir tek sorumun var telefona müdahele etmeden hattı açmak arkadaş demişki hattı kısa devre yaparsan hat açılmış olur ya zaten iki tane tel var ben bunları kısa devre yaptım hat açıldı eyvallah peki yine herhangi bir telden DTMF verisi alabilecek miyim ya beyle biraz yardım bitireyim şu işide işimize bakalım ya herşey bitti bir burda tıkandım

HEXF2

Ya beyler şuna cevap vercek bir allahın kulu yok mu soru basit telefona müdahale etmeden sadece hatla telefonun çaldığını PIC e nasıl algılatırım ve hattı nasıl açarım telefonun içini açtımı kolay ama ben sadece hat la bu işi halletmek istiyorum telefonun içini açmadan

oziant

normal telefonlarda zil sesi
çaldıgı zaman telefon hattında ac voltaj vardır
bunu degerlendirip zilin cıldıgını anlarsın sonrada
telefon hattının uçuna arkadaşın dedigi gibi direnci baglarsın
telefon açılmış olur işin bittiginde direnci devre dışı yapman lazım
yoksa hattın sürekli meşgul olur
MPLAB 5.62 ASM PROPİC 2