18F TIMER0 neden 8bit ?

Başlatan Maxim, 01 Ekim 2008, 00:46:55

Maxim

hata nerede bulamadım ,
timer0 16 bit ayarlamama rağmen 8 bit gibi çalışıyor ??

girişim RB1/INT1 pini .



Device = 18F1320
XTAL=4
OSCCON = %01100100 ' osc Internal 4 MHz ayarlı 

@ CONFIG_REQ 
@ __CONFIG CONFIG1H, IESO_ON_1 & FSCMEN_OFF_1 & INTIO67_OSC_1
@ __CONFIG CONFIG2L, BORV_27_2 & BOR_ON_2 & PWRT_ON_2 
@ __CONFIG CONFIG2H, WDT_OFF_2 & WDTPS_32_2
@ __CONFIG CONFIG3H, MCLRE_OFF_3 
@ __CONFIG CONFIG4L, DEBUG_OFF_4 & LVP_OFF_4 & STVR_ON_4 
@ __CONFIG CONFIG5H, CPB_OFF_5 & CPD_OFF_5 
@ __CONFIG CONFIG5L, CP0_OFF_5 & CP1_OFF_5 
@ __CONFIG CONFIG6H, WRTC_OFF_6 & WRTB_OFF_6 & WRTD_OFF_6 
@ __CONFIG CONFIG6L, WRT0_OFF_6 & WRT1_OFF_6 
@ __CONFIG CONFIG7H, EBTRB_OFF_7 
@ __CONFIG CONFIG7L, EBTR0_OFF_7 & EBTR1_OFF_7


ALL_DIGITAL = TRUE
Declare FSR_CONTEXT_SAVE = On
PORTB_PULLUPS=0

TRISA = %00110000
TRISB = %00111011

Declare LCD_DTPIN PORTA.0     
Declare LCD_RSPIN PORTA.6 
Declare LCD_ENPIN PORTA.7 
Declare LCD_INTERFACE 4    
Declare LCD_LINES 2
 
Dim SAY As Word

' Interrupt symbols                
Symbol GIE = INTCON.7 ' Global Interrupt Enable
Symbol PEIE = INTCON.6 'peripheral interrupt enable

'------------INT1 INTERRUPT-------------------
Symbol INTEDG1 = INTCON2.5       'External Interrupt Edge selection 
Symbol INT1IE =  INTCON3.3       'INT1 EXT INT ENABLE
Symbol INT1IF =  INTCON3.0       'INT FLAG

'--------TIMER0 INTERRUPT-----------------
Symbol TMR0IE = INTCON.5 ' TMR0 OVERFLOW Interrupt Enable
Symbol TMR0IF = INTCON.2 ' TMR0 OVERFLOW INTERRUPT FLAG
Symbol TMR0ON = T0CON.7 'TMR0 ON - OFF
                                                
Dim TIMER0 As TMR0L.Word 

T0CON=%00000010  '1:8 PRESCALE 16BIT AYARLANDI

TMR0ON =0

INTEDG1 = 1 

PEIE = 1  'pherepheral interruptlar açıldı.
While GIE=1 : GIE=0 : Wend         ' make sure to disable the Global interrupt

INT1IE = 1
TMR0IE=0
Clear TIMER0

'------------------------------------------------------------------------
GIE=1                              ' Enable Global interrupt ( 0 disable)
ON_Interrupt GoTo ISR                ' If interrupted go to MY_ISR         
GoTo LOOP

ISR: '-----------------------

If INT1IF=1 Then
TMR0ON = 1
SAY = TIMER0
Clear TIMER0
TMR0IF = 0
TMR0IE=1

Else
TMR0ON = 0
Clear TIMER0
TMR0IE = 0
EndIf

INT1IF = 0
Context Restore


LOOP: '------------------------------------------------    

If TMR0IE= 0 Then
SAY = 0
EndIf

Print At 1,1,Dec SAY ,"    "

DelayMS 100

GoTo LOOP '---------------------------------------------

rree

Dim TIMER0 As TMR0L.Word
Timer0 değişkeni tanımlaması !!

Maxim

Alıntı yapılan: "rree"Dim TIMER0 As TMR0L.Word
Timer0 değişkeni tanımlaması !!

bu ne demek anlayamadım pek ?

timer1 içinde
Dim TIMER1 As TMR1L.Word
kullanıyorum ,onda sorun yok

slm

Maxim

bu konuda kimsenin tam bilgisi yokmu arkadaşlar ,
biraz garip bir durumda .

timer0 ancak bu şekilde 16 bit olarak okuyabildim ,
nedendir ? çok tuhaf ,

Dim TIME0 As Word
Dim Delay As Word

KESME:
If INT1IF=1 Then

TIME0.BYTE1 = TMR0H
TIME0.BYTE0 = TMR0L
Delay.BYTE1 = TMR0H
Delay.BYTE0 = TMR0L

kısacası timer0 değerini önce time0 a ardından delay a atmadan olmuyor ,
sadece delay a atarsam değer 8 bit ,
sadece time0 a atarsam değer 8 bit ,

yani bu şekilde time0 8bit , delay 16 bit ??

cann

Hocam ben ne 8 bit nede 16 bit kesme yapamıyorum, yardım edebilirmisiniz

dahili osilatöre göre aşağıdaki komutları kullandım ama olmuyor,

T0CON=%11000101
INTCON=%11100100
 
  On Interrupt GoTo kesme
 
  TMR0L=0
CMCON=7
basla:       
   Print At 6,1," ",Dec2 saat,":",Dec2 dak,":",Dec2 sn,"  "       
    GoTo basla
   
Disable
   kesme:
   sayac=0
   sayac=sayac+1
   If sayac=61 Then
   sayac=0
   sn=sn+1
   If sn=60 Then
   sn=0
   dak=dak+1
   If dak=60 Then
   dak=0
   saat=saat+1
   End If
   End If
   
  End If
   INTCON.2=0
   Resume
   Enable           
                 
   End

OG

FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

cann

link için teşekkürler
benim bilgim led yakıp söndürmek, pwm üretmekle sınırlı, bu konu çok teknik geliyor,
benim T0CON ve Intcon ayarlarım doğrumu

tmr0 ın karşışığı tmr0L mi
biraz açabilirmisiniz konuyu
teşekkürler