root / trunk / code / projects / test / eeprom.c @ 907
History | View | Annotate | Download (936 Bytes)
1 | 858 | dsschult | #include <avr/io.h> |
---|---|---|---|
2 | #include "eeprom.h" |
||
3 | |||
4 | int eeprom_put_byte(unsigned int uiAddress, unsigned char ucData) { |
||
5 | /* Wait for completion of previous write */
|
||
6 | while(EECR & (1<<EEWE)); |
||
7 | /* Set up address and data registers */
|
||
8 | EEAR = uiAddress; |
||
9 | EEDR = ucData; |
||
10 | /* Write logical one to EEMWE */
|
||
11 | EECR |= (1<<EEMWE);
|
||
12 | /* Start eeprom write by setting EEWE */
|
||
13 | EECR |= (1<<EEWE);
|
||
14 | |||
15 | return 0; |
||
16 | } |
||
17 | |||
18 | int eeprom_get_byte(unsigned int uiAddress, unsigned char *byte) { |
||
19 | /* Wait for completion of previous write */
|
||
20 | while(EECR & (1<<EEWE)); |
||
21 | /* Set up address register */
|
||
22 | EEAR = uiAddress; |
||
23 | /* Start eeprom read by writing EERE */
|
||
24 | EECR |= (1<<EERE);
|
||
25 | /* get data from data register */
|
||
26 | *byte=EEDR; |
||
27 | |||
28 | return 0; |
||
29 | } |
||
30 | |||
31 | |||
32 | unsigned char get_robotid(void) { |
||
33 | unsigned char ret; |
||
34 | |||
35 | eeprom_get_byte(EEPROM_ROBOT_ID_ADDR, &ret); |
||
36 | |||
37 | return ret;
|
||
38 | } |