перейти в высокоимпедансное состояние

Apr 23, 2004 1 Replies

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 флэшки????!!!!!


Hello Roman!

23 Apr 04 14:31, Roman Popok wrote to All:

в принципе Porta=0x00 здесь не нужно.

Здесь влепи пару нопов.

Сделай останов после #oe=0 и глянь осцилом что там на ШД. И зачем это шаманство с софтовой шиной ?

8515 аппаратно поддерживал внешнюю шину, замечательно работает, вейтстейты есть если нужно. Может у тебя внешняя шина разрешена (MCUCR.SRE) и все твое шаманство с портами просто отключилось ?

Roman

... Another tomorrow remember to walk in the light

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required