Illegal Opcode hatası

Başlatan Kefran, 25 Nisan 2013, 00:19:56

ete

TrisB registerini düzeltmemişsin. Mevcut değer TRISB=%10011111 şeklinde. Burada 1 olanlar giriş pinlerini, 0 olanlar ise çıkış pinlerini gösteriyor. Yeni duruma göre TRISB=%11111000 şeklinde olmalı bana kalırsa.
Çıkış bacakları 7 ve 8 nolu pinler ise;
  SIFRE_1 var  PORTB.1    '
  SIFRE_2 var  PORTB.2   
şeklinde olmalı.

Ete

bygece

#16
yine çalışmadı hocam
@ __config _BODEN_ON & _BOREN_ON & _CP_ON & _DATA_CP_ON & _PWRTE_ON & _WDT_ON & _LVP_OFF & _MCLRE_OFF & _INTRC_OSC_NOCLKOUT      
   
 
  TRISB=%11111000
  TRISA=%00000000
  PORTA=0
  PORTB=1
 
  CMCON=7             
 
  STD var  PORTB.3    '1 STD  8870)TONE enable
  E1  var  PORTB.7    'Q1 du 8870
  E2  var  PORTB.6    'Q2 du 8870
  E3  var  PORTB.5    'Q3 du 8870
  E4  var  PORTB.4   'Q4 du 8870


  c1=0
          c2=0
          c3=0
          c4=0
          GOTO DTMF1     
     
     
   


birde

TRISB=%11111000
  TRISA=%00000000
  PORTA=0
  PORTB=1

port b burda giriş gözüküor a cıkış gözüküyor yukarıda yani trısb degerlerinde yaptıgımı oynama yeterli oluyor degilmi burda degişiklik yapmıyoruz

pic in 16 ayagı ra7 kristale 15 ra6 ayak kristalin diger ucuna pic in 4 ayagınada 5 v geliyor ra5 a portlarındanda giriş kullanacagım yerde varmı acaba   ide giriş mi yapmam gerekiyor acaba bir 6 ayagıda reset kullanmıslar 

program bu durumdayken bu devreye göre calısması gerekiyor derlemede hata yok pic e atmadada şuan hata yok ama nedir anlamadım

ete

Giriş pinlerin şunlar doğru ise ; Yanlarınada pin numaralarını yazdım.
  STD var  PORTB.3    '1 STD  8870)TONE enable  , 9 nolu pin
  E1  var  PORTB.7    'Q1 du 8870   13 nolu pin
  E2  var  PORTB.6    'Q2 du 8870   12 nolupin
  E3  var  PORTB.5    'Q3 du 8870   11 nolu pin
  E4  var  PORTB.4   'Q4 du 8870 , 10 nolu pin


Çıkış pinlerinde şunlar;
SIFRE_1 var  PORTB.1    ' 7 nolu pin
  SIFRE_2 var  PORTB.2    ' 8 nolu pin.
Bu durumda A portundan bir şey kullanılmamış gözüküyor. Herpsi B portunda yer almış.
Bu bilgilere göre verdiğim TrisB değeri doğru oluyor. Çalışması gerekirdi. Ama senin sözüne bakarak bunları yapıyoruz. Bundan emin değilim işte.
Bir diğer konu da 8870 in data bacaklarının yanlış dizilmiş olabileceği. Şayet öyle ise alınan bilgiyi doğru alamazsın. Demek istediğim şu, 8870 in Q1-Q2-Q3-Q4 çıkışları sırası ile B.7 - B6 - B5 - B4 pinlerine bağlı demişsin. Burası ters olabilir yani,
Q1=B4
Q2=B5
Q3=B6
Q4=B7 ye bağlı olmasın. Bunda bakman gerekiyor.
Aslında şuraya kendi bağlantı şemasını koysaydın bu kadar sorun yaşamazdık diyorum.
Ete


bygece

hmen şema koyup kontrol ediyorum hocam

bygece

#19
devredeki baglantı şöyle devredeki baglantı

  STD var  PORTB.3    '1 STD  8870)TONE enable  , 15 nolu pin
  E1  var  PORTB.7    'Q1 du 8870   11 nolu pin
  E2  var  PORTB.6    'Q2 du 8870   12 nolupin
  E3  var  PORTB.5    'Q3 du 8870   13 nolu pin
  E4  var  PORTB.4   'Q4 du 8870 , 14 nolu pin


çıkış pinlerimde dedigini gibi 7-8

baglantım bu şekilde 8870 10 nolu ayagı 5v degilmi hocam datashetde


4q1
5q2
6q3
7q4 şeklindede denedim yine çalışmadı

derlenmiş haldeki pic bu devrede çalışıyor yani üerinde gelen pic ile programı çalışıyor açıp kapaa yapıyor

bygece


ete

#21
Keşke kartın ön yüzünüde gösterseydin. Kartın arka tarafından anladığım kadarı ile bağlantılar şu şekilde.
PORTB.7=Q1
PORTB.6=Q2
PORTB.5=Q3
PORTB.4=Q4
PORTB.3=Std yani Data Valid ucu.
Bu durumda ilk verdiğin program bu bağlantya uygun gözüküyor. Ne uymayabilir sifre çıkışların elbette. Onlarıda kartın arkasından kontrol etme şansım yok maalesef.
Sifre çıkışları tam olarak kime bağlı kartın üzerinden bulup çıkarman gerek.
Sorunu onlar yaratıyor bana kalırsa.
Kısacası aşağıdaki konfigurasyon doğru sadece Sifre çıkışlarını bilmek gerekiyor.
  TRISB=%11111000
  TRISA=%00000000
  PORTA=0
  PORTB=1
 
  CMCON=7             
 
  STD var  PORTB.3    '1 STD  8870)TONE enable
  E1  var  PORTB.7    'Q1 du 8870
  E2  var  PORTB.6    'Q2 du 8870
  E3  var  PORTB.5    'Q3 du 8870
  E4  var  PORTB.4   'Q4 du 8870



Ete

bygece

evet hocam çalışmıyor anlamadı derlemede sıkıntı yok hatsız yapıyor pic atamda sıkıntı yok aatıyor

çıkışlar pic in 7 ve 8 inci ayakları ledlere gidiyor ordanda bc546 ya giriyor




ete

Her şey doğru bağlı. Kartın üzerinde 2 tane bir birinin ikizi kristal görüyorum. Birisi 8870 için de diğeri ne için bağlı orada? Kartın altındanbakınca Pice bağlı olduğunu görebiliyorum. Pic'i biz dahili OSC ile çalıştırıyoruz o halde bu kristal orada gereksiz yere bağlı.
Programda da hata yok. Neden çalışmadığını anlamadım doğrusu.
Ete

bygece

işin garip tarafı üstünde gelen pic çalışıyor açmada kapamada sıkıntı yok hani devrede parça arızası olma ihtimalini ortadan kaldırdım  6-7tane pic denedim yine aynı programda çalışmadı

bygece

#25
birde aklımda kalan şey şu hocam
  PORTA=0
  PORTB=1

bu satrılar burdaki tüm b portları giriş ve cıkış ayarlanmıs ama b satırlarda b portları giriş diyoruz gariplik burda olmasın

birde orjinal kodlarda şifre 4 karakterdi ben 3 e indirdi fark etmemesi lazım degilmi hani benden 4 üncü karakteri bekliyor olabilirmi kodlarda öyle bir satır varmı

ete

O iki satır önemsiz. Birsi PORTA yı komple sıfırlıyor. Diğeri PORTB.0 pininden HIGH çıkartıyor.

Ama en önemlisi 4 digit şifre yerine 3 digit kullanman ve bunu en sonda söylemen.
Program 4 digiti tek tek isteyecek şekilde düzenlenmiş.
3 dgiti girdikten sonra 4 digit gelmesi için bir müddet bekliyor gelmemiş ise önceki girişlerini iptal edip yeniden şifre girmeye gidiyor. Senin sorunu burada.
Şayet 3 digit şifre ile çalışmak istiyorsan aşağıdaki değişikliği yapman gerekiyor;
Şu satırları bul;
DECODER3:	
            Q1=E1
    Q2=E2
    Q3=E3
    Q4=E4
      c3 =  Q1 + 2*Q2 + 4*Q3 +  8*Q4
            GOTO DTMF4

Bu satırlarda yer alan  GOTO DTMF4 komut satırını silip yerine, GOTO SIFRE yazman gerekiyor.
Bundan sonra sistem 3 digit ile çalışabilir. Zaten SİFRE kısmında 4. digit bölümünü çıkarmışsın sanırım.

Ete


bygece

#27
ewet hocam oldu şimdi benim hatam dediginiz gibi 4 digit şifreyi sadece yukarıdan silmek olmus yine kendi hatama ugrastım sizide ugrastırdım boşyere vaktinizi aldım şimdi çalıştı ama 628A    lara yuklerken sorun yok sadece 628 e yuklerken sorun cıkarıyor yuklemiyor hex dosyasını gerci 628 iki tane var elimde bozukta olabilir derleme yaparken 16f628a secersem hata vermiyor 628 secersem hata veriyor ondan olabilirmi far edermi yani tesekkurler :)

ete

628 ile 628A farklı işlemcilerdir. Nesil farkları var çalışmalarında fark yok ama ayrı dönemlerin işlemcileri. 628A son nesil işlemcidir. Sigorta ayarları 628A ya göredir ve sorun oradan kaynaklanmaktadır. MPASM klasörü içinde yer alan P16F628.INC dosyasını açarsanız sonlara doğru sigorta ayarlarını görebilirsiniz. Orada göreceğiniz ayarların bazıları sanırım 628A da yer almıyor yada tam tersi o nedenle sıkıntı oluyordur.
Ete

bygece

#29
peki hocam bu devrenin tam tersini düşünsek yani çözücü degilde kodlaycı olarak çalıştırabilirizmiyiz yani bir buzer yada hopörlör koyup dtmf yi okutabilirmiyiz yani pic e tanımladıgımız dtmf yi çıkıştan almak gibi

Powered by EzPortal