PDA

Просмотр полной версии : Нужна помощь Z80 + AT28C64 + I8255+ 8 светодиодов



Alexram1991
18.12.2020, 13:13
Всем привет ! Нашел на просторах интернета сей агрегат https://igorkov.org/z80mcu контролер на базе z80 . Попытался симулировать схемку в Proteus-e, помигать светодиодами ... не работает . Прошу помочь кто шарит в ассемблере подсказать где ошибка в коде.

Serg6845
18.12.2020, 17:34
Всем привет ! Нашел на просторах интернета сей агрегат https://igorkov.org/z80mcu контролер на базе z80 . Попытался симулировать схемку в Proteus-e, помигать светодиодами ... не работает . Прошу помочь кто шарит в ассемблере подсказать где ошибка в коде.

как минимум - ошибка в схеме. 27 нога 6264 висит на Vcc - запись в ОЗУ не работает - стек с прерываниями идет лесом.
далее - конфигурирование вв55 неправильное, 1 должна быть в старшем бите. 0 в старшем бите - управление битами порта С.

Alexram1991
18.12.2020, 20:07
как минимум - ошибка в схеме. 27 нога 6264 висит на Vcc - запись в ОЗУ не работает - стек с прерываниями идет лесом.
далее - конфигурирование вв55 неправильное, 1 должна быть в старшем бите. 0 в старшем бите - управление битами порта С.
Спасибо что подправили не заметил ошибку в схеме . Можете пожалуйста поподробнее про ошибку в конфигурировании вв55.

Serg6845
18.12.2020, 21:12
Спасибо что подправили не заметил ошибку в схеме . Можете пожалуйста поподробнее про ошибку в конфигурировании вв55.

даташит на 8255 (https://www.renesas.com/sg/en/document/dst/82c55a-datasheet)
там на стр. 5, 6 расписан формат управляющего слова, в простейшем случае чтобы настроить все порты на вывод - туда надо записать 080h. и еще - при такой схеме IO1_CONF должен быть 03h, а IO1_A - 00h (порт B - 01h, порт С - 02h)

Alexram1991
18.12.2020, 22:48
спасибо попробую

- - - Добавлено - - -

Попробовал , без изменений , нет сигнала IORQ и следовательно на CS вв55 постоянно 1 . Что в программе влияет на наличие IORQ ?

Serg6845
19.12.2020, 09:15
спасибо попробую

- - - Добавлено - - -

Попробовал , без изменений , нет сигнала IORQ и следовательно на CS вв55 постоянно 1 . Что в программе влияет на наличие IORQ ?

влияют команды in, out.
один импульс должен быть - в момент инициализации ВВ55. в цикле импульсов не будет, чтобы попасть в процедуру int - надо ножку int дернуть, а в схеме она на 1 висит.

Alexram1991
19.12.2020, 12:44
Да вы правы импульс вначале присутствует на IORQ а дальше постоянно 1. Ножку INT процессора дергаю на мгновенье симуляция замирает а так без изменений. Я прикреплю какой на данный момент код .74262

Serg6845
19.12.2020, 13:15
Да вы правы импульс вначале присутствует на IORQ а дальше постоянно 1. Ножку INT процессора дергаю на мгновенье симуляция замирает а так без изменений. Я прикреплю какой на данный момент код .74262

странно, должен быть импульс по каждому прерыванию. для гарантии можно перед EI добавить команду IM1 - тогда по прерыванию будем уходть на 0038 вне зависимости от состояния шины данных.
ну и здесь
LD A, 01h ; Конфигурирование ВВ55(1),
OUT (IO1_CONF), A ; настройка PortA как выход.
надо 01h все же поменять на 80h, иначе светодиодами моргать не будет.

Alexram1991
19.12.2020, 13:57
Попробовал , из изменений только все порты А,В,С перешли в 0 до этого они постоянно были в 1. Дергаю /int импульса на /iorq не наблюдается , на нем постояннно 1 только вначале на мгновение появляется импульс .

- - - Добавлено - - -

Попозже попробую попробую в железе прошить и отпишусь .

Alexram1991
19.12.2020, 20:42
Попробовал реализовать в железе результат тотже. Фото платы https://ibb.co/8s25jSm

Serg6845
19.12.2020, 21:24
Попробовал , из изменений только все порты А,В,С перешли в 0 до этого они постоянно были в 1. Дергаю /int импульса на /iorq не наблюдается , на нем постояннно 1 только вначале на мгновение появляется импульс .



по крайней мере инициализация ВВ55 прошла - судя по нулям на выходах.
еще в процедуре прерывания перед возвратом надо добавить команду EI, т.к. z80 при входе в обработку прерывания оные прерывания запрещает. но даже так - должен по прерыванию засветиться светодиод на А0...

Alexram1991
20.12.2020, 02:40
по крайней мере инициализация ВВ55 прошла - судя по нулям на выходах.
еще в процедуре прерывания перед возвратом надо добавить команду EI, т.к. z80 при входе в обработку прерывания оные прерывания запрещает. но даже так - должен по прерыванию засветиться светодиод на А0... Добавил команду EI перед возвратом все пока так же. Ладно завтра буду разбираться.

IgorR76
20.12.2020, 18:35
Вы не приложили к проекту z80.dll. Может она не симулирует все тонкости z80, и из-за неё не работает?
У меня был свободный час, и я немного причесал Вашу симуляцию. Теперь всё работает. Этакая новогодняя пасхалка-гирлянда.

Alexram1991
20.12.2020, 22:37
Вы не приложили к проекту z80.dll. Может она не симулирует все тонкости z80, и из-за неё не работает?
У меня был свободный час, и я немного причесал Вашу симуляцию. Теперь всё работает. Этакая новогодняя пасхалка-гирлянда.

Добрый вечер . Попробовал заменить свою z80.dll на ваш x80.dll выдает ошибку симуляции . Что делаю не так ? Прикрепляю свою Z80.dll .

IgorR76
20.12.2020, 22:52
Надо запустить мой проект. И проанализировать, почему не работает Ваш. А dll несовместимые.