Feb 10, 2017 A software IIC/I2C library aimed at the arduino/atmega platform. Master and multi-slave supported. SoftIIC is a class which enables easy communication to other IIC devices, as a master or slave, or in the presence of other masters. Master mode features: With a 16MHz core clock, 100KHz IIC master is supported. Slower core clocks may also work. Software I2C - ATmega8. Sending and receiving different types of data via I2C in Arduino. Sending uint16t over I2C. Confusion receiving I2C data from. This I2c library is implemented as a compact assembler software implementation of the I2C protocol which runs on any AVR (i2cmaster.S) and as a TWI hardware interface for all AVR with built-in TWI hardware (twimaster.c). Since the API for these two implementations is exactly the same, an application can be linked either against the software I2C. The I2C bus is a simple, two-wire connection that can link multiple devices together and allow them to exchange data. In its simplest form there is one master device that communicates to multiple slave devices. All devices are connected in parallel to the two wires of the I2C bus. The two wires are known as SCL and SDA.
A general tutorial on installing Arduino bootloader on ATmega8 AVR microcontroller and programming it using Arduino IDE.
- 71,875 views
- 26 comments
- 24 respects
Components and supplies
| × | 1 | |
| × | 1 | |
| × | 1 | |
| × | 1 | |
| × | 2 | |
| × | 1 | |
| × | 1 | |
| × | 1 | |
| × | 12 | |
| × | 4 |
About this project
“I’ve written my code for Arduino UNO board. Is it possible to upload my sketch to an AVR microcontroller except ATmega328? I think it’s the most common question of Arduino lovers. This may have different reasons such as:
- Using a cheaper AVR microcontroller
- Require an AVR microcontroller with more or even less pins than ATmega328
- You have all kinds of AVR except ATmega328 :D
In this tutorial you will learn how to program an ATmega8 using Arduino IDE. It’s not restricted to ATmega8 only and can be generalized to other cores which are available at MCUDude’s GitHub. It consists of two parts. In part one, Installing Arduino bootloader on ATmega8 is described. Part two shows how to program an ATmega8 using Arduino IDE and a USB to TTL convertor.
Part one: Installing Arduino Bootloader
In this part, we add ATmega8 support to Arduino IDE. Then we set up the breadboard and connect ATmega8 to Arduino UNO board.
Step One: Adding ATmega8 Support to Arduino IDE Using Board Manager
There are different types of cores available on MCUDude’s GitHub repository. MiniCore is used for ATmega8 microcontroller. Supported microcontrollers in this core are:
- ATmega8
- ATmega48
- ATmega88
- ATmega168
- ATmega328
Follow steps below to install MiniCore in your Arduino IDE.
- In File menu, click on Preferences.
- Now in Additional Boards Manger URLs, enter the following URL:
- Go to Tools menu and then select Board > Boards Manager
- In Boards Manager window, search for MiniCore and then install the latest version.
The above steps are shown graphically here:
ATmega8 pinout is shown in the following figure.
Step Two: Programming Arduino as an ISP (In-system programming)
To burn Arduino bootloader, we need to make our Arduino UNO as an ISP. There’s a sketch named ArduinoISP in the built-in examples of Arduino IDE. Follow these steps to program your Arduino UNO as an ISP.
- Open File > Examples > 11.ArduinoISP > ArduinoISP
- Upload this sketch to your Arduino UNO.
Step Three: Burning Bootloader
- Connect Arduino to ATmega8 as below.
Arduino ----------ATmega8
SCK / Pin 13 ----------SCK / PB5
MISO / Pin 12 ----------MISO / PB4
MOSI / Pin 11 ----------MOSI / PB3
SSN / Pin 10 ----------RESET
- Go to Tools > Board and select ATmega8. You can also select your clock type and frequency in Tools menu.
- Select programmer type in Tools > Programmer: as “Arduinoas ISP”.
- Now in Tools menu, click on the Burn Bootloader.
If the operation was successful, it says “Done burning bootloader”. Congratulations! You have done it.
Part Two: Programming ATmega8 Using Arduino IDE and a USB to TTL Convertor
Here we have an ATmega8 with Arduino bootloader. As you know, there is a USB to TTL convertor on all Arduino boards. It acts as a bridge between microcontroller and Arduino IDE. We use CH340 USB to TTL convertor module to upload the sketch to ATmega8.
Step Four: Setting up the Connections
Connect components as shown below.
CH340 ---------- ATmega8
VCC ---------- VCC
Atmega8 Software I2c Free
GND ---------- GND
Tx ---------- RX / PD0
Rx ---------- Tx / PD1
Step Five: Uploading the Sketch to ATmega8
Press and hold the reset pushbutton. Now click on upload in IDE. Hold the pushbutton until it says “Uploading…”on the IDE status bar. Release the button after uploading process begins. It’s because microcontroller should be in the RESET state when the uploading process starts.
Note: If the process was unsuccessful, place a 100nF capacitor at Vcc and GND of microcontroller as close as possible.
Note: Some USB to TTL convertor modules have a pin named DTR. If yours has this pin too, you can connect it to the RESET pin of ATmega8 and there’s no need to use the pushbutton to manually reset the microcontroller.
Schematics
Author
Hami Mahdavinataj
- 1 project
- 4 followers
Published on
November 30, 2018Members who respect this project
| × | 1 | |
| × | 1 | |
| × | 1 | |
| × | 1 | |
| × | 2 | |
| × | 1 | |
| × | 1 | |
| × | 1 | |
| × | 12 | |
| × | 4 |
About this project
“I’ve written my code for Arduino UNO board. Is it possible to upload my sketch to an AVR microcontroller except ATmega328? I think it’s the most common question of Arduino lovers. This may have different reasons such as:
- Using a cheaper AVR microcontroller
- Require an AVR microcontroller with more or even less pins than ATmega328
- You have all kinds of AVR except ATmega328 :D
In this tutorial you will learn how to program an ATmega8 using Arduino IDE. It’s not restricted to ATmega8 only and can be generalized to other cores which are available at MCUDude’s GitHub. It consists of two parts. In part one, Installing Arduino bootloader on ATmega8 is described. Part two shows how to program an ATmega8 using Arduino IDE and a USB to TTL convertor.
Part one: Installing Arduino Bootloader
In this part, we add ATmega8 support to Arduino IDE. Then we set up the breadboard and connect ATmega8 to Arduino UNO board.
Step One: Adding ATmega8 Support to Arduino IDE Using Board Manager
There are different types of cores available on MCUDude’s GitHub repository. MiniCore is used for ATmega8 microcontroller. Supported microcontrollers in this core are:
- ATmega8
- ATmega48
- ATmega88
- ATmega168
- ATmega328
Follow steps below to install MiniCore in your Arduino IDE.
- In File menu, click on Preferences.
- Now in Additional Boards Manger URLs, enter the following URL:
- Go to Tools menu and then select Board > Boards Manager
- In Boards Manager window, search for MiniCore and then install the latest version.
The above steps are shown graphically here:
ATmega8 pinout is shown in the following figure.
Step Two: Programming Arduino as an ISP (In-system programming)
To burn Arduino bootloader, we need to make our Arduino UNO as an ISP. There’s a sketch named ArduinoISP in the built-in examples of Arduino IDE. Follow these steps to program your Arduino UNO as an ISP.
- Open File > Examples > 11.ArduinoISP > ArduinoISP
- Upload this sketch to your Arduino UNO.
Step Three: Burning Bootloader
- Connect Arduino to ATmega8 as below.
Arduino ----------ATmega8
SCK / Pin 13 ----------SCK / PB5
MISO / Pin 12 ----------MISO / PB4
MOSI / Pin 11 ----------MOSI / PB3
SSN / Pin 10 ----------RESET
- Go to Tools > Board and select ATmega8. You can also select your clock type and frequency in Tools menu.
- Select programmer type in Tools > Programmer: as “Arduinoas ISP”.
- Now in Tools menu, click on the Burn Bootloader.
If the operation was successful, it says “Done burning bootloader”. Congratulations! You have done it.
Part Two: Programming ATmega8 Using Arduino IDE and a USB to TTL Convertor
Here we have an ATmega8 with Arduino bootloader. As you know, there is a USB to TTL convertor on all Arduino boards. It acts as a bridge between microcontroller and Arduino IDE. We use CH340 USB to TTL convertor module to upload the sketch to ATmega8.
Step Four: Setting up the Connections
Connect components as shown below.
CH340 ---------- ATmega8
VCC ---------- VCC
Atmega8 Software I2c Free
GND ---------- GND
Tx ---------- RX / PD0
Rx ---------- Tx / PD1
Step Five: Uploading the Sketch to ATmega8
Press and hold the reset pushbutton. Now click on upload in IDE. Hold the pushbutton until it says “Uploading…”on the IDE status bar. Release the button after uploading process begins. It’s because microcontroller should be in the RESET state when the uploading process starts.
Note: If the process was unsuccessful, place a 100nF capacitor at Vcc and GND of microcontroller as close as possible.
Note: Some USB to TTL convertor modules have a pin named DTR. If yours has this pin too, you can connect it to the RESET pin of ATmega8 and there’s no need to use the pushbutton to manually reset the microcontroller.
Schematics
Author
Hami Mahdavinataj
- 1 project
- 4 followers
Published on
November 30, 2018Members who respect this project
and 18 others
See similar projectsyou might like
Table of contents
Command conquer red alert 2 pc game. Hi,
Atmega8 Software I2c Update
I'm trying to get I2C to communicate with my LCD screen on my bot using the (excellent) PROCYON AVRLIB libraries.
My bot currently contains 2 processors, an ATMEGA32 @ 16Mhz and an ATMEGA8 running at 1Mhz.
I want the ATMEGA8 to send text messages to my I2C lcd display. (LCD03) This does not work.
If I flash EXACTLY THE SAME program to my ATMEGA32 (which is on the same bus) it works fine. Obviously, I checked the SDA and SCL connections. I can program the ATMEGA8 with my stk200 cable. The 4k7 pullup resistors are in place.
Frankly, I'm clueless. It MUST have something to do with the hardware, but what??
Atmega8 Software I2c Software
Here's the code:
Any help VERY MUCH appreciated! Photo printing for mac.