??? 08/25/08 11:26 Read: times |
#157733 - mistake Responding to: ???'s previous message |
"i think the interrupt when pin3.2 goes from low to high is not giving reliable results all the time." THERE IS NO!!!!! INTERRUPT when pin3.2 goes from low to high . Your program works somehow, because micro enters ISR all the time , while P3.2 or P3.3 is low. Read again chapter INTERRUPTS. If You want ISR at both edges - You need inverter or some 8xxx51 with such options. You can detect rising edge using GATE option of timers, too - - make EXx_ISR active by falling edge, inside prepare TIMERx: -- disable timer, preload with FFFF, setup timer in GATED mode. Then TIMERx_ISR will be invoked whit some delay after rising edge of signal. Note in this case - HIGH state cannot be very short. But 1-st question is - how fast are signals in Your device, what is maximum freqwency on P3.2/P3.3 . Maybe You can monitor these signals trough regular system timer ISR, say -every 1 msec. regards |
Topic | Author | Date |
pls help....8051 external interrupts | 01/01/70 00:00 | |
show definition of "a" variable | 01/01/70 00:00 | |
definiton : sbit a=P3^2; | 01/01/70 00:00 | |
Need more information | 01/01/70 00:00 | |
the entire code | 01/01/70 00:00 | |
keyscan | 01/01/70 00:00 | |
How the LED are connected? | 01/01/70 00:00 | |
One tip | 01/01/70 00:00 | |
P3.2= iNT0 | 01/01/70 00:00 | |
P3.2= INT0 | 01/01/70 00:00 | |
pin 3.2 | 01/01/70 00:00 | |
P3.2= INT0..1 | 01/01/70 00:00 | |
Obvious Reason | 01/01/70 00:00 | |
time duration | 01/01/70 00:00 | |
mistake | 01/01/70 00:00 | |
ok thanks alot | 01/01/70 00:00 | |
? | 01/01/70 00:00 | |
GATE0/1 ? | 01/01/70 00:00 | |
no | 01/01/70 00:00 | |
try | 01/01/70 00:00 | |
Debounce maybe? | 01/01/70 00:00 | |
Solution | 01/01/70 00:00 | |
interrupt flag bit clear | 01/01/70 00:00 | |
Detecting Both Edges - A very old trick![]() | 01/01/70 00:00 |