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.