SlideShare a Scribd company logo


      

                     ‫ﺍﻟﺘﺠﺎﺭﺏ ﺍﻟﻌﻤﻠﻴﺔ‬

               

                          




                          




                   Programming
      Embedded Systems Microcontroller

You Can Practice Microcontroller Programming Easily Now!
      WALID BALID, Tuesday, December 15, 2009
Practical Class 11                                                           Programming Microcontrollers

      Exp.30: Programming Internal EEPROM                   EEPROM

                                                                                          
                                                    EEPROM

                                                                                              




 

      Faculty of Electrical and Electronic Eng.             241              Automatic Control & Automation Dept.
                                                                               

                                                                                                
 UART1
             RS232
                                                                       .EEPROM

                                                                                             
                                                              
                                              | |     
Dim Var As [xram|Sram|Eram]
Type [at Location][overlay]                                                      

Examples:                                   overlay
Dim Sram_var As Sram Byte At &H10
                                              
Dim Eprm_var As Eram Byte At &H80
Writeeeprom Var , Address                             AddressEEPROMVar
Writeeeprom Var , Label                           LabelEEPROMVar
Readeeprom Var , Address                               AddressEEPROMVar
Readeeprom Var , Label                            LabelEEPROMVar
                                             DATA
$eeprom
                                                       EPPEEPROM
$data                                                
                                                  Intel HEXEPP
$eepromhex
                                                                    $eeprom
$eepleave                                         EEPROMEPP

$default Sram | Xram | Eram

Examples:
$default Sram                                               $default
Dim A As Byte , B As Byte

$default Eram
Dim C As Byte , D As Byte

$end $default                                      
$noramclear                                             SRAM
$romstart = address                                             

 EEPROM AVR
                        

                         242                            
Practical Class 11                                         Programming Microcontrollers

                                                            (1)

$regfile = "m128def.dat"
                                                                   
$crystal = 4000000
$baud = 9600
'------------------
Dim B As Byte , I As Byte                              SRAM
Dim W As Word , S As String * 5

Dim Eb As Eram Byte At 13
Dim Ei As Eram Integer At 14                        EEPROM
Dim El As Eram Long At 16
Dim Es As Eram String * 5 At 20
'------------------
Do
   S = "ABCDE" : Es = S
   S = ""
   S = Es : Print S
                                                  SRAM     
                                                         .EEPROM
   B = 10 : Eb = B
   B = 0
   B = Eb : Print B
'/------

   For I = 0 To 4                                   
      Readeeprom B , I                             SRAMEPROM
      Print B
   Next I
'/------                                                                
    S = "abcde" : W = 10000                       SRAM     
    Writeeeprom S , 5
                                                   EEPROM
    Writeeeprom W , 11

   S = "" : W = 0                                  
   Readeeprom S , 5 : Print S
   Readeeprom W , 11 : Print W                     SRAMEPROM
'/------

   Restore Lbl
   Read B : Print B                               SRAM
   Read B : Print B                                ROM
Loop
End
'------------------                                         ROM
Lbl:
Data 10 , 12
'------------------                                     EEPROM
$eeprom
   Data 1 , 2 , 3 , 4 , 5
$data

                                                                                       

                                                                                       
Faculty of Electrical and Electronic Eng.   243     Automatic Control & Automation Dept.
                                           

                                                   (2)

$regfile = "m128def.dat"
$crystal = 4000000
$baud = 9600                                              
$eepromhex
$eepleave
'------------------
Dim Var As Sram Byte At &H200
'------------------                     EEPROM    
$eeprom
   Label1:                                                      
   Data 1 , 2 , 3 , 4 , 5

   Label2:
   Data 10 , 20 , 30 , 40 , 50
$data
'------------------                      
   Readeeprom Var , Label1              SRAMEPROM
      Print Var
         Readeeprom Var
            Print Var
'/------
                                         
                                        SRAMEPROM
   Readeeprom Var , Label2
      Print Var
         Readeeprom Var
            Print Var                                           
'/------

                                       SRAM     
    Var = 100
    Writeeeprom Var , Label1           EEPROM
    Var = 101
    Writeeeprom Var

   Readeeprom Var , Label1
      Print Var
   Readeeprom Var
      Print Var
'/------


   Var = 0
   Writeeeprom Var , 3
      Readeeprom Var , 3
         Print Var
End


                                                                                
                                                                              



     244             
Practical Class 11                                                     Programming Microcontrollers

      Exp.31: Interfacing with I2C                            I2C

                                                                                    
     EEPROM       I2C    
                                                                                         .RTC 

                                                                                        




 


      Faculty of Electrical and Electronic Eng.      245               Automatic Control & Automation Dept.
                                                                   

                                                                                 I2C
   Philips 1980Inter-Integrated Circuit I2C 
  TV
                        Two Wire InterfaceTWI
                                                                                                             
  SDA, SCK          I2C  
   SDA
      One-Master<>Multi-Slaves         SCK
                                                     Multi-Master<>Multi-Slaves

   Chip-to-Chip
  Multi-SlaveMaster    Multi-Drop Bus
   Master<>Slave 
                                                Multi-Slave Multi-Master

  SDA, SCKOpen collector I2C
                                                              “1”

  112 nodes 7-BitUnique Address I²C
    1008 nodes 10-bit
                                                                                                 

  
                                                          10pF400pF

                                                                                                             




 


                          246                      
Practical Class 11                                                        Programming Microcontrollers




                                             
                                                                                                     

                                                              I2C
              Advantages                            Disadvantages
Slave ü                        .(3meter) ×
                  ü              400Khz ×
    ü                            ×
 ü
                        




Faculty of Electrical and Electronic Eng.              247          Automatic Control & Automation Dept.
                                                                        

                                     Interfacing I2C EEPROM
Description:

I²C is an abbreviation of Inter Integrated Circuit and is a protocol for serial communication between
Integrated Circuits, it is also called Two Wire Interface (TWI). The bus is used for communication
between microcontrollers and peripheral devices like memories, temperature sensors and I/O
expanders. An EEPROM is a Electrically Erasable and Programmable Read Only Memory.

  EEPROM Model                    Size             Internally Organized                Address (hex)
AT24C01                        128 Bytes          128 x 8    = 1024   bits             00000 >> 0007F
AT24C02                        256 Bytes          256 x 8    = 2048   bits             00000 >> 000FF
AT24C04                        512 Bytes          512 x 8    = 4096   bits             00000 >> 001FF
AT24C08                        1 Kbyte            1024 x 8 = 8192     bits             00000 >> 003FF
AT24C16                        2 Kbyte            2048 x 8 = 16384 bits                00000 >> 007FF
AT24C32                        4 Kbyte            4096 x 8 = 32768 bits                00000 >> 00FFF
AT24C64                        8 Kbyte            8192 x 8 = 65536 bits                00000 >> 01FFF
AT24C128                       16 Kbyte           16384 x 8 = 131072 bits              00000 >> 03FFF
AT24C256                       32 Kbyte           32768 x 8 = 262144 bits              00000 >> 07FFF
AT24C512                       64 Kbyte           65536 x 8 = 524288 bits              00000 >> 0FFFF
AT24C1024                      128 Kbyte          131072 x 8 = 1048576 bits            00000 >> 1FFFF

The communication of the bus goes along two lines: SDA (Serial Data) and SCL (Serial Clock). Each I²C
device has a unique 7-bit address (Device Select Code). The most significant bits are fixed and
assigned to a specific device category (e.g. b1010 is assigned to serial EEPROMS). The three less
significant bits (A2,A1 and A0) are programmable and used to address the device. The three bits
allows eight different I2C address combinations and therefore allowing up to eight different devices of
that type to operate on the same I2C-bus. The I2C address is send in the 1st byte, the lest signi icant bit
of the first byte is used to indicate if the master is going to write(0) or read(1) from the slave.




The device that sends data along the bus is called master, a device that receives the data is called
slave. The master starts the transmission with a start signal and stops the transmission with a stop
signal on the SDA line. During the start and stop signals the SCL line has to be high. After the master
has started the data-transmission with a start signal, the master writes a device address byte to the

                       248                        
Practical Class 11                                                          Programming Microcontrollers

slave. Each data byte has to have a length of 8 bits. The slave has to acknowledge the reception of the
data byte with a acknowledge-bit (ACK).




A write operation requires a device address bytes, two address bytes and the data-byte. Upon receive
of the address the EEPROM sends an ACK and then clocks in the data-byte. The EEPROM sends again
an ACK and the microcontrollers sends a stop-signal to terminate the write sequence.




All devices from 32K – 512K will require no system changes and can be interchanged with only the
page size differences to consider.

Low Density Random Read:




Faculty of Electrical and Electronic Eng.           249               Automatic Control & Automation Dept.
                                                                         

Medium and High Density Random Read:




                                          AT24C32 (4 Kbyte)
       4096 * 8 = 32768 bits                  0000 >> 0FFF                                      32 byte page

            &H0000                       Saturday [128 Set]
                                                    128 x 4 = 215 Bytes

                                                  512Bytes                &H01FF
                               &H0200 Sunday [128 Set]
                                                128 x 4 = 215 Bytes

                                                  512Bytes                &H03FF
                               &H0400 Monday [128 Set]
                                               128 x 4 = 215 Bytes

                                                  512Bytes                &H05FF
                               &H0600 Tuesday [128 Set]
                                                128 x 4 = 215 Bytes

                                                  512Bytes                &H07FF
                               &H0800 Wednesday [128 Set]
                                              128 x 4 = 215 Bytes

                                                  512Bytes                &H09FF
                               &H0A00 Thursday [128 Set]
                                                128 x 4 = 215 Bytes

                                                  512Bytes                &H0BFF
                               &H0C00 Friday [128 Set]
                                                 128 x 4 = 215 Bytes

                                                  512Bytes                &H0DFF
                               &H0E00                 NON USED AREA


                                                  512Bytes                                     &H0FFF
[




                          250                          
Practical Class 11                                                                         Programming Microcontrollers

Software:

The BASCOM-AVR compiler is used to make a program that writes and reads one byte from the EEPROM. BASCOM has
several embedded commands to control the I2C bus.

In BASCOM-AVR you irst have to con igure the ports you use for the SDA and SCL lines of the I2C bus. Then you send the
device address to select the EEPROM that is connected to the I2C bus. After that you send two bytes to the EEPROM to select
the address in the EEPROM to which you want to write the data. The last byte to send in a write sequence is the data byte.


$regfile = "m16def.dat"
$crystal = 2000000
$lib "I2C_TWI.LBX"
$baud = 9600
'---------------------------
Config Scl = Portc.0
Config Sda = Portc.1
Config Twi = 100000                                                                '100KHZ
'---------------------------
Const Addressw = 160                                                        '&B10100000 slave write address
Const Addressr = 161                                                        '&B10100001 slave read address
'---------------------------
Dim Adres_h As Byte , Adres_l As Byte
Dim Rd_value As Byte , Wr_value As Byte
'---------------------------
Do
   Input "Wr_value:" , Wr_value
   Input "Adres_l:" , Adres_l
   Input "Adres_h:" , Adres_h

    Gosub Write_eeprom
    Gosub Read_eeprom

    Print "Error W: " ; Err
    print "Wr_value: " ; Wr_value

   Print "Error R: " ; Err
   Print "Rd_value: " ; Rd_value
Loop
End
'---------------------------
Write_eeprom:
    I2cstart                                                                          'Start condition
    I2cwbyte Addressw                                                                 'Slave address
    I2cwbyte Adres_h                                                                  'H address of EEPROM
    I2cwbyte Adres_l                                                                  'L address of EEPROM
    I2cwbyte Wr_value                                                                 'Value to write
    I2cstop                                                                           'Stop condition
    Waitms 10                                                                         'Wait for 10 milliseconds
Return
'---------------------------
Read_eeprom:
   I2cstart                                                                           'Generate start
   I2cwbyte Addressw                                                                  'Slave adsress
   I2cwbyte Adres_h                                                                   'H address of EEPROM
   I2cwbyte Adres_l                                                                   'L address of EEPROM
   I2cstart                                                                           'Repeated start
   I2cwbyte Addressr                                                                  'Slave address (read)
   I2crbyte Rd_value , Nack                                                           'Read byte
   I2cstop                                                                            'Generate stop
Return
'---------------------------


                                                                                                                        
Faculty of Electrical and Electronic Eng.                     251                   Automatic Control & Automation Dept.

More Related Content

PDF
Tp Result
DOCX
Tp Result
PDF
Testing Adhearsion Applications
PPT
Function of memory.4to5
PDF
Erlangfactory
PDF
Embedded System Microcontroller Interactive Course using BASCOM-AVR - Lecture9
PDF
Embedded System Microcontroller Interactive Course using BASCOM-AVR -Lecture7
PDF
Embedded System Microcontroller Interactive Course using BASCOM-AVR - Lecture6
Tp Result
Tp Result
Testing Adhearsion Applications
Function of memory.4to5
Erlangfactory
Embedded System Microcontroller Interactive Course using BASCOM-AVR - Lecture9
Embedded System Microcontroller Interactive Course using BASCOM-AVR -Lecture7
Embedded System Microcontroller Interactive Course using BASCOM-AVR - Lecture6

Viewers also liked (9)

PDF
Embedded System Microcontroller Interactive Course using BASCOM-AVR - Lecture4
PDF
Embedded System Microcontroller Interactive Course using BASCOM-AVR - Lecture3
PPTX
fire preventing robot ppt copy
PDF
Embedded System Microcontroller Interactive Course using BASCOM-AVR - Lecture10
PDF
Embedded System Microcontroller Interactive Course using BASCOM-AVR - Lecture...
PDF
Embedded System Microcontroller Interactive Course using BASCOM-AVR - Lecture8
PDF
Embedded System Microcontroller Interactive Course using BASCOM-AVR - Lecture12
PDF
Embedded System Microcontroller Interactive Course using BASCOM-AVR -Lecture5
PPTX
RF Based Home Automation System
Embedded System Microcontroller Interactive Course using BASCOM-AVR - Lecture4
Embedded System Microcontroller Interactive Course using BASCOM-AVR - Lecture3
fire preventing robot ppt copy
Embedded System Microcontroller Interactive Course using BASCOM-AVR - Lecture10
Embedded System Microcontroller Interactive Course using BASCOM-AVR - Lecture...
Embedded System Microcontroller Interactive Course using BASCOM-AVR - Lecture8
Embedded System Microcontroller Interactive Course using BASCOM-AVR - Lecture12
Embedded System Microcontroller Interactive Course using BASCOM-AVR -Lecture5
RF Based Home Automation System
Ad

Similar to Embedded System Microcontroller Interactive Course using BASCOM-AVR - Lecture11 (20)

PPT
Memory management
PPTX
rom-140919103032-phpapp02.pptx
PDF
Open MP cheet sheet
PDF
Reversing & malware analysis training part 4 assembly programming basics
PPT
Read Only Memory
PDF
X Mas 3
 
PDF
XS Japan 2008 Services English
PPT
L12-Forwarding.ppt
PPTX
Topic 11- Read Only Memory (ROM).pptx
PPTX
Digital logic devices
PDF
Primary Memory: RAM, ROM and their Types
PDF
Ram and rom pp1
PDF
Open mp intro_01
PDF
Dual port ram
PPTX
The 8051 Microcontroller and Embedded Systems
PPT
ROM(Read Only Memory )
PPT
Bootloader and MMU (english)
PPTX
Memory And Storages
PPTX
Reversing & Malware Analysis Training Part 4 - Assembly Programming Basics
PPTX
SEMICONDUCTOR MEMORIES(RAM &ROM).pptx
Memory management
rom-140919103032-phpapp02.pptx
Open MP cheet sheet
Reversing & malware analysis training part 4 assembly programming basics
Read Only Memory
X Mas 3
 
XS Japan 2008 Services English
L12-Forwarding.ppt
Topic 11- Read Only Memory (ROM).pptx
Digital logic devices
Primary Memory: RAM, ROM and their Types
Ram and rom pp1
Open mp intro_01
Dual port ram
The 8051 Microcontroller and Embedded Systems
ROM(Read Only Memory )
Bootloader and MMU (english)
Memory And Storages
Reversing & Malware Analysis Training Part 4 - Assembly Programming Basics
SEMICONDUCTOR MEMORIES(RAM &ROM).pptx
Ad

Recently uploaded (20)

PDF
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
PDF
Computing-Curriculum for Schools in Ghana
PDF
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
PDF
Pre independence Education in Inndia.pdf
PDF
2.FourierTransform-ShortQuestionswithAnswers.pdf
PPTX
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
PDF
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
PDF
102 student loan defaulters named and shamed – Is someone you know on the list?
PPTX
master seminar digital applications in india
PDF
Insiders guide to clinical Medicine.pdf
PDF
Sports Quiz easy sports quiz sports quiz
PPTX
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
PDF
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
PDF
RMMM.pdf make it easy to upload and study
PPTX
Cell Types and Its function , kingdom of life
PPTX
Pharmacology of Heart Failure /Pharmacotherapy of CHF
PPTX
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
PDF
Basic Mud Logging Guide for educational purpose
PDF
TR - Agricultural Crops Production NC III.pdf
PDF
01-Introduction-to-Information-Management.pdf
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
Computing-Curriculum for Schools in Ghana
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
Pre independence Education in Inndia.pdf
2.FourierTransform-ShortQuestionswithAnswers.pdf
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
102 student loan defaulters named and shamed – Is someone you know on the list?
master seminar digital applications in india
Insiders guide to clinical Medicine.pdf
Sports Quiz easy sports quiz sports quiz
PPT- ENG7_QUARTER1_LESSON1_WEEK1. IMAGERY -DESCRIPTIONS pptx.pptx
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
RMMM.pdf make it easy to upload and study
Cell Types and Its function , kingdom of life
Pharmacology of Heart Failure /Pharmacotherapy of CHF
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
Basic Mud Logging Guide for educational purpose
TR - Agricultural Crops Production NC III.pdf
01-Introduction-to-Information-Management.pdf

Embedded System Microcontroller Interactive Course using BASCOM-AVR - Lecture11

  • 1.    ‫ﺍﻟﺘﺠﺎﺭﺏ ﺍﻟﻌﻤﻠﻴﺔ‬     Programming Embedded Systems Microcontroller You Can Practice Microcontroller Programming Easily Now! WALID BALID, Tuesday, December 15, 2009
  • 2. Practical Class 11 Programming Microcontrollers Exp.30: Programming Internal EEPROM EEPROM     EEPROM     Faculty of Electrical and Electronic Eng. 241 Automatic Control & Automation Dept.
  • 3.        UART1              RS232 .EEPROM           | |      Dim Var As [xram|Sram|Eram] Type [at Location][overlay]   Examples: overlay Dim Sram_var As Sram Byte At &H10  Dim Eprm_var As Eram Byte At &H80 Writeeeprom Var , Address AddressEEPROMVar Writeeeprom Var , Label LabelEEPROMVar Readeeprom Var , Address AddressEEPROMVar Readeeprom Var , Label LabelEEPROMVar  DATA $eeprom  EPPEEPROM $data    Intel HEXEPP $eepromhex $eeprom $eepleave  EEPROMEPP $default Sram | Xram | Eram Examples: $default Sram  $default Dim A As Byte , B As Byte $default Eram Dim C As Byte , D As Byte $end $default   $noramclear  SRAM $romstart = address    EEPROM AVR    242 
  • 4. Practical Class 11 Programming Microcontrollers  (1) $regfile = "m128def.dat"   $crystal = 4000000 $baud = 9600 '------------------ Dim B As Byte , I As Byte SRAM Dim W As Word , S As String * 5 Dim Eb As Eram Byte At 13 Dim Ei As Eram Integer At 14 EEPROM Dim El As Eram Long At 16 Dim Es As Eram String * 5 At 20 '------------------ Do S = "ABCDE" : Es = S S = "" S = Es : Print S SRAM      .EEPROM B = 10 : Eb = B B = 0 B = Eb : Print B '/------ For I = 0 To 4    Readeeprom B , I SRAMEPROM Print B Next I '/------   S = "abcde" : W = 10000 SRAM      Writeeeprom S , 5 EEPROM Writeeeprom W , 11 S = "" : W = 0   Readeeprom S , 5 : Print S Readeeprom W , 11 : Print W SRAMEPROM '/------ Restore Lbl Read B : Print B SRAM Read B : Print B ROM Loop End '------------------ ROM Lbl: Data 10 , 12 '------------------ EEPROM $eeprom Data 1 , 2 , 3 , 4 , 5 $data     Faculty of Electrical and Electronic Eng. 243 Automatic Control & Automation Dept.
  • 5.      (2) $regfile = "m128def.dat" $crystal = 4000000 $baud = 9600   $eepromhex $eepleave '------------------ Dim Var As Sram Byte At &H200 '------------------  EEPROM     $eeprom Label1:  Data 1 , 2 , 3 , 4 , 5 Label2: Data 10 , 20 , 30 , 40 , 50 $data '------------------    Readeeprom Var , Label1 SRAMEPROM Print Var Readeeprom Var Print Var '/------    SRAMEPROM Readeeprom Var , Label2 Print Var Readeeprom Var Print Var   '/------ SRAM      Var = 100 Writeeeprom Var , Label1 EEPROM Var = 101 Writeeeprom Var Readeeprom Var , Label1 Print Var Readeeprom Var Print Var '/------ Var = 0 Writeeeprom Var , 3 Readeeprom Var , 3 Print Var End       244 
  • 6. Practical Class 11 Programming Microcontrollers Exp.31: Interfacing with I2C I2C      EEPROM       I2C       .RTC      Faculty of Electrical and Electronic Eng. 245 Automatic Control & Automation Dept.
  • 7.     I2C  Philips 1980Inter-Integrated Circuit I2C  TV  Two Wire InterfaceTWI   SDA, SCK          I2C    SDA     One-Master<>Multi-Slaves         SCK Multi-Master<>Multi-Slaves  Chip-to-Chip Multi-SlaveMaster    Multi-Drop Bus  Master<>Slave   Multi-Slave Multi-Master SDA, SCKOpen collector I2C  “1” 112 nodes 7-BitUnique Address I²C   1008 nodes 10-bit     10pF400pF      246 
  • 8. Practical Class 11 Programming Microcontrollers      I2C  Advantages  Disadvantages Slave ü .(3meter) ×  ü 400Khz ×  ü  ×  ü  Faculty of Electrical and Electronic Eng. 247 Automatic Control & Automation Dept.
  • 9.     Interfacing I2C EEPROM Description: I²C is an abbreviation of Inter Integrated Circuit and is a protocol for serial communication between Integrated Circuits, it is also called Two Wire Interface (TWI). The bus is used for communication between microcontrollers and peripheral devices like memories, temperature sensors and I/O expanders. An EEPROM is a Electrically Erasable and Programmable Read Only Memory. EEPROM Model Size Internally Organized Address (hex) AT24C01 128 Bytes 128 x 8 = 1024 bits 00000 >> 0007F AT24C02 256 Bytes 256 x 8 = 2048 bits 00000 >> 000FF AT24C04 512 Bytes 512 x 8 = 4096 bits 00000 >> 001FF AT24C08 1 Kbyte 1024 x 8 = 8192 bits 00000 >> 003FF AT24C16 2 Kbyte 2048 x 8 = 16384 bits 00000 >> 007FF AT24C32 4 Kbyte 4096 x 8 = 32768 bits 00000 >> 00FFF AT24C64 8 Kbyte 8192 x 8 = 65536 bits 00000 >> 01FFF AT24C128 16 Kbyte 16384 x 8 = 131072 bits 00000 >> 03FFF AT24C256 32 Kbyte 32768 x 8 = 262144 bits 00000 >> 07FFF AT24C512 64 Kbyte 65536 x 8 = 524288 bits 00000 >> 0FFFF AT24C1024 128 Kbyte 131072 x 8 = 1048576 bits 00000 >> 1FFFF The communication of the bus goes along two lines: SDA (Serial Data) and SCL (Serial Clock). Each I²C device has a unique 7-bit address (Device Select Code). The most significant bits are fixed and assigned to a specific device category (e.g. b1010 is assigned to serial EEPROMS). The three less significant bits (A2,A1 and A0) are programmable and used to address the device. The three bits allows eight different I2C address combinations and therefore allowing up to eight different devices of that type to operate on the same I2C-bus. The I2C address is send in the 1st byte, the lest signi icant bit of the first byte is used to indicate if the master is going to write(0) or read(1) from the slave. The device that sends data along the bus is called master, a device that receives the data is called slave. The master starts the transmission with a start signal and stops the transmission with a stop signal on the SDA line. During the start and stop signals the SCL line has to be high. After the master has started the data-transmission with a start signal, the master writes a device address byte to the  248 
  • 10. Practical Class 11 Programming Microcontrollers slave. Each data byte has to have a length of 8 bits. The slave has to acknowledge the reception of the data byte with a acknowledge-bit (ACK). A write operation requires a device address bytes, two address bytes and the data-byte. Upon receive of the address the EEPROM sends an ACK and then clocks in the data-byte. The EEPROM sends again an ACK and the microcontrollers sends a stop-signal to terminate the write sequence. All devices from 32K – 512K will require no system changes and can be interchanged with only the page size differences to consider. Low Density Random Read: Faculty of Electrical and Electronic Eng. 249 Automatic Control & Automation Dept.
  • 11.     Medium and High Density Random Read: AT24C32 (4 Kbyte) 4096 * 8 = 32768 bits 0000 >> 0FFF 32 byte page &H0000 Saturday [128 Set] 128 x 4 = 215 Bytes 512Bytes &H01FF &H0200 Sunday [128 Set] 128 x 4 = 215 Bytes 512Bytes &H03FF &H0400 Monday [128 Set] 128 x 4 = 215 Bytes 512Bytes &H05FF &H0600 Tuesday [128 Set] 128 x 4 = 215 Bytes 512Bytes &H07FF &H0800 Wednesday [128 Set] 128 x 4 = 215 Bytes 512Bytes &H09FF &H0A00 Thursday [128 Set] 128 x 4 = 215 Bytes 512Bytes &H0BFF &H0C00 Friday [128 Set] 128 x 4 = 215 Bytes 512Bytes &H0DFF &H0E00 NON USED AREA 512Bytes &H0FFF [  250 
  • 12. Practical Class 11 Programming Microcontrollers Software: The BASCOM-AVR compiler is used to make a program that writes and reads one byte from the EEPROM. BASCOM has several embedded commands to control the I2C bus. In BASCOM-AVR you irst have to con igure the ports you use for the SDA and SCL lines of the I2C bus. Then you send the device address to select the EEPROM that is connected to the I2C bus. After that you send two bytes to the EEPROM to select the address in the EEPROM to which you want to write the data. The last byte to send in a write sequence is the data byte. $regfile = "m16def.dat" $crystal = 2000000 $lib "I2C_TWI.LBX" $baud = 9600 '--------------------------- Config Scl = Portc.0 Config Sda = Portc.1 Config Twi = 100000 '100KHZ '--------------------------- Const Addressw = 160 '&B10100000 slave write address Const Addressr = 161 '&B10100001 slave read address '--------------------------- Dim Adres_h As Byte , Adres_l As Byte Dim Rd_value As Byte , Wr_value As Byte '--------------------------- Do Input "Wr_value:" , Wr_value Input "Adres_l:" , Adres_l Input "Adres_h:" , Adres_h Gosub Write_eeprom Gosub Read_eeprom Print "Error W: " ; Err print "Wr_value: " ; Wr_value Print "Error R: " ; Err Print "Rd_value: " ; Rd_value Loop End '--------------------------- Write_eeprom: I2cstart 'Start condition I2cwbyte Addressw 'Slave address I2cwbyte Adres_h 'H address of EEPROM I2cwbyte Adres_l 'L address of EEPROM I2cwbyte Wr_value 'Value to write I2cstop 'Stop condition Waitms 10 'Wait for 10 milliseconds Return '--------------------------- Read_eeprom: I2cstart 'Generate start I2cwbyte Addressw 'Slave adsress I2cwbyte Adres_h 'H address of EEPROM I2cwbyte Adres_l 'L address of EEPROM I2cstart 'Repeated start I2cwbyte Addressr 'Slave address (read) I2crbyte Rd_value , Nack 'Read byte I2cstop 'Generate stop Return '---------------------------   Faculty of Electrical and Electronic Eng. 251 Automatic Control & Automation Dept.