12f675_fuse_about_to_blow!


Results 1 to 40 of 929

Threaded View

  1. #33
    Join Date
    Feb 2010
    Location
    I live in the UK
    Posts
    562


    Did you find this post helpful? Yes | No

    Default Re: 12f675_fuse_about_to_blow!

    I'm having major problems trying to get the TX program to do what I want it to, namely TX after a timing loop executes. Just for information, if I comment out the timing loop the program TX's no problem and sends and receives a test WORD.

    Here's the setup:

    Code:
    INTCON = %00001000  ' Enable port change wakeup from sleep
    Code:
    WPU = %00010000     ' pull-up on for GPIO.4 (external pull-up already on GPIO.3)
    It's GPIO.4 we're looking at here. That's the pin that will receive the input from a 555 timer / potential divider using an ldr to detect that it's dark and therefore TX the days count over.

    Code:
    OPTION_REG = %00001111 'Watch_Dog_Timer ON with a 128 prescaler
    Here's the main body of the program. it's a little bit of a mess because I've commented out the GPIO.3 COUNTS part of the program and also added then commented out INTCON.0 = 0 in various places to try and get it to do the timer loop / COUNT then TX.

    Code:
    IF GPIO.3= 1 AND GPIO.4= 1 THEN ' Nothing has happened so SLEEP
           E_OUT=0       ' Disable transmitter
           INTCON.0 = 0  ' No Inputs detected or it's still light so clear int on change flag
           @ SLEEP       ' and start snoozin..zzzzzzzzzzz indefinatly
           @ NOP         ' Do nothing for 1st instruction on wake-up
      ELSE  
       'IF  GPIO.3=0 THEN GOSUB COUNTS 'Bird detected at box - GOTO LABEL COUNTS   
       IF  GPIO.4=0 THEN DARK   'It's got dark? or just cloudy - GOTO LABEL DARK
      ENDIF     
      GOTO MAIN          'Back to sleep / continue counting
        
        
     'COUNTS:
        '  VISITS = VISITS +1 'Bird at box so increment counter
        '  INTCON.0 = 0       ' Clear int on change flag
      'RETURN                 ' Then back to sleep....
         
          DARK:
          
          'INTCON.0 = 0     ' Clear int on change flag
                           ' It could be night time...It might only be a cloud though...   
                           ' so back to sleep / wake / sleep for half an hour..zwzwzw
    
          COUNTER=0        ' clear before entry
    WHILE COUNTER < 2      ' 4.608sec Loop time (Loop for 30 mins = 781)
         @ SLEEP
         COUNTER=COUNTER+1
         'IF  GPIO.3= 0  THEN COUNTS 'Bird at box (it's not dark) so continue counting
    WEND     
                  
        if  GPIO.4= 0  then ENCODE  ' It really ia dark so carry on and transmit VISITS
        
        'IF  GPIO.4= 1  THEN Main  '(changed from return) It's not dark after all so carry_on_sleeping_counting 
        
    Encode:  
        E_OUT=1     ' Turn transmitter on 
        pauseus 25  ' Let transmitter settle
        DAT_OUT = %10101001
       
        'INTCON.0 = 0  ' Clear int on change flag
          
        'Build checksum of 2 data bytes
        CHK_SUM = (DAT_OUT * 2)    
        
    Transmit:
        'LET VISITS = VISITS / 2  'Just VISITS too not from the box 
        LET VISITS = 300 'Test data number
        SEROUT2 D_OUT,BAUD,[PreAmble,Synch,DAT_OUT,DAT_OUT,CHK_SUM,VISITS.highbyte,VISITS.lowbyte]
        PAUSE GUARD ' 5mS guard time gives decoder time to respond,calculate,change,etc.
        INTCON.0 = 0  ' Clear int on change flag - moved here from above
        GOTO Main
            
        END
    I think the problem maybe that the COUNTER loop never gets completed because the IOC which comes from GPIO.4 isn't reset and the counter loop is using @SLEEP but never gets that far.

    Any ideas greatfully received.

    Dave
    Last edited by LEDave; - 4th April 2011 at 16:42.

Members who have read this thread : 1

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