SlideShare una empresa de Scribd logo
1 de 17
Descargar para leer sin conexión
How to use I2C with AVR
Sunday, April 28, 13
I2C abstract(1)
AVR1 AVR2
SCL
SDA
Vdd
I2C is one of communication systems for Microcomputer.
I2C uses 2 lines, SCL(clock), SDA(data).
Sunday, April 28, 13
I2C abstract(2)
AVR1 AVR2
SCL
SDA
SCL(clock) is used to send clock for synchronization.
SDA(data) is used for sending data.
1 bit data is transferred every clock.
1 0 1 0
Sunday, April 28, 13
I2C abstract(3)
Master
You can connect more than 2 boards.
One board must be Master and the others are Slave.
Each slave has own address.
Master can send data to each slave using the address.
Slave1 Slave2 Slave3 Slave4
SDA
address1 address2 address3 address4
SCL
Sunday, April 28, 13
I2C abstract(4)
Master
For example, if Master wants to send data to Slave2, Master
sends address2 to SDA line.All Slaves receives the address.
Only Slave2 replies.
Slave1 Slave2 Slave3 Slave4
SDA
address1 address2 address3 address4
SCL
address2
reply
The data is mine!
I must send replay.
The data is not mine.
I will ignore it.
The data is not mine.
I will ignore it.
The data is not mine.
I will ignore it.
Sunday, April 28, 13
I2C abstract(5)
Master
Next Master sends data to SDA line. Only Slave2 receives
the data and reply.
Slave1 Slave2 Slave3 Slave4
SDA
address1 address2 address3 address4
SCL
data
reply
I’ll receive this data.
I must send replay.
The data is not mine.
I will discard it.
The data is not mine.
I will discard it.
The data is not mine.
I will discard it.
discard discard discard
Sunday, April 28, 13
Program I2C with AVR
In this instance, you use arduino uno.
Arduino uno has Atmega168.
I am going to explain how to program
Atmega168 with C, without
Arduino library.
Sunday, April 28, 13
Connection
SDA pin and SCL pin are fixed. On Arduino Uno, analog4 = SDA, analog 5 = SCL.
Connect A4 and A5 of each Arduino.
Vcc
Sunday, April 28, 13
C programming on Arduino IDE
Arduino language is based on C. You can use all construction of C.
When you write C on Arduino IDE, you have to replace “main and while” with “setup() and
loop()”. Initialize process must be inside setup() and loop process must be inside loop().
#include<avr.io.h>
void main(int){
//initialize process
while(1){
//loop process
}
}
#include<avr.io.h>
void setup(){
//initialize process
}
void loop(){
//loop process
}
Normal C C on Arduino IDE
Sunday, April 28, 13
I2C registers(Atmega168 version)
If you want to use I2C function on Microcomputer, you have to use registers for I2C.
(Sometimes different microcomputers have different registers, you have to see data sheet.)
These are I2C resisters(NOT all).
TWAR is TWI(Slave) Address Register. Slave address is set in this register.
TWBR is TWI Bit Rate Register. This is to decide SCL clock.
TWCR is TWI Control Register.You can control I2C with this register.
TWDR is TWI Data Register.The data to be transferred or received is set in this register.
TWSR is TWI Status Register. The status of I2C communication is set in this register.
TWA6 TWA5 TWA4 TWA3 TWA2 TWA1 TWA0 TWGCETWAR
TWBR7 TWBR6 TWBR5 TWBR4 TWBR3 TWBR2 TWBR1 TWBR0
TWINT TWEA TWSTA TWSTO TWWC TWEN - TWIE
TWD7 TWD6 TWD5 TWD4 TWD3 TWD2 TWD1 TWD0
TWS7 TWS6 TWS5 TWS4 TWS3 - TWPS1 TWPS0
TWBR
TWCR
TWDR
TWSR
Sunday, April 28, 13
The simplest I2C sequence
This is the simplest sequence of I2C.
If you want to send data more than 1 byte.You have to repeat (4)(5).
Master Slave
(1)Start
(2)Slave Adress
(3)Ack
(4)Data
(5)Ack
(6)Stop
Sunday, April 28, 13
How to use TWBR and TWSR
First, you have to decide the communication speed(SCL) with TWBR and TWSR.
SCL = CPU clock/(16+2(TWBR)xPrescaler)
TWBR7 TWBR6 TWBR5 TWBR4 TWBR3 TWBR2 TWBR1 TWBR0
TWS7 TWS6 TWS5 TWS4 TWS3 - TWPS1 TWPS0
TWBR
TWSR
Prescaler parameter
(ex)
TWBR =0b00000001=1
TWBR =0b00000011=3
TWBR =0b11111111 = 255
(ex)
CPU clock = 1Mhz
TWBR=255
Prescaler=1
SCL = 1000000/(16+2(255)x1)=2kHz
(ex)
TWBR =(0<<TWPS1)|(0<<TWPS0) : prescaler is 1
TWBR =(0<<TWPS1)|(1<<TWPS0) : prescaler is 4
TWBR =(1<<TWPS1)|(1<<TWPS0) : prescaler is 64
Sunday, April 28, 13
How to use TWCR
You can control I2C message with TWCR.
TWINT TWEA TWSTA TWSTO TWWC TWEN - TWIETWCR
Send start condition
TWINT TWEA TWSTA TWSTO TWWC TWEN - TWIETWCR
Clear TWINT flag after sending message
TWINT TWEA TWSTA TWSTO TWWC TWEN - TWIETWCR
Send stop condition
TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN); //Start condition
while(!(TWCR & 1<<TWINT)) {} //After TWCR, always you have to check whether TWINT is updated
TWCR = 0b10000100; //flag clear
while(!(TWCR & 1<<TWINT)) {}
TWCR = 0b10010100; //finish translation
while(!(TWCR & 1<<TWINT)) {}
Source code sample
Sunday, April 28, 13
How to use TWSR
You can check status of I2C sequence from TWSR.
TWS7 TWS6 TWS5 TWS4 TWS3 - TWPS1 TWPS0
TWSR
Source code sample
//check condition
if((TWSR & 0xF8) == 0x08){
TWDR = 0b00000010; //set slave address
TWCR = 0b10000100; //flag clear
while(!(TWCR & 1<<TWINT)) {}
_delay_ms(1);
if((TWSR & 0xF8) == 0x18){
TWDR = 0b10101010; //write data(1byte)
TWCR = 0b10000100; //send data
while(!(TWCR & (1<<TWINT)));
_delay_ms(1);
}
}
Sunday, April 28, 13
The simplest sample
(1)Connect A4 and A5 between Master and Slave(You need pull-up resisters)
(2)Connect LED and resister to Slave digital 9
(3)Connect MasterV5 to SlaveVin
(4)Connect Master GND and Slave GND
(5)Connect Master to PC with USB cable
(6)Install program from next page
Vcc
Master
Slave
LEDGND
This sample is to turn on LED connected to Slave
using data from Master
Sunday, April 28, 13
Sample code(master)
#include <avr/io.h>
#include <util/delay.h>
void setup(){
TWSR = (0<<TWPS1)|(0<<TWPS0); //Prescaler
TWBR = 0xFF; //TWBR=255
}
void loop(){
TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN); //Start condition
while(!(TWCR & 1<<TWINT)) {} //wait for flag update
_delay_ms(1);
if((TWSR & 0xF8) == 0x08){ //check condition
TWDR = 0b00000010; //send slave address
TWCR = 0b10000100; //flag clear
while(!(TWCR & 1<<TWINT)) {}
_delay_ms(1);
if((TWSR & 0xF8) == 0x18){ //check condition
TWDR = 0b10101010; //write data(1byte)
TWCR = 0b10000100; //send data
while(!(TWCR & (1<<TWINT)));
_delay_ms(1);
}
}
TWCR = 0b10010100; //finish translation
_delay_ms(2);
}
Sunday, April 28, 13
Sample code(slave)
#include <avr/io.h>
#include <util/delay.h>
void setup(){
DDRB = 0xFF; //all PINB is output mode
PORTB = 0x00; //all PINB is Low
TWAR = 0b00000010; //salve address setting
}
void loop(){
TWCR = 0b11000100; //start as slave(wait for address)
if((TWSR & 0xF8) == 0x60){ //check status
while(1){
TWCR = 0b11000100; //wait for data
while(!(TWCR & (1<<TWINT)));
if((TWSR & 0xF8) == 0x80){ //check status
char data = TWDR; //receive data
PORTB = data; //insert data to PORTB
}
if((TWSR & 0xF8) == 0xA0){ //check stop status
_delay_ms(10);
break;
}
}
}
}
Sunday, April 28, 13

Más contenido relacionado

La actualidad más candente

Programmable logic devices
Programmable logic devicesProgrammable logic devices
Programmable logic devicesISMT College
 
synchronous state machine design
synchronous state machine designsynchronous state machine design
synchronous state machine designAdarsh Patel
 
Pwm(Pulse Width Modulation) presentation
Pwm(Pulse Width Modulation) presentationPwm(Pulse Width Modulation) presentation
Pwm(Pulse Width Modulation) presentationHabitamuAsimare
 
Serial Communication
Serial CommunicationSerial Communication
Serial CommunicationUshaRani289
 
Basics of signals data communication
Basics of signals data communicationBasics of signals data communication
Basics of signals data communicationSyed Bilal Zaidi
 
Subroutine in 8051 microcontroller
Subroutine in 8051 microcontrollerSubroutine in 8051 microcontroller
Subroutine in 8051 microcontrollerbhadresh savani
 
Digital Electronics Question Bank
Digital Electronics Question BankDigital Electronics Question Bank
Digital Electronics Question BankMathankumar S
 
Classification of embedded systems
Classification of embedded systemsClassification of embedded systems
Classification of embedded systemsVikas Dongre
 
Addressing modes of 8051
Addressing modes of 8051Addressing modes of 8051
Addressing modes of 8051SARITHA REDDY
 
Memory & I/O interfacing
Memory & I/O  interfacingMemory & I/O  interfacing
Memory & I/O interfacingdeval patel
 
Interfacing methods of microcontroller
Interfacing methods of microcontrollerInterfacing methods of microcontroller
Interfacing methods of microcontrollerDiwaker Pant
 

La actualidad más candente (20)

Programmable logic devices
Programmable logic devicesProgrammable logic devices
Programmable logic devices
 
synchronous state machine design
synchronous state machine designsynchronous state machine design
synchronous state machine design
 
Pwm(Pulse Width Modulation) presentation
Pwm(Pulse Width Modulation) presentationPwm(Pulse Width Modulation) presentation
Pwm(Pulse Width Modulation) presentation
 
8086 microprocessor
8086 microprocessor8086 microprocessor
8086 microprocessor
 
8051 interfacing
8051 interfacing8051 interfacing
8051 interfacing
 
Serial Communication
Serial CommunicationSerial Communication
Serial Communication
 
RS 232
RS 232RS 232
RS 232
 
Basics of signals data communication
Basics of signals data communicationBasics of signals data communication
Basics of signals data communication
 
Ec8791 lpc2148 pwm
Ec8791 lpc2148 pwmEc8791 lpc2148 pwm
Ec8791 lpc2148 pwm
 
Introduction to Microcontroller
Introduction to MicrocontrollerIntroduction to Microcontroller
Introduction to Microcontroller
 
peripheral interfacing
peripheral interfacingperipheral interfacing
peripheral interfacing
 
Subroutine in 8051 microcontroller
Subroutine in 8051 microcontrollerSubroutine in 8051 microcontroller
Subroutine in 8051 microcontroller
 
Digital Electronics Question Bank
Digital Electronics Question BankDigital Electronics Question Bank
Digital Electronics Question Bank
 
8086
80868086
8086
 
Classification of embedded systems
Classification of embedded systemsClassification of embedded systems
Classification of embedded systems
 
Meley & moore
Meley & mooreMeley & moore
Meley & moore
 
Addressing modes of 8051
Addressing modes of 8051Addressing modes of 8051
Addressing modes of 8051
 
Memory & I/O interfacing
Memory & I/O  interfacingMemory & I/O  interfacing
Memory & I/O interfacing
 
Interfacing methods of microcontroller
Interfacing methods of microcontrollerInterfacing methods of microcontroller
Interfacing methods of microcontroller
 
Case study of digital camera
Case study of digital cameraCase study of digital camera
Case study of digital camera
 

Destacado (19)

SPI Protocol
SPI ProtocolSPI Protocol
SPI Protocol
 
Protols used in bluetooth
Protols used in bluetoothProtols used in bluetooth
Protols used in bluetooth
 
Multiple Inheritance
Multiple InheritanceMultiple Inheritance
Multiple Inheritance
 
Arm processor
Arm processorArm processor
Arm processor
 
Inheritance in OOPS
Inheritance in OOPSInheritance in OOPS
Inheritance in OOPS
 
Embedded C - Optimization techniques
Embedded C - Optimization techniquesEmbedded C - Optimization techniques
Embedded C - Optimization techniques
 
Embedded C
Embedded CEmbedded C
Embedded C
 
Compiler in System Programming/Code Optimization techniques in System Program...
Compiler in System Programming/Code Optimization techniques in System Program...Compiler in System Programming/Code Optimization techniques in System Program...
Compiler in System Programming/Code Optimization techniques in System Program...
 
Introduction to Embedded System
Introduction to Embedded SystemIntroduction to Embedded System
Introduction to Embedded System
 
I2C Protocol
I2C ProtocolI2C Protocol
I2C Protocol
 
Object-Oriented Design: Multiple inheritance (C++ and C#)
Object-Oriented Design: Multiple inheritance (C++ and C#)Object-Oriented Design: Multiple inheritance (C++ and C#)
Object-Oriented Design: Multiple inheritance (C++ and C#)
 
Arm developement
Arm developementArm developement
Arm developement
 
Serial Peripheral Interface
Serial Peripheral InterfaceSerial Peripheral Interface
Serial Peripheral Interface
 
I2C Bus (Inter-Integrated Circuit)
I2C Bus (Inter-Integrated Circuit)I2C Bus (Inter-Integrated Circuit)
I2C Bus (Inter-Integrated Circuit)
 
Embedded C - Lecture 1
Embedded C - Lecture 1Embedded C - Lecture 1
Embedded C - Lecture 1
 
Serial peripheral interface
Serial peripheral interfaceSerial peripheral interface
Serial peripheral interface
 
Serial Peripheral Interface(SPI)
Serial Peripheral Interface(SPI)Serial Peripheral Interface(SPI)
Serial Peripheral Interface(SPI)
 
Code Optimization
Code OptimizationCode Optimization
Code Optimization
 
Iot
IotIot
Iot
 

Similar a I2C programming with C and Arduino

basics of temperature data logger (with energia and stellaris)
basics of  temperature data logger (with energia and stellaris)basics of  temperature data logger (with energia and stellaris)
basics of temperature data logger (with energia and stellaris)Zafer Genc
 
Part-2: Mastering microcontroller with embedded driver development
Part-2: Mastering microcontroller with embedded driver developmentPart-2: Mastering microcontroller with embedded driver development
Part-2: Mastering microcontroller with embedded driver developmentFastBit Embedded Brain Academy
 
m.tech esd lab manual for record
m.tech esd lab manual for recordm.tech esd lab manual for record
m.tech esd lab manual for recordG Lemuel George
 
Real Time Clock Interfacing with FPGA
Real Time Clock Interfacing with FPGAReal Time Clock Interfacing with FPGA
Real Time Clock Interfacing with FPGAMafaz Ahmed
 
ARDUINO AND ITS PIN CONFIGURATION
 ARDUINO AND ITS PIN  CONFIGURATION ARDUINO AND ITS PIN  CONFIGURATION
ARDUINO AND ITS PIN CONFIGURATIONsoma saikiran
 
I2 c communication between nodemcu and aeduino with dht11 (1)
I2 c communication between nodemcu and aeduino with dht11 (1)I2 c communication between nodemcu and aeduino with dht11 (1)
I2 c communication between nodemcu and aeduino with dht11 (1)Kuntala Das
 
ARDUINO BASED TIME AND TEMPERATURE DISPLAY
ARDUINO BASED TIME AND TEMPERATURE DISPLAY ARDUINO BASED TIME AND TEMPERATURE DISPLAY
ARDUINO BASED TIME AND TEMPERATURE DISPLAY ajit kumar singh
 
Keypad interfacing 8051 -NANOCDAC
Keypad interfacing 8051 -NANOCDACKeypad interfacing 8051 -NANOCDAC
Keypad interfacing 8051 -NANOCDACnanocdac
 
Analog To Digital Conversion (ADC) Programming in LPC2148
Analog To Digital Conversion (ADC) Programming in LPC2148Analog To Digital Conversion (ADC) Programming in LPC2148
Analog To Digital Conversion (ADC) Programming in LPC2148Omkar Rane
 
Logic gate tester for IC's ( Digital Electronics and Logic deisgn EE3114 )
Logic gate tester for IC's ( Digital Electronics and Logic deisgn EE3114 )Logic gate tester for IC's ( Digital Electronics and Logic deisgn EE3114 )
Logic gate tester for IC's ( Digital Electronics and Logic deisgn EE3114 )Jikrul Sayeed
 
Real Time Clock Interfacing for Arduino
Real Time Clock Interfacing for ArduinoReal Time Clock Interfacing for Arduino
Real Time Clock Interfacing for Arduinohandson28
 
Arduino experimenters guide hq
Arduino experimenters guide hqArduino experimenters guide hq
Arduino experimenters guide hqAndreis Santos
 
Arduino experimenters guide ARDX
Arduino experimenters guide ARDXArduino experimenters guide ARDX
Arduino experimenters guide ARDXJohnny Parrales
 

Similar a I2C programming with C and Arduino (20)

basics of temperature data logger (with energia and stellaris)
basics of  temperature data logger (with energia and stellaris)basics of  temperature data logger (with energia and stellaris)
basics of temperature data logger (with energia and stellaris)
 
Part-2: Mastering microcontroller with embedded driver development
Part-2: Mastering microcontroller with embedded driver developmentPart-2: Mastering microcontroller with embedded driver development
Part-2: Mastering microcontroller with embedded driver development
 
m.tech esd lab manual for record
m.tech esd lab manual for recordm.tech esd lab manual for record
m.tech esd lab manual for record
 
Real Time Clock Interfacing with FPGA
Real Time Clock Interfacing with FPGAReal Time Clock Interfacing with FPGA
Real Time Clock Interfacing with FPGA
 
EEE UNIT-2 PPT.pdf
EEE UNIT-2 PPT.pdfEEE UNIT-2 PPT.pdf
EEE UNIT-2 PPT.pdf
 
ARDUINO AND ITS PIN CONFIGURATION
 ARDUINO AND ITS PIN  CONFIGURATION ARDUINO AND ITS PIN  CONFIGURATION
ARDUINO AND ITS PIN CONFIGURATION
 
020419.pdf
020419.pdf020419.pdf
020419.pdf
 
I2 c communication between nodemcu and aeduino with dht11 (1)
I2 c communication between nodemcu and aeduino with dht11 (1)I2 c communication between nodemcu and aeduino with dht11 (1)
I2 c communication between nodemcu and aeduino with dht11 (1)
 
Project
ProjectProject
Project
 
ARDUINO BASED TIME AND TEMPERATURE DISPLAY
ARDUINO BASED TIME AND TEMPERATURE DISPLAY ARDUINO BASED TIME AND TEMPERATURE DISPLAY
ARDUINO BASED TIME AND TEMPERATURE DISPLAY
 
project 3 full report
project 3 full reportproject 3 full report
project 3 full report
 
Keypad interfacing 8051 -NANOCDAC
Keypad interfacing 8051 -NANOCDACKeypad interfacing 8051 -NANOCDAC
Keypad interfacing 8051 -NANOCDAC
 
Analog To Digital Conversion (ADC) Programming in LPC2148
Analog To Digital Conversion (ADC) Programming in LPC2148Analog To Digital Conversion (ADC) Programming in LPC2148
Analog To Digital Conversion (ADC) Programming in LPC2148
 
Em s7 plc
Em s7 plcEm s7 plc
Em s7 plc
 
Logic gate tester for IC's ( Digital Electronics and Logic deisgn EE3114 )
Logic gate tester for IC's ( Digital Electronics and Logic deisgn EE3114 )Logic gate tester for IC's ( Digital Electronics and Logic deisgn EE3114 )
Logic gate tester for IC's ( Digital Electronics and Logic deisgn EE3114 )
 
Real Time Clock Interfacing for Arduino
Real Time Clock Interfacing for ArduinoReal Time Clock Interfacing for Arduino
Real Time Clock Interfacing for Arduino
 
Arduino experimenters guide hq
Arduino experimenters guide hqArduino experimenters guide hq
Arduino experimenters guide hq
 
Introduction to Arduino
Introduction to ArduinoIntroduction to Arduino
Introduction to Arduino
 
Arduino experimenters guide ARDX
Arduino experimenters guide ARDXArduino experimenters guide ARDX
Arduino experimenters guide ARDX
 
Bidirect visitor counter
Bidirect visitor counterBidirect visitor counter
Bidirect visitor counter
 

Último

Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 

Último (20)

Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 

I2C programming with C and Arduino

  • 1. How to use I2C with AVR Sunday, April 28, 13
  • 2. I2C abstract(1) AVR1 AVR2 SCL SDA Vdd I2C is one of communication systems for Microcomputer. I2C uses 2 lines, SCL(clock), SDA(data). Sunday, April 28, 13
  • 3. I2C abstract(2) AVR1 AVR2 SCL SDA SCL(clock) is used to send clock for synchronization. SDA(data) is used for sending data. 1 bit data is transferred every clock. 1 0 1 0 Sunday, April 28, 13
  • 4. I2C abstract(3) Master You can connect more than 2 boards. One board must be Master and the others are Slave. Each slave has own address. Master can send data to each slave using the address. Slave1 Slave2 Slave3 Slave4 SDA address1 address2 address3 address4 SCL Sunday, April 28, 13
  • 5. I2C abstract(4) Master For example, if Master wants to send data to Slave2, Master sends address2 to SDA line.All Slaves receives the address. Only Slave2 replies. Slave1 Slave2 Slave3 Slave4 SDA address1 address2 address3 address4 SCL address2 reply The data is mine! I must send replay. The data is not mine. I will ignore it. The data is not mine. I will ignore it. The data is not mine. I will ignore it. Sunday, April 28, 13
  • 6. I2C abstract(5) Master Next Master sends data to SDA line. Only Slave2 receives the data and reply. Slave1 Slave2 Slave3 Slave4 SDA address1 address2 address3 address4 SCL data reply I’ll receive this data. I must send replay. The data is not mine. I will discard it. The data is not mine. I will discard it. The data is not mine. I will discard it. discard discard discard Sunday, April 28, 13
  • 7. Program I2C with AVR In this instance, you use arduino uno. Arduino uno has Atmega168. I am going to explain how to program Atmega168 with C, without Arduino library. Sunday, April 28, 13
  • 8. Connection SDA pin and SCL pin are fixed. On Arduino Uno, analog4 = SDA, analog 5 = SCL. Connect A4 and A5 of each Arduino. Vcc Sunday, April 28, 13
  • 9. C programming on Arduino IDE Arduino language is based on C. You can use all construction of C. When you write C on Arduino IDE, you have to replace “main and while” with “setup() and loop()”. Initialize process must be inside setup() and loop process must be inside loop(). #include<avr.io.h> void main(int){ //initialize process while(1){ //loop process } } #include<avr.io.h> void setup(){ //initialize process } void loop(){ //loop process } Normal C C on Arduino IDE Sunday, April 28, 13
  • 10. I2C registers(Atmega168 version) If you want to use I2C function on Microcomputer, you have to use registers for I2C. (Sometimes different microcomputers have different registers, you have to see data sheet.) These are I2C resisters(NOT all). TWAR is TWI(Slave) Address Register. Slave address is set in this register. TWBR is TWI Bit Rate Register. This is to decide SCL clock. TWCR is TWI Control Register.You can control I2C with this register. TWDR is TWI Data Register.The data to be transferred or received is set in this register. TWSR is TWI Status Register. The status of I2C communication is set in this register. TWA6 TWA5 TWA4 TWA3 TWA2 TWA1 TWA0 TWGCETWAR TWBR7 TWBR6 TWBR5 TWBR4 TWBR3 TWBR2 TWBR1 TWBR0 TWINT TWEA TWSTA TWSTO TWWC TWEN - TWIE TWD7 TWD6 TWD5 TWD4 TWD3 TWD2 TWD1 TWD0 TWS7 TWS6 TWS5 TWS4 TWS3 - TWPS1 TWPS0 TWBR TWCR TWDR TWSR Sunday, April 28, 13
  • 11. The simplest I2C sequence This is the simplest sequence of I2C. If you want to send data more than 1 byte.You have to repeat (4)(5). Master Slave (1)Start (2)Slave Adress (3)Ack (4)Data (5)Ack (6)Stop Sunday, April 28, 13
  • 12. How to use TWBR and TWSR First, you have to decide the communication speed(SCL) with TWBR and TWSR. SCL = CPU clock/(16+2(TWBR)xPrescaler) TWBR7 TWBR6 TWBR5 TWBR4 TWBR3 TWBR2 TWBR1 TWBR0 TWS7 TWS6 TWS5 TWS4 TWS3 - TWPS1 TWPS0 TWBR TWSR Prescaler parameter (ex) TWBR =0b00000001=1 TWBR =0b00000011=3 TWBR =0b11111111 = 255 (ex) CPU clock = 1Mhz TWBR=255 Prescaler=1 SCL = 1000000/(16+2(255)x1)=2kHz (ex) TWBR =(0<<TWPS1)|(0<<TWPS0) : prescaler is 1 TWBR =(0<<TWPS1)|(1<<TWPS0) : prescaler is 4 TWBR =(1<<TWPS1)|(1<<TWPS0) : prescaler is 64 Sunday, April 28, 13
  • 13. How to use TWCR You can control I2C message with TWCR. TWINT TWEA TWSTA TWSTO TWWC TWEN - TWIETWCR Send start condition TWINT TWEA TWSTA TWSTO TWWC TWEN - TWIETWCR Clear TWINT flag after sending message TWINT TWEA TWSTA TWSTO TWWC TWEN - TWIETWCR Send stop condition TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN); //Start condition while(!(TWCR & 1<<TWINT)) {} //After TWCR, always you have to check whether TWINT is updated TWCR = 0b10000100; //flag clear while(!(TWCR & 1<<TWINT)) {} TWCR = 0b10010100; //finish translation while(!(TWCR & 1<<TWINT)) {} Source code sample Sunday, April 28, 13
  • 14. How to use TWSR You can check status of I2C sequence from TWSR. TWS7 TWS6 TWS5 TWS4 TWS3 - TWPS1 TWPS0 TWSR Source code sample //check condition if((TWSR & 0xF8) == 0x08){ TWDR = 0b00000010; //set slave address TWCR = 0b10000100; //flag clear while(!(TWCR & 1<<TWINT)) {} _delay_ms(1); if((TWSR & 0xF8) == 0x18){ TWDR = 0b10101010; //write data(1byte) TWCR = 0b10000100; //send data while(!(TWCR & (1<<TWINT))); _delay_ms(1); } } Sunday, April 28, 13
  • 15. The simplest sample (1)Connect A4 and A5 between Master and Slave(You need pull-up resisters) (2)Connect LED and resister to Slave digital 9 (3)Connect MasterV5 to SlaveVin (4)Connect Master GND and Slave GND (5)Connect Master to PC with USB cable (6)Install program from next page Vcc Master Slave LEDGND This sample is to turn on LED connected to Slave using data from Master Sunday, April 28, 13
  • 16. Sample code(master) #include <avr/io.h> #include <util/delay.h> void setup(){ TWSR = (0<<TWPS1)|(0<<TWPS0); //Prescaler TWBR = 0xFF; //TWBR=255 } void loop(){ TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN); //Start condition while(!(TWCR & 1<<TWINT)) {} //wait for flag update _delay_ms(1); if((TWSR & 0xF8) == 0x08){ //check condition TWDR = 0b00000010; //send slave address TWCR = 0b10000100; //flag clear while(!(TWCR & 1<<TWINT)) {} _delay_ms(1); if((TWSR & 0xF8) == 0x18){ //check condition TWDR = 0b10101010; //write data(1byte) TWCR = 0b10000100; //send data while(!(TWCR & (1<<TWINT))); _delay_ms(1); } } TWCR = 0b10010100; //finish translation _delay_ms(2); } Sunday, April 28, 13
  • 17. Sample code(slave) #include <avr/io.h> #include <util/delay.h> void setup(){ DDRB = 0xFF; //all PINB is output mode PORTB = 0x00; //all PINB is Low TWAR = 0b00000010; //salve address setting } void loop(){ TWCR = 0b11000100; //start as slave(wait for address) if((TWSR & 0xF8) == 0x60){ //check status while(1){ TWCR = 0b11000100; //wait for data while(!(TWCR & (1<<TWINT))); if((TWSR & 0xF8) == 0x80){ //check status char data = TWDR; //receive data PORTB = data; //insert data to PORTB } if((TWSR & 0xF8) == 0xA0){ //check stop status _delay_ms(10); break; } } } } Sunday, April 28, 13