Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

RB0 interrupt problems

Status
Not open for further replies.

amindzo

Member
Hi,
i enabled RB0 interrupt it works but my problem didn't solve.i have a same problem as i had in
USART interrupt.
in RB0 interrupt also just interrupt routine works and other part of my program don't work.
i write a simple program to turn on and off led and when serial data is coming the RB0 interrupt
occur (because i send 10101010 befor my data) .
so when serial data is coming the program goes to interrupt routine and show the revieved data on lcd but led doen't turn on or off.
just interrupt routine works.
what's the reason?
i have a same problem in USART interrupt too.
i use micro code studio picbasic pro2.41
for more information see USART interrupt in PIC16F877A
https://www.electro-tech-online.com/threads/usart-interrpt-in-pic16f877a.23649/
this is my simple program:


define OSC 20
include"modedefs.bas"
ADCON1=7 ' convert porta from analoge to digital
TRISA = %00000000 ' set porta as an output
TRISB = %00001111 'set first 4 bit of portb as an input and last 4 bit as putput
TRISC = %00000000 ' set portc as output
'----------------------------------------------------
' Define LCD parameters
' Set LCD Data port
DEFINE LCD_DREG PORTD
' Set starting Data bit (0 or 4) if 4-bit bus
DEFINE LCD_DBIT 4
' Set LCD Register Select port
DEFINE LCD_RSREG PORTD
' Set LCD Register Select bit
DEFINE LCD_RSBIT 1
' Set LCD Enable port
DEFINE LCD_EREG PORTD
' Set LCD Enable bit
DEFINE LCD_EBIT 0
' Set LCD bus size (4 or 8 bits)
DEFINE LCD_BITS 4
' Set number of lines on LCD
DEFINE LCD_LINES 2
pause 100
lcdout $fe,1
i var word
y1 var byte
y2 var byte
y3 var byte

on interrupt goto int
OPTION_REG = %10000000
INTCON = %10010000
TRISB = %11111111
start:
for i=1 to 1000
PORTC.3=0
pause 1
next i
for i=1 to 1000
PORTC.3=1
pause 1
next i
goto start
disable
int:
serin PORTB.0,N1200,["A"],y1
serin PORTB.0,N1200,["A"],y2
serin PORTB.0,N1200,["A"],y3
'
if (y2=y3) then
lcdout $fe,1,#y2
pause 4000
lcdout $fe,1
PORTC.4=1
pause 4000
PORTC.4=0
endif
OPTION_REG = %10000000
INTCON = %10010000
resume
enable
end
 
Last edited:
Hi,
i write a simple program to find that if interrupt is happens or not
i found that two interrupts(USART and RB0) are working and when i turn on micro it goes to interrupt routine.
for RB0 i should connect a pull up resistor but when i connect the out put of the RF reciever to it interrupt occurs.
i don't know why?
maby the noise of RF reciever (when we don't have data) is the reason.
for USART interrupt ,i have the same problem but in this case , there is no deference between connecting and not connecting the RF reciever.
when i turn on micro it goes to interrupt routine.
what is the reason?
what should i do?
 
I suggest you read my PIC RF tutorial?, then you'll see why you can't just use simple serial for an RF module. Either use an RF module that has a decoder built-in, or use a PIC between the module and your main circuit to convert to and from serial.

As for your interrupt routine problems, I've no idea how your compiler works?, but you don't appear to be checking the source of the interrupt?.
 
Last edited:
If the routine is correct, I guess that the LED flashes too fast. Is it possible? Try to send '11111111...11111111', '00000000...0000000', '11111111...11111111' ... before your data.
 
when i connect the output of RF reciever to micro it goes to interrupt routine.
when i have data or when i don't have any data by connecting it to micro it goes to interrupt routine and when comes back to main program it goes to interrupt routine again. so it's go to interrupt routine all the time.
 
Status
Not open for further replies.

Latest threads

New Articles From Microcontroller Tips

Back
Top