mirror of
https://github.com/logicog/RTLPlayground.git
synced 2026-10-29 17:54:14 +08:00
Merge pull request #408 from DrDoof/fix/isr-no-console-write
Do not call write_char() from the external interrupt handlers
This commit is contained in:
1 file changed
-6
@@ -493,7 +493,6 @@ void print_cmd_prompt(void)
|
|||||||
void isr_ext0(void) __interrupt(0)
|
void isr_ext0(void) __interrupt(0)
|
||||||
{
|
{
|
||||||
EX0 = 0; // Disable interrupt for the moment
|
EX0 = 0; // Disable interrupt for the moment
|
||||||
write_char('X');
|
|
||||||
IT0 = 1; // Trigger on falling edge of external interrupt
|
IT0 = 1; // Trigger on falling edge of external interrupt
|
||||||
EX0 = 1; // Re-enable interrupt
|
EX0 = 1; // Re-enable interrupt
|
||||||
}
|
}
|
||||||
@@ -501,14 +500,11 @@ void isr_ext0(void) __interrupt(0)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* External IRQ 1 Service Routine, triggered by the NIC recieving a packet
|
* External IRQ 1 Service Routine, triggered by the NIC recieving a packet
|
||||||
* Note that all registers are being put on the STACK because of calling
|
|
||||||
* a subroutine (write_char), we shold do better...
|
|
||||||
*/
|
*/
|
||||||
void isr_ext1(void) __interrupt(2)
|
void isr_ext1(void) __interrupt(2)
|
||||||
{
|
{
|
||||||
// This flag should only be reset after all packets have been read
|
// This flag should only be reset after all packets have been read
|
||||||
EX1 = 0;
|
EX1 = 0;
|
||||||
write_char('Y');
|
|
||||||
EX1 = 1;
|
EX1 = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -519,7 +515,6 @@ void isr_ext1(void) __interrupt(2)
|
|||||||
void isr_ext2(void) __interrupt(8)
|
void isr_ext2(void) __interrupt(8)
|
||||||
{
|
{
|
||||||
EXIF &= 0xef; // Clear IRQ flag (bit 7) in EXIF
|
EXIF &= 0xef; // Clear IRQ flag (bit 7) in EXIF
|
||||||
write_char('Z');
|
|
||||||
PCON |= 1; // Enter Idle mode until interrupt occurs
|
PCON |= 1; // Enter Idle mode until interrupt occurs
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -530,7 +525,6 @@ void isr_ext2(void) __interrupt(8)
|
|||||||
void isr_ext3(void) __interrupt(9)
|
void isr_ext3(void) __interrupt(9)
|
||||||
{
|
{
|
||||||
EXIF &= 0xdf; // Clear IRQ flag (bit 6) in EXIF
|
EXIF &= 0xdf; // Clear IRQ flag (bit 6) in EXIF
|
||||||
write_char('W');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Timer2: handles system tick.
|
// Timer2: handles system tick.
|
||||||
|
|||||||
Reference in new issue
Block a user