Trying to stay on wifi network


Closed Thread
Results 1 to 3 of 3
  1. #1
    Join Date
    Sep 2007
    Posts
    59

    Default Trying to stay on wifi network

    I have a board set up which is attached to an Microchip wifi module MRF24WGOMA. The project is for this to receive a signal.

    On some networks, if it sits too long, the access point kicks it off the network and you have to cycle the power to get it to get back on the network.

    I figured the easy answer would be to set up an hserout command and just spit something out to the network.

    However, it appears that if I send it to a made up IP address or even a good one but with nothing to catch it. The network must be replying with an error that then locks up my program.

    Any ideas on what I could hserout to the network just to keep the unit alive and online?

  2. #2
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,520


    Did you find this post helpful? Yes | No

    Default Re: Trying to stay on wifi network

    Hi,
    I don't know anything about the MRF24 module but is it and/or you/your router using DHCP? If so it might be the leasetime for the IP-adress running out.

    /Henrik.

  3. #3
    Join Date
    Sep 2007
    Posts
    59


    Did you find this post helpful? Yes | No

    Default Re: Trying to stay on wifi network

    Henrik,

    It is using DHCP but the lease time is a couple days, so it's maintaining the same IP when it reconnects. The AP just drops it when it sits quiet for a while.

    I ran a test and set up a regular loop running with a counter and periodically spitting the hserout and it worked fine.

    The code I'm having an issue with is using Darrell Taylors interrupt setup. I don't think the interrupt is running as I can't get the light to flash.

    Please see the two code samples below.
    Code:
    '****************************************************************
    '*  Name    : Heartbeat No Interrupt.PBP                        *
    '*          : All Rights Reserved                               *
    '*  Date    : 10-29-15                                          *
    '*  Version : 1.0                                               *
    '****************************************************************
     #config
     __CONFIG _CONFIG1H, _OSCS_OFF_1H & _OSC_XT_1H
     __CONFIG _CONFIG2L, _BOR_ON_2L & _BORV_27_2L & _PWRT_ON_2L
     __CONFIG _CONFIG2H, _WDT_OFF_2H & _WDTPS_128_2H
     __CONFIG _CONFIG3H, _CCP2MUX_OFF_3H
     __CONFIG _CONFIG4L, _LVP_OFF_4L 
    #endconfig
    
    CLEAR   
    
    DEFINE ADC_BITS 10          ' 10 Bit Resolution
    DEFINE ADC_CLOCK 3          ' Internal RC A/D Oscillator
    DEFINE ADC_SAMPLEUS 50      ' Delay before A/D Conversion
    DEFINE OSC 4                ' 4 MHz Internal Oscillator
    DEFINE HSER_RCSTA 90h       ' Serial Input Enabled
    DEFINE HSER_TXSTA 24h       ' Serial Output Enabled (High Speed)
    DEFINE HSER_BAUD 9600       ' Serial Baud Rate (9600 BPS)
    
    D           CON 10          ' Divide by D (10 for 4MHz, 2 for 20MHz) 
    
    LED1        VAR PortG.0     ' Test LED
    LED2        VAR PortG.4     ' Piezo Output
    
    Awake       var byte        ' variable for counting to keep unit alive on network
    Awake1      var byte        ' variable for counting to keep unit alive on network
    ID1         var byte
    Buffer1     var byte
    Buffer2     var byte
                                
    PortA   =   %00100000       ' PortA All Off 
    PortB   =   %00000000       ' PortB All Off
    PortC   =   %00000000       ' PortC All Off
    PortD   =   %00000000       ' PortD All Off
    PortE   =   %00000000       ' PortE All Off
    PortF   =   %00000000       ' PortF All Off
    PortG   =   %00000000       ' PortG All Off
    TRISA   =   %00011111       ' Inputs = 1, Outputs = 0 
    TRISB   =   %11111111       ' Inputs = 1, Outputs = 0
    TRISC   =   %10000010       ' Inputs = 1, Outputs = 0
    TRISD   =   %11111111       ' Inputs = 1, Outputs = 0
    TRISE   =   %11111111       ' Inputs = 1, Outputs = 0
    TRISF   =   %11111111       ' Inputs = 1, Outputs = 0
    TRISG   =   %00000000       ' Inputs = 1, Outputs = 0 RG(7-5) NA
    ADCON0  =   %00000001       ' A/D Enabled, Channel 0 (AN0)
    ADCON1  =   %00001110       ' AN0 Analog Input (Rest Digital I/O) 
    ADCON2.7 = 1                ' Right Justify 10 Bit Word
    CMCON   =   %00000111       ' Both Comparators Disabled
    INTCON2.7 = 0               ' Turn ON PortB Pull-Ups
    T1CON   =   %00110100       ' 1:8 Prescale
    '****************************************************************
    
    Awake = 0
    
    Buffer2 = %11111111             'wifi heartbeat 
    '***********************************************************************
    
    Main:
                          
    hserin 200,TimeOut,[dec2 ID1, skip 1, bin8 Buffer1]
    TimeOut:
    '***********************************************************************
    ID1 = ID1 + 1
    if ID1 = 99 then ID1 = 0
    
        Awake = Awake + 1
        if Awake > 50 then                          'sends out 
                Awake = 0                          ' reset count
                toggle LED1
                gosub Heartbeat 
        endif
    
    goto Main
    
    Heartbeat:              'periodically send out current status to keep wifi alive              
    Toggle LED2                     ' toggle on Beep to see frequency
    Hserout ["y"]
    HSEROUT [dec2 ID1, " "]         ' Decimal 2 Characters, Space
    HSEROUT [bin8 Buffer2]          ' Binary 8 Characters, Space
    Hserout ["z"]
    return
    Code:
    '****************************************************************
    '*  Name    : Heartbeat Interrupt.PBP                        *
    '*          : All Rights Reserved                               *
    '*  Date    : 10-29-15                                          *
    '*  Version : 1.0                                               *
    '****************************************************************
    
    #config
     __CONFIG _CONFIG1H, _OSCS_OFF_1H & _OSC_XT_1H
     __CONFIG _CONFIG2L, _BOR_ON_2L & _BORV_27_2L & _PWRT_ON_2L
     __CONFIG _CONFIG2H, _WDT_OFF_2H & _WDTPS_128_2H
     __CONFIG _CONFIG3H, _CCP2MUX_OFF_3H
     __CONFIG _CONFIG4L, _LVP_OFF_4L 
    #endconfig
    
    INCLUDE "DT_INTS-18.bas"     ; Base Interrupt System
    INCLUDE "ReEnterPBP-18.bas"     ; Include if using PBP interrupts
    INCLUDE "MODEDEFS.BAS"       ' Include Shiftin/out modes
    'INCLUDE "Elapsed_INT-18.bas"  ; Elapsed Timer Routines
    
    'GOSUB ResetTime               ; Reset Time to  0d-00:00:00.00   
    'GOSUB StartTimer              ; Start the Elapsed Timer
    
    CLEAR 
      
    DEFINE ADC_BITS 10          ' 10 Bit Resolution
    DEFINE ADC_CLOCK 3          ' Internal RC A/D Oscillator
    DEFINE ADC_SAMPLEUS 50      ' Delay before A/D Conversion
    DEFINE OSC 4                ' 4 MHz Internal Oscillator
    DEFINE LOADER_USED 1        ' 
    DEFINE HSER_RCSTA 90h       ' Serial Input Enabled
    DEFINE HSER_TXSTA 24h       ' Serial Output Enabled (High Speed)
    DEFINE HSER_BAUD 9600       ' Serial Baud Rate (9600 BPS)
    DEFINE HSER_CLOERR  1       ' automatic clear overrun error 
    
    D           CON 10          ' Divide by D (10 for 4MHz, 2 for 20MHz) 
    '                           
    
    '******************************************************************************
    Awake       var byte        ' variable for counting to keep unit alive on network
    Awake1      var byte        ' variable for counting to keep unit alive on network
    LED1        VAR PortG.0     ' Test LED
    LED2        VAR PortG.4     ' Piezo Output
    InBuffer1   VAR BYTE        ' Input Buffer 1
    InBuffer2   VAR BYTE        ' Input Buffer 2
    Buffer1     VAR BYTE        ' Output Buffer 1
    Buffer2     VAR BYTE        ' Output Buffer 2
    ID1         var byte
    ID2         var byte
    ID3         var byte
    '***********************************************************************
    ASM
    INT_LIST  macro    ; IntSource,        Label,  Type, ResetFlag?
            INT_Handler    RX_INT,    _serialin,   PBP,  no       
        endm
        INT_CREATE                ; Creates the interrupt processor
    ENDASM
    
    T0CON  = %10010010             ; T0 = 16-bit, Prescaler 8
    @   INT_ENABLE   RX_INT     ; enable external (INT) interrupts 
    '***********************************************************************
    PortA   =   %00100000       ' PortA All Off (Rx Enabled/RF Switch = Receive)
    PortB   =   %00000000       ' PortB All Off
    PortC   =   %00000000       ' PortC All Off
    PortD   =   %00000000       ' PortD All Off
    PortE   =   %00000000       ' PortE All Off
    PortF   =   %00000000       ' PortF All Off
    PortG   =   %00000000       ' PortG All Off
    TRISA   =   %00011111       ' Inputs = 1, Outputs = 0 
    TRISB   =   %11111111       ' Inputs = 1, Outputs = 0
    TRISC   =   %10000010       ' Inputs = 1, Outputs = 0
    TRISD   =   %11111111       ' Inputs = 1, Outputs = 0
    TRISE   =   %11111111       ' Inputs = 1, Outputs = 0
    TRISF   =   %11111111       ' Inputs = 1, Outputs = 0
    TRISG   =   %00000000       ' Inputs = 1, Outputs = 0 
    ADCON0  =   %00000001       ' A/D Enabled, Channel 0 (AN0)
    ADCON1  =   %00001111       ' AN0 Analog Input (Rest Digital I/O) 
    ADCON2.7 = 1                ' Right Justify 10 Bit Word
    CMCON   =   %00000111       ' Both Comparators Disabled
    INTCON2.7 = 0               ' Turn ON PortB Pull-Ups
    T1CON   =   %00110100       ' 1:8 Prescale, T1OSCEN Off (524.288mS)
    '******************************************************************************
    Awake = 0
    Buffer2 = %11111111             'wifi heartbeat 
    '***********************************************************************
    Main:
    
    ID1 = ID1 + 1
    if ID1 = 99 then ID1 = 0
    
        Awake = Awake + 1
        if Awake > 50 then                          'sends out 
                Awake = 0                          ' reset count
                toggle LED1
                'INTCON.6 = 0  'Interrupt 0=OFF, 1=ON
                gosub Heartbeat 
                'INTCON.6 = 1  'Interrupt 0=OFF, 1=ON
        endif
    
    goto Main
    
    Heartbeat:              'periodically send out current status to keep wifi alive              
    Toggle LED2                     ' toggle on Beep to see frequency
    Hserout ["y"]
    HSEROUT [dec2 ID1, " "]         ' Decimal 2 Characters, Space
    HSEROUT [bin8 Buffer2]          ' Binary 8 Characters, Space
    Hserout ["z"]
    return
    
    serialin:
    hserin [dec2 ID1, skip 1, bin8 Buffer1]
    'hserin 2,NoSignal,[dec2 ID1, skip 1, bin8 Buffer1]
    
    @ INT_RETURN
    'NoSignal:
    '@ INT_RETURN
    Thanks,
    Hylan

Similar Threads

  1. WIFI video possible ?
    By lerameur in forum General
    Replies: 3
    Last Post: - 12th February 2015, 04:10
  2. Pin won't stay high during Repeat...Until loop??
    By jellis00 in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 16th August 2009, 23:57
  3. output doesn't stay high
    By dfort in forum mel PIC BASIC Pro
    Replies: 7
    Last Post: - 5th November 2007, 22:37
  4. Stay or Go deleted.
    By Darrel Taylor in forum Forum Requests
    Replies: 3
    Last Post: - 13th July 2007, 22:57

Members who have read this thread : 1

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

Tags for this Thread

Posting Permissions

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