I have a working system with a Pro Trinket and the LSM303DHLC module (p/n 1120). Works fine. Using 3v system so I can run from LiPo.
I am trying to move to a Trinket Mini for the smaller physical size. I updated the driver set to include Trinket Mini. I changed definitions to account for fewer ports, etc.
It won't compile cleanly with the latest errors from: from Wire.cpp: "TWBR was not declared in this scope" and from Wire.h: "void TwoWire::setClock(uint32_t)".
These errors seem to be coming from the drivers so I have the following questions:
Is there a list of changes when moving Pro to Mini?
Are there special includes and drivers for Mini? What changes need to be made to existing drivers?
Is there a better accelerometer chip to be using than LSM303 p/n 1120?
What am I missing?
Thanks.
Moving from Pro Trinket to Trinket Mini
Moderators: adafruit_support_bill, adafruit
Please be positive and constructive with your questions and comments.
- Franklin97355
- Posts: 23912
- Joined: Mon Apr 21, 2008 2:33 pm
Re: Moving from Pro Trinket to Trinket Mini
TWBR is a register in the 328 on the Pro Trinket that is not available in the 85 of the Trinket. The library you are using is not compatible with the smaller chip. I don't know of another module to use but someone else might.
- marke3
- Posts: 205
- Joined: Sat Feb 08, 2014 5:24 pm
Re: Moving from Pro Trinket to Trinket Mini
Here's a tutorial using the TinyWireM library that is optimised for the Trinket.
https://learn.adafruit.com/trinket-rgb-shield-clock
That might do what you need.
https://learn.adafruit.com/trinket-rgb-shield-clock
That might do what you need.
- janowatzki
- Posts: 32
- Joined: Thu Jun 04, 2015 9:42 pm
Re: Moving from Pro Trinket to Trinket Mini
I've looked through the forums and this is the closest I've found for my topic. I'm Trying to build the Trinket RGB Shield Clock, and when I verify in the IDE I get the following:
Am I using the wrong Tiny wire library?
Code: Select all
Arduino: 1.6.7 (Windows 8.1), Board: "Arduino/Genuino Uno"
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp: In function 'void USI_TWI_Master_Initialise()':
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:48:3: error: 'PORT_USI' was not declared in this scope
PORT_USI |= (1<<PIN_USI_SDA); // Enable pullup on SDA, to set high as released state.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:48:19: error: 'PIN_USI_SDA' was not declared in this scope
PORT_USI |= (1<<PIN_USI_SDA); // Enable pullup on SDA, to set high as released state.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:49:19: error: 'PIN_USI_SCL' was not declared in this scope
PORT_USI |= (1<<PIN_USI_SCL); // Enable pullup on SCL, to set high as released state.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:51:3: error: 'DDR_USI' was not declared in this scope
DDR_USI |= (1<<PIN_USI_SCL); // Enable SCL as output.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:54:3: error: 'USIDR' was not declared in this scope
USIDR = 0xFF; // Preload dataregister with "released level" data.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:55:3: error: 'USICR' was not declared in this scope
USICR = (0<<USISIE)|(0<<USIOIE)| // Disable Interrupts.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:55:19: error: 'USISIE' was not declared in this scope
USICR = (0<<USISIE)|(0<<USIOIE)| // Disable Interrupts.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:55:31: error: 'USIOIE' was not declared in this scope
USICR = (0<<USISIE)|(0<<USIOIE)| // Disable Interrupts.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:56:19: error: 'USIWM1' was not declared in this scope
(1<<USIWM1)|(0<<USIWM0)| // Set USI in Two-wire mode.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:56:31: error: 'USIWM0' was not declared in this scope
(1<<USIWM1)|(0<<USIWM0)| // Set USI in Two-wire mode.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:57:19: error: 'USICS1' was not declared in this scope
(1<<USICS1)|(0<<USICS0)|(1<<USICLK)| // Software stobe as counter clock source
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:57:31: error: 'USICS0' was not declared in this scope
(1<<USICS1)|(0<<USICS0)|(1<<USICLK)| // Software stobe as counter clock source
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:57:43: error: 'USICLK' was not declared in this scope
(1<<USICS1)|(0<<USICS0)|(1<<USICLK)| // Software stobe as counter clock source
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:58:19: error: 'USITC' was not declared in this scope
(0<<USITC);
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:59:3: error: 'USISR' was not declared in this scope
USISR = (1<<USISIF)|(1<<USIOIF)|(1<<USIPF)|(1<<USIDC)| // Clear flags,
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:59:19: error: 'USISIF' was not declared in this scope
USISR = (1<<USISIF)|(1<<USIOIF)|(1<<USIPF)|(1<<USIDC)| // Clear flags,
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:59:31: error: 'USIOIF' was not declared in this scope
USISR = (1<<USISIF)|(1<<USIOIF)|(1<<USIPF)|(1<<USIDC)| // Clear flags,
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:59:43: error: 'USIPF' was not declared in this scope
USISR = (1<<USISIF)|(1<<USIOIF)|(1<<USIPF)|(1<<USIDC)| // Clear flags,
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:59:54: error: 'USIDC' was not declared in this scope
USISR = (1<<USISIF)|(1<<USIOIF)|(1<<USIPF)|(1<<USIDC)| // Clear flags,
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:60:21: error: 'USICNT0' was not declared in this scope
(0x0<<USICNT0); // and reset counter.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp: In function 'unsigned char USI_TWI_Start_Transceiver_With_Data(unsigned char*, unsigned char)':
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:130:44: error: 'USISIF' was not declared in this scope
unsigned char const tempUSISR_8bit = (1<<USISIF)|(1<<USIOIF)|(1<<USIPF)|(1<<USIDC)| // Prepare register value to: Clear flags, and
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:130:56: error: 'USIOIF' was not declared in this scope
unsigned char const tempUSISR_8bit = (1<<USISIF)|(1<<USIOIF)|(1<<USIPF)|(1<<USIDC)| // Prepare register value to: Clear flags, and
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:130:68: error: 'USIPF' was not declared in this scope
unsigned char const tempUSISR_8bit = (1<<USISIF)|(1<<USIOIF)|(1<<USIPF)|(1<<USIDC)| // Prepare register value to: Clear flags, and
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:130:79: error: 'USIDC' was not declared in this scope
unsigned char const tempUSISR_8bit = (1<<USISIF)|(1<<USIOIF)|(1<<USIPF)|(1<<USIDC)| // Prepare register value to: Clear flags, and
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:131:40: error: 'USICNT0' was not declared in this scope
(0x0<<USICNT0); // set USI to shift 8 bits i.e. count 16 clock edges.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:196:7: error: 'PORT_USI' was not declared in this scope
PORT_USI &= ~(1<<PIN_USI_SCL); // Pull SCL LOW.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:196:24: error: 'PIN_USI_SCL' was not declared in this scope
PORT_USI &= ~(1<<PIN_USI_SCL); // Pull SCL LOW.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:197:7: error: 'USIDR' was not declared in this scope
USIDR = *(msg++); // Setup data.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:201:7: error: 'DDR_USI' was not declared in this scope
DDR_USI &= ~(1<<PIN_USI_SDA); // Enable SDA as input.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:201:24: error: 'PIN_USI_SDA' was not declared in this scope
DDR_USI &= ~(1<<PIN_USI_SDA); // Enable SDA as input.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:234:7: error: 'DDR_USI' was not declared in this scope
DDR_USI &= ~(1<<PIN_USI_SDA); // Enable SDA as input.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:234:25: error: 'PIN_USI_SDA' was not declared in this scope
DDR_USI &= ~(1<<PIN_USI_SDA); // Enable SDA as input.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:240:9: error: 'USIDR' was not declared in this scope
USIDR = 0xFF; // Load NACK to confirm End Of Transmission.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:244:9: error: 'USIDR' was not declared in this scope
USIDR = 0x00; // Load ACK. Set data register bit 7 (output for SDA) low.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp: In function 'unsigned char USI_TWI_Master_Transfer(unsigned char)':
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:263:3: error: 'USISR' was not declared in this scope
USISR = temp; // Set USISR according to temp.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:265:16: error: 'USISIE' was not declared in this scope
temp = (0<<USISIE)|(0<<USIOIE)| // Interrupts disabled
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:265:28: error: 'USIOIE' was not declared in this scope
temp = (0<<USISIE)|(0<<USIOIE)| // Interrupts disabled
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:266:16: error: 'USIWM1' was not declared in this scope
(1<<USIWM1)|(0<<USIWM0)| // Set USI in Two-wire mode.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:266:28: error: 'USIWM0' was not declared in this scope
(1<<USIWM1)|(0<<USIWM0)| // Set USI in Two-wire mode.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:267:16: error: 'USICS1' was not declared in this scope
(1<<USICS1)|(0<<USICS0)|(1<<USICLK)| // Software clock strobe as source.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:267:28: error: 'USICS0' was not declared in this scope
(1<<USICS1)|(0<<USICS0)|(1<<USICLK)| // Software clock strobe as source.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:267:40: error: 'USICLK' was not declared in this scope
(1<<USICS1)|(0<<USICS0)|(1<<USICLK)| // Software clock strobe as source.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:268:16: error: 'USITC' was not declared in this scope
(1<<USITC); // Toggle Clock Port.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:272:5: error: 'USICR' was not declared in this scope
USICR = temp; // Generate positve SCL edge.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:273:14: error: 'PIN_USI' was not declared in this scope
while( !(PIN_USI & (1<<PIN_USI_SCL)) );// Wait for SCL to go high.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:273:28: error: 'PIN_USI_SCL' was not declared in this scope
while( !(PIN_USI & (1<<PIN_USI_SCL)) );// Wait for SCL to go high.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:276:25: error: 'USIOIF' was not declared in this scope
}while( !(USISR & (1<<USIOIF)) ); // Check for transfer complete.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:279:11: error: 'USIDR' was not declared in this scope
temp = USIDR; // Read out data.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:281:3: error: 'DDR_USI' was not declared in this scope
DDR_USI |= (1<<PIN_USI_SDA); // Enable SDA as output.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:281:18: error: 'PIN_USI_SDA' was not declared in this scope
DDR_USI |= (1<<PIN_USI_SDA); // Enable SDA as output.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp: In function 'unsigned char USI_TWI_Master_Start()':
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:291:3: error: 'PORT_USI' was not declared in this scope
PORT_USI |= (1<<PIN_USI_SCL); // Release SCL.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:291:19: error: 'PIN_USI_SCL' was not declared in this scope
PORT_USI |= (1<<PIN_USI_SCL); // Release SCL.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:296:20: error: 'PIN_USI_SDA' was not declared in this scope
PORT_USI &= ~(1<<PIN_USI_SDA); // Force SDA LOW.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:302:9: error: 'USISR' was not declared in this scope
if( !(USISR & (1<<USISIF)) )
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:302:21: error: 'USISIF' was not declared in this scope
if( !(USISR & (1<<USISIF)) )
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp: In function 'unsigned char USI_TWI_Master_Stop()':
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:316:3: error: 'PORT_USI' was not declared in this scope
PORT_USI &= ~(1<<PIN_USI_SDA); // Pull SDA low.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:316:20: error: 'PIN_USI_SDA' was not declared in this scope
PORT_USI &= ~(1<<PIN_USI_SDA); // Pull SDA low.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:317:19: error: 'PIN_USI_SCL' was not declared in this scope
PORT_USI |= (1<<PIN_USI_SCL); // Release SCL.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:318:12: error: 'PIN_USI' was not declared in this scope
while( !(PIN_USI & (1<<PIN_USI_SCL)) ); // Wait for SCL to go high.
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:324:9: error: 'USISR' was not declared in this scope
if( !(USISR & (1<<USIPF)) )
^
C:\Users\Jerry\Documents\Arduino\libraries\TinyWireM\USI_TWI_Master.cpp:324:21: error: 'USIPF' was not declared in this scope
if( !(USISR & (1<<USIPF)) )
^
exit status 1
Error compiling.
This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
Am I using the wrong Tiny wire library?
- Franklin97355
- Posts: 23912
- Joined: Mon Apr 21, 2008 2:33 pm
Re: Moving from Pro Trinket to Trinket Mini
Try using version 1.6.5 instead of 1.6.7. Which processor are you trying to compile for the error says Uno but you talk about Trinket and Pro Trinket.
- janowatzki
- Posts: 32
- Joined: Thu Jun 04, 2015 9:42 pm
Re: Moving from Pro Trinket to Trinket Mini
Thank you. I completely forgot to check that board option, I had it set for Uno when it should have been Adafruit Trinket, I'm new to this so there are lots of rookie mistakes. I selected to 16MHz because I'm using the 5 volt. So that compile error went away, now I get:
Still, is this a library issue?
Code: Select all
Arduino: 1.6.7 (Windows 8.1), Board: "Adafruit Trinket 16MHz"
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\Wire.cpp: In member function 'void TwoWire::setClock(uint32_t)':
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\Wire.cpp:85:3: error: 'TWBR' was not declared in this scope
TWBR = ((F_CPU / frequency) - 16) / 2;
^
exit status 1
Error compiling.
This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
- Franklin97355
- Posts: 23912
- Joined: Mon Apr 21, 2008 2:33 pm
Re: Moving from Pro Trinket to Trinket Mini
TWBR is a register in the 328 on the Pro Trinket that is not available in the 85 of the Trinket.
- janowatzki
- Posts: 32
- Joined: Thu Jun 04, 2015 9:42 pm
Re: Moving from Pro Trinket to Trinket Mini
The sketch I'm using was made to be used with a regular 5 volt Trinket.
http://learn.adafruit.com/trinket-rgb-shield-clock
I cant understand why it's calling out something for a Trinket Pro.
http://learn.adafruit.com/trinket-rgb-shield-clock
I cant understand why it's calling out something for a Trinket Pro.
- marke3
- Posts: 205
- Joined: Sat Feb 08, 2014 5:24 pm
Re: Moving from Pro Trinket to Trinket Mini
You seem to have switched to the Wire library. If you are using a Trinket, switch back to TinyWireM per your original post.
- janowatzki
- Posts: 32
- Joined: Thu Jun 04, 2015 9:42 pm
Re: Moving from Pro Trinket to Trinket Mini
This is very frustrating. I am using the TinyWireM library. I dont know enough yet to really understand where I might be going wrong.
I did first notice and fix one problem before I even posted this problem, the second library called out, the Adafruit_RGBLCDShield.h had the word "Tiny" in front of it. That was a huge error compiling. I thought I was doing ok fixing that one.
I did first notice and fix one problem before I even posted this problem, the second library called out, the Adafruit_RGBLCDShield.h had the word "Tiny" in front of it. That was a huge error compiling. I thought I was doing ok fixing that one.
- Franklin97355
- Posts: 23912
- Joined: Mon Apr 21, 2008 2:33 pm
Re: Moving from Pro Trinket to Trinket Mini
Re download the code and try it again. There was an error and it should be fixed.
- janowatzki
- Posts: 32
- Joined: Thu Jun 04, 2015 9:42 pm
Re: Moving from Pro Trinket to Trinket Mini
Started completely from scratch. Uninstalled 1.6.7 installed 1.6.5. Ran the trinket blink script, ran great. Went back to the the sketch to set the date and time for the DS1307 and I get this:
I'm about to take up bird watching as my new hobby, less stressful.
Thanks for all the help so far.
Code: Select all
Arduino: 1.6.5 (Windows 8.1), Board: "Adafruit Trinket 8MHz"
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\Wire.cpp: In member function 'void TwoWire::setClock(uint32_t)':
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\Wire.cpp:80:3: error: 'TWBR' was not declared in this scope
TWBR = ((F_CPU / frequency) - 16) / 2;
^
Error compiling.
This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
Thanks for all the help so far.
- Franklin97355
- Posts: 23912
- Joined: Mon Apr 21, 2008 2:33 pm
Re: Moving from Pro Trinket to Trinket Mini
TWBR is not an ATtiny85 register so this code will not work with a Trinket.'TWBR' was not declared in this scope
- marke3
- Posts: 205
- Joined: Sat Feb 08, 2014 5:24 pm
Re: Moving from Pro Trinket to Trinket Mini
The error in Wire.m is there in your messages. Are you using RTClib.h? There is an include for Wire.h in that so that may be where it is sneaking in. Try TinyRTClib.h
- janowatzki
- Posts: 32
- Joined: Thu Jun 04, 2015 9:42 pm
Re: Moving from Pro Trinket to Trinket Mini
Changed it to this:
Got this error:
Code: Select all
/*********************
Sketch to set the time and date for the DS1307 Real Time Clock
with an Adafruit Trinket mini microcontroller
**********************/
// include the library code:
#include <TinyWireM.h>
#include <TinyRTClib.h>
RTC_DS1307 RTC;
void setup() {
RTC.begin();
if(!RTC.isrunning()) {
RTC.adjust(DateTime(__DATE__, __TIME__));
}
}
Code: Select all
Arduino: 1.6.5 (Windows 8.1), Board: "Adafruit Trinket 8MHz"
c:/program files (x86)/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.8.1/../../../../avr/bin/ld.exe: Dwarf Error: mangled line number section.
C:\Users\Jerry\AppData\Local\Temp\build495877545693886820.tmp/core.a(main.cpp.o): In function `main':
main.cpp:(.text.startup.main+0xa): undefined reference to `loop'
collect2.exe: error: ld returned 1 exit status
Error compiling.
This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
Please be positive and constructive with your questions and comments.