18f452

Başlatan behcet.3, 04 Aralık 2012, 22:09:03

behcet.3

asm
    __CONFIG _CONFIG1H, _OSCS_OFF_1H & _XT_OSC_1H
    __CONFIG _CONFIG2L, _BOR_ON_2L & _BORV_20_2L & _PWRT_OFF_2L
    __CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_128_2H
    __CONFIG _CONFIG3H, _CCP2MX_ON_3H
    __CONFIG _CONFIG4L, _STVR_ON_4L & _LVP_OFF_4L & _DEBUG_OFF_4L
    __CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L
    __CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
    __CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
    __CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H
    __CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L
    __CONFIG _CONFIG7H, _EBTRB_OFF_7H
endasm

DEFINE OSC 4

'*****LCD TANIMLAMALARI*****
DEFINE LCD_DREG     PORTB       'LCD DATA BACAKLARI PORTB YE BAĞLI
DEFINE LCD_DBIT     4           'LCD DATA BACAKLARI PORTB.4 DEN BAŞLIYOR
DEFINE LCD_RSREG    PORTB       'LCD RS BACAĞI PORTB YE BAĞLI
DEFINE LCD_RSBIT    1           'LCD RS BACAĞI PORTB.1 BAĞLI
DEFINE LCD_RWREG    PORTB       'LCD RW BACAĞI PORTB YE BAĞLI
DEFINE LCD_RWBIT    2           'LCD RW BACAĞI PORTB.2 BAĞLI
DEFINE LCD_EREG     PORTB       'LCD ENABLE BACAĞI PORTB YE BAĞLI
DEFINE LCD_EBIT     3           'LCD ENABLE BACAĞI PORTB.3 BAĞLI
DEFINE LCD_LINES    4           'LCD 4 SATIRLI
DEFINE LCD_BITS     4           'LCD 4 BİT VERİ ALIŞ VERİŞİ YAPIYOR

DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 0
DEFINE HSER_SPBRG 25  ' 2400 Baud @ 4MHz, 0,17%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

DEFINE ADC_BITS      10     'ADC 10 BİT
DEFINE ADC_CLOCK     3
DEFINE ADC_SAMPLEUS  50     'ÖRNEKLEME ZAMANI 50 MİKROSANİYE

PORTA=0:TRISA=%00000001     
PORTB=0:TRISB=%00000000 
PORTC=0:TRISC=%00000000
PORTD=0:TRISD=%10000000
PORTE=0:TRISE=%00000000

SYMBOL GIE  =INTCON.7   'genel interruptları açıyor
SYMBOL PEIE =INTCON.6   'peripheralinterruptları açıyor
SYMBOL RCIE =PIE1.5     'USART Recive interrupt enable bit
SYMBOL RCIF =PIR1.5     'USART Receive interrupt flag bit

ADCON1=%10001110              'ADC AÇIK

volt var word
ham    var  word 
mvolt VAR BYTE

RCIE=1
PEIE=1
GIE=1

Low PORTB.2
LCDOut $FE,1 
pause 10

PORTA =%00000000
PORTB =%00000000
PORTC =%00000000
PORTD =%00000000

BASLA:

PORTD =%11100000
PAUSE 10

ADCIN 0,ham 
Ham=ham+1
Volt=(ham */ 1250)/100
Mvolt=Volt // 10
Volt=Volt/10
LCDOUT $FE,1,"001=",#VOLT,",",# Mvolt,"v"
PAUSE 500

GOTO BASLA

''''nerde hata yapıyorum.16f877 kullanıyordum.bir problem yoktu.yanlız 18f452 kullandığımda bir süre sonra donuyor ve lcd farklı karakterler çıkıyor yardım lütfen

ete

Sorun pause komutlarında. Onları kaldır yerine aynı gecikmeyi sağlayacak döngü şeklinde gecikme kullan. En büyük pauseus değerin 5 us yi geçmesin.
Ete

behcet.3

BASLA:

PORTD =%11100000
GOSUB DELAY

ADCIN 0,ham 
Ham=ham+1
Volt=(ham */ 1250)/100
Mvolt=Volt // 10
Volt=Volt/10
LCDOUT $FE,1,"001=",#VOLT,",",# Mvolt,"v"
GOSUB DELAY
GOTO BASLA

DELAY:                  '
for I=0 to 1500           '
PAUSEUS 1                  '
Next                     '
RETURN

GOTO BASLA

hocam donmalar oluyor yine ama eskisi kadar değil..config ayarlarında bir problem olabilir mi?

ete

#3
Birde aşağıdaki ayarları dene o zaman.
asm
    __CONFIG _CONFIG1H, _XT_OSC_1H ; XT osc
    __CONFIG _CONFIG2L, _BOR_ON_2L & _BORV_27_2L & _PWRT_ON_2L ; Enable Brown out voltage detect
    __CONFIG _CONFIG2H, _WDT_OFF_2H   ; Disable watch dog timer
    __CONFIG _CONFIG3H, _CCP2MX_OFF_3H  ; Use default PORTC.1 for CCP2
    __CONFIG _CONFIG4L, _STVR_ON_4L & _LVP_OFF_4L & _DEBUG_OFF_4L ; enable stack overflow
    __CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L  ; disable code protect (user block)
    __CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H   ; disable code protect (boot block)
    __CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
    __CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H  ; disable Write protect CONFIG regs
   __CONFIG _CONFIG7L, _EBTR0_OFF_7L   ; Disable table Read protect user block
   __CONFIG _CONFIG7H, _EBTRB_OFF_7H   ; Disable Read protect boot block enable
endasm


Aslında programda kesmeler açık ama kesme alt programı yok gözüküyor.
Anlaşılan programın tamamını vermemişsin. Yada tamamı bu ise kesmeleri kapatman gerekir.

Ete

behcet.3

asm
    __CONFIG _CONFIG1H, _XT_OSC_1H ; XT osc
    __CONFIG _CONFIG2L, _BOR_ON_2L & _BORV_27_2L & _PWRT_ON_2L ; Enable Brown out voltage detect
    __CONFIG _CONFIG2H, _WDT_OFF_2H   ; Disable watch dog timer
    __CONFIG _CONFIG3H, _CCP2MX_OFF_3H  ; Use default PORTC.1 for CCP2
    __CONFIG _CONFIG4L, _STVR_ON_4L & _LVP_OFF_4L & _DEBUG_OFF_4L ; enable stack overflow
    __CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L  ; disable code protect (user block)
    __CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H   ; disable code protect (boot block)
'   __CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
    __CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H  ; disable Write protect CONFIG regs
   __CONFIG _CONFIG7L, _EBTR0_OFF_7L   ; Disable table Read protect user block
   __CONFIG _CONFIG7H, _EBTRB_OFF_7H   ; Disable Read protect boot block enable
endasm

hocam kesme bu satır mı oluyor bilmiyorum ama kapatarak denedim yine donmalar oluyor.

ete

Kesme sigorta ayarlarında değil.
Symbol tanımlamalarına bak. Orda tanımlananların set edildiği satırları kaldır.
GIE=1 gibi
Ete

behcet.3

asm
    __CONFIG _CONFIG1H, _XT_OSC_1H ; XT osc
    __CONFIG _CONFIG2L, _BOR_ON_2L & _BORV_27_2L & _PWRT_ON_2L ; Enable Brown out voltage detect
    __CONFIG _CONFIG2H, _WDT_OFF_2H   ; Disable watch dog timer
    __CONFIG _CONFIG3H, _CCP2MX_OFF_3H  ; Use default PORTC.1 for CCP2
    __CONFIG _CONFIG4L, _STVR_ON_4L & _LVP_OFF_4L & _DEBUG_OFF_4L ; enable stack overflow
    __CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L  ; disable code protect (user block)
    __CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H   ; disable code protect (boot block)
    __CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
    __CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H  ; disable Write protect CONFIG regs
   __CONFIG _CONFIG7L, _EBTR0_OFF_7L   ; Disable table Read protect user block
   __CONFIG _CONFIG7H, _EBTRB_OFF_7H   ; Disable Read protect boot block enable
endasm

DEFINE OSC 4

'*****LCD TANIMLAMALARI*****
DEFINE LCD_DREG     PORTB       'LCD DATA BACAKLARI PORTB YE BAĞLI
DEFINE LCD_DBIT     4           'LCD DATA BACAKLARI PORTB.4 DEN BAŞLIYOR
DEFINE LCD_RSREG    PORTB       'LCD RS BACAĞI PORTB YE BAĞLI
DEFINE LCD_RSBIT    1           'LCD RS BACAĞI PORTB.1 BAĞLI
DEFINE LCD_RWREG    PORTB       'LCD RW BACAĞI PORTB YE BAĞLI
DEFINE LCD_RWBIT    2           'LCD RW BACAĞI PORTB.2 BAĞLI
DEFINE LCD_EREG     PORTB       'LCD ENABLE BACAĞI PORTB YE BAĞLI
DEFINE LCD_EBIT     3           'LCD ENABLE BACAĞI PORTB.3 BAĞLI
DEFINE LCD_LINES    4           'LCD 4 SATIRLI
DEFINE LCD_BITS     4           'LCD 4 BİT VERİ ALIŞ VERİŞİ YAPIYOR



DEFINE ADC_BITS      10     'ADC 10 BİT
DEFINE ADC_CLOCK     3
DEFINE ADC_SAMPLEUS  50     'ÖRNEKLEME ZAMANI 50 MİKROSANİYE

PORTA=0:TRISA=%00000001     
PORTB=0:TRISB=%00000000 
PORTC=0:TRISC=%00000000
PORTD=0:TRISD=%10000000
PORTE=0:TRISE=%00000000


ADCON1=%10001110              'ADC AÇIK

volt var word
ham    var  word 
mvolt VAR BYTE
I VAR BYTE


Low PORTB.2
LCDOut $FE,1 
pause 10

PORTA =%00000000
PORTB =%00000000
PORTC =%00000000
PORTD =%00000000
PORTE =%00000000

BASLA:

PORTD =%11100000
GOSUB DELAY

ADCIN 0,ham 
Ham=ham+1
Volt=(ham */ 1250)/100
Mvolt=Volt // 10
Volt=Volt/10
LCDOUT $FE,1,"00121=",#VOLT,",",# Mvolt,"v"
GOSUB DELAY
GOTO BASLA

DELAY:                  '
for I=0 to 5000           '
PAUSEUS 5                  '
Next                     '
RETURN

GOTO BASLA

18f452-I P kullanıyorum ve 4 mhz kristal mevcut
programın son hali bu hocam ama yine olmadı

ete

Bu program tam olarak ne yapıyor yada ne yapmak istiyor.
Ayrıca tam olarak olmayan nedir.
Deneme isis demi yoksa gerçek devredemi yapılıyor.
Devrenin simulasyon dosyaları varmıdır.
Ete

behcet.3

bu program 4067 üzerinden adc okuma yapıyor.
adc değerini trimpot üzerinden hızlı çevirdiğimde birde bir süre sonra kilitlenme ve reset atıyor kendine
board üzerinde gerçek devrede
devrenin simülasyon dosyasını oluşturmadım.

ete

Ben simulasyonda baktım sorunsuz çalışıyor.
4067 üzerinden ADC okuyacak ise programın geriside olması gerekir. 4067 nin bir şekilde anahtarlanması yani giriş seçtirilmesi gerekir. Sorun oralarda olabilir yada 4067 kaç volt ile besledi isen oralarda olabilir.

Ete

behcet.3

hocam programın gerisi vardı problem olduğu için kestim bu hale geldi.pic 16f877 ile çalışmasında problem yoktu...
benim gördüğüm farklı olarak  18f452 osilatörün bacağı pin olarak kullanılabiliyor.bu sebepten olabilir mi?


ete

Elbette olur. Bildiğim kadarı ile 18F452 de dahili osilatör yok. Bu nedenle işlemciyi ancak kristal bağlayarak çalıştırabilirsiniz (Harici RC osilatörlede çalışabilir elbette). Bu durumda osilatör bacaklarını başka amaçla kullanamazsın.

Sigorta ayarlarına bakarsan XT_OSC seçilmiş zaten. Bu 4 Mhz lik kristal yada rezonatör kullanılması anlamına geliyor.

Ete

behcet.3

harici 4 mhz kristal bağladım.
aslında hocam 18f452 de ra6 bacağı osilatörün bir bacağını oluşturuyor.diğer bacağı da sadece osilatör  bacağı olarak yapılmış

PORTA =%00000000
PORTB =%00000000
PORTC =%00000000
PORTD =%00000000
PORTE =%00000000

bu kodları yazmıştım o bu sebepten olabilirmi?

ete

Yazılanların alakası yok maalesef.
RA6 pini şayet OSC olarak RC (Direnç kondansatör ) osilatörü kullanılırsa yalnızca OSC1 bacağına bağlanacağı için OSC2 bacağı boşa düşer. O zamanda bu pin (RA6) normal giriş çıkış pini olarak kullanılabilir.
Ama kristal kullandı isen zaten bu bacağı kullanmış oldun.

Sen asıl devreni kontrol et. Voltajları beslemeleri vs. kontrol et. Çzellikle pic in besleme bacaklarına direk üzerinden 100nf kondansatör bağla.

Ete

behcet.3

100nf bağladım yine olmadı.

20mhz kristal takıp aşağıdaki config ayarlarını değiştirdim donma olmadı.

asm
    __CONFIG _CONFIG1H, _OSCS_OFF_1H & _HS_OSC_1H
    __CONFIG _CONFIG2L, _BOR_ON_2L & _BORV_20_2L & _PWRT_OFF_2L
    __CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_128_2H
    __CONFIG _CONFIG3H, _CCP2MX_ON_3H
    __CONFIG _CONFIG4L, _STVR_ON_4L & _LVP_OFF_4L & _DEBUG_OFF_4L
    __CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L
    __CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
    __CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
    __CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H
    __CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L
    __CONFIG _CONFIG7H, _EBTRB_OFF_7H
endasm

teşekkürler hocam...

Powered by EzPortal