Witam
Mam za zadanie zrobic pomiar czasu wtrysku w ms poprzez przerwanie ICP1
Niestety po wielu bojach z rejestrami Tccr1B Tccr1A oraz Timsk i innymi , program nie dziala jak potrzeba w Proteusie
Czytalem w dataszicie ze licznik T1 musi byc ustawiony w trybie TOP i musie byc wlaczony Noise Canceler , wszelkie ustawienia WGM nie dzialaja :/
Bardzo prosze o pomoc co w tym programie trzeba zmienic dodac aby dzialalo
z gory bardzo dziekuje
$regfile = "m8def.dat"
$crystal = 8000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portc.3 , E = Portd.3 , Rs = Portd.2
'---------- u
Dim Xl As Word
Dim Xh As Word
Dim X As Word
Dim Dlw As Word
Dim Dlw1 As Word
Dim Dlw2 As Word
Dim F As Bit
Config Timer1 = Timer , Prescale = 256
Cursor Off
Config Pinb.0 = Input
Enable Interrupts
Tccr1b.6 = 1 'zbocze narastajace
'---------------------------------------------------------------------------------------------------
On Capture1 Wtrysk
Glowny:
Enable Capture1
Start Timer1
Do
Loop Until Timer1 = 31250 '1s
Disable Capture1
Stop Timer1
Timer1 = 0
Goto Glowny
'------------------------------------------------------------------------------------
Wtrysk:
Xh = Icr1h
Xl = Icr1l
Shift Xh , Left , 8
X = Xl + Xh
Locate 1 , 1
Lcd ; "A:" ; X ; " "
Set F
Tccr1b.6 = 0
If F = 1 Then
Dlw1 = Icr1h
Dlw2 = Icr1l
Shift Dlw1 , Left , 8
Dlw = Dlw1 + Dlw2
Dlw = Dlw - X '
Locate 2 , 1
Lcd ; "B:" ; Dlw ; " "
Reset F
Tccr1b.6 = 1
End If
Return
'----------------------------------------------------------------------------------
Mam za zadanie zrobic pomiar czasu wtrysku w ms poprzez przerwanie ICP1
Niestety po wielu bojach z rejestrami Tccr1B Tccr1A oraz Timsk i innymi , program nie dziala jak potrzeba w Proteusie
Czytalem w dataszicie ze licznik T1 musi byc ustawiony w trybie TOP i musie byc wlaczony Noise Canceler , wszelkie ustawienia WGM nie dzialaja :/
Bardzo prosze o pomoc co w tym programie trzeba zmienic dodac aby dzialalo
z gory bardzo dziekuje
$regfile = "m8def.dat"
$crystal = 8000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portc.3 , E = Portd.3 , Rs = Portd.2
'---------- u
Dim Xl As Word
Dim Xh As Word
Dim X As Word
Dim Dlw As Word
Dim Dlw1 As Word
Dim Dlw2 As Word
Dim F As Bit
Config Timer1 = Timer , Prescale = 256
Cursor Off
Config Pinb.0 = Input
Enable Interrupts
Tccr1b.6 = 1 'zbocze narastajace
'---------------------------------------------------------------------------------------------------
On Capture1 Wtrysk
Glowny:
Enable Capture1
Start Timer1
Do
Loop Until Timer1 = 31250 '1s
Disable Capture1
Stop Timer1
Timer1 = 0
Goto Glowny
'------------------------------------------------------------------------------------
Wtrysk:
Xh = Icr1h
Xl = Icr1l
Shift Xh , Left , 8
X = Xl + Xh
Locate 1 , 1
Lcd ; "A:" ; X ; " "
Set F
Tccr1b.6 = 0
If F = 1 Then
Dlw1 = Icr1h
Dlw2 = Icr1l
Shift Dlw1 , Left , 8
Dlw = Dlw1 + Dlw2
Dlw = Dlw - X '
Locate 2 , 1
Lcd ; "B:" ; Dlw ; " "
Reset F
Tccr1b.6 = 1
End If
Return
'----------------------------------------------------------------------------------