/* * TITLE: SRAM * BOARD: ARDUINO MEGA * AUTHOR: JOSCHKA ANDERSEN * SRAM: CY 62256 NLL-70P * */ void setup() { DDRC = 0xff; // PortC = A0 - A7 (PC0-PC7) DDRL = 0xff; // PortL = A8 - A14 (PL0-PL6) DDRD = 0xff; // PortD = ¬CE (PD0), ¬OE (PD1), ¬WE (PD2) PORTD = 0b00000111; // Setze alle Controlpins auf aus (invertiert) DDRB = 0b00000000; // PortB = I/O0 - I/O7 // TEST SramWrite(14, 64); SramWrite(68, 4); Serial.begin(9600); } void loop() { Serial.println(SramRead(14)); delay(1000); } byte SramRead(unsigned int addr){ PORTC = lowByte(addr); PORTL = highByte(addr); DDRB = 0x00; //I/O Register soll ausgelesen werden PORTD = 0b00000100; // CE und OE werden auf LOW gesetzt. Siehe Datenblatt asm volatile( "NOP\n" "NOP\n" ); byte temp = PINB; PORTD = 0b00000111; return temp; } void SramWrite(unsigned int addr, byte data){ PORTC = lowByte(addr); PORTL = highByte(addr); DDRB = 0xff; //I/O Register soll daten einspeisen PORTB = data; PORTD = 0b00000010; asm volatile( "NOP\n" "NOP\n" ); PORTD = 0b00000111; }