pıc basıc de 18f4520 config ayarları

Başlatan colddanger, 11 Nisan 2013, 01:08:14

elektro77

#15
MERHABALAR:
32 bit işletim sitemi kullanıyorum. bu güne kadar 18 serisi piclerlerle ilk defa bir deneme yapıyorum. config ayarlarını 32 bit işletim sistemine göre denedim ama başarılı olamadaım. Belkide şaçmaladım. 18f serilerini 32 bit işletim sisteminde kullanmak mümkünmü. Denediğim ayarlar aşağıda. Ama sürekli hata veriyor. 18f4520 illegal diyor.
yardımcı olursanız sevinirim.
@ DEVICE PIC18F4520
@ DEVICE PIC18F4520, OSC_INTIO67_1H 
@ DEVICE PIC18F4520, FCMEN_OFF_1H 
@ DEVICE PIC18F4520, IESO_OFF_1H
@ DEVICE PIC18F4520, WDT_ON_2H 
@ DEVICE PIC18F4520, WDTPS_512_2H
@ DEVICE PIC18F4520, CCP2MX_PORTC_3H 
@ DEVICE PIC18F4520, PBADEN_OFF_3H 
@ DEVICE PIC18F4520, LPT1OSC_OFF_3H 
@ DEVICE PIC18F4520, MCLRE_ON_3H
@ DEVICE PIC18F4520, STVREN_ON_4L 
@ DEVICE PIC18F4520, LVP_OFF_4L
@ DEVICE PIC18F4520, XINST_OFF_4L


aşagıdaki şekilde yaparsamda başka hatalar veriyor.
ASM
   __CONFIG    _CONFIG1H, _OSC_INTIO67_1H & _FCMEN_OFF_1H & _IESO_OFF_1H
   __CONFIG    _CONFIG2H, _WDT_ON_2H & _WDTPS_512_2H
   __CONFIG    _CONFIG3H, _CCP2MX_PORTC_3H & _PBADEN_OFF_3H & _LPT1OSC_OFF_3H & _MCLRE_ON_3H
   __CONFIG    _CONFIG4L,  _STVREN_ON_4L & _LVP_OFF_4L & _XINST_OFF_4L
ENDASM
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

#16
Ortaya çıkan hataları buraya yazmaz isen nasıl yorum yapabiliriz bilemiyorum.
Bu sorunun bir sürü sebebi olabilir ve bulmak için ip ucumuz çıkan hatalar dır.
Genel anlamda 18F serisi 32 bit yada 64 bit makinalarda MPASM kullanılarak derlenir.
MPASM makinada ayrı şekilde mevcut deil ise Proteus klasöründe Tools alt klasörü içinde yer alıyor. Öncelikle onun yolunu (Path) programa göstermen gerekiyor.
18F serisi ile çalıştığın zaman öncelikle Program & Copile Options seçeneklerinden Assembler başlığı altında yer alan MPASM kutusunu seçili hale getirmen gerekir.
Buna ek olarak işlemcinin 18Fxxxx.INC dosyasını MPASM klasöründe bulup dosyayı MCS ile açarsın ve sigorta ayarlarına ait satırları başına ; koyarak kapatırsınki aynı komut satırları derleme esnasında iki defa işlenmesin. İŞlenirse malum hatalar ortaya çıkar.

Aşağıdaki linki de dikkatlice oku lütfen.

https://etepic.com/index.php/topic,1687.0.html

Yukarıda verdiğin sigorta ayarlarından ilk sıradakiler PBP assmebler'ine uygun ayarlardır.
18F serisinde MPASM kullanılacağı için alttaki ayarlar şeklinde verilmelidir sigorta ayarları.


Ete

elektro77

#17
Teşekkürler hocam. Dediğiniz gibi hatalar kalktı.
Fakat aşağıdaki kodlarla ekrana yazdırmaya çalıştığımdan başka birşeyler yazıyor simülasyonda. anlamsız ama eşit karekter sayısında şeyler.
Acaba frekans veya osc ayarı ile ilgilimi.
ASM
  __CONFIG    _CONFIG1H, _OSC_INTIO67_1H & _FCMEN_OFF_1H & _IESO_OFF_1H
  __CONFIG    _CONFIG2H, _WDT_ON_2H & _WDTPS_512_2H
  __CONFIG    _CONFIG3H, _CCP2MX_PORTC_3H & _PBADEN_OFF_3H & _LPT1OSC_OFF_3H & _MCLRE_ON_3H
  __CONFIG    _CONFIG4L,  _STVREN_ON_4L & _LVP_OFF_4L & _XINST_OFF_4L
ENDASM
'-------------------------------------------------------------------------------
'DEFINE OSC 20
'-------------------------------------------------------------------------------
DEFINE LCD_DREG PORTC    'LCD data bacaklari hangi porta bagli ? 
DEFINE LCD_DBIT 0        'LCD data bacaklari hangi bitten basliyor ?

DEFINE LCD_EREG PORTC    'LCD Enable Bacagi Hangi Porta bagli ?
DEFINE LCD_EBIT 4        'LCD Enable Bacagi Hangi bite bagli ?

DEFINE LCD_RSREG PORTC    'LCD RS Bacagi Hangi Porta bagli ?
DEFINE LCD_RSBIT 5        'LCD RS bacagi Hangi Bite bagli ?

DEFINE LCD_BITS 4        'LCD 4 bit mi yoksa 8 bit olarak ba?ly ?
DEFINE LCD_LINES 4      'LCD Kaç syra yazabiliyor ? 

DEFINE LCD_COMMANDUS 2000 'Command delay time in us 
DEFINE LCD_DATAUS 50 'Data delay time in us 
'-------------------------------------------------------------------------------
TRISA=%00000000
TRISB=%00000000    
TRISC=%00000000    'RX PİNİ GİRİŞ OLARAK AYARLANDI
TRISD=%00000000
TRISE=%00000000
PORTA=%00001000      'PORTA.3 RESET ETME UCU HIGH YAPILDI. LOW GELİRSE RESET OLUR
PORTB=0
PORTC=0
PORTD=%00001111
PORTE=0
'-------------------------------------------------------------------------------
lcdout $FE,1        'LCD ekranı sil
PAUSE 20
lcdout $FE,$c0,"UMIT GUNGOR"
PAUSE 200
'lcdout $FE,1        'LCD ekranı sil
'PAUSE 200
'-------------------------------------------------------------------------------
BASLA:





GOTO BASLA
END

"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

#18
Şema ya dikkatlice bak bakalım.
Pic den çıkış etiket isimleri ile LCD deki etiket isimleri uyuşuyormu?
Ayrıca LCD açılış gecikmesi 20ms olmaz. En azından 150-200 ms olmalı.

Ete

elektro77

#19
18f4520 de Aşağıdaki kodlarla portb ye bağlı keyped taramasını gerçekleştiremiyorum. Tuşlar kendi kendine sürekli sıra ile basılıyormuş gibi.
Nerede hata var
ASM
  __CONFIG    _CONFIG1H, _OSC_HS_1H & _FCMEN_OFF_1H & _IESO_OFF_1H
  __CONFIG    _CONFIG2H, _WDT_ON_2H & _WDTPS_512_2H
  __CONFIG    _CONFIG3H, _CCP2MX_PORTC_3H & _PBADEN_OFF_3H & _LPT1OSC_OFF_3H & _MCLRE_OFF_3H
  __CONFIG    _CONFIG4L, _STVREN_ON_4L & _LVP_OFF_4L & _XINST_OFF_4L
ENDASM
'-------------------------------------------------------------------------------
DEFINE OSC 20
'-----------------------------------
TRISA=%000000
TRISB=%11110000    'PORTB KEYPEDDE 7654 giriş 3210 çıkış olarak ayarlandı
TRISC=%10000000    'PORTC 7 BİT RX GİRİŞİ OLARAK AYARLANDI
TRISD=%00000000
TRISE=%00000111
PORTA=0
PORTB=0
PORTC=0
PORTD=0
PORTE=0
'------------------------------------------------------------------------------
'ADCON0=%10001110 
ADCON1=%00001111                  'TÜM PİNLER DİJİTAL YAPILDI
'ADCON2=%00001111 
INTCON.2=1'PORTB DEKİ PULLUPLAR İPTAL
'CMCON=0
'CVRCON=0
BASLA:
portb=%11111110
if portb.4=0 then SW1=1
if portb.5=0 then SW2=1
if portb.6=0 then SW3=1
if portb.7=0 then SW4=1
'*******  2.satır taraması ******
portb=%11111101
if portb.4=0 then SW5=1
if portb.5=0 then SW6=1
if portb.6=0 then SW7=1
if portb.7=0 then SW8=1
'*******  3.satır taraması ******
portb=%11111011
if portb.4=0 then SW9=1
if portb.5=0 then SW10=1
if portb.6=0 then SW11=1 
if portb.7=0 then SW12=1 
'*******  4.satır taraması ******
portb=%11110111
if portb.4=0 then SW13=1 
if portb.5=0 then SW14=1 
if portb.6=0 then SW15=1 
if portb.7=0 then SW16=1


GOTO BASLA

"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Bu hali ile programdaki tek kusur etiket tanımlamaları SW ler yapılmamış yada sen programın bir parçasını verdin yalnızca.
Bu durumda çalışmayan şey programın geri kalan parçası ile alakalı olsa gerek.
Ete

elektro77

hocam dediğiniz gibi yapmıştım. programın bir kısmını vermiştim.
şimdi ise daha iyi anlayabilmek ve anlatabilmek için programın çalışmayan kısmını ayırıp sadece keyped ile ilgili yeni bir uygulama yaptım. Fakat aynı sorunu ondada yaşadım. Ektedir.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

Giriş olan tuştakımı pinleri Pullup lı konumunda olmalı ki HIGH da beklerken low yaptığın çıkışla kesişince giriş pinini LOW yapsın ve işlemcide lojik konum değişikliğini algılamış olsun.
Senin Pullup ların eksik. Ya onlara pullup direnci bağla yada dahili pullapları aktif et.

Ete

elektro77

teşekkür ederim hocam.pullupları aktif edince çalıştı.
Birde ben zaten A B C D uçlarını da ters bağlamışım.
1 e basıyorum diye hep A ya basıyormuşum.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

Powered by EzPortal