Hi All,
Имеется следующая схема:
AVR 8515 PORTA <-> D0-D7 AT49F040 AVR 8515 PORTA <-> "регистр-защелка" ИР22 <-> A0-A7 AT49F040 AVR 8515 PORTC <-> A8-A15 AT49F040 AVR 8515 -> ALE ИР22 AVR 8515 -> #OE AT49F040 AVR 8515 -> #WE AT49F040
Хочу считать байт из флэшки и делаю так:
DDRA = 0xFF; // initialise port A as Output // загружаем адрес на шину A0-A15 PORTB |= (1<<PB0); // ALE=1 PORTA = LOBYTE(addr_low); PORTC = HIBYTE(addr_low); PORTB &= ~(1<<PB0); // ALE=0
// правильно ли так???? DDRA = 0x00; // initialise port A as Input PORTA = 0x00;
PORTD &= ~(1<<PD7); // #OE = 0 (на выходах D0-D7 флэшки очередной байт) data = PINA; // в data должен быть очередной байт из флэшки // а в моем случае считывается восемь младших бит адреса (addr_low) Почему??? PORTD |= (1<<PD7); // #OE = 1 (выходы флэшки переводим в третье состояние)
Помогите понять почему это происходит, вроде же я перевожу PORTA в третье состояние, а на PINA должны быть уровни D0-D7 c флэшки????!!!!!