Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ATmega 8 <=> ISA
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
Страницы: 1, 2, 3
misha88
Цитата(rezident @ Dec 26 2008, 18:19) *
misha88, не вдаваясь в подробности реализации диаграмм чтения/записи (хотя там лажа какая-то), могу указать на глобальную ошибку. В вашей последней схеме не хватает сигналов квитирования обмена шины ISA с МК. Откуда МК "узнает", что в первый регистр было записано новое значение или наоборот второй регистр был прочитан и туда уже можно следующее значение записывать? Дополните схему по крайней мере двумя триггерами, которые будут устанавливаться сигналами чтения/записи с шины ISA, сбрасываться отдельными сигналами от МК и их состояние МК мог контролировать (считывать).

Это что то новое...
Какие триггеры использовать?
rezident
Цитата(misha88 @ Dec 26 2008, 18:47) *
Какие триггеры использовать?
Любые подходящие для реализации этой функции. Нужен синхронный тактовый вход и асинхронный сброс. Подойдет, например, 74ALS74 == К1533ТМ2.
Хотя я бы на вашем месте, решая вашу задачу, просто всю логику уместил бы в одну ПЛИС.
misha88
Так? куда выводы триггеров?
DpInRock
Я бы не стал пугать Мишу триггерами. А заставил бы вспомнить рекомендацию поставить два регистра на ввод и два на вывод.
Тогда всё проще.

А слово триггер только запутает.

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

А книгу вы не читали.
misha88
Цитата(DpInRock @ Dec 26 2008, 21:21) *
А книгу вы не читали.

Книгу я прочитал! В книге их вообще по семь штук регистров.
Да уже пофик на программу. Пусть схема хоть работоспособная будет.
Ну дак все таки? А как происходить обмен будет? Расскажите smile.gif

От модератора.
Из сообщения удалено излишнее цитирование.


Цитата(DpInRock @ Dec 26 2008, 21:21) *
Не представляя, как будет происходить обмен, схему может рисовать только бывалый моряк.

Устройство будет работать в двух режимах:
1. Режим ожидания. В этом режиме устройство ждет команды “выход”, чтобы завершить свою работу, или ”измерить”, чтобы измерить ток в нагрузке и осуществить индикацию полученных значений.
2. Режим измерения. В этом режиме микроконтроллер измеряет ток в нагрузке, записывает это значение в энергонезависимую память микроконтроллера и выставляет данные на шину для просмотра, послав запрос на прерывание.
С помощью регистров происходит обмен. Сигналов чтения и записи.
Baser
Цитата(misha88 @ Dec 26 2008, 13:47) *
Скручиваем сигнал записи (0) с сигналом EN и получаем на выходе сигнал высокого уровня (1), названный WR, который поступает на тактовый вход регистра ИР27 (вход 11). И следовательно происходит запись в него информации с входов данных. Вход 1 заземляем (зачем?).

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

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

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

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

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

Цитата(misha88 @ Dec 26 2008, 15:47) *
Это что то новое...
Какие триггеры использовать?

Не пугайтесь, без них вполне можно обойтись. Сигнал WR можно завести на ногу прерывания меги и использовать внутренний триггер прерывания меги для определения факта записи данных от ПК.
А для передачи информации о событии Мега => ПК, как вы написали ниже, вам вообще предписано применять прерывание smile.gif
Для прерывания нужно еще сигнал выдавать на один из входов IRQ шины ISA

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

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

Режимы работы несколько не понятны, имеется в виду, что может быть:
- работа по запросу (одно измерение и индикация по команде)
- автоматическая работа к каким-то периодом измерения
или это что-то другое ??
misha88
Цитата(Baser @ Dec 26 2008, 23:18) *
Для начала предостерегу вас от применения термина "скручиваем". "Скрутить" можно при помощи разных логических функций, поэтому говорят: "объединяем сигналы при помощи логической функции И". Иначе дополнительные вопросы будут обеспечены smile.gif

Это понятно smile.gif

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

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

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

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

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

Цитата
А для передачи информации о событии Мега => ПК, как вы написали ниже, вам вообще предписано применять прерывание smile.gif
Для прерывания нужно еще сигнал выдавать на один из входов IRQ шины ISA

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

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

Цитата
Режимы работы несколько не понятны, имеется в виду, что может быть:
- работа по запросу (одно измерение и индикация по команде)
- автоматическая работа к каким-то периодом измерения
или это что-то другое ??

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

И все таки WR должен быть 1, чтобы подавать на регистр.
На какие ноги атмеги все таки цеплять выходные ноги регистра?
BSV
Запись во входной регистр можно организовать немного по другому.
1. Подать на тактовый вход регистра ИР27 nIOW с шины.
2. Разрешающим входом L регистра управлять сигналом от дешифратора адреса.

Таким образом, данные с шины будут записаны в регистр по восходящему фронту сигнала nIOW (именно в этот момент они валидны) при наличии сигнала (низкого уровня) от дешифратора адреса при наличии на шине необходимого адреса. Подача комбинаторного сигнала на тактирующий вход триггера (регистра) чревата глюками в случае появления неизбежных пичкОв в таком сигнале (так как сигналы на входе элементов, составляющих логическую функцию, меняются не одновременно). Аналогично можно формировать сигнал, по которому Атмега будет байт из этого регистра читать.
misha88
Скажите уже на какие выводы меги завести выход регистра ИР27!!!?
DpInRock
на любые.
misha88
Цитата(DpInRock @ Dec 27 2008, 01:40) *
на любые.

да ладно уж?
PC- ацп
PD - усарт, компаратор, прерывания


Итого.
Baser
Цитата(misha88 @ Dec 26 2008, 20:49) *
Почему же? единичка должна быть вроде как.
Сигнал WR должен иметь форму как IOW. Посмотрите на рис.1.3 в книге. По перепаду сигнала 1->0 данные еще могут быть не готовы. Фронт сигнала IOW, по которому происходит запись данных в регистр - это 0->1 когда данные на шине стабильны.

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

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

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

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

Для начала все же определитесь:
- какие команды должен выдавать ПК на устройство;
- что должно делать устройство по команде;
- что должно делать устройство само без команды;
- сколько и какие данные нужно передавать в ПК.

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



Цитата(BSV @ Dec 26 2008, 21:36) *
Запись во входной регистр можно организовать немного по другому.
...
Подача комбинаторного сигнала на тактирующий вход триггера (регистра) чревата глюками в случае появления неизбежных пичкОв в таком сигнале (так как сигналы на входе элементов, составляющих логическую функцию, меняются не одновременно).
Есть такое дело, я приводил схему, где все реализованно корректно.
Но в свете курсача, думаю, и так неплохо, тем более, что адрес на шине выставляется раньше, чем сигналы IOW, IOR
misha88
Буратино был тупой. Тупой как дрова.
Всем спасибо.
rezident
Цитата(misha88 @ Dec 27 2008, 02:01) *
PD - усарт, компаратор, прерывания
А причем тут UART и компаратор, если они у вас не используются? Почти все пины ATMega8 могут выполнять функции GPIO.
И вообще задачка эта на синхронизацию асинхронных потоков данных. Но для того чтобы ее решить нужно знать характеристики этих потоков. Если про потоки данных шины ISA все более-менее понятно (времянки известны), то про потоки данных из/в МК практически ничего не известно - нет ни программы, ни даже алгоритма ее работы laughing.gif
BSV
Цитата(Baser @ Dec 27 2008, 00:07) *
Но в свете курсача, думаю, и так неплохо, тем более, что адрес на шине выставляется раньше, чем сигналы IOW, IOR
Дело не в том, что раньше, а в том, что перепады 0->1 могут случаться при таком подходе когда не надо.
Baser
Цитата(BSV @ Dec 26 2008, 21:36) *
Запись во входной регистр можно организовать немного по другому.
1. Подать на тактовый вход регистра ИР27 nIOW с шины.
2. Разрешающим входом L регистра управлять сигналом от дешифратора адреса.
...
Цитата(BSV @ Dec 26 2008, 23:58) *
Дело не в том, что раньше, а в том, что перепады 0->1 могут случаться при таком подходе когда не надо.

Перечитал еще раз ваше предложение и не могу согласиться с ним...
- во-первых, у регистра ИР27 отсутствует сигнал выборки схемы CS, а вход L (output enable) никоим образом не влияет на запись в регистр.
- во-вторых, объединение строба записи IOW с сигналом адресного дешифратора на комбинаторной логике - это типовое решение. Сигнал объединяется в последний момент, поэтому никакие гонки сигналов при переключении адреса, на комбинированный строб записи влиять не могут, они уже давно закончились. Есть определенное время между установлением адреса и фронтом строба IOW.
Другими словами: в моменты появления сигналов IOR, IOW линии адреса SA0-SA9 обязаны быть стабильны согласно спецификации шины ISA


Цитата(misha88 @ Dec 26 2008, 23:28) *
Всем спасибо.

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

Взглянул по-пристальней на ваш адресный дешифратор:
- DD4.1 должен быть не И (ЛЕ1), а ИЛИ (ЛЛ1)
- третий раз вам повторю, что ваш сигнал WR нужно инвертировать (перечитайте книгу и посмотрите на вашу диаграмму сигналов)
- соответственно DD1.4, DD1.5, DD4.2 нужно заменить на ИЛИ (ЛЛ1)
- DD1.6, DD4.3 заменить на ИЛИ (ЛЛ1)
- сигнал RESET шины ISA при подаче на мегу нужно инвертировать
и его еще нужно объединить по ИЛИ (ЛЛ1) с формирователем сигнала RD, чтобы аппаратно блокировать выходы регистра DD8

И не забудьте разобраться с питаниями платы.
Успехов! wink.gif
BSV
Цитата(Baser @ Dec 27 2008, 02:25) *
- во-первых, у регистра ИР27 отсутствует сигнал выборки схемы CS, а вход L (output enable) никоим образом не влияет на запись в регистр.
ИР27 (зарубежный аналог - LS377) имеет вход разрешения записи (инверсный). Можно, например, тут посмотреть. Что касается второго замечания, действительно можно сделать так, что все будет правильно работать, но нужно иметь в виду возможность возникновения гонок и соблюдать аккуратность.
Baser
Цитата(BSV @ Dec 27 2008, 08:54) *
ИР27 (зарубежный аналог - LS377) имеет вход разрешения записи (инверсный). Можно, например, тут посмотреть. Что касается второго замечания, действительно можно сделать так, что все будет правильно работать, но нужно иметь в виду возможность возникновения гонок и соблюдать аккуратность.

Да, действительно, перепутал с каким-то другим регистром. ИР27 простая защелка без Z состояния на выходе.
Тогда можно сократить один элемент ИЛИ, но принцип работы от этого не измениться, все равно внутри регистра та же самая комбинаторная логика smile.gif
DpInRock
Можно решить вопрос кардинально.
Координаты преподавателя - и мы ему докажем, что он не может преподавать и посему должен поставить 5.
misha88
Цитата(DpInRock @ Dec 27 2008, 17:51) *
Можно решить вопрос кардинально.
Координаты преподавателя - и мы ему докажем, что он не может преподавать и посему должен поставить 5.

Ха. как?

СДАЛ! smile.gif С 8 утра до....19 вечера сидел. smile.gif
Четырееееее smile.gif))) YAHOO
объяснил и доказал что все окей) и сказал как нужно исправить. что куда поставить и т.п.

PS: Всем спасибо за советы smile.gif особенно DpInRock smile.gif
DpInRock
Чудеса бывают именно на НГ.
slog
Старинный анекдот:
У студентов сессия. Сидоров ушел сдавать. Через пол часа Сидоров прибегает обратно. Ну чё Сидоров, сдал?. Да сдал! Но только 4. Одну не приняли, горлышко щербатое.
(тут надо смеяться)
rezident
Цитата(misha88 @ Dec 27 2008, 20:04) *
СДАЛ! smile.gif
Тему можно закрывать? Пока ее совсем не зафлудили анекдотами и байками из студенческой жизни.
misha88
Цитата(rezident @ Dec 28 2008, 02:30) *
Тему можно закрывать? Пока ее совсем не зафлудили анекдотами и байками из студенческой жизни.

Думаю что да.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.