
Originally Posted by
TeensyWolf
Thanks so much for the help. I installed VisualTeensy and now I am able to load the simple "Blink" example to my Teensy 4.0.
However, when I attempt to make the program I have been developing for a while now, I am getting a long list of errors that I had not experience when using the Arduino IDE. I've dumped the entire terminal output below. Does any of this make sense to people?
Code:
CORE [ASM] memset.S
CORE [ASM] memcpy-armv7m.S
CORE [CC] sm_util.c
CORE [CC] sm_calloc.c
CORE [CC] sm_free.c
CORE [CC] clockspeed.c
CORE [CC] usb_keyboard.c
CORE [CC] usb_serial.c
CORE [CC] usb_seremu.c
CORE [CC] sm_malloc.c
CORE [CC] usb.c
CORE [CC] usb_joystick.c
CORE [CC] delay.c
CORE [CC] analog.c
CORE [CC] sm_zalloc.c
CORE [CC] sm_szalloc.c
CORE [CC] interrupt.c
CORE [CC] sm_alloc_valid.c
CORE [CC] usb_serial3.c
CORE [CC] rtc.c
CORE [CC] fuse.c
CORE [CC] startup.c
CORE [CC] debugprintf.c
CORE [CC] eeprom.c
CORE [CC] sm_hash.c
CORE [CC] extmem.c
CORE [CC] sm_realloc_move.c
CORE [CC] nonstd.c
CORE [CC] sm_pool.c
CORE [CC] usb_rawhid.c
CORE [CC] usb_touch.c
CORE [CC] bootdata.c
CORE [CC] tempmon.c
CORE [CC] digital.c
CORE [CC] sm_realloc_i.c
CORE [CC] sm_realloc.c
CORE [CC] usb_midi.c
CORE [CC] keylayouts.c
CORE [CC] pwm.c
CORE [CC] usb_serial2.c
CORE [CC] sm_malloc_stats.c
CORE [CC] usb_mtp.c
CORE [CC] usb_desc.c
CORE [CC] usb_mouse.c
CORE [CPP] IntervalTimer.cpp
CORE [CPP] HardwareSerial6.cpp
CORE [CPP] DMAChannel.cpp
CORE [CPP] yield.cpp
CORE [CPP] IPAddress.cpp
CORE [CPP] HardwareSerial3.cpp
CORE [CPP] serialEvent4.cpp
CORE [CPP] HardwareSerial7.cpp
CORE [CPP] EventResponder.cpp
CORE [CPP] usb_inst.cpp
CORE [CPP] HardwareSerial5.cpp
CORE [CPP] Time.cpp
CORE [CPP] serialEventUSB2.cpp
CORE [CPP] CrashReport.cpp
CORE [CPP] serialEvent5.cpp
CORE [CPP] usb_flightsim.cpp
CORE [CPP] serialEvent8.cpp
CORE [CPP] serialEvent3.cpp
CORE [CPP] HardwareSerial2.cpp
CORE [CPP] Tone.cpp
CORE [CPP] WMath.cpp
CORE [CPP] HardwareSerial4.cpp
CORE [CPP] main.cpp
CORE [CPP] WString.cpp
CORE [CPP] serialEventUSB1.cpp
CORE [CPP] HardwareSerial1.cpp
CORE [CPP] AudioStream.cpp
CORE [CPP] serialEvent7.cpp
CORE [CPP] serialEvent.cpp
CORE [CPP] new.cpp
CORE [CPP] serialEvent2.cpp
CORE [CPP] usb_audio.cpp
CORE [CPP] Stream.cpp
CORE [CPP] serialEvent1.cpp
CORE [CPP] Print.cpp
CORE [CPP] serialEvent6.cpp
CORE [CPP] HardwareSerial8.cpp
CORE [CPP] HardwareSerial.cpp
LIB [CPP] keyboardHIDExtras.cpp
LIB [CPP] hub.cpp
LIB [CPP] memory.cpp
LIB [CPP] digitizer.cpp
LIB [CPP] enumeration.cpp
LIB [CPP] rawhid.cpp
LIB [CPP] joystick.cpp
LIB [CPP] Print.cpp
LIB [CPP] adk.cpp
LIB [CPP] bluetooth.cpp
LIB [CPP] antplus.cpp
LIB [CPP] SerEMU.cpp
LIB [CPP] hid.cpp
LIB [CPP] MassStorageDriver.cpp
LIB [CPP] midi.cpp
LIB [CPP] mouse.cpp
CORE [AR] .vsteensy/build/core.a
Teensy core built successfully
LIB [CPP] serial.cpp
LIB [CPP] ehci.cpp
USER [CPP] main.cpp
In file included from src/main.cpp:15:0:
lib/USBHost_t36/USBHost_t36.h:382:55: error: 'DEC' was not declared in this scope
static void print_(const char *s, int n, uint8_t b = DEC) {}
^
lib/USBHost_t36/USBHost_t36.h:383:64: error: 'DEC' was not declared in this scope
static void print_(const char *s, unsigned int n, uint8_t b = DEC) {}
^
lib/USBHost_t36/USBHost_t36.h:384:56: error: 'DEC' was not declared in this scope
static void print_(const char *s, long n, uint8_t b = DEC) {}
^
lib/USBHost_t36/USBHost_t36.h:385:65: error: 'DEC' was not declared in this scope
static void print_(const char *s, unsigned long n, uint8_t b = DEC) {}
^
lib/USBHost_t36/USBHost_t36.h:386:57: error: 'DEC' was not declared in this scope
static void println_(const char *s, int n, uint8_t b = DEC) {}
^
lib/USBHost_t36/USBHost_t36.h:387:66: error: 'DEC' was not declared in this scope
static void println_(const char *s, unsigned int n, uint8_t b = DEC) {}
^
lib/USBHost_t36/USBHost_t36.h:388:58: error: 'DEC' was not declared in this scope
static void println_(const char *s, long n, uint8_t b = DEC) {}
^
lib/USBHost_t36/USBHost_t36.h:389:67: error: 'DEC' was not declared in this scope
static void println_(const char *s, unsigned long n, uint8_t b = DEC) {}
^
lib/USBHost_t36/USBHost_t36.h: In constructor 'USBDriver::USBDriver()':
lib/USBHost_t36/USBHost_t36.h:434:21: error: 'NULL' was not declared in this scope
USBDriver() : next(NULL), device(NULL) {}
^
In file included from src/main.cpp:15:0:
lib/USBHost_t36/USBHost_t36.h: At global scope:
lib/USBHost_t36/USBHost_t36.h:537:22: error: 'NULL' was not declared in this scope
USBHIDInput *next = NULL;
^
lib/USBHost_t36/USBHost_t36.h:540:23: error: 'NULL' was not declared in this scope
Device_t *mydevice = NULL;
^
lib/USBHost_t36/USBHost_t36.h:566:21: error: 'NULL' was not declared in this scope
BTHIDInput *next = NULL;
^
lib/USBHost_t36/USBHost_t36.h:572:23: error: 'NULL' was not declared in this scope
Device_t *btdevice = NULL;
^
lib/USBHost_t36/USBHost_t36.h:1410:54: error: expected class-name before '{' token
class USBSerialBase: public USBDriver, public Stream {
^
lib/USBHost_t36/USBHost_t36.h:1437:10: error: 'size_t' does not name a type
virtual size_t write(uint8_t c);
^
lib/USBHost_t36/USBHost_t36.h:1442:8: error: 'Print' has not been declared
using Print::write;
^
lib/USBHost_t36/USBHost_t36.h:1580:2: error: 'size_t' does not name a type
size_t write(const void *data, const size_t size);
^
lib/USBHost_t36/USBHost_t36.h:1581:29: error: 'size_t' does not name a type
int read(void *data, const size_t size);
^
lib/USBHost_t36/USBHost_t36.h:1649:57: error: 'size_t' does not name a type
static uint8_t * findStreamSync(uint8_t *stream, const size_t rlen, int *pos);
^
lib/USBHost_t36/USBHost_t36.h:1655:33: error: 'size_t' does not name a type
const uint8_t *payload, const size_t dataLength);
^
lib/USBHost_t36/USBHost_t36.h:1657:33: error: 'size_t' does not name a type
const uint8_t *payload, const size_t dataLength);
^
lib/USBHost_t36/USBHost_t36.h:1659:33: error: 'size_t' does not name a type
const uint8_t *payload, const size_t dataLength);
^
lib/USBHost_t36/USBHost_t36.h:1697:61: error: 'size_t' does not name a type
void payload_HRM(TDCONFIG *cfg, const uint8_t *data, const size_t dataLength);
^
lib/USBHost_t36/USBHost_t36.h:1707:64: error: 'size_t' does not name a type
void payload_SPDCAD(TDCONFIG *cfg, const uint8_t *data, const size_t dataLength);
^
lib/USBHost_t36/USBHost_t36.h:1721:63: error: 'size_t' does not name a type
void payload_POWER(TDCONFIG *cfg, const uint8_t *data, const size_t dataLength);
^
lib/USBHost_t36/USBHost_t36.h:1734:64: error: 'size_t' does not name a type
void payload_STRIDE(TDCONFIG *cfg, const uint8_t *data, const size_t dataLength);
^
lib/USBHost_t36/USBHost_t36.h:1742:63: error: 'size_t' does not name a type
void payload_SPEED(TDCONFIG *cfg, const uint8_t *data, const size_t dataLength);
^
lib/USBHost_t36/USBHost_t36.h:1749:65: error: 'size_t' does not name a type
void payload_CADENCE(TDCONFIG *cfg, const uint8_t *data, const size_t dataLength);
^
lib/USBHost_t36/USBHost_t36.h: In member function 'void AntPlus::onHeartRateMonitor(void (*)(int, int, int), uint32_t)':
lib/USBHost_t36/USBHost_t36.h:1548:30: error: 'memset' was not declared in this scope
memset(&hrm, 0, sizeof(hrm));
^
lib/USBHost_t36/USBHost_t36.h: In member function 'void AntPlus::onSpeedCadence(void (*)(float, float, float), uint32_t)':
lib/USBHost_t36/USBHost_t36.h:1553:36: error: 'memset' was not declared in this scope
memset(&spdcad, 0, sizeof(spdcad));
^
lib/USBHost_t36/USBHost_t36.h: In member function 'void AntPlus::onSpeed(void (*)(float, float), uint32_t)':
lib/USBHost_t36/USBHost_t36.h:1558:30: error: 'memset' was not declared in this scope
memset(&spd, 0, sizeof(spd));
^
lib/USBHost_t36/USBHost_t36.h: In member function 'void AntPlus::onCadence(void (*)(float), uint32_t)':
lib/USBHost_t36/USBHost_t36.h:1563:30: error: 'memset' was not declared in this scope
memset(&cad, 0, sizeof(cad));
^
lib/USBHost_t36/USBHost_t36.h: At global scope:
lib/USBHost_t36/USBHost_t36.h:1786:56: error: expected class-name before '{' token
class USBSerialEmu : public USBHIDInput, public Stream {
^
lib/USBHost_t36/USBHost_t36.h:1798:10: error: 'size_t' does not name a type
virtual size_t write(uint8_t c);
^
lib/USBHost_t36/USBHost_t36.h:1801:8: error: 'Print' has not been declared
using Print::write;
^
lib/USBHost_t36/USBHost_t36.h:2012:2: error: 'size_t' does not name a type
size_t write(size_t len, uint8_t *buf);
^
lib/USBHost_t36/USBHost_t36.h:2133:5: error: 'elapsedMillis' does not name a type
elapsedMillis _emlastRead;
^
lib/USBHost_t36/USBHost_t36.h: In member function 'bool msController::available()':
lib/USBHost_t36/USBHost_t36.h:2067:28: error: 'delay' was not declared in this scope
bool available() { delay(0); return deviceAvailable; }
^
src/main.cpp: In function 'void setup()':
src/main.cpp:66:11: error: 'Serial' was not declared in this scope
while (!Serial) ; // wait for Arduino Serial Monitor
^
src/main.cpp:67:3: error: 'Serial' was not declared in this scope
Serial.println("\n\nUSB Host Testing");
^
src/main.cpp:68:34: error: 'DEC' was not declared in this scope
Serial.println(sizeof(USBHub), DEC);
^
src/main.cpp:74:21: error: 'OUTPUT' was not declared in this scope
pinMode(ENABLE_1, OUTPUT);
^
src/main.cpp:74:27: error: 'pinMode' was not declared in this scope
pinMode(ENABLE_1, OUTPUT);
^
src/main.cpp: In function 'void loop()':
src/main.cpp:90:7: error: 'Serial' was not declared in this scope
if (Serial.available()) {
^
src/main.cpp:114:9: error: 'Serial' was not declared in this scope
Serial.printf("*** Device %s - disconnected ***\n", driver_names[i]);
^
src/main.cpp:117:9: error: 'Serial' was not declared in this scope
Serial.printf("*** Device %s %x:%x - connected ***\n", driver_names[i], drivers[i]->idVendor(), drivers[i]->idProduct());
^
src/main.cpp:133:9: error: 'Serial' was not declared in this scope
Serial.printf("*** HID Device %s - disconnected ***\n", hid_driver_names[i]);
^
src/main.cpp:136:9: error: 'Serial' was not declared in this scope
Serial.printf("*** HID Device %s %x:%x - connected ***\n", hid_driver_names[i], hiddrivers[i]->idVendor(), hiddrivers[i]->idProduct());
^
src/main.cpp:172:68: error: 'abs' was not declared in this scope
motorSpeed[0][currentSegment] = 2*abs(143 - scaledValue); // motor speed scaled by offset from center
^
src/main.cpp:172:68: note: suggested alternative:
In file included from src/main.cpp:17:0:
c:\progra~2\arduino\hardware\tools\arm\arm-none-eabi\include\c++\5.4.1\cmath:99:5: note: 'std::abs'
abs(_Tp __x)
^
src/main.cpp:200:21: error: 'delay' was not declared in this scope
delay(10);
^
src/main.cpp:205:53: error: 'analogWrite' was not declared in this scope
analogWrite(motorPin[0][j], motorSpeed[0][j]);
^
src/main.cpp:206:54: error: 'digitalWrite' was not declared in this scope
digitalWrite(motorPin[1][j], motorSpeed[1][j]);
^
src/main.cpp:207:9: error: 'Serial' was not declared in this scope
Serial.printf("\nSeg%d LR:%d UD:%d ", j, motorSpeed[0][j], motorSpeed[1][j]);
^
src/main.cpp:209:7: error: 'Serial' was not declared in this scope
Serial.println();
^
src/main.cpp:212:5: error: 'Serial' was not declared in this scope
Serial.println();
^
src/main.cpp:155:14: warning: unused variable 'buttons' [-Wunused-variable]
uint32_t buttons = joystick1.getButtons();
^
src/main.cpp: In function 'void OnHIDExtrasRelease(uint32_t, uint16_t)':
src/main.cpp:225:3: error: 'Serial' was not declared in this scope
Serial.print("HID (");
^
src/main.cpp:226:21: error: 'HEX' was not declared in this scope
Serial.print(top, HEX);
^
make: *** [makefile:231: .vsteensy/build/src/main.cpp.o] Error 1
make: *** Waiting for unfinished jobs....
LIB [CPP] keyboard.cpp
The terminal process "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command C:/Users/fh829e/Documents/VisualTeensy_v1.5.0/make.exe all -j -Otarget" terminated with exit code: 1.
And the code I am running, using USBHost_t36.h:
Code:
#include "USBHost_t36.h"
#include <iostream> // std::cout
#include <cmath> // std::abs
USBHost myusb;
USBHIDParser hid1(myusb);
JoystickController joystick1(myusb);
// PIN DEFINITIONS
#define PHASE_1 2 // DIGITAL
#define ENABLE_1 3 // ANALOG
#define PHASE_4 4 // DIGITAL
#define ENABLE_4 5 // ANALOG
#define PHASE_3 6 // DIGITAL
#define ENABLE_3 7 // ANALOG
#define ENABLE_5 18 // ANALOG
#define ENABLE_2 19 // ANALOG
#define PHASE_5 20 // DIGITAL
#define PHASE_2 21 // DIGITAL
#define CAN_TX 22 // CAN BUS TX
#define CAN_RX 23 // CAN BUS RX
// MISC
#define BAUDRATE 9600
int user_axis[64];
uint32_t buttons_prev = 0;
const uint8_t motorPin[2][5] = {{ENABLE_1,ENABLE_2,ENABLE_3,ENABLE_4,ENABLE_5},
{PHASE_1 ,PHASE_2 ,PHASE_3 ,PHASE_4 ,PHASE_5 }};
uint8_t motorSpeed[2][5] = {{0,0,0,0,0},{0,0,0,0,0}};
uint8_t currentSegment = 0;
int linkNumb = 0;
USBDriver *drivers[] = {&joystick1, &hid1};
#define CNT_DEVICES (sizeof(drivers)/sizeof(drivers[0]))
const char * driver_names[CNT_DEVICES] = {"JOY1D", "HID1"};
bool driver_active[CNT_DEVICES] = {false, false};
// Lets also look at HID Input devices
USBHIDInput *hiddrivers[] = {&joystick1};
#define CNT_HIDDEVICES (sizeof(hiddrivers)/sizeof(hiddrivers[0]))
const char * hid_driver_names[CNT_DEVICES] = {"Joystick1"};
bool hid_driver_active[CNT_DEVICES] = {false};
bool show_changed_only = false;
uint8_t joystick_left_trigger_value = 0;
uint8_t joystick_right_trigger_value = 0;
uint64_t joystick_full_notify_mask = (uint64_t) - 1;
void setup()
{
while (!Serial) ; // wait for Arduino Serial Monitor
Serial.println("\n\nUSB Host Testing");
Serial.println(sizeof(USBHub), DEC);
myusb.begin();
//=============================================================================
// Set OUTPUT pins
//=============================================================================
pinMode(ENABLE_1, OUTPUT);
pinMode(PHASE_1, OUTPUT);
pinMode(ENABLE_2, OUTPUT);
pinMode(PHASE_2, OUTPUT);
pinMode(ENABLE_3, OUTPUT);
pinMode(PHASE_3, OUTPUT);
pinMode(ENABLE_4, OUTPUT);
pinMode(PHASE_4, OUTPUT);
pinMode(ENABLE_5, OUTPUT);
pinMode(PHASE_5, OUTPUT);
}
void loop()
{
myusb.Task();
if (Serial.available()) {
int ch = Serial.read(); // get the first char.
while (Serial.read() != -1) ;
if ((ch == 'b') || (ch == 'B')) {
Serial.println("Only notify on Basic Axis changes");
joystick1.axisChangeNotifyMask(0x3ff);
} else if ((ch == 'f') || (ch == 'F')) {
Serial.println("Only notify on Full Axis changes");
joystick1.axisChangeNotifyMask(joystick_full_notify_mask);
} else {
if (show_changed_only) {
show_changed_only = false;
Serial.println("\n*** Show All fields mode ***");
} else {
show_changed_only = true;
Serial.println("\n*** Show only changed fields mode ***");
}
}
}
for (uint8_t i = 0; i < CNT_DEVICES; i++) {
if (*drivers[i] != driver_active[i]) {
if (driver_active[i]) {
Serial.printf("*** Device %s - disconnected ***\n", driver_names[i]);
driver_active[i] = false;
} else {
Serial.printf("*** Device %s %x:%x - connected ***\n", driver_names[i], drivers[i]->idVendor(), drivers[i]->idProduct());
driver_active[i] = true;
const uint8_t *psz = drivers[i]->manufacturer();
if (psz && *psz) Serial.printf(" manufacturer: %s\n", psz);
psz = drivers[i]->product();
if (psz && *psz) Serial.printf(" product: %s\n", psz);
psz = drivers[i]->serialNumber();
if (psz && *psz) Serial.printf(" Serial: %s\n", psz);
}
}
}
for (uint8_t i = 0; i < CNT_HIDDEVICES; i++) {
if (*hiddrivers[i] != hid_driver_active[i]) {
if (hid_driver_active[i]) {
Serial.printf("*** HID Device %s - disconnected ***\n", hid_driver_names[i]);
hid_driver_active[i] = false;
} else {
Serial.printf("*** HID Device %s %x:%x - connected ***\n", hid_driver_names[i], hiddrivers[i]->idVendor(), hiddrivers[i]->idProduct());
hid_driver_active[i] = true;
const uint8_t *psz = hiddrivers[i]->manufacturer();
if (psz && *psz) Serial.printf(" manufacturer: %s\n", psz);
psz = hiddrivers[i]->product();
if (psz && *psz) Serial.printf(" product: %s\n", psz);
psz = hiddrivers[i]->serialNumber();
if (psz && *psz) Serial.printf(" Serial: %s\n", psz);
}
}
}
// Collect servomotor input and update
if (joystick1.available()) {
uint64_t axis_mask = joystick1.axisMask();
uint64_t axis_changed_mask = joystick1.axisChangedMask();
//Serial.print("Joystick: buttons = ");
uint32_t buttons = joystick1.getButtons();
//Serial.print(buttons, HEX);
if (show_changed_only) {
for (uint8_t i = 0; axis_changed_mask != 0; i++, axis_changed_mask >>= 1) {
if (axis_changed_mask & 1) {
//Serial.printf(" %d:%d", i, joystick1.getAxis(i));
}
}
}
else { // Control snake positions
for (uint8_t i = 0; axis_mask != 0; i++, axis_mask >>= 1) {
if (axis_mask & 1) {
uint8_t axisValue = joystick1.getAxis(i);
uint8_t scaledValue = (255-32)*(axisValue-0)/(255-0)+32;
// uint8_t scaledValue = axisValue;
//Serial.printf(" %d:%d", i, axisValue);
if (i==2) { // Use right thumbpad input to set motorspeed and direction
motorSpeed[0][currentSegment] = 2*abs(143 - scaledValue); // motor speed scaled by offset from center
if (scaledValue < 143) { // if down, phase of 1 = CW
motorSpeed[1][currentSegment] = 1;
}
else { // if up, phase of 0 = CCW
motorSpeed[1][currentSegment] = 0;
}
}
// else if (i==5) {
// motorSpeed[1][0] = scaledValue;
// }
else if (i==9) {
if (axisValue==0 && currentSegment < 4) {
currentSegment++;
// for (int j = currentSegment; j > 0; j--) {
// motorSpeed[0][j] = motorSpeed[0][j-1];
// motorSpeed[1][j] = motorSpeed[1][j-1];
// }
}
else if (axisValue==4 && currentSegment > 0) {
currentSegment--;
// for (int j = 0; j <= currentSegment; j++) {
// motorSpeed[0][j] = motorSpeed[0][j+1];
// motorSpeed[1][j] = motorSpeed[1][j+1];
// }
// motorSpeed[0][currentSegment + 1] = 144;
// motorSpeed[1][currentSegment + 1] = 144;
}
delay(10);
}
}
}
for (uint8_t j = 0; j < 5; j++) {
analogWrite(motorPin[0][j], motorSpeed[0][j]);
digitalWrite(motorPin[1][j], motorSpeed[1][j]);
Serial.printf("\nSeg%d LR:%d UD:%d ", j, motorSpeed[0][j], motorSpeed[1][j]);
}
Serial.println();
Serial.printf("CS:%d ", currentSegment);
}
Serial.println();
joystick1.joystickDataClear();
}
// for (uint8_t i = 0; i < 5; i++) {
// analogWrite(motorPin[0][i], 0);
// digitalWrite(motorPin[1][i], 0);
// }
}
void OnHIDExtrasRelease(uint32_t top, uint16_t key)
{
Serial.print("HID (");
Serial.print(top, HEX);
Serial.print(") key release:");
Serial.println(key, HEX);
}
Thanks again for the help!