Hallo allemaal,
Ik ben maar weer eens aan de slag gegaan met mijn PIC 16F877, dit keer om een frequentie meter te maken.
Ik kan er op google genoeg over vinden, maar niet in JAL.
Ik heb nu wel iets draai op basis van de toerenteller uit het boek van Bert van Dam, maar dat werkt niet echt. (echt niet is beter)
Om de een of andere reden komt een van de variabelen niet goed door.
De code:
-- JAL 2.0.4
include 16f877_bert
-- pin definitions
pin_d2_direction = input
-- variable definitions
var byte counter_low = 0
var byte counter_high = 0 -- in case that the low byte flows over
var byte counter_ultrahigh = 0 -- in case the high byte flows over
var byte counter_ultraultrahigh = 0
forever loop
while ! pin_d2 loop end loop
t1con = 0b_0000_0000
tmr1H = 0x00
tmr1L=0x00
t1con = 0b_0000_0001
while pin_d2 loop
if tmr1if then
tmr1if = 0
if counter_ultrahigh == 255 then
counter_ultraultrahigh = counter_ultraultrahigh + 1
end if
counter_ultrahigh = counter_ultrahigh + 1
end if
end loop
counter_high = tmr1H
counter_low = tmr1L
-- send data to PC
serial_sw_write("1")
serial_sw_write(counter_low)
delay_1ms(20)
serial_sw_write("2")
serial_sw_write(counter_high)
delay_1ms(20)
serial_sw_write("3")
serial_sw_write(counter_ultrahigh)
delay_1ms(20)
serial_sw_write("4")
serial_sw_write(counter_ultraultrahigh)
-- reset variables
counter_ultraultrahigh = 0
counter_ultrahigh = 0
counter_high = 0
counter_low = 0
end loop
De ultrahigh variabele blijft steeds hangen waardoor de metingen ongeldig zijn.
Ik gebruik een lichtelijk aangepaste versie van Bert's toerenteller programma (VB6), maar met de toerenteller werkt het wél en met mijn frequentie meter niét.
Hulp is zeer welkom.
Groeten,
Thom.