Write data to EEPROM.

This commit is contained in:
2022-07-29 19:47:32 +02:00
parent 7a476f3180
commit 157fb199b7
4 changed files with 54 additions and 16 deletions

View File

@@ -17,3 +17,11 @@ sudo ./compile.sh /dev/ttyUSB0
``` ```
The port can be found by looking inside `/dev`, the system file `ll /sys/class/tty/ttyUSB*`, or by running `lsusb`. The port can be found by looking inside `/dev`, the system file `ll /sys/class/tty/ttyUSB*`, or by running `lsusb`.
## Monitoring the serial port
```
sudo screen /dev/ttyUSB0 9600
```
To close the program, press `Ctrl + A` and type in `:quit` and hit enter.

View File

@@ -1,19 +1,37 @@
#include <util/delay.h>
#include "at28c256.h" #include "at28c256.h"
#include "../ard/pins.h" #include "../ard/pins.h"
unsigned char _addrck, _addr; unsigned char _ck, _addr, _oe, _we, _io0, _io1, _io2, _io3, _io4, _io5, _io6, _io7;
void at28c256_init(unsigned char addrck, unsigned char addr) { void at28c256_init(unsigned char ck, unsigned char addr, unsigned char oe, unsigned char we, unsigned char io0, unsigned char io1, unsigned char io2, unsigned char io3, unsigned char io4, unsigned char io5, unsigned char io6, unsigned char io7) {
pin_mode(addrck, OUTPUT); pin_mode(ck, OUTPUT);
digital_write(addrck, LOW); // disable digital_write(ck, LOW); // disable
pin_mode(addr, OUTPUT); pin_mode(addr, OUTPUT);
digital_write(addr, LOW); // disable digital_write(addr, LOW); // disable
pin_mode(oe, OUTPUT);
digital_write(oe, HIGH); // disable
pin_mode(we, OUTPUT);
digital_write(we, HIGH); // disable
_addrck = addrck; _ck = ck;
_addr = addr; _addr = addr;
_oe = oe;
_we = we;
_io0 = io0;
_io1 = io1;
_io2 = io2;
_io3 = io3;
_io4 = io4;
_io5 = io5;
_io6 = io6;
_io7 = io7;
} }
void at28c256_write(unsigned short addr, unsigned char data) { void at28c256_write(unsigned short addr, unsigned char data) {
// just to be safe, disable output
digital_write(_oe, HIGH);
// set the address // set the address
unsigned int i; unsigned int i;
@@ -24,11 +42,22 @@ void at28c256_write(unsigned short addr, unsigned char data) {
digital_write(_addr, LOW); digital_write(_addr, LOW);
} }
digital_write(_addrck, HIGH); digital_write(_ck, HIGH);
digital_write(_addrck, LOW); digital_write(_ck, LOW);
} }
digital_write(_addr, LOW); digital_write(_addr, LOW);
// TODO write data // write data
digital_write(_io0, data & 1);
digital_write(_io1, data & 1<<1);
digital_write(_io2, data & 1<<2);
digital_write(_io3, data & 1<<3);
digital_write(_io4, data & 1<<4);
digital_write(_io5, data & 1<<5);
digital_write(_io6, data & 1<<6);
digital_write(_io7, data & 1<<7);
digital_write(_we, data);
_delay_us(1); // min 100ns
digital_write(_we, HIGH);
} }

View File

@@ -1,7 +1,7 @@
#ifndef AT28C256_H_ #ifndef AT28C256_H_
#define AT28C256_H_ #define AT28C256_H_
void at28c256_init(unsigned char, unsigned char); void at28c256_init(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char);
void at28c256_write(unsigned short, unsigned char); void at28c256_write(unsigned short, unsigned char);
//unsigned char at28c256_read(unsigned short); TODO //unsigned char at28c256_read(unsigned short); TODO

9
main.c
View File

@@ -18,12 +18,13 @@ int main(){
void prepare() { void prepare() {
pins_init(); pins_init();
serial_init(9600); serial_init(9600);
at28c256_init(2, 13); at28c256_init(2, 13, 4, 3, 5, 6, 7, 8, 9, 10, 11, 12);
at28c256_write(0x0000, 0x7B); // 123
at28c256_write(0x0001, 0x2A); // 42
} }
void loop() { void loop() {
at28c256_write(0x0001, 0); serial_write("Test\n\r", 6);
_delay_ms(1000);
at28c256_write(0x8000, 0);
_delay_ms(1000); _delay_ms(1000);
} }