9. Embedded programming¶
This has been a crazy week because of coronavirus problems… I moved back to Milan from Boston so I did not have much time to catch up on the lecture and work on the assignments.
ATtiny Embedded Programming with the Arduino IDE¶
Install Arduino¶
IDE: Integrated Development Environment –> it is a software application that provides comprehensive facilities to computer programmers for software development.
I followed mainly this tutorial to do embedded programming of ATtiny44A microcontroller with the Arduino IDE. I used the Hello Button + LED board created in week 7.
First, since I used a mac, I downloaded both Arduino and FTDI Virtual COM port (VCP) drivers which cause the USB device to appear as an additional COM port available to the PC. I then installed ATtiny support in order to make arduino ATtiny compatible.
Install ATtiny44¶
Once all these are installed, I can select ATtiny by going on “Tools > Board” menu.
The tutorial also said to change the clock to ‘external 20MHZ’, since we have an external 20 MHZ resonator on the Hello Button + LED board. And I also changed the processor setting from ATtiny24 to ATtiny44.
Modify the code¶
I modified the code so that button was identified with pin10 and led with pin6, and selected the USBtinyISP as programmer.
I got an error when uploading.
and here more details:
Arduino: 1.8.12 (Mac OS X), Board: "ATtiny24/44/84, ATtiny44, External 20 MHz"
Sketch uses 656 bytes (16%) of program storage space. Maximum is 4096 bytes.
Global variables use 9 bytes (3%) of dynamic memory, leaving 247 bytes for local variables. Maximum is 256 bytes.
/Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avrdude -C/Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf -v -pattiny44 -cusbtiny -Uflash:w:/var/folders/rq/n3ngbp397fd4qzqyv2jbvnhr0000gn/T/arduino_build_321284/helloboardled.ino.hex:i
avrdude: Version 6.3-20190619
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "/Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf"
User configuration file is "/Users/martinaferracane/.avrduderc"
User configuration file does not exist or is not a regular file, skipping
Using Port : usb
Using Programmer : usbtiny
avrdude: usbdev_open(): Found USBtinyISP, bus:device: 020:002
AVR Part : ATtiny44
Chip Erase delay : 4500 us
PAGEL : P00
BS2 : P00
RESET disposition : possible i/o
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 6 4 0 no 256 4 0 4000 4500 0xff 0xff
flash 65 6 32 0 yes 4096 64 64 4500 4500 0xff 0xff
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
Programmer Type : USBtiny
Description : USBtiny simple USB programmer, https://learn.adafruit.com/usbtinyisp
avrdude: programmer operation not supported
avrdude: Using SCK period of 10 usec
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
avrdude done. Thank you.
An error occurred while uploading the sketch
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
This might be the same issue I had when triyng to recognize the USBtinyISP on my mac… So I tried with a different computer with linux and this time it worked.
Try to fix avr problem¶
I made some research on the avrdude problem. It seems many people have this issue.. Did anyone manage to fix it?
Quite weird… I turned the cable and tried to do ‘burn bootloader’ and it worked… then I tried to upload the code and it worked again.. but I think the board now doesn’t work anymore as now it blinks in a weird way! It seems like there is not enough power getting to it.
Arduino as ISP¶
As I got an arduino shipped home and by board did not seem to work anymore, I wanted to check out if Arduino worked as ISP.
The uploading worked but the hello board acts still weird.. I tried to burn bootloader again using arduino as ISP but got another error.
Arduino: 1.8.12 (Mac OS X), Board: "Arduino Uno"
/Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avrdude -C/Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf -v -patmega328p -cstk500v1 -P/dev/cu.usbmodem14101 -b19200 -e -Ulock:w:0x3F:m -Uefuse:w:0xFD:m -Uhfuse:w:0xDE:m -Ulfuse:w:0xFF:m
avrdude: Version 6.3-20190619
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "/Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf"
User configuration file is "/Users/martinaferracane/.avrduderc"
User configuration file does not exist or is not a regular file, skipping
Using Port : /dev/cu.usbmodem14101
Using Programmer : stk500v1
Overriding Baud Rate : 19200
AVR Part : ATmega328P
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PC2
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff
flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : STK500
Description : Atmel STK500 Version 1.x firmware
Hardware Version: 2
Firmware Version: 1.18
Topcard : Unknown
Vtarget : 0.0 V
Varef : 0.0 V
Oscillator : Off
SCK period : 0.1 us
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x000000 (retrying)
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x000000 (retrying)
Error while burning bootloader.
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
avrdude done. Thank you.
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
Data Sheet ATtiny44¶
I have not been able to go through the data sheet in detail yet. I chose to have a look at the ATtiny44 datasheet.
Useful links¶
Current Limiting Resistor Calculator for Leds: http://ledcalc.com/
Tutorials¶
- https://www.arduino.cc/en/Tutorial/HomePage?from=Main.Tutorials
- https://www.ladyada.net/learn/arduino/
- (https://learn.adafruit.com/series/learn-arduino
- https://learn.sparkfun.com/tutorials/tags/arduino?page=all