Error when using the Pulse Position Library on a Teensy 4.0

readysteadi

Active member
I'm trying to generate a PPM signal using the Pulse Position library but even the example sketches are not compiling and return an error : Compilation Error: Exit status 1 I have proper board selected as well as port and code is straight from example of loopback. I'm providing the text from the error messages here:

Code:
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp: In constructor 'PulsePositionOutput::PulsePositionOutput()':
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:83:65: error: 'CLOCKS_PER_MICROSECOND' was not declared in this scope; did you mean 'CLOCKS_PER_SEC'?
   83 | #define TX_MINIMUM_FRAME_CLOCKS   (uint32_t)(TX_MINIMUM_FRAME * CLOCKS_PER_MICROSECOND)
      |                                                                 ^~~~~~~~~~~~~~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:109:26: note: in expansion of macro 'TX_MINIMUM_FRAME_CLOCKS'
  109 |         pulse_width[0] = TX_MINIMUM_FRAME_CLOCKS;
      |                          ^~~~~~~~~~~~~~~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp: In constructor 'PulsePositionOutput::PulsePositionOutput(int)':
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:83:65: error: 'CLOCKS_PER_MICROSECOND' was not declared in this scope; did you mean 'CLOCKS_PER_SEC'?
   83 | #define TX_MINIMUM_FRAME_CLOCKS   (uint32_t)(TX_MINIMUM_FRAME * CLOCKS_PER_MICROSECOND)
      |                                                                 ^~~~~~~~~~~~~~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:119:26: note: in expansion of macro 'TX_MINIMUM_FRAME_CLOCKS'
  119 |         pulse_width[0] = TX_MINIMUM_FRAME_CLOCKS;
      |                          ^~~~~~~~~~~~~~~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp: In member function 'bool PulsePositionOutput::begin(uint8_t, uint8_t)':
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:142:13: error: 'FTM0_MOD' was not declared in this scope
  142 |         if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
      |             ^~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:142:36: error: 'FTM0_SC' was not declared in this scope
  142 |         if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
      |                                    ^~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:88:24: error: 'FTM_SC_TOIE' was not declared in this scope; did you mean 'FTM0_SC_VALUE'?
   88 | #define FTM0_SC_VALUE (FTM_SC_TOIE | FTM_SC_CLKS(1) | FTM_SC_PS(0))
      |                        ^~~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:142:55: note: in expansion of macro 'FTM0_SC_VALUE'
  142 |         if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
      |                                                       ^~~~~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:88:38: error: 'FTM_SC_CLKS' was not declared in this scope; did you mean 'FTM0_SC_VALUE'?
   88 | #define FTM0_SC_VALUE (FTM_SC_TOIE | FTM_SC_CLKS(1) | FTM_SC_PS(0))
      |                                      ^~~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:142:55: note: in expansion of macro 'FTM0_SC_VALUE'
  142 |         if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
      |                                                       ^~~~~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:88:55: error: 'FTM_SC_PS' was not declared in this scope
   88 | #define FTM0_SC_VALUE (FTM_SC_TOIE | FTM_SC_CLKS(1) | FTM_SC_PS(0))
      |                                                       ^~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:142:55: note: in expansion of macro 'FTM0_SC_VALUE'
  142 |         if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
      |                                                       ^~~~~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:144:17: error: 'FTM0_CNT' was not declared in this scope
  144 |                 FTM0_CNT = 0;
      |                 ^~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:152:40: error: 'FTM0_C4SC' was not declared in this scope
  152 |           case  6: channel = 4; reg = &FTM0_C4SC; break;
      |                                        ^~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:153:40: error: 'FTM0_C2SC' was not declared in this scope
  153 |           case  9: channel = 2; reg = &FTM0_C2SC; break;
      |                                        ^~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:154:40: error: 'FTM0_C3SC' was not declared in this scope
  154 |           case 10: channel = 3; reg = &FTM0_C3SC; break;
      |                                        ^~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:155:40: error: 'FTM0_C5SC' was not declared in this scope
  155 |           case 20: channel = 5; reg = &FTM0_C5SC; break;
      |                                        ^~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:156:40: error: 'FTM0_C0SC' was not declared in this scope
  156 |           case 22: channel = 0; reg = &FTM0_C0SC; break;
      |                                        ^~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:157:40: error: 'FTM0_C1SC' was not declared in this scope
  157 |           case 23: channel = 1; reg = &FTM0_C1SC; break;
      |                                        ^~~~~~~~~
In file included from C:\Users\Marco\AppData\Local\Arduino15\packages\teensy\hardware\avr\1.58.1\cores\teensy4/core_pins.h:33,
                 from C:\Users\Marco\AppData\Local\Arduino15\packages\teensy\hardware\avr\1.58.1\cores\teensy4/wiring.h:39,
                 from C:\Users\Marco\AppData\Local\Arduino15\packages\teensy\hardware\avr\1.58.1\cores\teensy4/WProgram.h:46,
                 from C:\Users\Marco\AppData\Local\Temp\arduino\sketches\D4BFE03DFE67738E5C0AE842BDA8AAA5/pch/Arduino.h:6,
                 from c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.h:29,
                 from c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:31:
C:\Users\Marco\AppData\Local\Arduino15\packages\teensy\hardware\avr\1.58.1\cores\teensy4/pins_arduino.h:142:71: error: cannot convert 'volatile uint32_t*' {aka 'volatile long unsigned int*'} to 'volatile uint8_t*' {aka 'volatile unsigned char*'} in assignment
  142 | #define portOutputRegister(pin)  ((digital_pin_to_info_PGM[(pin)].reg + 0))
      |                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
      |                                                                       |
      |                                                                       volatile uint32_t* {aka volatile long unsigned int*}
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:166:31: note: in expansion of macro 'portOutputRegister'
  166 |                 framePinReg = portOutputRegister(framePin);
      |                               ^~~~~~~~~~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:169:17: error: 'FRAME_PIN_SET' was not declared in this scope
  169 |                 FRAME_PIN_SET();
      |                 ^~~~~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:178:9: error: 'CSC_CHANGE' was not declared in this scope; did you mean 'CHANGE'?
  178 |         CSC_CHANGE(ftm, cscSet); // set on compare match & interrupt
      |         ^~~~~~~~~~
      |         CHANGE
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:181:38: error: 'PORT_PCR_MUX' was not declared in this scope
  181 |         *portConfigRegister(txPin) = PORT_PCR_MUX(4) | PORT_PCR_DSE | PORT_PCR_SRE;
      |                                      ^~~~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:181:56: error: 'PORT_PCR_DSE' was not declared in this scope
  181 |         *portConfigRegister(txPin) = PORT_PCR_MUX(4) | PORT_PCR_DSE | PORT_PCR_SRE;
      |                                                        ^~~~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:181:71: error: 'PORT_PCR_SRE' was not declared in this scope
  181 |         *portConfigRegister(txPin) = PORT_PCR_MUX(4) | PORT_PCR_DSE | PORT_PCR_SRE;
      |                                                                       ^~~~~~~~~~~~
In file included from C:\Users\Marco\AppData\Local\Arduino15\packages\teensy\hardware\avr\1.58.1\cores\teensy4/core_pins.h:32,
                 from C:\Users\Marco\AppData\Local\Arduino15\packages\teensy\hardware\avr\1.58.1\cores\teensy4/wiring.h:39,
                 from C:\Users\Marco\AppData\Local\Arduino15\packages\teensy\hardware\avr\1.58.1\cores\teensy4/WProgram.h:46,
                 from C:\Users\Marco\AppData\Local\Temp\arduino\sketches\D4BFE03DFE67738E5C0AE842BDA8AAA5/pch/Arduino.h:6,
                 from c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.h:29,
                 from c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:31:
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:182:27: error: 'IRQ_FTM0' was not declared in this scope; did you mean 'IRQ_CTI0'?
  182 |         NVIC_SET_PRIORITY(IRQ_FTM0, 32);
      |                           ^~~~~~~~
C:\Users\Marco\AppData\Local\Arduino15\packages\teensy\hardware\avr\1.58.1\cores\teensy4/imxrt.h:9783:83: note: in definition of macro 'NVIC_SET_PRIORITY'
 9783 | #define NVIC_SET_PRIORITY(irqnum, priority)  (*((volatile uint8_t *)0xE000E400 + (irqnum)) = (uint8_t)(priority))
      |                                                                                   ^~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp: In member function 'bool PulsePositionOutput::write(uint8_t, float)':
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:193:33: error: 'CLOCKS_PER_MICROSECOND' was not declared in this scope; did you mean 'CLOCKS_PER_SEC'?
  193 |         clocks = microseconds * CLOCKS_PER_MICROSECOND;
      |                                 ^~~~~~~~~~~~~~~~~~~~~~
      |                                 CLOCKS_PER_SEC
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp: In member function 'void PulsePositionOutput::isr()':
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:84:63: error: 'CLOCKS_PER_MICROSECOND' was not declared in this scope; did you mean 'CLOCKS_PER_SEC'?
   84 | #define TX_PULSE_WIDTH_CLOCKS     (uint32_t)(TX_PULSE_WIDTH * CLOCKS_PER_MICROSECOND)
      |                                                               ^~~~~~~~~~~~~~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:223:28: note: in expansion of macro 'TX_PULSE_WIDTH_CLOCKS'
  223 |                 ftm->cv += TX_PULSE_WIDTH_CLOCKS;
      |                            ^~~~~~~~~~~~~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:224:17: error: 'CSC_CHANGE_INTACK' was not declared in this scope
  224 |                 CSC_CHANGE_INTACK(ftm, cscClear); // clear on compare match & interrupt
      |                 ^~~~~~~~~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:84:63: error: 'CLOCKS_PER_MICROSECOND' was not declared in this scope; did you mean 'CLOCKS_PER_SEC'?
   84 | #define TX_PULSE_WIDTH_CLOCKS     (uint32_t)(TX_PULSE_WIDTH * CLOCKS_PER_MICROSECOND)
      |                                                               ^~~~~~~~~~~~~~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:237:57: note: in expansion of macro 'TX_PULSE_WIDTH_CLOCKS'
  237 |                         width = pulse_buffer[channel] - TX_PULSE_WIDTH_CLOCKS;
      |                                                         ^~~~~~~~~~~~~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:244:41: error: 'FRAME_PIN_SET' was not declared in this scope
  244 |                                         FRAME_PIN_SET();
      |                                         ^~~~~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:246:41: error: 'FRAME_PIN_CLEAR' was not declared in this scope
  246 |                                         FRAME_PIN_CLEAR();
      |                                         ^~~~~~~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:255:25: error: 'CSC_CHANGE_INTACK' was not declared in this scope
  255 |                         CSC_CHANGE_INTACK(ftm, cscSet); // set on compare match & interrupt
      |                         ^~~~~~~~~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:259:25: error: 'CSC_INTACK' was not declared in this scope
  259 |                         CSC_INTACK(ftm, cscClear); // clear on compare match & interrupt
      |                         ^~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp: In function 'void ftm0_isr()':
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:268:13: error: 'FTM0_SC' was not declared in this scope
  268 |         if (FTM0_SC & 0x80) {
      |             ^~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:279:33: error: 'FTM0_C0SC' was not declared in this scope
  279 |         if ((maskin & 0x01) && (FTM0_C0SC & 0x80)) PulsePositionInput::list[0]->isr();
      |                                 ^~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:280:33: error: 'FTM0_C1SC' was not declared in this scope
  280 |         if ((maskin & 0x02) && (FTM0_C1SC & 0x80)) PulsePositionInput::list[1]->isr();
      |                                 ^~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:281:33: error: 'FTM0_C2SC' was not declared in this scope
  281 |         if ((maskin & 0x04) && (FTM0_C2SC & 0x80)) PulsePositionInput::list[2]->isr();
      |                                 ^~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:282:33: error: 'FTM0_C3SC' was not declared in this scope
  282 |         if ((maskin & 0x08) && (FTM0_C3SC & 0x80)) PulsePositionInput::list[3]->isr();
      |                                 ^~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:283:33: error: 'FTM0_C4SC' was not declared in this scope
  283 |         if ((maskin & 0x10) && (FTM0_C4SC & 0x80)) PulsePositionInput::list[4]->isr();
      |                                 ^~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:284:33: error: 'FTM0_C5SC' was not declared in this scope
  284 |         if ((maskin & 0x20) && (FTM0_C5SC & 0x80)) PulsePositionInput::list[5]->isr();
      |                                 ^~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:290:34: error: 'FTM0_C0SC' was not declared in this scope
  290 |         if ((maskout & 0x01) && (FTM0_C0SC & 0x80)) PulsePositionOutput::list[0]->isr();
      |                                  ^~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:291:34: error: 'FTM0_C1SC' was not declared in this scope
  291 |         if ((maskout & 0x02) && (FTM0_C1SC & 0x80)) PulsePositionOutput::list[1]->isr();
      |                                  ^~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:292:34: error: 'FTM0_C2SC' was not declared in this scope
  292 |         if ((maskout & 0x04) && (FTM0_C2SC & 0x80)) PulsePositionOutput::list[2]->isr();
      |                                  ^~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:293:34: error: 'FTM0_C3SC' was not declared in this scope
  293 |         if ((maskout & 0x08) && (FTM0_C3SC & 0x80)) PulsePositionOutput::list[3]->isr();
      |                                  ^~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:294:34: error: 'FTM0_C4SC' was not declared in this scope
  294 |         if ((maskout & 0x10) && (FTM0_C4SC & 0x80)) PulsePositionOutput::list[4]->isr();
      |                                  ^~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:295:34: error: 'FTM0_C5SC' was not declared in this scope
  295 |         if ((maskout & 0x20) && (FTM0_C5SC & 0x80)) PulsePositionOutput::list[5]->isr();
      |                                  ^~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp: In member function 'bool PulsePositionInput::begin(uint8_t)':
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:327:13: error: 'FTM0_MOD' was not declared in this scope
  327 |         if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
      |             ^~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:327:36: error: 'FTM0_SC' was not declared in this scope
  327 |         if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
      |                                    ^~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:88:24: error: 'FTM_SC_TOIE' was not declared in this scope; did you mean 'FTM0_SC_VALUE'?
   88 | #define FTM0_SC_VALUE (FTM_SC_TOIE | FTM_SC_CLKS(1) | FTM_SC_PS(0))
      |                        ^~~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:327:55: note: in expansion of macro 'FTM0_SC_VALUE'
  327 |         if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
      |                                                       ^~~~~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:88:38: error: 'FTM_SC_CLKS' was not declared in this scope; did you mean 'FTM0_SC_VALUE'?
   88 | #define FTM0_SC_VALUE (FTM_SC_TOIE | FTM_SC_CLKS(1) | FTM_SC_PS(0))
      |                                      ^~~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:327:55: note: in expansion of macro 'FTM0_SC_VALUE'
  327 |         if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
      |                                                       ^~~~~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:88:55: error: 'FTM_SC_PS' was not declared in this scope
   88 | #define FTM0_SC_VALUE (FTM_SC_TOIE | FTM_SC_CLKS(1) | FTM_SC_PS(0))
      |                                                       ^~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:327:55: note: in expansion of macro 'FTM0_SC_VALUE'
  327 |         if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
      |                                                       ^~~~~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:329:17: error: 'FTM0_CNT' was not declared in this scope
  329 |                 FTM0_CNT = 0;
      |                 ^~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:337:40: error: 'FTM0_C4SC' was not declared in this scope
  337 |           case  6: channel = 4; reg = &FTM0_C4SC; break;
      |                                        ^~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:338:40: error: 'FTM0_C2SC' was not declared in this scope
  338 |           case  9: channel = 2; reg = &FTM0_C2SC; break;
      |                                        ^~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:339:40: error: 'FTM0_C3SC' was not declared in this scope
  339 |           case 10: channel = 3; reg = &FTM0_C3SC; break;
      |                                        ^~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:340:40: error: 'FTM0_C5SC' was not declared in this scope
  340 |           case 20: channel = 5; reg = &FTM0_C5SC; break;
      |                                        ^~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:341:40: error: 'FTM0_C0SC' was not declared in this scope
  341 |           case 22: channel = 0; reg = &FTM0_C0SC; break;
      |                                        ^~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:342:40: error: 'FTM0_C1SC' was not declared in this scope
  342 |           case 23: channel = 1; reg = &FTM0_C1SC; break;
      |                                        ^~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:356:36: error: 'PORT_PCR_MUX' was not declared in this scope
  356 |         *portConfigRegister(pin) = PORT_PCR_MUX(4);
      |                                    ^~~~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:357:9: error: 'CSC_CHANGE' was not declared in this scope; did you mean 'CHANGE'?
  357 |         CSC_CHANGE(ftm, cscEdge); // input capture & interrupt on rising edge
      |         ^~~~~~~~~~
      |         CHANGE
In file included from C:\Users\Marco\AppData\Local\Arduino15\packages\teensy\hardware\avr\1.58.1\cores\teensy4/core_pins.h:32,
                 from C:\Users\Marco\AppData\Local\Arduino15\packages\teensy\hardware\avr\1.58.1\cores\teensy4/wiring.h:39,
                 from C:\Users\Marco\AppData\Local\Arduino15\packages\teensy\hardware\avr\1.58.1\cores\teensy4/WProgram.h:46,
                 from C:\Users\Marco\AppData\Local\Temp\arduino\sketches\D4BFE03DFE67738E5C0AE842BDA8AAA5/pch/Arduino.h:6,
                 from c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.h:29,
                 from c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:31:
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:358:27: error: 'IRQ_FTM0' was not declared in this scope; did you mean 'IRQ_CTI0'?
  358 |         NVIC_SET_PRIORITY(IRQ_FTM0, 32);
      |                           ^~~~~~~~
C:\Users\Marco\AppData\Local\Arduino15\packages\teensy\hardware\avr\1.58.1\cores\teensy4/imxrt.h:9783:83: note: in definition of macro 'NVIC_SET_PRIORITY'
 9783 | #define NVIC_SET_PRIORITY(irqnum, priority)  (*((volatile uint8_t *)0xE000E400 + (irqnum)) = (uint8_t)(priority))
      |                                                                                   ^~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp: In member function 'void PulsePositionInput::isr()':
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:368:9: error: 'CSC_INTACK' was not declared in this scope
  368 |         CSC_INTACK(ftm, cscEdge); // input capture & interrupt on rising edge
      |         ^~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:85:65: error: 'CLOCKS_PER_MICROSECOND' was not declared in this scope; did you mean 'CLOCKS_PER_SEC'?
   85 | #define RX_MINIMUM_SPACE_CLOCKS   (uint32_t)(RX_MINIMUM_SPACE * CLOCKS_PER_MICROSECOND)
      |                                                                 ^~~~~~~~~~~~~~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:377:22: note: in expansion of macro 'RX_MINIMUM_SPACE_CLOCKS'
  377 |         if (count >= RX_MINIMUM_SPACE_CLOCKS) {
      |                      ^~~~~~~~~~~~~~~~~~~~~~~
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp: In member function 'float PulsePositionInput::read(uint8_t)':
c:\Users\Marco\Documents\Arduino\libraries\PulsePosition\PulsePosition.cpp:417:38: error: 'CLOCKS_PER_MICROSECOND' was not declared in this scope; did you mean 'CLOCKS_PER_SEC'?
  417 |         return (float)value / (float)CLOCKS_PER_MICROSECOND;
      |                                      ^~~~~~~~~~~~~~~~~~~~~~
      |                                      CLOCKS_PER_SEC

exit status 1

Compilation error: exit status 1
 
Looks like you have an old copy of PulsePosition in your Documents\Arduino\libraries folder.

Is this compile with Arduino IDE? Normally at the end Arduino IDE will print info about which libraries it used. You should see a message about duplicate PulsePosition libraries, telling you it used the copy in Documents\Arduino\libraries and ignored the copy in a folder where it has the Teensy hardware package.
 
Hey Paul, Thanks for the quick reply. I had to switch out motherboards last month and do a new install of windows and now have some ghosts of programs to deal with. I'd tried before to eliminate duplicate libraries but still have the issue. Today after I got your message I decided to start from scratch so I created a brand new user in windows that does not have access to earlier install of arduino. I then did a fresh install of Arduino 2.2.1 and Teensyuino. I installed the library for PulsePosition and tried to compile loopback. I still get Exit status 1! Here's the last few lines of the error message:

Code:
                         CLOCKS_PER_SEC
Multiple libraries were found for "PulsePosition.h"
  Used: C:\Users\Gamer\Documents\Arduino\libraries\PulsePosition
  Not used: C:\Users\Gamer\AppData\Local\Arduino15\packages\teensy\hardware\avr\1.58.1\libraries\PulsePosition
exit status 1

Compilation error: exit status 1

The weird thing is the user Gamer did not exist before today but somehow there are two libraries installed under this user?
 
In situations like this, I can only answer "what". I have no idea "how" or "why" an old copy got into your Document folder. I personally use Linux and occasionally MacOS, so I really don't know much about the finer points of using Windows.

Hopefully just knowing "what" to do, move or delete the old PulsePosition is enough.
 
Two options:
1) delete everything from your temp folder using this batch file.
I sometimes get this error when a compilation fails. Deleting everything from the temp folder usually clears it up.
Make sure that you have quit out of your compiler, and wait for a short time to let Windows let go of the files in use.
Don't worry about deleting temp files being used by other software, if they are in use Windows will NOT delete them.
Code:
del /F /S /Q C:\Users\Gamer\AppData\Local\Temp\*.*
pause
There could be fragments of code/compilations left there.
2)
Try moving your Sketchbook Location: away from the default.
I use C:\Arduino Programs.
I like to be in control of where things are stored.
If you do change the Sketchbook location to C:\MySketchBooks move all the Sketches (and Libraries) to this location.
You could create a batch file to do it for you with this command.
Code:
REM Create New Sketchbook Location
Md C:\MySketchBooks
REM Copy files from old location
C:
Cd C:\MySketchBooks
Copy C:\Users\Gamer\Documents\Arduino\*.* .\
REM Create Libraries folder
C:
Cd C:\MySketchBooks
Md LIBRARIES
REM Copy Libraries
Copy C:\Users\Gamer\Documents\Arduino\Libraries\*.* .\
Check that the files have been copied ok then delete the original files/directories
..then delete the directories
Code:
REM Delete sketches from Documents
Del C:\Users\Gamer\Documents\Arduino\*.*
REM delete Libraries
Del C:\Users\Gamer\Documents\Arduino\L:ibraries\*.*
 
Two options:
1) delete everything from your temp folder using this batch file.
I sometimes get this error when a compilation fails. Deleting everything from the temp folder usually clears it up.
Make sure that you have quit out of your compiler, and wait for a short time to let Windows let go of the files in use.
Don't worry about deleting temp files being used by other software, if they are in use Windows will NOT delete them.
Code:
del /F /S /Q C:\Users\Gamer\AppData\Local\Temp\*.*
pause
There could be fragments of code/compilations left there.
2)
Try moving your Sketchbook Location: away from the default.
I use C:\Arduino Programs.
I like to be in control of where things are stored.
If you do change the Sketchbook location to C:\MySketchBooks move all the Sketches (and Libraries) to this location.
You could create a batch file to do it for you with this command.
Code:
REM Create New Sketchbook Location
Md C:\MySketchBooks
REM Copy files from old location
C:
Cd C:\MySketchBooks
Copy C:\Users\Gamer\Documents\Arduino\*.* .\
REM Create Libraries folder
C:
Cd C:\MySketchBooks
Md LIBRARIES
REM Copy Libraries
Copy C:\Users\Gamer\Documents\Arduino\Libraries\*.* .\
Check that the files have been copied ok then delete the original files/directories
..then delete the directories
Code:
REM Delete sketches from Documents
Del C:\Users\Gamer\Documents\Arduino\*.*
REM delete Libraries
Del C:\Users\Gamer\Documents\Arduino\L:ibraries\*.*
Thanks I'll give this a try
 
Ahh this is driving me crazy! still no luck after removing temp folders. How hard would it be to generate the PPM signal using interrupts and avoid using this library? I've got a working sketch that uses delays to generate the PPM signal but of course it delays the execution of the rest of the code.
 
@readysteadi:

Just a couple of guesses for things that you should double-check:

- did you make sure to close the all instances of the Arduino IDE before making any changes ??

- did you verify that the C:\Users\Gamer\Documents\Arduino\libraries\PulsePosition folder was successfully eliminated (if not, then this folder will almost certainly continue to be used instead of the correct version installed by TeensyDuino, resulting in continued failures) ??

If/when the build reports that multiple libraries were found (just like you detailed in post #3 above), you almost certainly need to take specific actions (e.g. deleting the extra copy, especially if the extra copy is reported to be the one that was used, just like you detailed in post #3 above !!) to remedy the problem, else you're just banging your head against the wall (I've been there myself) !!

Mark J Culross
KD5RXT
 
I'm really at a loss here to get the PPM library working. Paul Stoffregen if you have any thoughts I'd love to hear them, I had given up on this library and went to bitbanging to generate a signal but ultimately it's not going to work. I cam e back to this library to try again. I got an external Drive and did a brand new install of Linux mint this time as Paul had mentioned that's what he used. Installed arduino. Installed Teensyduino and the board library. Downloaded the PPM library and loaded the example sketch LOOPBACK. I go to compile and get the same dreaded message Compilation Erro: Exit Status 1. Can someone else load this library and verify it's working. I've loaded on two different windows systems and now linux with same result. here is copy of error message:
Code:
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp: In constructor 'PulsePositionOutput::PulsePositionOutput()':
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:83:65: error: 'CLOCKS_PER_MICROSECOND' was not declared in this scope; did you mean 'CLOCKS_PER_SEC'?
   83 | #define TX_MINIMUM_FRAME_CLOCKS   (uint32_t)(TX_MINIMUM_FRAME * CLOCKS_PER_MICROSECOND)
      |                                                                 ^~~~~~~~~~~~~~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:109:26: note: in expansion of macro 'TX_MINIMUM_FRAME_CLOCKS'
  109 |         pulse_width[0] = TX_MINIMUM_FRAME_CLOCKS;
      |                          ^~~~~~~~~~~~~~~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp: In constructor 'PulsePositionOutput::PulsePositionOutput(int)':
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:83:65: error: 'CLOCKS_PER_MICROSECOND' was not declared in this scope; did you mean 'CLOCKS_PER_SEC'?
   83 | #define TX_MINIMUM_FRAME_CLOCKS   (uint32_t)(TX_MINIMUM_FRAME * CLOCKS_PER_MICROSECOND)
      |                                                                 ^~~~~~~~~~~~~~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:119:26: note: in expansion of macro 'TX_MINIMUM_FRAME_CLOCKS'
  119 |         pulse_width[0] = TX_MINIMUM_FRAME_CLOCKS;
      |                          ^~~~~~~~~~~~~~~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp: In member function 'bool PulsePositionOutput::begin(uint8_t, uint8_t)':
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:142:13: error: 'FTM0_MOD' was not declared in this scope
  142 |         if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
      |             ^~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:142:36: error: 'FTM0_SC' was not declared in this scope
  142 |         if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
      |                                    ^~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:88:24: error: 'FTM_SC_TOIE' was not declared in this scope; did you mean 'FTM0_SC_VALUE'?
   88 | #define FTM0_SC_VALUE (FTM_SC_TOIE | FTM_SC_CLKS(1) | FTM_SC_PS(0))
      |                        ^~~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:142:55: note: in expansion of macro 'FTM0_SC_VALUE'
  142 |         if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
      |                                                       ^~~~~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:88:38: error: 'FTM_SC_CLKS' was not declared in this scope; did you mean 'FTM0_SC_VALUE'?
   88 | #define FTM0_SC_VALUE (FTM_SC_TOIE | FTM_SC_CLKS(1) | FTM_SC_PS(0))
      |                                      ^~~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:142:55: note: in expansion of macro 'FTM0_SC_VALUE'
  142 |         if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
      |                                                       ^~~~~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:88:55: error: 'FTM_SC_PS' was not declared in this scope
   88 | #define FTM0_SC_VALUE (FTM_SC_TOIE | FTM_SC_CLKS(1) | FTM_SC_PS(0))
      |                                                       ^~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:142:55: note: in expansion of macro 'FTM0_SC_VALUE'
  142 |         if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
      |                                                       ^~~~~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:144:17: error: 'FTM0_CNT' was not declared in this scope
  144 |                 FTM0_CNT = 0;
      |                 ^~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:152:40: error: 'FTM0_C4SC' was not declared in this scope
  152 |           case  6: channel = 4; reg = &FTM0_C4SC; break;
      |                                        ^~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:153:40: error: 'FTM0_C2SC' was not declared in this scope
  153 |           case  9: channel = 2; reg = &FTM0_C2SC; break;
      |                                        ^~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:154:40: error: 'FTM0_C3SC' was not declared in this scope
  154 |           case 10: channel = 3; reg = &FTM0_C3SC; break;
      |                                        ^~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:155:40: error: 'FTM0_C5SC' was not declared in this scope
  155 |           case 20: channel = 5; reg = &FTM0_C5SC; break;
      |                                        ^~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:156:40: error: 'FTM0_C0SC' was not declared in this scope
  156 |           case 22: channel = 0; reg = &FTM0_C0SC; break;
      |                                        ^~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:157:40: error: 'FTM0_C1SC' was not declared in this scope
  157 |           case 23: channel = 1; reg = &FTM0_C1SC; break;
      |                                        ^~~~~~~~~
In file included from /home/mint/.arduino15/packages/teensy/hardware/avr/1.59.0/cores/teensy4/core_pins.h:33,
                 from /home/mint/.arduino15/packages/teensy/hardware/avr/1.59.0/cores/teensy4/wiring.h:39,
                 from /home/mint/.arduino15/packages/teensy/hardware/avr/1.59.0/cores/teensy4/WProgram.h:46,
                 from /tmp/arduino/sketches/5648DD2268A5EF52FE871FD90307AF1D/pch/Arduino.h:6,
                 from /home/mint/Arduino/libraries/PulsePosition/PulsePosition.h:29,
                 from /home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:31:
/home/mint/.arduino15/packages/teensy/hardware/avr/1.59.0/cores/teensy4/pins_arduino.h:142:71: error: cannot convert 'volatile uint32_t*' {aka 'volatile long unsigned int*'} to 'volatile uint8_t*' {aka 'volatile unsigned char*'} in assignment
  142 | #define portOutputRegister(pin)  ((digital_pin_to_info_PGM[(pin)].reg + 0))
      |                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
      |                                                                       |
      |                                                                       volatile uint32_t* {aka volatile long unsigned int*}
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:166:31: note: in expansion of macro 'portOutputRegister'
  166 |                 framePinReg = portOutputRegister(framePin);
      |                               ^~~~~~~~~~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:169:17: error: 'FRAME_PIN_SET' was not declared in this scope
  169 |                 FRAME_PIN_SET();
      |                 ^~~~~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:178:9: error: 'CSC_CHANGE' was not declared in this scope; did you mean 'CHANGE'?
  178 |         CSC_CHANGE(ftm, cscSet); // set on compare match & interrupt
      |         ^~~~~~~~~~
      |         CHANGE
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:181:38: error: 'PORT_PCR_MUX' was not declared in this scope
  181 |         *portConfigRegister(txPin) = PORT_PCR_MUX(4) | PORT_PCR_DSE | PORT_PCR_SRE;
      |                                      ^~~~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:181:56: error: 'PORT_PCR_DSE' was not declared in this scope
  181 |         *portConfigRegister(txPin) = PORT_PCR_MUX(4) | PORT_PCR_DSE | PORT_PCR_SRE;
      |                                                        ^~~~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:181:71: error: 'PORT_PCR_SRE' was not declared in this scope
  181 |         *portConfigRegister(txPin) = PORT_PCR_MUX(4) | PORT_PCR_DSE | PORT_PCR_SRE;
      |                                                                       ^~~~~~~~~~~~
In file included from /home/mint/.arduino15/packages/teensy/hardware/avr/1.59.0/cores/teensy4/core_pins.h:32,
                 from /home/mint/.arduino15/packages/teensy/hardware/avr/1.59.0/cores/teensy4/wiring.h:39,
                 from /home/mint/.arduino15/packages/teensy/hardware/avr/1.59.0/cores/teensy4/WProgram.h:46,
                 from /tmp/arduino/sketches/5648DD2268A5EF52FE871FD90307AF1D/pch/Arduino.h:6,
                 from /home/mint/Arduino/libraries/PulsePosition/PulsePosition.h:29,
                 from /home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:31:
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:182:27: error: 'IRQ_FTM0' was not declared in this scope; did you mean 'IRQ_CTI0'?
  182 |         NVIC_SET_PRIORITY(IRQ_FTM0, 32);
      |                           ^~~~~~~~
/home/mint/.arduino15/packages/teensy/hardware/avr/1.59.0/cores/teensy4/imxrt.h:10069:83: note: in definition of macro 'NVIC_SET_PRIORITY'
10069 | #define NVIC_SET_PRIORITY(irqnum, priority)  (*((volatile uint8_t *)0xE000E400 + (irqnum)) = (uint8_t)(priority))
      |                                                                                   ^~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp: In member function 'bool PulsePositionOutput::write(uint8_t, float)':
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:193:33: error: 'CLOCKS_PER_MICROSECOND' was not declared in this scope; did you mean 'CLOCKS_PER_SEC'?
  193 |         clocks = microseconds * CLOCKS_PER_MICROSECOND;
      |                                 ^~~~~~~~~~~~~~~~~~~~~~
      |                                 CLOCKS_PER_SEC
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp: In member function 'void PulsePositionOutput::isr()':
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:84:63: error: 'CLOCKS_PER_MICROSECOND' was not declared in this scope; did you mean 'CLOCKS_PER_SEC'?
   84 | #define TX_PULSE_WIDTH_CLOCKS     (uint32_t)(TX_PULSE_WIDTH * CLOCKS_PER_MICROSECOND)
      |                                                               ^~~~~~~~~~~~~~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:223:28: note: in expansion of macro 'TX_PULSE_WIDTH_CLOCKS'
  223 |                 ftm->cv += TX_PULSE_WIDTH_CLOCKS;
      |                            ^~~~~~~~~~~~~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:224:17: error: 'CSC_CHANGE_INTACK' was not declared in this scope
  224 |                 CSC_CHANGE_INTACK(ftm, cscClear); // clear on compare match & interrupt
      |                 ^~~~~~~~~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:84:63: error: 'CLOCKS_PER_MICROSECOND' was not declared in this scope; did you mean 'CLOCKS_PER_SEC'?
   84 | #define TX_PULSE_WIDTH_CLOCKS     (uint32_t)(TX_PULSE_WIDTH * CLOCKS_PER_MICROSECOND)
      |                                                               ^~~~~~~~~~~~~~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:237:57: note: in expansion of macro 'TX_PULSE_WIDTH_CLOCKS'
  237 |                         width = pulse_buffer[channel] - TX_PULSE_WIDTH_CLOCKS;
      |                                                         ^~~~~~~~~~~~~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:244:41: error: 'FRAME_PIN_SET' was not declared in this scope
  244 |                                         FRAME_PIN_SET();
      |                                         ^~~~~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:246:41: error: 'FRAME_PIN_CLEAR' was not declared in this scope
  246 |                                         FRAME_PIN_CLEAR();
      |                                         ^~~~~~~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:255:25: error: 'CSC_CHANGE_INTACK' was not declared in this scope
  255 |                         CSC_CHANGE_INTACK(ftm, cscSet); // set on compare match & interrupt
      |                         ^~~~~~~~~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:259:25: error: 'CSC_INTACK' was not declared in this scope
  259 |                         CSC_INTACK(ftm, cscClear); // clear on compare match & interrupt
      |                         ^~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp: In function 'void ftm0_isr()':
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:268:13: error: 'FTM0_SC' was not declared in this scope
  268 |         if (FTM0_SC & 0x80) {
      |             ^~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:279:33: error: 'FTM0_C0SC' was not declared in this scope
  279 |         if ((maskin & 0x01) && (FTM0_C0SC & 0x80)) PulsePositionInput::list[0]->isr();
      |                                 ^~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:280:33: error: 'FTM0_C1SC' was not declared in this scope
  280 |         if ((maskin & 0x02) && (FTM0_C1SC & 0x80)) PulsePositionInput::list[1]->isr();
      |                                 ^~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:281:33: error: 'FTM0_C2SC' was not declared in this scope
  281 |         if ((maskin & 0x04) && (FTM0_C2SC & 0x80)) PulsePositionInput::list[2]->isr();
      |                                 ^~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:282:33: error: 'FTM0_C3SC' was not declared in this scope
  282 |         if ((maskin & 0x08) && (FTM0_C3SC & 0x80)) PulsePositionInput::list[3]->isr();
      |                                 ^~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:283:33: error: 'FTM0_C4SC' was not declared in this scope
  283 |         if ((maskin & 0x10) && (FTM0_C4SC & 0x80)) PulsePositionInput::list[4]->isr();
      |                                 ^~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:284:33: error: 'FTM0_C5SC' was not declared in this scope
  284 |         if ((maskin & 0x20) && (FTM0_C5SC & 0x80)) PulsePositionInput::list[5]->isr();
      |                                 ^~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:290:34: error: 'FTM0_C0SC' was not declared in this scope
  290 |         if ((maskout & 0x01) && (FTM0_C0SC & 0x80)) PulsePositionOutput::list[0]->isr();
      |                                  ^~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:291:34: error: 'FTM0_C1SC' was not declared in this scope
  291 |         if ((maskout & 0x02) && (FTM0_C1SC & 0x80)) PulsePositionOutput::list[1]->isr();
      |                                  ^~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:292:34: error: 'FTM0_C2SC' was not declared in this scope
  292 |         if ((maskout & 0x04) && (FTM0_C2SC & 0x80)) PulsePositionOutput::list[2]->isr();
      |                                  ^~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:293:34: error: 'FTM0_C3SC' was not declared in this scope
  293 |         if ((maskout & 0x08) && (FTM0_C3SC & 0x80)) PulsePositionOutput::list[3]->isr();
      |                                  ^~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:294:34: error: 'FTM0_C4SC' was not declared in this scope
  294 |         if ((maskout & 0x10) && (FTM0_C4SC & 0x80)) PulsePositionOutput::list[4]->isr();
      |                                  ^~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:295:34: error: 'FTM0_C5SC' was not declared in this scope
  295 |         if ((maskout & 0x20) && (FTM0_C5SC & 0x80)) PulsePositionOutput::list[5]->isr();
      |                                  ^~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp: In member function 'bool PulsePositionInput::begin(uint8_t)':
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:327:13: error: 'FTM0_MOD' was not declared in this scope
  327 |         if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
      |             ^~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:327:36: error: 'FTM0_SC' was not declared in this scope
  327 |         if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
      |                                    ^~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:88:24: error: 'FTM_SC_TOIE' was not declared in this scope; did you mean 'FTM0_SC_VALUE'?
   88 | #define FTM0_SC_VALUE (FTM_SC_TOIE | FTM_SC_CLKS(1) | FTM_SC_PS(0))
      |                        ^~~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:327:55: note: in expansion of macro 'FTM0_SC_VALUE'
  327 |         if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
      |                                                       ^~~~~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:88:38: error: 'FTM_SC_CLKS' was not declared in this scope; did you mean 'FTM0_SC_VALUE'?
   88 | #define FTM0_SC_VALUE (FTM_SC_TOIE | FTM_SC_CLKS(1) | FTM_SC_PS(0))
      |                                      ^~~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:327:55: note: in expansion of macro 'FTM0_SC_VALUE'
  327 |         if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
      |                                                       ^~~~~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:88:55: error: 'FTM_SC_PS' was not declared in this scope
   88 | #define FTM0_SC_VALUE (FTM_SC_TOIE | FTM_SC_CLKS(1) | FTM_SC_PS(0))
      |                                                       ^~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:327:55: note: in expansion of macro 'FTM0_SC_VALUE'
  327 |         if (FTM0_MOD != 0xFFFF || (FTM0_SC & 0x7F) != FTM0_SC_VALUE) {
      |                                                       ^~~~~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:329:17: error: 'FTM0_CNT' was not declared in this scope
  329 |                 FTM0_CNT = 0;
      |                 ^~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:337:40: error: 'FTM0_C4SC' was not declared in this scope
  337 |           case  6: channel = 4; reg = &FTM0_C4SC; break;
      |                                        ^~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:338:40: error: 'FTM0_C2SC' was not declared in this scope
  338 |           case  9: channel = 2; reg = &FTM0_C2SC; break;
      |                                        ^~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:339:40: error: 'FTM0_C3SC' was not declared in this scope
  339 |           case 10: channel = 3; reg = &FTM0_C3SC; break;
      |                                        ^~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:340:40: error: 'FTM0_C5SC' was not declared in this scope
  340 |           case 20: channel = 5; reg = &FTM0_C5SC; break;
      |                                        ^~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:341:40: error: 'FTM0_C0SC' was not declared in this scope
  341 |           case 22: channel = 0; reg = &FTM0_C0SC; break;
      |                                        ^~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:342:40: error: 'FTM0_C1SC' was not declared in this scope
  342 |           case 23: channel = 1; reg = &FTM0_C1SC; break;
      |                                        ^~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:356:36: error: 'PORT_PCR_MUX' was not declared in this scope
  356 |         *portConfigRegister(pin) = PORT_PCR_MUX(4);
      |                                    ^~~~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:357:9: error: 'CSC_CHANGE' was not declared in this scope; did you mean 'CHANGE'?
  357 |         CSC_CHANGE(ftm, cscEdge); // input capture & interrupt on rising edge
      |         ^~~~~~~~~~
      |         CHANGE
In file included from /home/mint/.arduino15/packages/teensy/hardware/avr/1.59.0/cores/teensy4/core_pins.h:32,
                 from /home/mint/.arduino15/packages/teensy/hardware/avr/1.59.0/cores/teensy4/wiring.h:39,
                 from /home/mint/.arduino15/packages/teensy/hardware/avr/1.59.0/cores/teensy4/WProgram.h:46,
                 from /tmp/arduino/sketches/5648DD2268A5EF52FE871FD90307AF1D/pch/Arduino.h:6,
                 from /home/mint/Arduino/libraries/PulsePosition/PulsePosition.h:29,
                 from /home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:31:
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:358:27: error: 'IRQ_FTM0' was not declared in this scope; did you mean 'IRQ_CTI0'?
  358 |         NVIC_SET_PRIORITY(IRQ_FTM0, 32);
      |                           ^~~~~~~~
/home/mint/.arduino15/packages/teensy/hardware/avr/1.59.0/cores/teensy4/imxrt.h:10069:83: note: in definition of macro 'NVIC_SET_PRIORITY'
10069 | #define NVIC_SET_PRIORITY(irqnum, priority)  (*((volatile uint8_t *)0xE000E400 + (irqnum)) = (uint8_t)(priority))
      |                                                                                   ^~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp: In member function 'void PulsePositionInput::isr()':
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:368:9: error: 'CSC_INTACK' was not declared in this scope
  368 |         CSC_INTACK(ftm, cscEdge); // input capture & interrupt on rising edge
      |         ^~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:85:65: error: 'CLOCKS_PER_MICROSECOND' was not declared in this scope; did you mean 'CLOCKS_PER_SEC'?
   85 | #define RX_MINIMUM_SPACE_CLOCKS   (uint32_t)(RX_MINIMUM_SPACE * CLOCKS_PER_MICROSECOND)
      |                                                                 ^~~~~~~~~~~~~~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:377:22: note: in expansion of macro 'RX_MINIMUM_SPACE_CLOCKS'
  377 |         if (count >= RX_MINIMUM_SPACE_CLOCKS) {
      |                      ^~~~~~~~~~~~~~~~~~~~~~~
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp: In member function 'float PulsePositionInput::read(uint8_t)':
/home/mint/Arduino/libraries/PulsePosition/PulsePosition.cpp:417:38: error: 'CLOCKS_PER_MICROSECOND' was not declared in this scope; did you mean 'CLOCKS_PER_SEC'?
  417 |         return (float)value / (float)CLOCKS_PER_MICROSECOND;
      |                                      ^~~~~~~~~~~~~~~~~~~~~~
      |                                      CLOCKS_PER_SEC
Multiple libraries were found for "PulsePosition.h"
  Used: /home/mint/Arduino/libraries/PulsePosition
  Not used: /home/mint/.arduino15/packages/teensy/hardware/avr/1.59.0/libraries/PulsePosition
exit status 1

Compilation error: exit status 1
 
I'm really at a loss here to get the PPM library working. Paul Stoffregen if you have any thoughts I'd love to hear them,

As explained earlier, simply delete the installed copy of PulsePosition which is overriding the known-good copy.

This is the most important info:

Code:
Multiple libraries were found for "PulsePosition.h"
  Used: /home/mint/Arduino/libraries/PulsePosition
  Not used: /home/mint/.arduino15/packages/teensy/hardware/avr/1.59.0/libraries/PulsePosition

Arduino IDE is ignoring the good copy from version 1.59.0 and using the bad copy you have installed in /home/mint/Arduino/libraries/PulsePosition.

Just delete the bad copy and then Arduino IDE will using the library installed with version 1.59.0.
 
Installed arduino. Installed Teensyduino and the board library. Downloaded the PPM library and loaded the example sketch LOOPBACK. I go to compile and get the same dreaded message Compilation Erro: Exit Status 1.

@readysteadi: Simply follow the instructions given in post #8 above, and you will successfully resolve your problem. You need to delete the specific folder indicated in those instructions. Your attempt to compile is currently making use of a library that is installed by the Arduino IDE. What you really need is the library that is installed by TeensyDuino. Until you eliminate the Arduino version of the library, it will continue to cause your failure, no matter how many times you reload each of the components.

Hope that is clearer . . .

Mark J Culross
KD5RXT
 
Got it! Thank you. I was having a heck of a time tracking down the libraries and deleting them in Windows though I tried to eliminate all duplicate libraries. Do so in Linux was much easier and it just worked. Thanks for the help!
 
Back
Top