avatar_ete

Sigorta Ayarları Nedir? Nasıl düzenlenir ve Ayar çeşitleri Nereden bulunur?

Başlatan ete, 21 Nisan 2014, 19:35:20

ete

#config yerine Asm yazarsan ve #endconfig yerine Endasm yazarsan derler
Ete


zeka43

Hocam KT1 VAR PORTA.0 gibi bir tanımlama için derleyici hata veriyor acaba b.sayar 64bit olduğu için olabilir mi
SYMBOL KT1 VAR PORTA yazınca hata vermiyor ama doğrusu ne olmalıdır

ete

Sorunu anlamak için hata veriyor demek yeterli değil . Hatayı da söylemen gerek. Böylece sorunun ne olduğunu anlayabilirdik. Hatta, Programın değişken tanımlama kısmınıda buraya koysaydın belkide senin göremediğin bir sorunu biz görebilirdik.
Normal şartlarda bu tür tanımlama hata verdirmez. Ama derleyicinin kullandığı bazı sistem değişkenleri vardır ve bunları sen değişken adı olarak kullanırsan derlemede hata verir. KT1 de bunlardan birisi olabilir ama hiç duymadım bu ismi. Zaten Symbol olarak kullanınca hata vermiyor ise bu alternatifi elemek daha doğru olur.

İşin doğrusuna gelince, İşlemci pinlerine isim verirken SYMBOL kullanmak en doğrusudur.

Ete

zeka43

@ ;__config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRT_ON & _MCLR_OFF & _LVP_OFF & _PROTECT_ON & _BOD_OFF

TRISB = %11111111   ' Tüm PORTB pinlerini giriş olarak ayarla
TRISA = %00011100   ' PORTA'nın 2, 3 ve 4. pinlerini giriş olarak ayarla
PORTA = 0           ' PORTA'yı sıfırla

CMCON = 7            ' Comparatörleri devre dışı bırak
OPTION_REG.7 = 0     ' OPTION register ayarı

' Pinlere ve değişkenlere atamalar
SYMBOL R = PORTA.2          ' 3 Faz Kontrol
SYMBOL S = PORTA.3          ' 3 Faz Kontrol
SYMBOL T = PORTA.4          ' 3 Faz Kontrol

SYMBOL SW0 = PORTB.0        ' KAT 0 Switch
SYMBOL SW1 = PORTB.1        ' KAT 1 Switch
SYMBOL SW2 = PORTB.2        ' KAT 2 Switch
SYMBOL SW3 = PORTB.3        ' KAT 3 Switch

SYMBOL KT0 = PORTB.7        ' KAT 0 Buton
SYMBOL KT1 = PORTB.6        ' KAT 1 Buton
SYMBOL KT2 = PORTB.5        ' KAT 2 Buton
SYMBOL KT3 = PORTB.4        ' KAT 3 Buton

SYMBOL INIS = PORTA.0 ' Motor İniş (önceden IN olarak tanımlanıyordu)
SYMBOL CIKIS = PORTA.1  ' Motor Çıkış (önceden CIK olarak tanımlanıyordu)

' Buton Kontrol Döngüsü
BUTON:
    INIS = 0           ' Motoru sıfırla
    CIKIS = 0           ' Motoru sıfırla
    IF KT0 = 1 THEN KAT0
    IF KT1 = 1 THEN KAT1
    IF KT2 = 1 THEN KAT2
    IF KT3 = 1 THEN KAT3
    GOTO BUTON

' KAT 0 Kontrolü
KAT0:
    IF SW0 = 1 AND R = 1 AND S = 1 AND T = 1 THEN
        INIS = 1           ' Motor İniş
    ENDIF
    IF SW0 = 0 THEN GOTO BUTON
    GOTO KAT0

' KAT 1 Kontrolü
KAT1:
    IF SW0 = 1 THEN SWC1
    IF SW2 = 1 OR SW3 = 1 THEN SWIN1
    GOTO BUTON

' KAT 2 Kontrolü
KAT2:
    IF SW0 = 1 OR SW1 = 1 THEN SWC2
    IF SW3 = 1 THEN SWIN2
    GOTO BUTON

' KAT 3 Kontrolü
KAT3:
    IF SW3 = 1 AND R = 1 AND S = 1 AND T = 1 THEN
        CIKIS = 1          ' Motor Çıkış
    ENDIF
    IF SW3 = 0 THEN GOTO BUTON
    GOTO KAT3

' KAT 1 Switch Kontrolü
SWC1:
    IF R = 1 AND S = 1 AND T = 1 THEN
        CIKIS = 1          ' Motor Çıkış
    ENDIF
    IF SW1 = 0 THEN GOTO BUTON
    GOTO SWC1

' KAT 2 Switch Kontrolü
SWC2:
    IF R = 1 AND S = 1 AND T = 1 THEN
        CIKIS = 1          ' Motor Çıkış
    ENDIF
    IF SW2 = 0 THEN GOTO BUTON
    GOTO SWC2

' KAT 1 Switch In Kontrolü
SWIN1:
    IF R = 1 AND S = 1 AND T = 1 THEN
        INIS = 1           ' Motor İniş
    ENDIF
    IF SW1 = 0 THEN GOTO BUTON
    GOTO SWIN1

' KAT 2 Switch In Kontrolü
SWIN2:
    IF R = 1 AND S = 1 AND T = 1 THEN
        INIS = 1           ' Motor İniş
    ENDIF
    IF SW2 = 0 THEN GOTO BUTON
    GOTO SWIN2
END

zeka43

böyle yapınca bu hataları veriyor

ERROR Line 48: ENDIF without a matching IF..THEN. (ASANSOR.pbp)
ERROR Line 50: ENDIF without a matching IF..THEN. (ASANSOR.pbp)
ERROR Line 52: ENDIF without a matching IF..THEN. (ASANSOR.pbp)
ERROR Line 54: ENDIF without a matching IF..THEN. (ASANSOR.pbp)
ERROR Line 62: ENDIF without a matching IF..THEN. (ASANSOR.pbp)
ERROR Line 66: ID SWC1 is not a LABEL. (ASANSOR.pbp)
ERROR Line 67: ENDIF without a matching IF..THEN. (ASANSOR.pbp)
ERROR Line 69: ENDIF without a matching IF..THEN. (ASANSOR.pbp)
ERROR Line 73: ID SWC2 is not a LABEL. (ASANSOR.pbp)
ERROR Line 74: ENDIF without a matching IF..THEN. (ASANSOR.pbp)
ERROR Line 76: ENDIF without a matching IF..THEN. (ASANSOR.pbp)
ERROR Line 84: ENDIF without a matching IF..THEN. (ASANSOR.pbp)
ERROR Line 92: ENDIF without a matching IF..THEN. (ASANSOR.pbp)
ERROR Line 93: ID SWC1 is not a LABEL. (ASANSOR.pbp)
ERROR Line 100: ENDIF without a matching IF..THEN. (ASANSOR.pbp)
ERROR Line 101: ID SWC2 is not a LABEL. (ASANSOR.pbp)
ERROR Line 108: ENDIF without a matching IF..THEN. (ASANSOR.pbp)
ERROR Line 116: ENDIF without a matching IF..THEN. (ASANSOR.pbp)




@ ;__config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRT_ON & _MCLR_OFF & _LVP_OFF & _PROTECT_ON & _BOD_OFF

  TRISB=%11111111
  TRISA=%00011100
  PORTA=0

 
 CMCON=7               
 OPTION_REG.7=0 
 
  R var PORTA.2    '3 FAZ KONTROL
  S var PORTA.3    '3 FAZ KONTROL
  T var PORTA.4    '3 FAZ KONTROL
 
  SW0 var PORTB.0    'KAT 0 SWİCH
  SW1 var PORTB.1    'KAT 1 SWİCH
  SW2 var PORTB.2    'KAT 2 SWİCH
  SW3 var PORTB.3    'KAT 3 SWİCH
 
  KT0 var PORTB.7    'KAT 0 BUTON
  KT1 var PORTB.6    'KAT 1 BUTON
  KT2 var PORTB.5    'KAT 2 BUTON
  KT3 var PORTB.4    'KAT 3 BUTON
 
  IN  VAR PORTA.0    'MOTOR İNİŞ
  CIK VAR PORTA.1    'MOTOR ÇIKIŞ
  PAUSE 200
  BUTON:
  IN=0
  CIK=0
  IF KT0=1 THEN KAT0

  IF KT1=1 THEN KAT1
 
  IF KT2=1 THEN KAT2

  IF KT3=1 THEN KAT3
 
  GOTO BUTON
 
  KAT0:
  IF SW0=1 AND R=1 AND S=1 AND T=1 THEN
  IN=1
  ENDIF
  IF SW0=0 THEN BUTON

  GOTO KAT0
 
  KAT1:
  IF SW0=1 THEN SVC1

  IF SW2=1 OR SW3=1 THEN SWIN1

  GOTO BUTON
 
  KAT2:
  IF SW0=1 OR SW1=1 THEN SVC2
 
  IF SW3=1 THEN SWIN2

  GOTO BUTON
 
  KAT3:
  IF SW3=1 AND R=1 AND S=1 AND T=1 THEN
  CIK=1
  ENDIF
  IF SW3=0 THEN BUTON

  GOTO KAT3
 
  SVC1:
  IF R=1 AND S=1 AND T=1 THEN
  CIK=1
  ENDIF
  IF SW1=0 THEN BUTON

  GOTO SVC1
 
  SVC2:
  IF R=1 AND S=1 AND T=1 THEN
  CIK=1
  ENDIF
  IF SW2=0 THEN BUTON
 
  GOTO SVC2
 
  SWIN1:
  IF R=1 AND S=1 AND T=1 THEN
  IN=1
  ENDIF
  IF SW1=0 THEN BUTON

  GOTO SWIN1
 
  SWIN2:
  IF R=1 AND S=1 AND T=1 THEN
  IN=1
  ENDIF
  IF SW2=0 THEN BUTON

  GOTO SWIN2
  END
 

ete

Sigorta ayarları ile alakası olmayan bir hata seninkisi.
İlk hataya birlikte bakalım;
  IF KT0=1 THEN KAT0 bu satırda THEN komutundan sonra bir komut veya bilgi verirsen artık ENDIF kullanamazsın. Kural böyle. Bu satır iki şekilde doğru yazılabilir
Birincisi
  IF KT0=1 THEN KAT0

İkincisi
  IF KT0=1 THEN
    GOTO KAT0
  ENDIF
İstediğin şekilde kullanabilirsin. Birincisi daha doğru olacaktır.

KAT1:
  IF SW0=1 THEN SWC1 satırındaki hata Etiket adın SVC1 iken sen buraya SWC1 yazıyorsun. Ya SVC1'i SWC1 şeklinde düzelt yada SWC1 yazısını SVC1 olarak düzelt

Sigorta ayarlarını kapatmışsın bu ayarlar olmadan o işlemci çalışmaz.
BUTON: isimli etiketten bir önceki satıra PAUSE 200 ekle ki registerlerin yerleştirilmesi için işlemciye zaman vermiş olasın.

Toparlarsak hataların büyük kısmı fazladan kullandığın ENDIF komutu yüzünden onları silersen bir ksımından kurtulacaksın.
Hataların geri kalanı ise SVCx şeklindeki etiket isimlerine SWCx şeklinde komutla ulaşmaya çalışmandan kaynaklanıyor.
w harfini V olarak değiştir onlarda düzelecektir.

Ete

not : yukarıda verdiğin programı hatasız derleyen ile değiştirdim. Yalnızca hata veren yerleri düzelterek yaptım bunu.

zeka43

Değerli bilgileriniz için çok teşekkür ederim.
Ayrıca benim başka sorunlarım da var biraz uğraşacağım sanırım. Run etmek istediğimde
16f628 model not supported
The ICD model selected is not supported bu this version of microcode studio. İf you would like tobuse this ICD model, you need tonpurchase microcode studio plus. You May compile without ICD by using compile only F10

ete

Hem derleyip hemde Debug (hata ayıklama işlemi) mu yapmak istiyorsun.
Elinde ne var ne yapmak istiyorusn açıklamadığın için her şeyi sormak zorunda kalıyorum.
Buraya bir mesaj koyduğun zaman etraflıca açıklaman gerekiyorki bizde ona göre yorum yapalım.
Başlangıçta hata veriyor dedin çıktın ve kendince bir sebep ortaya koydun ve sonrandan istediğim bilgileri verince işin o kısmını kolayca atladık ve sorunun hiçde senin düşündüğün gibi olmadığını hep beraber anlamış olduk.

Bu son mesajını yazarken şöyle yazman gerekirdi tabiiki düşündüğüm yada tahminim doğru ise!!!.

Elimde ICD debug devresi var ve programı hem derleyip hemde hata ayıklama işlemini yapmak istyorum ama derleyici bu konuda hata veriyor. Hata da şu,.xxxxxxxx
Şimdi bu noktada elinde gerçekten ICD modul varmı yoksa programı derlemek için bilmediğinden dolayı yanlış butonamı basıyorsun işte bunu tahmin etmek zor benim açımdan.

https://www.microchip.com/en-us/development-tool/dv164045

Ben hiç ICD kullanmadım. Detaylarını bilemiyorum ancak çok da gerekli olduğunu sanmıyorum.
Programı normal F10 (Compile) butonu ile derleyip HEX dosyasını elde ettikten sonra onu ya deney boardına kurduğun gerçek devrede denersin yada Proteus programını kullanarak bilgisayarda simule ederek denersin. Varsa hataların anında ortaya çıkacaktır zaten.

Ete

Powered by EzPortal