mirror of
https://github.com/Kugelschieber/arduino-c.git
synced 2026-01-18 02:50:26 +00:00
Started implementing EEPROM writer/reader for AT28C256.
This commit is contained in:
34
at28c256/at28c256.c
Normal file
34
at28c256/at28c256.c
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
#include "at28c256.h"
|
||||||
|
#include "../ard/pins.h"
|
||||||
|
|
||||||
|
unsigned char _addrck, _addr;
|
||||||
|
|
||||||
|
void at28c256_init(unsigned char addrck, unsigned char addr) {
|
||||||
|
pin_mode(addrck, OUTPUT);
|
||||||
|
digital_write(addrck, LOW); // disable
|
||||||
|
pin_mode(addr, OUTPUT);
|
||||||
|
digital_write(addr, LOW); // disable
|
||||||
|
|
||||||
|
_addrck = addrck;
|
||||||
|
_addr = addr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void at28c256_write(unsigned short addr, unsigned char data) {
|
||||||
|
// set the address
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
for(i = 0; i < 16; i++) {
|
||||||
|
if(addr & (1 << (15-i))) {
|
||||||
|
digital_write(_addr, HIGH);
|
||||||
|
} else {
|
||||||
|
digital_write(_addr, LOW);
|
||||||
|
}
|
||||||
|
|
||||||
|
digital_write(_addrck, HIGH);
|
||||||
|
digital_write(_addrck, LOW);
|
||||||
|
}
|
||||||
|
|
||||||
|
digital_write(_addr, LOW);
|
||||||
|
|
||||||
|
// TODO write data
|
||||||
|
}
|
||||||
8
at28c256/at28c256.h
Normal file
8
at28c256/at28c256.h
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
#ifndef AT28C256_H_
|
||||||
|
#define AT28C256_H_
|
||||||
|
|
||||||
|
void at28c256_init(unsigned char, unsigned char);
|
||||||
|
void at28c256_write(unsigned short, unsigned char);
|
||||||
|
//unsigned char at28c256_read(unsigned short); TODO
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -15,6 +15,7 @@ rm -rf build || true
|
|||||||
mkdir build
|
mkdir build
|
||||||
|
|
||||||
# compile files
|
# compile files
|
||||||
|
avr-gcc -Os -DF_CPU=16000000UL -mmcu=$MMCU -c -o build/at28c256.o -Wall at28c256/at28c256.c
|
||||||
avr-gcc -Os -DF_CPU=16000000UL -mmcu=$MMCU -c -o build/servo.o -Wall servo/servo.c
|
avr-gcc -Os -DF_CPU=16000000UL -mmcu=$MMCU -c -o build/servo.o -Wall servo/servo.c
|
||||||
avr-gcc -Os -DF_CPU=16000000UL -mmcu=$MMCU -c -o build/rf24.o -Wall rf24/rf24.c
|
avr-gcc -Os -DF_CPU=16000000UL -mmcu=$MMCU -c -o build/rf24.o -Wall rf24/rf24.c
|
||||||
avr-gcc -Os -DF_CPU=16000000UL -mmcu=$MMCU -c -o build/util.o -Wall ard/util.c
|
avr-gcc -Os -DF_CPU=16000000UL -mmcu=$MMCU -c -o build/util.o -Wall ard/util.c
|
||||||
|
|||||||
10
main.c
10
main.c
@@ -2,7 +2,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "ard/serial.h"
|
#include "ard/serial.h"
|
||||||
#include "ard/pins.h"
|
#include "ard/pins.h"
|
||||||
#include "ard/util.h"
|
#include "at28c256/at28c256.h"
|
||||||
|
|
||||||
void prepare();
|
void prepare();
|
||||||
void loop();
|
void loop();
|
||||||
@@ -18,12 +18,12 @@ int main(){
|
|||||||
void prepare(){
|
void prepare(){
|
||||||
pins_init();
|
pins_init();
|
||||||
serial_init(9600);
|
serial_init(9600);
|
||||||
pin_mode(13, OUTPUT);
|
at28c256_init(2, 13);
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop(){
|
void loop(){
|
||||||
digital_write(13, LOW);
|
at28c256_write(0x0001, 0);
|
||||||
|
_delay_ms(1000);
|
||||||
|
at28c256_write(0x8000, 0);
|
||||||
_delay_ms(1000);
|
_delay_ms(1000);
|
||||||
digital_write(13, HIGH);
|
|
||||||
_delay_us(1000000);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,8 @@
|
|||||||
|
#include <util/delay.h>
|
||||||
#include "rf24.h"
|
#include "rf24.h"
|
||||||
#include "nRF24L01.h"
|
#include "nRF24L01.h"
|
||||||
#include "../ard/pins.h"
|
#include "../ard/pins.h"
|
||||||
|
|
||||||
// FIXME for testing, remove later
|
|
||||||
#include <util/delay.h>
|
|
||||||
|
|
||||||
#define CONFIG_CRC (1<<EN_CRC)|(0<<CRCO)
|
#define CONFIG_CRC (1<<EN_CRC)|(0<<CRCO)
|
||||||
|
|
||||||
unsigned char _ce, _csn, _sck, _mo, _mi, _irq, _payload_len;
|
unsigned char _ce, _csn, _sck, _mo, _mi, _irq, _payload_len;
|
||||||
|
|||||||
Reference in New Issue
Block a user