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 :
Currently I just want to see first if both interrupts are working fine.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--------------------
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.




Bookmarks