Do you have the Clear Overflow Error defined?
(DEFINE HSER_CLROERR 1)
Do you have the Clear Overflow Error defined?
(DEFINE HSER_CLROERR 1)
Charles Linquist
Charles, Thanks for the reply, No I have not as I have never used the commands for HSEROUT or HSERIN to do my serial activities. I ahve always used interrupts. I used to use an old set of interrupt routines originally written by Tim Box but for the last few years I have used the DT_INT routines as they seem more stable. I have as a few of the first lines in my interrupt routine a check for the overflow bit being set. There is no interrupt for the overflow bit being set. It is up to the operator to check this bit and clear it if it is set. If it IS set there will still be an interrupt generated for the RXREG having data in it. If it IS set then after reading the data in the buffer and NOT resetting it you will NOT receive any more data into the RX shift register. The problem I am having is that ALL interrupts are comming to a halt if there is an over run. It doesn't matter which USART you are using. I have the same code working on an 18F2620 with out the second USART and have NEVER had this problem.
Dave Purola,
N8NTA
EN82fn
Well as it goes, I found my problem. It seemed to me to be a possible stack issue the way it was acting. Sooooo, I took another longggggg look at the interrupt routines and much to my dismay, I found a few remnants of the OLD Tim Box style syntax. He used to use a RETURN when the interrupt was to be exited. Well I found one in each of the USART interrupt routines as an early exit I used at the time before I modified them to use the DT_INT's. So it was a stack issue after all. It only goes to show, If you are going to cut and paste, Make darn sure you look at it REAL GOOD before you use it. This is the second time in a couple of years this same thing has happened to me since I switched over to the DT_INT's but, I will never go back....
Dave Purola,
N8NTA
EN82fn
I know this is an old thread but I am trying to get the DT_INTS to work with the 18F26k22, so far no luck with either RX1 or RX2,the program will not jump to the label in the ASM macro
Is there a fuse bit that I need to set? I had no problems with an 18F1320Code:INCLUDE "modedefs.bas" INCLUDE"ALLDIGITAL.pbp" INCLUDE "HomeAutomationVars.bas" 'Open with PBP editor INCLUDE "DT_INTS-18.bas" ; Base Interrupt System INCLUDE "ReEnterPBP-18.bas" ; Include if using PBP interrupts DEFINE PULSIN_MAX 1000 DEFINE HSER_RCSTA 90h 'Hser receive status init DEFINE HSER_TXSTA 24h 'Hser transmit status init DEFINE HSER_BAUD 9600 'Hser baud rate DEFINE HSER_SPBRG 25 DEFINE HSER_CLROERR 1 DEFINE RX2_INT PIR4,RC2IF, PIE4,RC2IE DEFINE TX2_INT PIR4,TX2IF, PIE4,TXIE DEFINE DEBUG_REG PORTB DEFINE DEBUG_BIT 0 DEFINE DEBUG_BAUD 9600 ' Set Debug mode: 0 = true, 1 = inverted DEFINE DEBUG_MODE 1 x var word Main: debug "here",cr ASM INT_LIST macro ; IntSource, Label, Type, ResetFlag? INT_Handler RX_INT, _read_serial, PBP, yes endm INT_CREATE ; Creates the interrupt processor ENDASM T0CON = %10010010 @ INT_ENABLE RX_INT ; enable external (RX) interrupts for x = 1 to 1000 pause 1 next x Goto main read_serial: Debug "got it!!",cr pause 1000 goto main
Mike
no config section
no define OSC
no version of pbp
what osc freq do you expect the chip to be running at ?
power on default for that chip is ?
thats an awful lot of guessing
Warning I'm not a teacher
Hi,
A couple of things that sticks out:
I'm fairly sure that the DEFINE HSER stuff isn't DOING anything UNTIL you actually USE a HSERIN/HSEROUT statement in your code - which you don't. Try adding a dummy HSERIN/HSEROUT - or set USART registers up yourself.
The ISR is ending with a GOTO which is not what it's supposed to do.
You don't want the ResetFlag option enabled since the EUSART hardware clears the flag i automatically.
/Henrik.
Richard, thank you for the respose,
PBP version is 4.0.0.0
Henrick, I altered the code to include a hserin but still no luck
This is the include file in the pbp folderCode:'**************************************************************** INCLUDE "modedefs.bas" include "ALLDIGITAL.pbp" include "HomeAutomationVars.bas" 'Open with PBP editor INCLUDE "DT_INTS-18.bas" ; Base Interrupt System INCLUDE "ReEnterPBP-18.bas" ; Include if using PBP interrupts OSCCON = %11010010 'Internal oscillator is set to 4MHz $D2 'OSCTUNE = %10000000 'HFINTOSC selected; PLL disabled; Factory calibrated frequency ADCON0.0 = 0 'Disable ADC DEFINE OSC 4 ' DEFINE RX2_INT PIR4,RC2IF, PIE4,RC2IE 'DEFINE TX2_INT PIR4,TX2IF, PIE4,TXIE DEFINE DEBUG_REG PORTB DEFINE DEBUG_BIT 0 DEFINE DEBUG_BAUD 9600 DEFINE HSER_RCSTA 90h 'Hser receive status init DEFINE HSER_TXSTA 24h 'Hser transmit status init DEFINE HSER_BAUD 9600 'Hser baud rate define HSER_SPBRG 25 Define HSER_CLROERR 1 ' Set Debug mode: 0 = true, 1 = inverted DEFINE DEBUG_MODE 1 Main: debug "here",cr ASM INT_LIST macro ; IntSource, Label, Type, ResetFlag? INT_Handler RX1_INT, _read_serial, PBP, yes endm INT_CREATE ; Creates the interrupt processor ENDASM T0CON = %10010010 @ INT_ENABLE RX1_INT ; enable external (RX) interrupts for x = 1 to 1000 pause 1 next x Goto main read_serial: Debug "got it!!",cr hserin 250, timeup, [x] pause 1000 @ INT_RETURN timeup: debug "no rs232",cr goto main
MikeCode:INCLUDE "P18F26K22.INC" ; MPASM Header __CONFIG _CONFIG1H, _FOSC_INTIO67_1H __CONFIG _CONFIG3H, _PBADEN_OFF_3H __CONFIG _CONFIG4L, _LVP_OFF_4L & _XINST_OFF_4L NOLIST
Bookmarks