|
|
View previous topic :: View next topic |
Author |
Message |
eyewonder300
Joined: 09 Jun 2004 Posts: 52
|
Not able to make a simple interrupt work |
Posted: Fri Oct 02, 2015 3:32 pm |
|
|
PIC16F887, compiler 4.069
I am unable to make a simple RB change interrupt work.
Code: |
#include "T:\Lube_Timer\Lube_Timer.h"
#include "T:\Lube_Timer\Noritake_1.h"
#int_RB
void rb_isr(void)
{
vfd_putc("\fEncoder counted");
disable_interrupts(int_rb);
delay_ms(1500);
vfd_putc("\fISR time out");
delay_ms(1500);
vfd_putc("\f");
enable_interrupts(int_rb5);
}
void main()
{
vfd_init();
delay_ms(500);
vfd_putc("Hello World");
enable_interrupts(INT_RB);
enable_interrupts(global);
while(true)
{
}
} |
Code: | #include <16F887.h>
#device *=16
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES PUT //Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOCPD //No EE protection
#FUSES BROWNOUT //Reset when brownout detected
#FUSES IESO //Internal External Switch Over mode enabled
#FUSES FCMEN //Fail-safe clock monitor enabled
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOWRT //Program memory not write protected
#FUSES BORV40 //Brownout reset at 4.0V
#use delay(clock=20000000) //20MHz ceramic resonator
|
The VFD works, displays 'Hello World', but no change when I toggle bits RB5 or RB4 (only testing those two bits at this time). Scope shows pulses going from +5 to Gnd, 15us width.
Cheers,
Steve |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Fri Oct 02, 2015 4:19 pm |
|
|
Here is a test program that I simplified from here:
http://www.ccsinfo.com/forum/viewtopic.php?t=42384&start=1
See if this works:
Code: |
#include <16F887.h>
#fuses INTRC_IO, NOWDT, BROWNOUT, PUT, NOLVP
#use delay(clock=4M)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, ERRORS)
short int dbutton1, dbutton2;
//-------------------------
// This function reads Port B without changing the TRIS.
int8 input_state_b(void)
{
#byte PortB = getenv("SFR:PORTB")
return(PortB);
}
//-------------------------
#define HIGHTOLOW FALSE
#define LOWTOHIGH TRUE
int8 current, last;
#int_rb
void int_rb_isr(void)
{
current = input_state_b();
#if LOWTOHIGH
if ((!bit_test(last,1))&&(bit_test(current,1)))
dbutton1 = TRUE;
if ((!bit_test(last,2))&&(bit_test(current,2)))
dbutton2 = TRUE;
#elif HIGHTOLOW
if((!bit_test(current,1))&&(bit_test(last,1)))
dbutton1 = TRUE;
if((!bit_test(current,2))&&(bit_test(last,2)))
dbutton2 = TRUE;
#endif
last = current;
delay_ms(1);
}
//------------------------------
void init()
{
dbutton1=0;
dbutton2=0;
current = input_state_b();
last = current;
}
//=======================================
void main()
{
init();
port_b_pullups(0b00110000); // Enable pullups on PortB bits 4, 5
delay_us(10); // Allow time for pull-ups to initialize
enable_interrupts(INT_RB4);
enable_interrupts(INT_RB5);
input_state_b(); // Clear mismatch condition
clear_interrupt(INT_RB);
enable_interrupts(GLOBAL);
while(1)
{
if(dbutton1)
{
putc('1');
dbutton1 = FALSE;
}
if(dbutton2)
{
putc('2');
dbutton2 = FALSE;
}
}
}
|
|
|
|
eyewonder300
Joined: 09 Jun 2004 Posts: 52
|
|
Posted: Fri Oct 02, 2015 6:24 pm |
|
|
PCM,
I'm doing this project on a board I have already wire-wrapped. I will need to wire up a MAX232 chip to use between the PIC & PC - later tonight, or early tomorrow.
I had to change the chip clock to 20Mhz to match my hardware.
When I tried to compile I got an error:
"Undefined Identifier: INT_EXT_L2H"
Cheers,
Steve |
|
|
eyewonder300
Joined: 09 Jun 2004 Posts: 52
|
|
Posted: Fri Oct 02, 2015 6:27 pm |
|
|
Oops,
I copied your code again, and it compiled - must have done something wrong.
Cheers,
Steve |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Fri Oct 02, 2015 6:44 pm |
|
|
The code in the link has that line in it, but the code I posted above does not.
I removed all the INT_EXT code, since you only want interrupt-on-change.
Use the code I posted in this thread. |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19488
|
|
Posted: Sat Oct 03, 2015 12:07 am |
|
|
As a comment, do a search here on the things that _must_ happen in an RB interrupt. Note that PCM programmer's code does one critical thing that yours doesn't. Without this, when the interrupt triggers, it'll effectively never exit..... |
|
|
eyewonder300
Joined: 09 Jun 2004 Posts: 52
|
Update |
Posted: Sat Oct 03, 2015 5:27 pm |
|
|
I finally got a MAX232 chip working on my wire-wrap board. I had to use another PC to receive the output from 'puts'. I wrote a prog to continuously send 'puts ("Sending to PC")' to the PC. That worked, confirming that I am sending out good 9600 Baud RS232 to the PC.
Back to the code in the 2nd post, changed clock to the 20MHz I am using, no other changes. Programmed the PIC, took it over to the receiving PC, toggled my RB4 & RB5 bits, and no output over the RS232 to the PC. Using logic probe, confirmed that RB4 & 5 were toggling.
So interrupts still not working. More ideas?
Cheers,
Steve |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Sat Oct 03, 2015 11:06 pm |
|
|
You have an older version of the compiler. I'm not at a location where I
have all my older versions. Compile the following program and post the
.LST file. Set the build options so the .LST file is in "normal CCS format",
ie, numbered registers with no register names. I want to see if your
compiler is doing certain things correctly. Make sure your listing shows
the fuses at the end.
Code: |
#include <16F887.h>
#device *=16
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES PUT //Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOCPD //No EE protection
#FUSES BROWNOUT //Reset when brownout detected
#FUSES IESO //Internal External Switch Over mode enabled
#FUSES FCMEN //Fail-safe clock monitor enabled
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOWRT //Program memory not write protected
#FUSES BORV40 //Brownout reset at 4.0V
#use delay(clock=20000000) //20MHz ceramic resonator
// This function reads Port B without changing the TRIS.
int8 input_state_b(void)
{
#byte PortB = getenv("SFR:PORTB")
return(PortB);
}
#int_rb
void rb_isr(void)
{
int8 current;
current = input_state_b();
}
//==========================================
void main()
{
port_b_pullups(0b00110000); // Enable pullups on PortB bits 4, 5
delay_us(10); // Allow time for pull-ups to initialize
enable_interrupts(INT_RB4);
enable_interrupts(INT_RB5);
input_state_b(); // Clear mismatch condition
clear_interrupt(INT_RB);
enable_interrupts(GLOBAL);
while(TRUE);
} |
I did notice something a little odd about the listing below. For the line,
Code: | clear_interrupt(INT_RB); |
CCS is reading PortB. Properly, they should be clearing the RBIF flag.
They are clearing the change condition which sets RBIF, but they are
not clearing RBIF itself. That's a bug. The 16F887 data sheet says:
Quote: |
The user, in the Interrupt Service Routine, clears the interrupt by:
a) Any read or write of PORTB. This will end the mismatch condition.
b) Clear the flag bit RBIF.
|
My expectation would be that clear_interrupt(INT_RB) would only clear
the RBIF flag. Reading PortB would be left to the user.
Here is the .LST file for vs. 5.049:
Code: |
CCS PCM C Compiler, Version 5.049, xxxxx 03-Oct-15 21:51
Filename: C:\Program Files\PICC\Projects\PCM_Test\PCM_Test.lst
ROM used: 101 words (1%)
Largest free fragment is 2048
RAM used: 13 (4%) at main() level
14 (4%) worst case
Stack used: 0 locations
Stack size: 8
*
0000: MOVLW 00
0001: MOVWF 0A
0002: GOTO 039
0003: NOP
0004: MOVWF 7F
0005: SWAPF 03,W
0006: CLRF 03
0007: MOVWF 21
0008: MOVF 0A,W
0009: MOVWF 20
000A: CLRF 0A
000B: MOVF 04,W
000C: MOVWF 22
000D: MOVF 77,W
000E: MOVWF 23
000F: MOVF 78,W
0010: MOVWF 24
0011: MOVF 79,W
0012: MOVWF 25
0013: MOVF 7A,W
0014: MOVWF 26
0015: BCF 03.7
0016: BCF 03.5
0017: BTFSS 0B.3
0018: GOTO 01B
0019: BTFSC 0B.0
001A: GOTO 02C
001B: MOVF 22,W
001C: MOVWF 04
001D: MOVF 23,W
001E: MOVWF 77
001F: MOVF 24,W
0020: MOVWF 78
0021: MOVF 25,W
0022: MOVWF 79
0023: MOVF 26,W
0024: MOVWF 7A
0025: MOVF 20,W
0026: MOVWF 0A
0027: SWAPF 21,W
0028: MOVWF 03
0029: SWAPF 7F,F
002A: SWAPF 7F,W
002B: RETFIE
002C: BCF 0A.3
002D: BCF 0A.4
002E: GOTO 032
.................... #include <16F887.h>
... //////////// Standard Header file for the PIC16F887
(CCS boilerplate removed for brevity)
.................... #device PIC16F887
....................
.................... #list
....................
.................... #device *=16
.................... #device adc=8
....................
.................... #FUSES NOWDT //No Watch Dog Timer
.................... #FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
.................... #FUSES PUT //Power Up Timer
.................... #FUSES NOPROTECT //Code not protected from reading
.................... #FUSES NOCPD //No EE protection
.................... #FUSES BROWNOUT //Reset when brownout detected
.................... #FUSES IESO //Internal External Switch Over mode enabled
.................... #FUSES FCMEN //Fail-safe clock monitor enabled
.................... #FUSES NODEBUG //No Debug mode for ICD
.................... #FUSES NOWRT //Program memory not write protected
.................... #FUSES BORV40 //Brownout reset at 4.0V
....................
.................... #use delay(clock=20000000) //20MHz ceramic resonator
....................
....................
.................... // This function reads Port B without changing the TRIS.
.................... int8 input_state_b(void)
.................... {
.................... #byte PortB = getenv("SFR:PORTB")
....................
.................... return(PortB);
002F: MOVF 06,W
0030: MOVWF 78
0031: RETURN
.................... }
....................
....................
.................... #int_rb
.................... void rb_isr(void)
.................... {
.................... int8 current;
....................
.................... current = input_state_b();
0032: CALL 02F
0033: MOVF 78,W
0034: MOVWF 28
0035: BCF 0B.0
0036: BCF 0A.3
0037: BCF 0A.4
0038: GOTO 01B
.................... }
....................
.................... //==========================================
.................... void main()
0039: MOVF 03,W
003A: ANDLW 1F
003B: MOVWF 03
003C: BSF 03.5
003D: BSF 03.6
003E: MOVF 09,W
003F: ANDLW C0
0040: MOVWF 09
0041: BCF 03.6
0042: BCF 1F.4
0043: BCF 1F.5
0044: MOVLW 00
0045: BSF 03.6
0046: MOVWF 08
0047: BCF 03.5
0048: CLRF 07
0049: CLRF 08
004A: CLRF 09
004B: BCF 03.7
.................... {
.................... port_b_pullups(0b00110000); // Enable pullups on PortB bits 4, 5
004C: MOVLW 30
004D: BSF 03.5
004E: BCF 03.6
004F: MOVWF 15
0050: BCF 01.7
.................... delay_us(10); // Allow time for pull-ups to initialize
0051: MOVLW 10
0052: MOVWF 77
0053: DECFSZ 77,F
0054: GOTO 053
0055: NOP
....................
.................... enable_interrupts(INT_RB4);
0056: BCF 03.5
0057: BSF 0B.3
0058: BSF 03.5
0059: BSF 16.4
.................... enable_interrupts(INT_RB5);
005A: BCF 03.5
005B: BSF 0B.3
005C: BSF 03.5
005D: BSF 16.5
....................
.................... input_state_b(); // Clear mismatch condition
005E: BCF 03.5
005F: CALL 02F
....................
.................... clear_interrupt(INT_RB);
0060: MOVF 06,W
....................
.................... enable_interrupts(GLOBAL);
0061: MOVLW C0
0062: IORWF 0B,F
....................
....................
....................
.................... while(TRUE);
0063: GOTO 063
.................... }
....................
0064: SLEEP
....................
....................
Configuration Fuses:
Word 1: 2FE2 HS NOWDT PUT MCLR NOPROTECT NOCPD BROWNOUT IESO FCMEN NOLVP NODEBUG
Word 2: 0700 BORV40 NOWRT
|
|
|
|
eyewonder300
Joined: 09 Jun 2004 Posts: 52
|
Compile list |
Posted: Sun Oct 04, 2015 9:13 am |
|
|
PCM,
Here is the listing from the code you posted.
Code: | CCS PCM C Compiler, Version 4.069, 42050 04-Oct-15 10:07
Filename: Test_List.lst
ROM used: 105 words (1%)
Largest free fragment is 2048
RAM used: 15 (4%) at main() level
16 (4%) worst case
Stack: 3 worst case (1 in main + 2 for interrupts)
*
0000: MOVLW 00
0001: MOVWF 0A
0002: GOTO 03D
0003: NOP
0004: MOVWF 7F
0005: SWAPF 03,W
0006: CLRF 03
0007: MOVWF 21
0008: MOVF 0A,W
0009: MOVWF 20
000A: CLRF 0A
000B: MOVF 04,W
000C: MOVWF 22
000D: MOVF 77,W
000E: MOVWF 23
000F: MOVF 78,W
0010: MOVWF 24
0011: MOVF 79,W
0012: MOVWF 25
0013: MOVF 7A,W
0014: MOVWF 26
0015: MOVF 7B,W
0016: MOVWF 27
0017: BCF 03.7
0018: BCF 03.5
0019: BTFSS 0B.3
001A: GOTO 01D
001B: BTFSC 0B.0
001C: GOTO 030
001D: MOVF 22,W
001E: MOVWF 04
001F: MOVF 23,W
0020: MOVWF 77
0021: MOVF 24,W
0022: MOVWF 78
0023: MOVF 25,W
0024: MOVWF 79
0025: MOVF 26,W
0026: MOVWF 7A
0027: MOVF 27,W
0028: MOVWF 7B
0029: MOVF 20,W
002A: MOVWF 0A
002B: SWAPF 21,W
002C: MOVWF 03
002D: SWAPF 7F,F
002E: SWAPF 7F,W
002F: RETFIE
0030: BCF 0A.3
0031: BCF 0A.4
0032: GOTO 036
.................... #include <16F887.h>
.................... //////// Standard Header file for the PIC16F887 device ////////////////
.................... #device PIC16F887
.................... #list
....................
.................... #device *=16
.................... #device adc=8
....................
.................... #FUSES NOWDT //No Watch Dog Timer
.................... #FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
.................... #FUSES PUT //Power Up Timer
.................... #FUSES NOPROTECT //Code not protected from reading
.................... #FUSES NOCPD //No EE protection
.................... #FUSES BROWNOUT //Reset when brownout detected
.................... #FUSES IESO //Internal External Switch Over mode enabled
.................... #FUSES FCMEN //Fail-safe clock monitor enabled
.................... #FUSES NODEBUG //No Debug mode for ICD
.................... #FUSES NOWRT //Program memory not write protected
.................... #FUSES BORV40 //Brownout reset at 4.0V
....................
.................... #use delay(clock=20000000) //20MHz ceramic resonator
....................
....................
.................... // This function reads Port B without changing the TRIS.
.................... int8 input_state_b(void)
.................... {
.................... #byte PortB = getenv("SFR:PORTB")
....................
.................... return(PortB);
0033: MOVF 06,W
0034: MOVWF 78
.................... }
0035: RETLW 00
....................
....................
.................... #int_rb
.................... void rb_isr(void)
.................... {
.................... int8 current;
....................
.................... current = input_state_b();
0036: CALL 033
0037: MOVF 78,W
0038: MOVWF 29
.................... }
....................
.................... //==========================================
0039: BCF 0B.0
003A: BCF 0A.3
003B: BCF 0A.4
003C: GOTO 01D
.................... void main()
.................... {
003D: CLRF 04
003E: BCF 03.7
003F: MOVLW 1F
0040: ANDWF 03,F
0041: BSF 03.5
0042: BSF 03.6
0043: MOVF 09,W
0044: ANDLW C0
0045: MOVWF 09
0046: BCF 03.6
0047: BCF 1F.4
0048: BCF 1F.5
0049: MOVLW 00
004A: BSF 03.6
004B: MOVWF 08
004C: BCF 03.5
004D: CLRF 07
004E: CLRF 08
004F: CLRF 09
.................... port_b_pullups(0b00110000); // Enable pullups on PortB bits 4, 5
0050: MOVLW 30
0051: BSF 03.5
0052: BCF 03.6
0053: MOVWF 15
0054: BCF 01.7
.................... delay_us(10); // Allow time for pull-ups to initialize
0055: MOVLW 10
0056: MOVWF 77
0057: DECFSZ 77,F
0058: GOTO 057
0059: NOP
....................
.................... enable_interrupts(INT_RB4);
005A: BCF 03.5
005B: BSF 0B.3
005C: BSF 03.5
005D: BSF 16.4
.................... enable_interrupts(INT_RB5);
005E: BCF 03.5
005F: BSF 0B.3
0060: BSF 03.5
0061: BSF 16.5
....................
.................... input_state_b(); // Clear mismatch condition
0062: BCF 03.5
0063: CALL 033
....................
.................... clear_interrupt(INT_RB);
0064: BCF 0B.0
....................
.................... enable_interrupts(GLOBAL);
0065: MOVLW C0
0066: IORWF 0B,F
....................
.................... while(TRUE);
0067: GOTO 067
.................... }
0068: SLEEP
Configuration Fuses:
Word 1: 2FE2 HS NOWDT PUT MCLR NOPROTECT NOCPD BROWNOUT IESO FCMEN NOLVP NODEBUG
Word 2: 3FFF NOWRT BORV40
|
Cheers,
Steve |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Sun Oct 04, 2015 10:14 am |
|
|
I don't see any important differences (that would cause your problem).
I'll test your code this evening with your hardware input conditions. |
|
|
eyewonder300
Joined: 09 Jun 2004 Posts: 52
|
Port B pullups? |
Posted: Sun Oct 04, 2015 5:09 pm |
|
|
In testing this problem, I enabled all Port B pull-ups, and then put a meter on the pins. They were reading 0v - do I not understand what the internal (weak) pull-ups should be doing?
Cheers,
Steve |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Sun Oct 04, 2015 7:36 pm |
|
|
I got back my normal location and tested it in hardware and quickly
found my mistake. When I translated my test program to your setup,
I neglected to change the bits that are tested in #int_rb to bits 4 and 5.
The #int_rb routine should be as shown below:
Code: | #int_rb
void int_rb_isr(void)
{
current = input_state_b();
#if LOWTOHIGH
if ((!bit_test(last,4))&&(bit_test(current,4)))
dbutton1 = TRUE;
if ((!bit_test(last,5))&&(bit_test(current,5)))
dbutton2 = TRUE;
#elif HIGHTOLOW
if((!bit_test(current,4))&&(bit_test(last,4)))
dbutton1 = TRUE;
if((!bit_test(current,5))&&(bit_test(last,5)))
dbutton2 = TRUE;
#endif
last = current;
delay_ms(1);
} |
As soon as I did that, it started working. If I press push-buttons on
either pin B4 or B5, I get '1' or '2' displayed in the TeraTerm window.
Here I have pushed the button on B4 several times, followed by B5:
This was tested with vs. 4.069. |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Sun Oct 04, 2015 7:43 pm |
|
|
Quote: | In testing this problem, I enabled all Port B pull-ups, and then put a meter
on the pins. They were reading 0v - do I not understand what the internal
(weak) pull-ups should be doing? |
If the PIC is held in reset by the ICD or Pickit programmer, you will
likely see 0v with a meter on the PortB pins. That's what I got just now.
Here's the test program I used:
Code: |
#include <16F887.h>
#fuses HS, NOWDT, BROWNOUT, PUT, NOLVP
#use delay(clock=20M)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, ERRORS)
//=======================================
void main()
{
port_b_pullups(0xFF); // Enable pull-ups on all PortB pins
while(TRUE);
} |
If you click the "release from reset" button in MPLAB vs. 8.92, then you
will see some of the PortB pins go to a high level. But, if the programmer
is still connected to pins B6 and B7, you will see a voltage such as 0.92v.
That's because the programmer has 4.7K pull-downs on those pins.
Remove the programmer from the board, and measure pins B6 and B7
again. This time you will get 4.77v. At least that's what I got.
Last edited by PCM programmer on Sun Oct 04, 2015 7:47 pm; edited 1 time in total |
|
|
eyewonder300
Joined: 09 Jun 2004 Posts: 52
|
|
Posted: Sun Oct 04, 2015 7:46 pm |
|
|
I'll test this tomorrow at work, and report back.
Cheers,
Steve |
|
|
eyewonder300
Joined: 09 Jun 2004 Posts: 52
|
Success |
Posted: Mon Oct 05, 2015 3:19 pm |
|
|
Thanks to all, I have my prog working as needed. Some of the problems were from my fuse selections (or lack thereof), and not understanding the interrupt enabling, & testing.
My hardware is a quadrature encoder chip, and it outputs a low going pulse on one pin for count up, and a low going pulse on another pin for count down. The chip prohibits both from being low at the same time, so whichever (port RB4 or RB5) is low is my count direction. If both are hi, then some other interrupt on the port was active.
Here is the code that worked for me:
Code: |
// This function reads Port B without changing the TRIS.
//int8 input_state_b(void)
// {
// #byte PortB = getenv("SFR:PORTB")
// return(PortB);
// }
#int_RB
void RB_isr(void)
{
current = input_b();
disable_interrupts(global);
if ((!bit_test(current,5))) //LOW signal is COUNT UP pulse from encoder
{
counter_val = counter_val + 1;
printf(vfd_putc,"\fCounter: %3u",counter_val);
}
if ((!bit_test(current,4))) //LOW signal is COUNT DOWN pulse from encoder
{
counter_val = counter_val - 1;
printf(vfd_putc,"\fCounter: %3u",counter_val);
}
}
void main()
{
counter_val = 0;
vfd_init();
vfd_putc("Hello, Steve");
delay_ms(1000);
vfd_putc("\fWaiting for ISR");
delay_ms(1000);
set_tris_b(0x3F);
port_b_pullups(0b00111111);
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_OFF);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard
// enable_interrupts(INT_RB);
enable_interrupts(INT_RB4);
enable_interrupts(INT_RB5);
clear_interrupt(int_rb);
enable_interrupts(GLOBAL);
//Setup_Oscillator parameter not selected from Intr Oscillator Config tab
// TODO: USER CODE!!
while(true){};
} |
|
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|