[SOLVED] FemtoDuino Clone and the MicroFTX board problem.

I have a very space sensitive project, and I plan on using these two schematics to build a form fitting pcb for the project itself. As a test I took both standalone boards and wired them up according to the manufacturers tutorial. Checked and checked again, these boards do not work together. I sent a sketch file out to the board using first the included drivers for arduino, then the FTX board. I reburned the bootloader using the ArduinoISP method. I keep getting the same old "avrdude: stk500_getsync(): not in sync: resp=0x00" error that is synonymous with a failure to reset before programming. The manufacturer explicitly states these two boards work together. They say that you can use the RTS pin for the reset. They say they say they say.

I have followed the instructions to a T and still cannot get a simple sketch to upload. I'm hoping someone has dealt with this before and can provide some insight to my problem.

I am at a complete loss and in need of help.

Here's the wiring instructions:
MicroFTX femtoduino
GND GND
TX RX
RX TX
V VCC
RTS DTR

The femtoduino to USB link: http://www.femtoduino.com/femtoduino-and-ftdi-ft232rl-usb-to-serial-breakout-board/

And the MicroFTX link: MicroFTX

If you have RTS connected to DTR properly, that's correct. Taking RTS low will take DTR of the femto low. Bring RTS high again (and hence DTR), and a reset will occur.

The serial monitor I just released does exactly this to reset either the Mega2560 or the Uno it's connected to via a serial port.

The board does reset, but still is out of sync.

I ISP'ed the Blink sketch to the femto, it blinks normally, there is a slight 1 sec interrupt in the blinking when it resets during the upload, and then it just continues to blink. 10 seconds later I get the sync error.

Did you try the trouble shooting suggestions?

I went through them, yes, step by step. Flashed firmware, used alt pin wiring, etc. I'm at a loss.

Maybe TX & RX are swapped? If the reset is working, the USB communication with the MicroFTX is working, so the problem is probably either in the wiring or on the AVR end. You might try verifying that the MicroFTX fully works by shorting the TX & RX together, connecting with a terminal emulator, and verifying that characters are echoed back.

Lucky me to get these kinda of problems.
IO loopback works correctly, the characters are echoed.

I reversed the TX/RX lines and was fully aware of them being connected in TX-TX/RX-RX fashion and obviously it didn't work, so I replaced them to their original positions.

What I do notice to be very strange is that when I connected either TX or RX pin to the TX pin on the FemtoDuino, I get a small amount of power, not enough to run the Blink sketch preloaded on it, but the red power indicator is on fairly bright. This happens when the boards have a common ground, but no voltage-in is applied.

Would you mind...

  • enabling 'Show verbose output during' [compilation] and [upload] in your Arduino IDE (under the File -> Preferences menu)
  • attempting to re-upload the sketch
  • and copying/pasting the console output here? Additionally, what version of the Arduino IDE are you using

I'll be happy to help.

I have Mr. Jim Paris, and Femtoduino helping me! My day is looking up.

Anyway, here's the verbose output:

C:\Users\XXXX\Documents\Arduino\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=104 -IC:\Users\XXXX\Documents\Arduino\hardware\arduino\cores\arduino -IC:\Users\XXXX\Documents\Arduino\hardware\arduino\variants\standard C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\Blink.cpp -o C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\Blink.cpp.o 
  Using previously compiled: C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\malloc.c.o
  Using previously compiled: C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\WInterrupts.c.o
  Using previously compiled: C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\wiring.c.o
  Using previously compiled: C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\wiring_analog.c.o
  Using previously compiled: C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\wiring_digital.c.o
  Using previously compiled: C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\wiring_pulse.c.o
  Using previously compiled: C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\wiring_shift.c.o
  Using previously compiled: C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\CDC.cpp.o
  Using previously compiled: C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\HardwareSerial.cpp.o
  Using previously compiled: C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\HID.cpp.o
  Using previously compiled: C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\IPAddress.cpp.o
  Using previously compiled: C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\main.cpp.o
  Using previously compiled: C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\new.cpp.o
  Using previously compiled: C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\Print.cpp.o
  Using previously compiled: C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\Stream.cpp.o
  Using previously compiled: C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\Tone.cpp.o
  Using previously compiled: C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\USBCore.cpp.o
  Using previously compiled: C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\WMath.cpp.o
  Using previously compiled: C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\WString.cpp.o
C:\Users\XXXX\Documents\Arduino\hardware\tools\avr\bin\avr-ar rcs C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\core.a C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\malloc.c.o 
C:\Users\XXXX\Documents\Arduino\hardware\tools\avr\bin\avr-ar rcs C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\core.a C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\WInterrupts.c.o 
C:\Users\XXXX\Documents\Arduino\hardware\tools\avr\bin\avr-ar rcs C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\core.a C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\wiring.c.o 
C:\Users\XXXX\Documents\Arduino\hardware\tools\avr\bin\avr-ar rcs C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\core.a C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\wiring_analog.c.o 
C:\Users\XXXX\Documents\Arduino\hardware\tools\avr\bin\avr-ar rcs C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\core.a C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\wiring_digital.c.o 
C:\Users\XXXX\Documents\Arduino\hardware\tools\avr\bin\avr-ar rcs C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\core.a C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\wiring_pulse.c.o 
C:\Users\XXXX\Documents\Arduino\hardware\tools\avr\bin\avr-ar rcs C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\core.a C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\wiring_shift.c.o 
C:\Users\XXXX\Documents\Arduino\hardware\tools\avr\bin\avr-ar rcs C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\core.a C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\CDC.cpp.o 
C:\Users\XXXX\Documents\Arduino\hardware\tools\avr\bin\avr-ar rcs C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\core.a C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\HardwareSerial.cpp.o 
C:\Users\XXXX\Documents\Arduino\hardware\tools\avr\bin\avr-ar rcs C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\core.a C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\HID.cpp.o 
C:\Users\XXXX\Documents\Arduino\hardware\tools\avr\bin\avr-ar rcs C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\core.a C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\IPAddress.cpp.o 
C:\Users\XXXX\Documents\Arduino\hardware\tools\avr\bin\avr-ar rcs C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\core.a C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\main.cpp.o 
C:\Users\XXXX\Documents\Arduino\hardware\tools\avr\bin\avr-ar rcs C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\core.a C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\new.cpp.o 
C:\Users\XXXX\Documents\Arduino\hardware\tools\avr\bin\avr-ar rcs C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\core.a C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\Print.cpp.o 
C:\Users\XXXX\Documents\Arduino\hardware\tools\avr\bin\avr-ar rcs C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\core.a C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\Stream.cpp.o 
C:\Users\XXXX\Documents\Arduino\hardware\tools\avr\bin\avr-ar rcs C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\core.a C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\Tone.cpp.o 
C:\Users\XXXX\Documents\Arduino\hardware\tools\avr\bin\avr-ar rcs C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\core.a C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\USBCore.cpp.o 
C:\Users\XXXX\Documents\Arduino\hardware\tools\avr\bin\avr-ar rcs C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\core.a C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\WMath.cpp.o 
C:\Users\XXXX\Documents\Arduino\hardware\tools\avr\bin\avr-ar rcs C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\core.a C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\WString.cpp.o 
C:\Users\XXXX\Documents\Arduino\hardware\tools\avr\bin\avr-gcc -Os -Wl,--gc-sections -mmcu=atmega328p -o C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\Blink.cpp.elf C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\Blink.cpp.o C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\core.a -LC:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp -lm 
C:\Users\XXXX\Documents\Arduino\hardware\tools\avr\bin\avr-objcopy -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\Blink.cpp.elf C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\Blink.cpp.eep 
C:\Users\XXXX\Documents\Arduino\hardware\tools\avr\bin\avr-objcopy -O ihex -R .eeprom C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\Blink.cpp.elf C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\Blink.cpp.hex 
Binary sketch size: 1,084 bytes (of a 32,256 byte maximum)
C:\Users\XXXX\Documents\Arduino\hardware/tools/avr/bin/avrdude -CC:\Users\XXXX\Documents\Arduino\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -patmega328p -carduino -P\\.\COM9 -b115200 -D -Uflash:w:C:\Users\XXXX\AppData\Local\Temp\build7139930823106717435.tmp\Blink.cpp.hex:i 

avrdude: Version 5.11, compiled on Sep  2 2011 at 19:38:36
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "C:\Users\XXXX\Documents\Arduino\hardware/tools/avr/etc/avrdude.conf"

         Using Port                    : \\.\COM9
         Using Programmer              : arduino
         Overriding Baud Rate          : 115200
avrdude: Send: 0 [30]   [20] 
avrdude: Send: 0 [30]   [20] 
avrdude: Send: 0 [30]   [20] 
avrdude: Recv: 
avrdude: stk500_getsync(): not in sync: resp=0x00

avrdude done.  Thank you.

Arduino is version 1.04

Hmm.... That usually happens when one of the following conditions exists:

  • There is a loose connection
  • A pin on the ATMEGA chip is bridged or has become unsoldered.
  • The 16MHz crystal (it looks like a metallic tic-tac) has gone bad

Let's double-check the connections again, and make sure their not too loose.
Would you mind posting a photo of the ATMEGA chip (under magnification, if possible)? Let's check to see if perhaps the board is defective.

I don't know what you would see that I couldn't.
The AtMega does not have a single bridge, there isn't a pin missing either, I under-lighted the board and went through each pin with a microscope.
The crystal oscillator shows no sign of visible damage, discoloration, and it's legs are firmly soldered to the board.

What I still dont understand is that I can upload sketches no problem to the femtoduino using the ArduinoISP method. The blink sketch works, and the time intervals are at the correct 1,000ms setting.
Currently I don't have access to a camera, but if it is still absolutely necessary I can get a hold of one.

Side note, the femtoduino doesn't have a sketch or board file written in eagle by chance? I saw all of the files given are written in KiCAD.

I ISP'ed the Blink sketch to the femto, it blinks normally, there is a slight 1 sec interrupt in the blinking when it resets during the upload, and then it just continues to blink. 10 seconds later I get the sync error.

I think you know this, but just to verify: If you had programmed the Blink sketch via ISP, that would be expected behavior -- you can reset the chip, but there's no bootloader, so programming via serial will fail. You'll need to ISP the Arduino UNO bootloader again after testing the Blink sketch.

What I do notice to be very strange is that when I connected either TX or RX pin to the TX pin on the FemtoDuino, I get a small amount of power

That's a little unexpected. The MicroFTX RX pin should be high impedance; connecting it anywhere shouldn't do anything. On the other hand, it does make sense that hooking MicroFTX TX or RTS to any Femtoduino pin (RX, TX, DTR) would power the LED (through the 328P's protection diodes).

... Oh my gosh...
Hitting my head against the wall.
I had forgotten to reflash the bootloader after testing the blink sketch.
It was bootloaderless this whole time...

I could go along with you and say I knew that ISP replaces the bootloader... but I wasn't actually aware.
I assumed the ISP sketch just created TX/RX pins on the I/O pins for the arduino to communicate to and from the other arduino.

Thank you all for helping me, Jim, you saved me. My FemtoDuino is happily blinking along with it's new sketches.

edit:
Did you two create accounts just to help me? I feel so special haha