Remain counting while sending out a pulse


Results 1 to 6 of 6

Threaded View

  1. #1
    Join Date
    Apr 2006
    Location
    GearSweaterMountain, The Netherlands
    Posts
    52

    Default Remain counting while sending out a pulse

    Hi there,
    I'm learning a lot just browsing this forum, but i'm quite stuck at the moment.
    What i'm trying to do is the following :

    I'm have to build a puls divider. When a jumper is on pin 4(gpio3), it counts a number of pulses on pin 5(gpio2), when the jumper is taken off it divides the number of pulses that were count by 10 and stores that in eeprom.

    It then returns to it's normal routine, counting the pulses. If, say 500 pulses have been counted it must output one 50ms pulse every 50 pulses (500/10=50).

    The problem is that im using pulsout plsout,5000 for the pulse output, but this delays the counting of the pulses with 50ms. Which results in me missing some of the incoming pulses.

    Is there anything i can do to keep counting and give a command to make the pin high for 50ms ??
    Code:
    '——-[ Device Initialization ]————————————————————————————————————
    @ device pic12F635,intrc_osc_noclkout,wdt_off,pwrt_off,mclr_off,bod_off,cpd_off,protect_off
    
    '==== Variables ======================================
    
    INCLUDE "modedefs.bas"
    DEFINE OSC 4 
    
    plsOUT var GPIO.0
    plsIN  var GPIO.2
    LEARN  var GPIO.3
    ser var GPIO.1
    
    i var word
    tel var word
    div var word
    
    output plsOUT
    output ser
    input  plsIN
    input  LEARN
    
    i=0
    tel=0
    div=0
    
    pause 1000
    
    main:
    if learn = 1 then goto reset
    
    read 1,i.lowbyte
    read 2,i.highbyte
    pauseus 50
    div = i/10
    
    pl1:
    if i = 0 then goto reset
    if plsin = 1 then
        tel = tel + 1
        'Serout ser,T9600,[#tel,45,#i,45,#div,13,10]
        if tel >= div then
            pulsout plsout,5000
            tel = 0
        else
    
            goto pl0
        endif
    pl0:
        if learn = 1 then goto reset
        if plsin = 1 then
            PAUSEUS 50
            GOTO PL0
        else
            goto pl1
        endif
    else
        goto PL1
    endif     
    if learn = 1 then goto reset
    goto pl1
    
    reset:
    i=0
    tel=0
    div=0
    
    np:
    if learn = 1 then  
        if plsin = 1 then
            i = i+1
            goto wp
        else
            goto np
        endif      
    wp:
        if learn = 1 then
            if plsin = 0 then
                goto np
            else
                goto wp
            endif 
        else
            write 1,i
            goto setmem
        endif
    else
        goto setmem
    endif
    goto main
    
    setmem:
    if i = 0 then goto np
    write 1,i.lowbyte
    write 2,i.highbyte
    pauseus 50
    setmem2:
    if learn = 0 then
        goto main
    else
        goto setmem2
    endif
    
    theend:
    goto theend
    Last edited by ultiblade; - 10th January 2007 at 11:11.

Similar Threads

  1. Pulse Capture and byte building
    By boroko in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 21st July 2009, 01:59
  2. Single digit 7 Seg LED clock - PIC16F88
    By thirsty in forum Code Examples
    Replies: 4
    Last Post: - 17th July 2009, 08:42
  3. COUNT is not counting again
    By jellis00 in forum mel PIC BASIC Pro
    Replies: 33
    Last Post: - 19th June 2009, 04:52
  4. Replies: 3
    Last Post: - 13th September 2008, 17:40
  5. Pulse Frequency Multiplication
    By jamie_s in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 21st August 2005, 10:39

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts