beautypg.com

4 gpior0 – general purpose i/o register 0, 5 gpior1 – general purpose i/o register 1, 6 gpior2 – general purpose i/o register 2 – Rainbow Electronics ATmega64M1 User Manual

Page 26: C code example

background image

26

8209A–AVR–08/09

ATmega16M1/32M1/64M1

The next code examples show assembly and C functions for reading the EEPROM. The exam-
ples assume that interrupts are controlled so that no interrupts will occur during execution of
these functions.

8.7.4

GPIOR0 – General Purpose I/O Register 0

8.7.5

GPIOR1 – General Purpose I/O Register 1

8.7.6

GPIOR2 – General Purpose I/O Register 2

Assembly Code Example

EEPROM_read:

; Wait for completion of previous write

sbic

EECR,EEWE

rjmp

EEPROM_read

; Set up address (r18:r17) in address register

out

EEARH, r18

out

EEARL, r17

; Start eeprom read by writing EERE

sbi

EECR,EERE

; Read data from data register

in

r16,EEDR

ret

C Code Example

unsigned char

EEPROM_read(unsigned int uiAddress)

{

/* Wait for completion of previous write */

while(EECR & (1<

;

/* Set up address register */

EEAR = uiAddress;

/* Start eeprom read by writing EERE */

EECR |= (1<

/* Return data from data register */

return EEDR;

}

Bit

7

6

5

4

3

2

1

0

GPIOR07

GPIOR06

GPIOR05

GPIOR04

GPIOR03

GPIOR02

GPIOR01

GPIOR00

GPIOR0

Read/Write

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Initial Value

0

0

0

0

0

0

0

0

Bit

7

6

5

4

3

2

1

0

GPIOR17

GPIOR16

GPIOR15

GPIOR14

GPIOR13

GPIOR12

GPIOR11

GPIOR10

GPIOR1

Read/Write

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Initial Value

0

0

0

0

0

0

0

0

Bit

7

6

5

4

3

2

1

0

GPIOR27

GPIOR26

GPIOR25

GPIOR24

GPIOR23

GPIOR22

GPIOR21

GPIOR20

GPIOR2

Read/Write

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Initial Value

0

0

0

0

0

0

0

0