Morning, Pololu Forums,
I figured this would be the appropriate place to post, seeing as I’m using the 3pi R/C project developed by Pololu to program my BabyO as a dual motor ESC. I have everything set up, code loaded, and wires soldered in. The BEC works and the red LED blinks, telling me the code is running. My only issue is that, when the control sticks are moved, there is no movement.
A combat robotics friend of mine uses BabyO’s to control Fleaweights all the time, and told me that the stock code works perfectly with his 2.4 GHz package. I have a 2.4 GHz setup myself, but a different brand and whatnot, so my problem must be that the PWM rate on my controller is different than his and the one the library was programmed with.
My question is, what was the transmitter/receiver the code was tested with, and do you have a list of compatible radio systems?
Thanks for the help
-WaterDuffalo
Ben
July 10, 2012, 6:46pm
2
WaterDuffalo:
A combat robotics friend of mine uses BabyO’s to control Fleaweights all the time, and told me that the stock code works perfectly with his 2.4 GHz package. I have a 2.4 GHz setup myself, but a different brand and whatnot, so my problem must be that the PWM rate on my controller is different than his and the one the library was programmed with.
Hello.
RC receivers are typically designed to work with RC hobby servos, so it is unlikely that your receiver is outputting incompatible signals. Can you describe how you have everything powered and connected? A picture of your setup might help us spot a problem. Also, are you sure you are running the same program as your friend? Can you post the code here?
- Ben
I have the the red wire (V+) for both connectors soldered to the Vcc lines for power, and black (Grnd) to the Ground pads, and I have Signal Wire 1 hooked up to PD0, and Signal Wire 2 to PC5, as laid out in the code’s notes. The code I am running is an unmodified version of the 3pi code from the RC project from Pololu’s website, but imported and converted by Atmel Studio 6.
Hello.
To rule out any problems with the compilation, one thing you could do is to just have your friend send you the exact hex file he is using, and then you could program it using the Device Programming dialog in Atmel Studio.
I am currently investigating a bug in Atmel Studio. Could you please post your .map file here so I can see if that bug is causing you trouble? To do this, select View > Solution Explorer , find the Solution Explorer pane, expand the “Output Files” category, and double click on the file whose name ends with “.map”. This should open up your .map file. Please press Ctrl+A Ctrl+C to copy the whole thing and paste it here inside [ code] [ /code] tags (without the spaces).
–David
David,
My friend was actually in Vegas not too long ago on an extended vacation and visited the Pololu store, his name is David Graham. Awesome guy. But I digress. Here is the .map file from the conversion.
Archive member included because of file (symbol)
c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
3piRC.o (lcd_goto_xy)
c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanMotors.o)
3piRC.o (set_motors)
c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanTime.o)
3piRC.o (delay_ms)
c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_mulsi3.o)
3piRC.o (__mulsi3)
c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_udivmodhi4.o)
3piRC.o (__udivmodhi4)
c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_udivmodsi4.o)
3piRC.o (__udivmodsi4)
c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_divmodsi4.o)
3piRC.o (__divmodsi4)
c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_prologue.o)
c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o) (__prologue_saves__)
c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_epilogue.o)
c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o) (__epilogue_restores__)
c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_exit.o)
c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5/crtm168.o (exit)
c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_copy_data.o)
3piRC.o (__do_copy_data)
c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_clear_bss.o)
3piRC.o (__do_clear_bss)
c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(malloc.o)
c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o) (malloc)
c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(fdevopen.o)
c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o) (fdevopen)
c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(iob.o)
c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(fdevopen.o) (__iob)
c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(calloc.o)
c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(fdevopen.o) (calloc)
c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(memset.o)
c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(calloc.o) (memset)
Allocating common symbols
Common symbol size file
__brkval 0x2 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(malloc.o)
__flp 0x2 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(malloc.o)
ch 0x14 3piRC.o
__iob 0x6 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(iob.o)
Discarded input sections
.data 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5/crtm168.o
.bss 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5/crtm168.o
.bss 0x00000000 0x0 3piRC.o
.text 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.data 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text._ZN12OrangutanLCDC2Ev
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text._ZN12OrangutanLCDC1Ev
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text.void_getchar
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text._ZN12OrangutanLCD10initPrintfEv
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text._ZN12OrangutanLCD10initPrintfEhh
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text.lcd_init_printf_with_dimensions
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text.lcd_init_printf
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text._ZN12OrangutanLCD10moveCursorEhh
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text.lcd_move_cursor
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text._ZN12OrangutanLCD10hideCursorEv
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text.lcd_hide_cursor
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text._ZN12OrangutanLCD10showCursorEh
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text.lcd_show_cursor
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text._ZN12OrangutanLCD5clearEv
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text.clear 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text._ZN12OrangutanLCD11printBinaryEh
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text.print_binary
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text._ZN12OrangutanLCD14printHexNibbleEh
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text._ZN12OrangutanLCD8printHexEh
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text._ZN12OrangutanLCD8printHexEj
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text.print_hex
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text.print_hex_byte
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text._ZN12OrangutanLCD5printEl
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text.print_long
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text._ZN12OrangutanLCD21printFromProgramSpaceEPKc
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text.print_from_program_space
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text._ZN12OrangutanLCD7printInEPKc
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text._ZN12OrangutanLCD5printEc
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text.print_character
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text.lcd_putchar
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text._ZN12OrangutanLCD19loadCustomCharacterEPKch
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text.lcd_load_custom_character
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text._ZN12OrangutanLCD6scrollEhhj
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text.lcd_scroll
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.text 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanMotors.o)
.data 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanMotors.o)
.text._ZN15OrangutanMotorsC2Ev
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanMotors.o)
.text._ZN15OrangutanMotorsC1Ev
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanMotors.o)
.text.set_m1_speed
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanMotors.o)
.text.set_m2_speed
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanMotors.o)
.text 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanTime.o)
.data 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanTime.o)
.text.ticks_to_microseconds
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanTime.o)
.text._ZN13OrangutanTime19ticksToMicrosecondsEm
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanTime.o)
.text._ZN13OrangutanTime17delayMillisecondsEj
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanTime.o)
.text._ZN13OrangutanTime5ticksEv
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanTime.o)
.text.get_ticks
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanTime.o)
.text._ZN13OrangutanTime5resetEv
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanTime.o)
.text.time_reset
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanTime.o)
.text 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_mulsi3.o)
.data 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_mulsi3.o)
.bss 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_mulsi3.o)
.text 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_udivmodhi4.o)
.data 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_udivmodhi4.o)
.bss 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_udivmodhi4.o)
.text 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_udivmodsi4.o)
.data 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_udivmodsi4.o)
.bss 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_udivmodsi4.o)
.text 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_divmodsi4.o)
.data 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_divmodsi4.o)
.bss 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_divmodsi4.o)
.text 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_prologue.o)
.data 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_prologue.o)
.bss 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_prologue.o)
.text 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_epilogue.o)
.data 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_epilogue.o)
.bss 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_epilogue.o)
.text 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_exit.o)
.data 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_exit.o)
.bss 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_exit.o)
.text.libgcc 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_exit.o)
.text 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_copy_data.o)
.data 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_copy_data.o)
.bss 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_copy_data.o)
.text.libgcc 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_copy_data.o)
.text 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_clear_bss.o)
.data 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_clear_bss.o)
.bss 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_clear_bss.o)
.text.libgcc 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_clear_bss.o)
.text 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(malloc.o)
.data 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(malloc.o)
.bss 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(malloc.o)
.text.avr-libc
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(malloc.o)
COMMON 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(malloc.o)
.text 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(fdevopen.o)
.data 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(fdevopen.o)
.bss 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(fdevopen.o)
.text.avr-libc
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(fdevopen.o)
.text 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(iob.o)
.data 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(iob.o)
.bss 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(iob.o)
COMMON 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(iob.o)
.text 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(calloc.o)
.data 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(calloc.o)
.bss 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(calloc.o)
.text.avr-libc
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(calloc.o)
.text 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(memset.o)
.data 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(memset.o)
.bss 0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(memset.o)
.text.avr-libc
0x00000000 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a(memset.o)
Memory Configuration
Name Origin Length Attributes
text 0x00000000 0x00020000 xr
data 0x00800060 0x0000ffa0 rw !x
eeprom 0x00810000 0x00010000 rw !x
fuse 0x00820000 0x00000400 rw !x
lock 0x00830000 0x00000400 rw !x
signature 0x00840000 0x00000400 rw !x
*default* 0x00000000 0xffffffff
Linker script and memory map
Address of section .data set to 0x800100
LOAD c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5/crtm168.o
LOAD 3piRC.o
START GROUP
LOAD c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a
END GROUP
LOAD c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a
LOAD c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5\libc.a
LOAD c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a
.hash
*(.hash)
.dynsym
*(.dynsym)
.dynstr
*(.dynstr)
.gnu.version
*(.gnu.version)
.gnu.version_d
*(.gnu.version_d)
.gnu.version_r
*(.gnu.version_r)
.rel.init
*(.rel.init)
.rela.init
*(.rela.init)
.rel.text
*(.rel.text)
*(.rel.text.*)
*(.rel.gnu.linkonce.t*)
.rela.text
*(.rela.text)
*(.rela.text.*)
*(.rela.gnu.linkonce.t*)
.rel.fini
*(.rel.fini)
.rela.fini
*(.rela.fini)
.rel.rodata
*(.rel.rodata)
*(.rel.rodata.*)
*(.rel.gnu.linkonce.r*)
.rela.rodata
*(.rela.rodata)
*(.rela.rodata.*)
*(.rela.gnu.linkonce.r*)
.rel.data
*(.rel.data)
*(.rel.data.*)
*(.rel.gnu.linkonce.d*)
.rela.data
*(.rela.data)
*(.rela.data.*)
*(.rela.gnu.linkonce.d*)
.rel.ctors
*(.rel.ctors)
.rela.ctors
*(.rela.ctors)
.rel.dtors
*(.rel.dtors)
.rela.dtors
*(.rela.dtors)
.rel.got
*(.rel.got)
.rela.got
*(.rela.got)
.rel.bss
*(.rel.bss)
.rela.bss
*(.rela.bss)
.rel.plt
*(.rel.plt)
.rela.plt
*(.rela.plt)
.text 0x00000000 0xb2e
*(.vectors)
.vectors 0x00000000 0x68 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5/crtm168.o
0x00000000 __vectors
0x00000000 __vector_default
*(.vectors)
*(.progmem.gcc*)
*(.progmem*)
0x00000068 . = ALIGN (0x2)
0x00000068 __trampolines_start = .
*(.trampolines)
.trampolines 0x00000068 0x0 linker stubs
*(.trampolines*)
0x00000068 __trampolines_end = .
*(.jumptables)
*(.jumptables*)
*(.lowtext)
*(.lowtext*)
0x00000068 __ctors_start = .
*(.ctors)
0x00000068 __ctors_end = .
0x00000068 __dtors_start = .
*(.dtors)
0x00000068 __dtors_end = .
SORT(*)(.ctors)
SORT(*)(.dtors)
*(.init0)
.init0 0x00000068 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5/crtm168.o
0x00000068 __init
*(.init0)
*(.init1)
*(.init1)
*(.init2)
.init2 0x00000068 0xc c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5/crtm168.o
*(.init2)
*(.init3)
*(.init3)
*(.init4)
.init4 0x00000074 0x16 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_copy_data.o)
0x00000074 __do_copy_data
.init4 0x0000008a 0x10 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_clear_bss.o)
0x0000008a __do_clear_bss
*(.init4)
*(.init5)
*(.init5)
*(.init6)
*(.init6)
*(.init7)
*(.init7)
*(.init8)
*(.init8)
*(.init9)
.init9 0x0000009a 0x8 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5/crtm168.o
*(.init9)
*(.text)
.text 0x000000a2 0x4 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr5/crtm168.o
0x000000a2 __vector_22
0x000000a2 __vector_1
0x000000a2 __vector_24
0x000000a2 __vector_12
0x000000a2 __bad_interrupt
0x000000a2 __vector_6
0x000000a2 __vector_3
0x000000a2 __vector_23
0x000000a2 __vector_25
0x000000a2 __vector_11
0x000000a2 __vector_13
0x000000a2 __vector_17
0x000000a2 __vector_19
0x000000a2 __vector_7
0x000000a2 __vector_2
0x000000a2 __vector_21
0x000000a2 __vector_15
0x000000a2 __vector_8
0x000000a2 __vector_14
0x000000a2 __vector_10
0x000000a2 __vector_16
0x000000a2 __vector_18
0x000000a2 __vector_20
.text 0x000000a6 0x35a 3piRC.o
0x000000a6 __vector_5
0x00000282 main
0x0000011c __vector_4
0x00000192 updateChannels
0x00000400 . = ALIGN (0x2)
*(.text.*)
.text._ZN12OrangutanLCD8busyWaitEv
0x00000400 0x98 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
0x00000400 OrangutanLCD::busyWait()
.text._ZN12OrangutanLCD8sendDataEh
0x00000498 0x64 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
0x00000498 OrangutanLCD::sendData(unsigned char)
.text._ZN12OrangutanLCD5init2Ev
0x000004fc 0x7e c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
0x000004fc OrangutanLCD::init2()
.text._ZN12OrangutanLCD4initEv
0x0000057a 0x14 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
0x0000057a OrangutanLCD::init()
.text._ZN12OrangutanLCD4sendEhhh
0x0000058e 0x68 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
0x0000058e OrangutanLCD::send(unsigned char, unsigned char, unsigned char)
.text._ZN12OrangutanLCD8send_cmdEh
0x000005f6 0xa c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
0x000005f6 OrangutanLCD::send_cmd(unsigned char)
.text._ZN12OrangutanLCD6gotoXYEhh
0x00000600 0x3e c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
0x00000600 OrangutanLCD::gotoXY(unsigned char, unsigned char)
.text.lcd_goto_xy
0x0000063e 0x6 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
0x0000063e lcd_goto_xy
.text._ZN12OrangutanLCD9send_dataEh
0x00000644 0xa c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
0x00000644 OrangutanLCD::send_data(unsigned char)
.text._ZN12OrangutanLCD5printEm
0x0000064e 0xc0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
0x0000064e OrangutanLCD::print(unsigned long)
.text.print_unsigned_long
0x0000070e 0x6 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
0x0000070e print_unsigned_long
.text._ZN12OrangutanLCD5printEPKc
0x00000714 0x1a c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
0x00000714 OrangutanLCD::print(char const*)
.text.print 0x0000072e 0x6 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
0x0000072e print
.text._ZN12OrangutanLCD13send_4bit_cmdEh
0x00000734 0xa c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
0x00000734 OrangutanLCD::send_4bit_cmd(unsigned char)
.text._ZN16OrangutanDigital9setOutputEhh
0x0000073e 0x98 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanMotors.o)
0x0000073e OrangutanDigital::setOutput(unsigned char, unsigned char)
.text._ZN15OrangutanMotors5init2Ev
0x000007d6 0x50 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanMotors.o)
0x000007d6 OrangutanMotors::init2()
.text._ZN15OrangutanMotors4initEv
0x00000826 0x14 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanMotors.o)
0x00000826 OrangutanMotors::init()
.text._ZN15OrangutanMotors10setM1SpeedEi
0x0000083a 0x3c c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanMotors.o)
0x0000083a OrangutanMotors::setM1Speed(int)
.text._ZN15OrangutanMotors10setM2SpeedEi
0x00000876 0x44 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanMotors.o)
0x00000876 OrangutanMotors::setM2Speed(int)
.text._ZN15OrangutanMotors9setSpeedsEii
0x000008ba 0x16 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanMotors.o)
0x000008ba OrangutanMotors::setSpeeds(int, int)
.text.set_motors
0x000008d0 0x6 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanMotors.o)
0x000008d0 set_motors
.text.__vector_9
0x000008d6 0x74 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanTime.o)
0x000008d6 __vector_9
.text.delay_ms
0x0000094a 0x1e c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanTime.o)
0x0000094a delay_ms
.text._ZN13OrangutanTime5init2Ev
0x00000968 0x30 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanTime.o)
0x00000968 OrangutanTime::init2()
.text._ZN13OrangutanTime4initEv
0x00000998 0x14 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanTime.o)
0x00000998 OrangutanTime::init()
.text._ZN13OrangutanTime2msEv
0x000009ac 0x2a c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanTime.o)
0x000009ac OrangutanTime::ms()
.text.get_ms 0x000009d6 0x6 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanTime.o)
0x000009d6 get_ms
.text.libgcc 0x000009dc 0x3e c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_mulsi3.o)
0x000009dc __mulsi3
.text.libgcc 0x00000a1a 0x28 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_udivmodhi4.o)
0x00000a1a __udivmodhi4
.text.libgcc 0x00000a42 0x44 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_udivmodsi4.o)
0x00000a42 __udivmodsi4
.text.libgcc 0x00000a86 0x36 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_divmodsi4.o)
0x00000a86 __divmodsi4
.text.libgcc 0x00000abc 0x38 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_prologue.o)
0x00000abc __prologue_saves__
.text.libgcc 0x00000af4 0x36 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_epilogue.o)
0x00000af4 __epilogue_restores__
0x00000b2a . = ALIGN (0x2)
*(.fini9)
.fini9 0x00000b2a 0x0 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_exit.o)
0x00000b2a exit
0x00000b2a _exit
*(.fini9)
*(.fini8)
*(.fini8)
*(.fini7)
*(.fini7)
*(.fini6)
*(.fini6)
*(.fini5)
*(.fini5)
*(.fini4)
*(.fini4)
*(.fini3)
*(.fini3)
*(.fini2)
*(.fini2)
*(.fini1)
*(.fini1)
*(.fini0)
.fini0 0x00000b2a 0x4 c:/winavr/bin/../lib/gcc/avr/4.3.3/avr5\libgcc.a(_exit.o)
*(.fini0)
0x00000b2e _etext = .
.data 0x00800100 0x18 load address 0x00000b2e
0x00800100 PROVIDE (__data_start, .)
*(.data)
.data 0x00800100 0x17 3piRC.o
0x00800115 maxLowPulseTime
0x0080010f minPulseTime
0x00800113 maxPulseTime
0x00800111 neutralPulseTime
*(.data*)
*(.rodata)
*(.rodata*)
*(.gnu.linkonce.d*)
0x00800118 . = ALIGN (0x2)
*fill* 0x00800117 0x1 00
0x00800118 _edata = .
0x00800118 PROVIDE (__data_end, .)
.bss 0x00800118 0x29
0x00800118 PROVIDE (__bss_start, .)
*(.bss)
.bss 0x00800118 0x9 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
0x00800118 printf_chars
0x0080011c lcdTimeout
0x0080011b col
0x00800120 OrangutanLCD::init()::initialized
0x0080011a row
.bss 0x00800121 0x1 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanMotors.o)
0x00800121 OrangutanMotors::init()::initialized
.bss 0x00800122 0xb c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanTime.o)
0x0080012c OrangutanTime::init()::initialized
0x00800122 tickCount
0x00800126 msCounter
0x0080012a us_over_10
*(.bss*)
*(COMMON)
COMMON 0x0080012d 0x14 3piRC.o
0x0080012d ch
0x00800141 PROVIDE (__bss_end, .)
0x00000b2e __data_load_start = LOADADDR (.data)
0x00000b46 __data_load_end = (__data_load_start + SIZEOF (.data))
.noinit 0x00800141 0x0
0x00800141 PROVIDE (__noinit_start, .)
*(.noinit*)
0x00800141 PROVIDE (__noinit_end, .)
0x00800141 _end = .
0x00800141 PROVIDE (__heap_start, .)
.eeprom 0x00810000 0x0
*(.eeprom*)
0x00810000 __eeprom_end = .
.fuse
*(.fuse)
*(.lfuse)
*(.hfuse)
*(.efuse)
.lock
*(.lock*)
.signature
*(.signature*)
.stab 0x00000000 0x1db8
*(.stab)
.stab 0x00000000 0xfd8 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
0x1e84 (size before relaxing)
.stab 0x00000fd8 0x7b0 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanMotors.o)
0x900 (size before relaxing)
.stab 0x00001788 0x630 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanTime.o)
0x900 (size before relaxing)
.stabstr 0x00000000 0x2d74
*(.stabstr)
.stabstr 0x00000000 0x2d74 c:/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libpololu_atmega168.a(OrangutanLCD.o)
.stab.excl
*(.stab.excl)
.stab.exclstr
*(.stab.exclstr)
.stab.index
*(.stab.index)
.stab.indexstr
*(.stab.indexstr)
.comment
*(.comment)
.debug
*(.debug)
.line
*(.line)
.debug_srcinfo
*(.debug_srcinfo)
.debug_sfnames
*(.debug_sfnames)
.debug_aranges 0x00000000 0x20
*(.debug_aranges)
.debug_aranges
0x00000000 0x20 3piRC.o
.debug_pubnames
0x00000000 0x9e
*(.debug_pubnames)
.debug_pubnames
0x00000000 0x9e 3piRC.o
.debug_info 0x00000000 0x22a
*(.debug_info)
.debug_info 0x00000000 0x22a 3piRC.o
*(.gnu.linkonce.wi.*)
.debug_abbrev 0x00000000 0x102
*(.debug_abbrev)
.debug_abbrev 0x00000000 0x102 3piRC.o
.debug_line 0x00000000 0x27a
*(.debug_line)
.debug_line 0x00000000 0x27a 3piRC.o
.debug_frame 0x00000000 0x50
*(.debug_frame)
.debug_frame 0x00000000 0x50 3piRC.o
.debug_str 0x00000000 0x13f
*(.debug_str)
.debug_str 0x00000000 0x13f 3piRC.o
0x173 (size before relaxing)
.debug_loc 0x00000000 0xdc
*(.debug_loc)
.debug_loc 0x00000000 0xdc 3piRC.o
.debug_macinfo
*(.debug_macinfo)
OUTPUT(3piRC.elf elf32-avr)
LOAD linker stubs
.debug_ranges 0x00000000 0x18
.debug_ranges 0x00000000 0x18 3piRC.o
Yes, we know Dave! Thanks for posting that file. It looks like you are not suffering from the bug I thought you were, so we should go back to checking other things. As Ben said, a picture of your setup would be useful.
–David
Ok, I took a few pictures of everything hooked up without the battery connected.
This photo has the signal pins labeled:
A closer shot of PD0: (Note: it does look like the wire is touching pin PB5, but it isn’t.)
And a closer shot of PC5:
Also, sorry for the large photos, they’re the best I could do right now.
Ben
July 11, 2012, 4:31pm
8
Thanks for the pictures. Large, high-resolution pictures are actually helpful, so long as they’re in focus. It’s pretty hard to discern details in your first two pictures, but the third one lets me see your solder connections well enough to identify that as a potential problem area. The solder connection between your wires and PD0/PC5 are quite bad, and I wouldn’t be surprised if the signal is not actually getting through. Your solder connections should look more like the ones in the following picture:
(taken from one of ladyada’s tutorials )
The key is that the solder needs to clearly wet to both the wire and the header pin, which requires you to heat both the wire and header pin sufficiently when applying solder. One trick is to put a small blob of solder on the header pin and another on the wire, and then melt both blobs together with your iron.
Also, I cannot see what’s going on with your power connections. Could you post some in-focus pictures of the underside of the Baby Orangutan? If your camera has a macro mode, you should try using that. Otherwise, you will need to hold it at least a few feet away from the board in order for the picture to be in focus.
- Ben