Bug fix: check if vm exists
[avr-sim.git] / Eeprom.h
blob4fdf7fd43687b36fbdd7a12d61a2c6a2445cd62c
1 #ifndef AVR_EEPROM_H
2 #define AVR_EEPROM_H
4 #include "Memory.h"
5 #include "Hardware.h"
7 namespace avr {
9 class Register;
11 class Eeprom : public Hardware, public Memory {
12 public:
13 Eeprom(Bus & bus, unsigned int size);
14 ~Eeprom();
16 public:
17 void writeToAddress(unsigned int addr, unsigned char val);
18 unsigned char readFromAddress(unsigned int addr);
20 public:
21 bool attachReg(const char *name, IORegister *reg);
22 void regChanged( IORegister *reg );
23 void step();
25 private:
26 void setEECR( unsigned char eecr );
28 private:
29 unsigned int eear;
30 unsigned char oldEecr;
32 enum {
33 READY,
34 READ,
35 WRITE,
36 WRITE_ENABLED
37 } state;
39 static const unsigned int writeEnableCycles = 4;
40 static const unsigned int readCycles = 4;
41 static const unsigned int writeCycles = 2;
43 private:
44 Register *eearl;
45 Register *eearh;
46 Register *eecr;
47 Register *eedr;
52 #endif /*AVR_EEPROM_H*/