Перейти к содержанию
    

Скручиваем сигнал записи (0) с сигналом EN и получаем на выходе сигнал высокого уровня (1), названный WR, который поступает на тактовый вход регистра ИР27 (вход 11). И следовательно происходит запись в него информации с входов данных. Вход 1 заземляем (зачем?).

Для начала предостерегу вас от применения термина "скручиваем". "Скрутить" можно при помощи разных логических функций, поэтому говорят: "объединяем сигналы при помощи логической функции И". Иначе дополнительные вопросы будут обеспечены :)

 

По схеме: добавьте инверсию на сигнал WR, он должен быть как IOW.

Вход 1 должен быть на земле, если выходы регистра будут поданы на порт АВР, который ВСЕГДА будет работать как вход.

 

Вход 11 (L) - сигнал управления записью в регистр. На него надо подать высокий уровень, чтобы произошла запись байта в регистр и хранение его до следующий записи или выключения питания.

Сигнал RD похож на правду.

Вход 11 (L) - можно подать постоянный высокий уровень (при этом регистр не будет хранить данные, а просто будет работать как буфер с Z состоянием на выходе). Тогда его входы нужно подать на порт АВР, который будет ВСЕГДА работать как выход.

 

Если же заводить оба регистра на один порт меги, тогда ножкой 11 (L) нужно управлять программно.

 

Это что то новое...

Какие триггеры использовать?

Не пугайтесь, без них вполне можно обойтись. Сигнал WR можно завести на ногу прерывания меги и использовать внутренний триггер прерывания меги для определения факта записи данных от ПК.

А для передачи информации о событии Мега => ПК, как вы написали ниже, вам вообще предписано применять прерывание :)

Для прерывания нужно еще сигнал выдавать на один из входов IRQ шины ISA

 

Устройство будет работать в двух режимах:

1. Режим ожидания. В этом режиме устройство ждет команды “выход”, чтобы завершить свою работу, или ”измерить”, чтобы измерить ток в нагрузке и осуществить индикацию полученных значений.

2. Режим измерения. В этом режиме микроконтроллер измеряет ток в нагрузке, записывает это значение в энергонезависимую память микроконтроллера и выставляет данные на шину для просмотра, послав запрос на прерывание.

С помощью регистров происходит обмен. Сигналов чтения и записи.

Какая разрядность данных, которые вам нужно измерять и передавать на ПК?

 

Режимы работы несколько не понятны, имеется в виду, что может быть:

- работа по запросу (одно измерение и индикация по команде)

- автоматическая работа к каким-то периодом измерения

или это что-то другое ??

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для начала предостерегу вас от применения термина "скручиваем". "Скрутить" можно при помощи разных логических функций, поэтому говорят: "объединяем сигналы при помощи логической функции И". Иначе дополнительные вопросы будут обеспечены :)

Это понятно :)

 

По схеме: добавьте инверсию на сигнал WR, он должен быть как IOW.

Почему же? единичка должна быть вроде как.

Вход 1 должен быть на земле, если выходы регистра будут поданы на порт АВР, который ВСЕГДА будет работать как вход.

Ясно

Сигнал RD похож на правду.

Вход 11 (L) - можно подать постоянный высокий уровень (при этом регистр не будет хранить данные, а просто будет работать как буфер с Z состоянием на выходе). Тогда его входы нужно подать на порт АВР, который будет ВСЕГДА работать как выход.

Ну у меня так и сделано..как высокий уровень подать откуда я не врубаюсь уже..

Если же заводить оба регистра на один порт меги, тогда ножкой 11 (L) нужно управлять программно.

Не пугайтесь, без них вполне можно обойтись. Сигнал WR можно завести на ногу прерывания меги и использовать внутренний триггер прерывания меги для определения факта записи данных от ПК.

А было сказано выше что нельзя напрямую в мк сувать сигнал чтения.

 

А для передачи информации о событии Мега => ПК, как вы написали ниже, вам вообще предписано применять прерывание :)

Для прерывания нужно еще сигнал выдавать на один из входов IRQ шины ISA

Да, щас организуем.

Какая разрядность данных, которые вам нужно измерять и передавать на ПК?

Видимо 10 разрядные данные.

 

Режимы работы несколько не понятны, имеется в виду, что может быть:

- работа по запросу (одно измерение и индикация по команде)

- автоматическая работа к каким-то периодом измерения

или это что-то другое ??

Вообще-то создавалось устройство для программного ограничения силы тока. Была клавиатура с 4кнпками).

А сейчас даже не знаю..видимо просто один раз измеряет и выдает, измеряет и выдает

 

И все таки WR должен быть 1, чтобы подавать на регистр.

На какие ноги атмеги все таки цеплять выходные ноги регистра?

post-33564-1230317381_thumb.jpg

Изменено пользователем misha88

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Запись во входной регистр можно организовать немного по другому.

1. Подать на тактовый вход регистра ИР27 nIOW с шины.

2. Разрешающим входом L регистра управлять сигналом от дешифратора адреса.

 

Таким образом, данные с шины будут записаны в регистр по восходящему фронту сигнала nIOW (именно в этот момент они валидны) при наличии сигнала (низкого уровня) от дешифратора адреса при наличии на шине необходимого адреса. Подача комбинаторного сигнала на тактирующий вход триггера (регистра) чревата глюками в случае появления неизбежных пичкОв в таком сигнале (так как сигналы на входе элементов, составляющих логическую функцию, меняются не одновременно). Аналогично можно формировать сигнал, по которому Атмега будет байт из этого регистра читать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почему же? единичка должна быть вроде как.
Сигнал WR должен иметь форму как IOW. Посмотрите на рис.1.3 в книге. По перепаду сигнала 1->0 данные еще могут быть не готовы. Фронт сигнала IOW, по которому происходит запись данных в регистр - это 0->1 когда данные на шине стабильны.

 

..как высокий уровень подать откуда я не врубаюсь уже..
Входы ТТЛ и ТТЛШ серий нельзя было замыкать напрямую на +5V, поэтому для создания высокого уровня вход соединяют с питанием через резистор, напр. 1кОм

 

А было сказано выше что нельзя напрямую в мк сувать сигнал чтения.
Тут не вы меня, не я вас правильно не понимаем :) Ничего напрямую не подается...

 

Видимо 10 разрядные данные....

Скажите уже на какие выводы меги завести выход регистра ИР27!!!?

А вот тут самое интересное и начинается :)

Вам же DpInRock с самого начала предлагал выложить техзадание. А когда человек может сам сформулировать то, что ему требуется делать, это значит что почти половина работы готова.

А так, звиняйте, сейчас будете все переделывать...

 

Для начала все же определитесь:

- какие команды должен выдавать ПК на устройство;

- что должно делать устройство по команде;

- что должно делать устройство само без команды;

- сколько и какие данные нужно передавать в ПК.

 

Когда вы с этим, наконец, определитесь - можно будет двигаться дальше :laughing:

 

 

 

Запись во входной регистр можно организовать немного по другому.

...

Подача комбинаторного сигнала на тактирующий вход триггера (регистра) чревата глюками в случае появления неизбежных пичкОв в таком сигнале (так как сигналы на входе элементов, составляющих логическую функцию, меняются не одновременно).

Есть такое дело, я приводил схему, где все реализованно корректно.

Но в свете курсача, думаю, и так неплохо, тем более, что адрес на шине выставляется раньше, чем сигналы IOW, IOR

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

PD - усарт, компаратор, прерывания
А причем тут UART и компаратор, если они у вас не используются? Почти все пины ATMega8 могут выполнять функции GPIO.

И вообще задачка эта на синхронизацию асинхронных потоков данных. Но для того чтобы ее решить нужно знать характеристики этих потоков. Если про потоки данных шины ISA все более-менее понятно (времянки известны), то про потоки данных из/в МК практически ничего не известно - нет ни программы, ни даже алгоритма ее работы :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но в свете курсача, думаю, и так неплохо, тем более, что адрес на шине выставляется раньше, чем сигналы IOW, IOR
Дело не в том, что раньше, а в том, что перепады 0->1 могут случаться при таком подходе когда не надо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Запись во входной регистр можно организовать немного по другому.

1. Подать на тактовый вход регистра ИР27 nIOW с шины.

2. Разрешающим входом L регистра управлять сигналом от дешифратора адреса.

...

Дело не в том, что раньше, а в том, что перепады 0->1 могут случаться при таком подходе когда не надо.

Перечитал еще раз ваше предложение и не могу согласиться с ним...

- во-первых, у регистра ИР27 отсутствует сигнал выборки схемы CS, а вход L (output enable) никоим образом не влияет на запись в регистр.

- во-вторых, объединение строба записи IOW с сигналом адресного дешифратора на комбинаторной логике - это типовое решение. Сигнал объединяется в последний момент, поэтому никакие гонки сигналов при переключении адреса, на комбинированный строб записи влиять не могут, они уже давно закончились. Есть определенное время между установлением адреса и фронтом строба IOW.

Другими словами: в моменты появления сигналов IOR, IOW линии адреса SA0-SA9 обязаны быть стабильны согласно спецификации шины ISA

 

 

Всем спасибо.

Вы теперь от нас так просто не отделаетесь... :biggrin:

 

Взглянул по-пристальней на ваш адресный дешифратор:

- DD4.1 должен быть не И (ЛЕ1), а ИЛИ (ЛЛ1)

- третий раз вам повторю, что ваш сигнал WR нужно инвертировать (перечитайте книгу и посмотрите на вашу диаграмму сигналов)

- соответственно DD1.4, DD1.5, DD4.2 нужно заменить на ИЛИ (ЛЛ1)

- DD1.6, DD4.3 заменить на ИЛИ (ЛЛ1)

- сигнал RESET шины ISA при подаче на мегу нужно инвертировать

и его еще нужно объединить по ИЛИ (ЛЛ1) с формирователем сигнала RD, чтобы аппаратно блокировать выходы регистра DD8

 

И не забудьте разобраться с питаниями платы.

Успехов! ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

- во-первых, у регистра ИР27 отсутствует сигнал выборки схемы CS, а вход L (output enable) никоим образом не влияет на запись в регистр.
ИР27 (зарубежный аналог - LS377) имеет вход разрешения записи (инверсный). Можно, например, тут посмотреть. Что касается второго замечания, действительно можно сделать так, что все будет правильно работать, но нужно иметь в виду возможность возникновения гонок и соблюдать аккуратность.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ИР27 (зарубежный аналог - LS377) имеет вход разрешения записи (инверсный). Можно, например, тут посмотреть. Что касается второго замечания, действительно можно сделать так, что все будет правильно работать, но нужно иметь в виду возможность возникновения гонок и соблюдать аккуратность.

Да, действительно, перепутал с каким-то другим регистром. ИР27 простая защелка без Z состояния на выходе.

Тогда можно сократить один элемент ИЛИ, но принцип работы от этого не измениться, все равно внутри регистра та же самая комбинаторная логика :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно решить вопрос кардинально.

Координаты преподавателя - и мы ему докажем, что он не может преподавать и посему должен поставить 5.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно решить вопрос кардинально.

Координаты преподавателя - и мы ему докажем, что он не может преподавать и посему должен поставить 5.

Ха. как?

 

СДАЛ! :) С 8 утра до....19 вечера сидел. :)

Четырееееее :)))) YAHOO

объяснил и доказал что все окей) и сказал как нужно исправить. что куда поставить и т.п.

 

PS: Всем спасибо за советы :) особенно DpInRock :)

Изменено пользователем misha88

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...