1
\$\begingroup\$

For my systemprogramming class I have to program an ATmega48a µController.

At university we're using an avrmkII to program the chips, but as i don't have such a device at home so I figured I could use my Arduino as an ISP programmer.

Now when I run the avrdude command (see Makefile below) to flash a simple blink program onto the controller I get the following error:

avrdude -pm48 -P /dev/ttyACM0 -B19200 -cavrisp -Uflash:w:blink.hex:a -v

avrdude: Version 6.3-20171130
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "/etc/avrdude.conf"
         User configuration file is "/home/user/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/ttyACM0
         Using Programmer              : avrisp
         Setting bit clk period        : 19200.0
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xe0
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xe0

avrdude done.  Thank you.

make: *** [Makefile:40: program] Fehler 1

But I can't figure out why they are not in sync. All tutorials / questions & answers I found focused on programming the chip using the Arduino IDE which I was specifically told not to use, because the IDE does all the heavy lifting for you.

I know that the ATmega is working because I already programmed it using the avrmkII, and the blink sketch (a different one) that I uploaded then is still able to run.

Electronics:

  • ATmega48a
  • Arduino Mega 2560

Wiring:

software:

  • OS: Parrot OS 5.1 (Electro Ara)
  • avrdude version 6.3-20171130
  • Arduino IDE to upload ISP sketch onto Arduino: 2.2.1

Makefile:

TARGET=blink
MCU=atmega48a
SOURCES=blink.c
MCU_dude=m48

PROGRAMMER=avrisp
PORT=-P /dev/ttyACM0
BAUD=-B19200

OBJECTS=$(SOURCES:.c=.o)
CFLAGS=-c -Og 
LDFLAGS=

all: hex eeprom

hex: $(TARGET).hex

eeprom: $(TARGET)_eeprom.hex

$(TARGET).hex: $(TARGET).elf
    avr-objcopy -O ihex -j .data -j .text $(TARGET).elf $(TARGET).hex

$(TARGET)_eeprom.hex: $(TARGET).elf
    avr-objcopy -O ihex -j .eeprom --change-section-lma .eeprom=1 $(TARGET).elf $(TARGET)_eeprom.hex

$(TARGET).elf: $(OBJECTS)
    avr-gcc $(LDFLAGS) -mmcu=$(MCU) $(OBJECTS) -o $(TARGET).elf

.c.o:
    avr-gcc $(CFLAGS) -mmcu=$(MCU) $< -o $@

size:
    avr-size --mcu=$(MCU) -C $(TARGET).elf

program:
    avrdude -p$(MCU_dude) $(PORT) $(BAUD) -c$(PROGRAMMER) -Uflash:w:$(TARGET).hex:a -v

clean_tmp:
    rm -rf *.o
    rm -rf *.elf

clean:
    rm -rf *.o
    rm -rf *.elf
    rm -rf *.hex

I hope I provided all the necessary information needed. if not I'll update my question accordingly.

\$\endgroup\$
0

1 Answer 1

1
\$\begingroup\$
avrdude -pm48 -P /dev/ttyACM0 -B19200 -cavrisp -Uflash:w:blink.hex:a -v

That line contains a crucial error, you need to change -B to -b instead.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.