Introduction: Programming ATmega16A Using Arduino IDE
Assalamualaikum warahmatullahi wabarakatuh
Hi,my name is Ekky Hermestian IW from Indonesia
This tutorial will show you how to program an ATmega16 using Arduino IDE
We can use syntax like
and many more using non-Arduino AVR microcontrollers.
I usually program ATmega16 using CodeVisionAVR and i must define PORT and DDR, but in Arduino will automatically define the PORT and DDR using pinMode() syntax and when we want to set pin to high in CVAVR we must write PORTB.5=1 but in arduino is more simply just like digitalWrite(13, HIGH).
Step 1: Pin_arduino.h
arduino uno is using ATmegaxx8 and define the port using numer so we can easily use it
that proses is stored in Pin_arduino.h
we can find the file in this path C:\Program Files\Arduino\hardware\arduino\avr\variants\standard
open Pin_arduino.h and we will see how arduino convert PORT and DDR
then we need to change the following things before we can use arduino on ATmega16.
- The number of digital pins
- The number of analog pins
- Analog pin mappings and const for Analog pins (actual values for A0, A1)
- Digital pin to PCICR mapping
- Pin to port (PORTA, PORTB etc) mapping
- Pin to timer mapping
Most of these are straight forward and we can get the correct values from the target AVR chips datasheet.
Step 2: Board.txt
To let the Arduino IDE, know about our new microcontroller, we need to create a newboards.txt file which has the following information about the microcontroller.
- Upload protocol
- Upload speed (baudrate)
- Upload fusesClock frequency
- Maximum flash memory size
- Which variant (pins_arduino.h) file to use
Like the pins_arduino.h file
Step 3: Put It Together
Put the pin_arduino.h in C:\Program Files\Arduino\hardware\arduino\avr\variant\mega16
and copy board.txt to C:\Program Files\Arduino\hardware\arduino\avr
now we put board.txt and pin_arduino.h to arduino instalation folder and we already to use our arduino code to ATmega16
Step 4: Lets Try
Now we can use example like blink led
i connect led to pin 16 (PORTC.0) and ground and i use USBASP to upload the program
i still didnt understand why delay take so long,but i think because i use crystal 12Mhz while in Arduino UNO using 16Mhz
i attach my Minimumsystem schematic
sorry for my bad english
i made this instructable from this Hardwarefun-Use Arduino code in non-Arduino AVR microcontrollers
and i really thanks to Sudar as post author at hardwarefun,Raka Fahriza as Cameraman
Thanks for your attention