Hserin & Hserout - Trying to blink an LED


Results 1 to 7 of 7

Threaded View

  1. #1
    Join Date
    Nov 2009
    Location
    London
    Posts
    251

    Question Hserin & Hserout - Trying to blink an LED

    Hi, I am using 16F877A along with DT_INT, I have started this new thread as previous thread was not relevant to this problem anymore. I am trying to understand USART and blink an LED first.
    My hardware setup has a TX module connected to PIN25 (TX) & RX module at PIN26 (RX).
    LEDs are connected to PIN40,39,38
    I am not using any special kind of modules, just normal types sold on ebay.

    My Rx code is :
    Code:
    DEFINE OSC 4
    Include "modedefs.bas"
    INCLUDE "DT_INTS-14.bas"     ; Base Interrupt System
    INCLUDE "ReEnterPBP.bas"     ; Include if using PBP interrupts
     
    @ __Config _XT_OSC & _WDT_ON & _PWRTE_ON & _BODEN_ON & _LVP_OFF & _CP_ALL & _CPD_ON
     
    Pause 50
    '-------variables declared-------------------------------------
    
    code1 var byte
    code2 var byte
    
    ;-----------HSERIN & OUT------------------
    DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
    DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 0
    DEFINE HSER_SPBRG 12  ' 4800 Baud @ 0.17%
    DEFINE HSER_CLROERR 1 ' Clear overflow automatically
    
    RCSTA = $90 ' Enable serial port & continuous receive
    TXSTA = $20 ' Enable transmit, BRGH = 0
    SPBRG = 12  ' 4800 Baud @ 0.17%
    
    '-------------------------FUSES SET----------------------------
    PAUSE 50
    ADCON1=7
    CMCON=7
    CCP1CON=0
    OPTION_REG=%10000000
    TRISA=0 : PORTA=0
    TRISE=0 : PORTE=0
    TRISB=0 : PORTB=0
    TRISC=%10000000 : PORTC=0
    TRISD=0 : PORTD=0
    @ ERRORLEVEL -306
    
    
    '------INTERRUPT DECLARED--------------------------------------------------------------
    ASM
    INT_LIST  macro    ; IntSource,        Label,  Type, ResetFlag?
           INT_Handler    TMR1_INT,  _ToggleFast,   PBP,  yes
           INT_Handler    RX_INT,  _RX,   PBP,  yes	   
       endm
      INT_CREATE               ; Creates the interrupt processor
    ENDASM
    T1CON=%00110001
     
    @   INT_ENABLE   TMR1_INT
    @   INT_ENABLE   RX_INT
    
    ;------MAIN PROGRAM START-----------
    start:
    	HIGH PORTB.7
    	PAUSE 50
    	LOW PORTB.7
    	PAUSE 100
    Goto start
    
    
    '---[INT - interrupt handler]---------------------------------
    ToggleFast:
    	Toggle PortB.6
    @ INT_RETURN
    
    
    RX:
    		TOGGLE PortB.5
    		HSERIN 100,close,[WAIT("MT3"),code1,code2]
    	close:
    
    @ INT_RETURN
    
    '---------end--------------------
    Currently I just want to see first if both interrupts are working fine.
    This is what happens:
    LEDs are connected to PortB.7,6 & 5. When power is applied, PortB.7 blinks, PortB.6 blinks but when PortB.5 blinks, normally PIC hangs for few seconds and then normal erratic behaviour happens because of the interrupts, then again PIC hangs for few seconds or permanently.
    Even if/when I comment out the HSERIN statement in the RX ISR, PIC still hangs, BUT only TMR1 led keeps blinking.
    Is this overall behaviour normal, I am using this feature for the first time, am I doing it right?

    Help please.
    Last edited by Megahertz; - 24th May 2010 at 05:29.

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