Вопросы по ВМ NL1

Re: Обновления

Сообщение invaisor » 19 окт 2009, 17:13

Заметил странное поведение кнопок и страниц памяти: в каждой странице мы можем анализировать состояние не более ОДНОЙ КНОПКИ.
При чем та, которая в коде анализируется последней, будет работать.
К примеру:
Страница 0
IMUX2(BTN_UP_STATUS,NETLIST_SELECT,0,1)

Страница 1
IMUX2(BTN_DOWN_STATUS,NETLIST_SELECT,1,2)
IMUX2(BTN_UP_STATUS,NETLIST_SELECT,1,3)

На кнопку DOWN реакции не будет вообще, хотя компилятор не ругается и все это перемалывает.

Если же на 0 странице написать
IMUX2(BTN_UP_STATUS,NETLIST_SELECT,0,1)

IMUX2(BTN_DOWN_STATUS,NETLIST_SELECT,1,3)

То мы сразу же перейдем на страницу 1, как будто мы нажали на кнопку UP.

Причем независимо от того, что мы анализируем BTN_UP или BTN_UP_STATUS.

ПС В руководстве NL1Sim_manual.pdf почему-то указано, что светодиодов 10 :?
Аватара пользователя
invaisor
 
Сообщения: 227
Зарегистрирован: 08 апр 2008, 16:08

Re: Обновления

Сообщение Рустам » 19 окт 2009, 23:53

invaisor писал(а):Заметил странное поведение кнопок и страниц памяти: в каждой странице мы можем анализировать состояние не более ОДНОЙ КНОПКИ.

Можно анализировать все кнопки, но результат будет один. Тот, что вы запишете в NETLIST_SELECT последним.

invaisor писал(а):К примеру:
Страница 0
IMUX2(BTN_UP_STATUS,NETLIST_SELECT,0,1)

Вы нажимаете кнопку UP, ее статус становится активным и виртуальная машина переключается в состояние №1.

invaisor писал(а):Страница 1
IMUX2(BTN_DOWN_STATUS,NETLIST_SELECT,1,2)
IMUX2(BTN_UP_STATUS,NETLIST_SELECT,1,3)

Виртуальная машина гораздо быстрее человека. Поэтому когда она оказалась в состоянии №1, вы кнопку UP еще держали нажатой. Поэтому первый мультиплексор запишет в NETLIST_SELECT значение 1, а второй - 3. Внутри нетлиста вы можете менять значение NETLIST_SELECT сколько угодно раз. Нетлист посередине не прерывается. Важно, какое значение будет в ячейке NETLIST_SELECT по окончанию выполнения нетлиста.

invaisor писал(а):На кнопку DOWN реакции не будет вообще, хотя компилятор не ругается и все это перемалывает.

На кнопку DOWN реакция есть, но она "затирается" реакцией на кнопку UP.

invaisor писал(а):Если же на 0 странице написать
IMUX2(BTN_UP_STATUS,NETLIST_SELECT,0,1)

IMUX2(BTN_DOWN_STATUS,NETLIST_SELECT,1,3)

То мы сразу же перейдем на страницу 1, как будто мы нажали на кнопку UP.

Нет, не потому. Если ни одна из кнопок не нажата, то первый мультиплексор запишет в NETLIST_SELECT значение 0, а второй запишет 1. В результате мы перейдем в нетлист №1.

invaisor писал(а):ПС В руководстве NL1Sim_manual.pdf почему-то указано, что светодиодов 10 :?

Шутка.
Аватара пользователя
Рустам
 
Сообщения: 164
Зарегистрирован: 27 май 2008, 01:24

Re: Вопросы по ВМ NL1

Сообщение A.Sukhoy » 20 окт 2009, 00:34

:shock: Как все запутано

З.Ы. Что-то мне подсказывает, что понять плюсы таких машин мы сможем только выполнив задание.
Аватара пользователя
A.Sukhoy
 
Сообщения: 182
Зарегистрирован: 08 апр 2008, 17:53

Re: Обновления

Сообщение invaisor » 20 окт 2009, 00:42

С первым вопросом понятно, спасибо :smile:

Рустам писал(а):
invaisor писал(а):Если же на 0 странице написать
IMUX2(BTN_UP_STATUS,NETLIST_SELECT,0,1)

IMUX2(BTN_DOWN_STATUS,NETLIST_SELECT,1,3)

То мы сразу же перейдем на страницу 1, как будто мы нажали на кнопку UP.

Нет, не потому. Если ни одна из кнопок не нажата, то первый мультиплексор запишет в NETLIST_SELECT значение 0, а второй запишет 1. В результате мы перейдем в нетлист №1.


Да тут немного некорректный вариант. Вот если так:
Страница 0
IMUX2(BTN_UP,NETLIST_SELECT,0,1)
IMUX2(BTN_DOWN,NETLIST_SELECT,0,2)

То работает только кнопка DOWN на UP нет реакции.

ПС Также хотелось бы увидеть операции поразрядного И и ИЛИ, а то без них тяжко. Особенно тем кто со светодиодами, т.к. и сдвигов нет.
Последний раз редактировалось invaisor 20 окт 2009, 00:46, всего редактировалось 1 раз.
Аватара пользователя
invaisor
 
Сообщения: 227
Зарегистрирован: 08 апр 2008, 16:08

Re: Обновления

Сообщение A.Sukhoy » 20 окт 2009, 00:45

invaisor писал(а):Да тут немного некорректный вариант. Вот если так:
Страница 0
IMUX2(BTN_UP,NETLIST_SELECT,0,1)
IMUX2(BTN_DOWN,NETLIST_SELECT,0,2)

То работает только кнопка DOWN на UP нет реакции.


Ну так само собой, последний мультиплексор все потрёт. Запишет либо 0, либо 2 в NETLIST_SELECT, в зависимости от BTN_DOWN
Аватара пользователя
A.Sukhoy
 
Сообщения: 182
Зарегистрирован: 08 апр 2008, 17:53

Re: Обновления

Сообщение invaisor » 20 окт 2009, 00:46

SHR писал(а):Ну так само собой, последний мультиплексор все потрёт. Запишет либо 0, либо 2 в NETLIST_SELECT, в зависимости от BTN_DOWN

Да, точно! Под вечер перестаю соображать :smile:
Аватара пользователя
invaisor
 
Сообщения: 227
Зарегистрирован: 08 апр 2008, 16:08

Re: Вопросы по ВМ NL1

Сообщение A.Sukhoy » 20 окт 2009, 00:57

Надо действовать через tmp регистры их челых 14 штук.
Аватара пользователя
A.Sukhoy
 
Сообщения: 182
Зарегистрирован: 08 апр 2008, 17:53

Re: Вопросы по ВМ NL1

Сообщение invaisor » 20 окт 2009, 01:02

SHR писал(а):Надо действовать через tmp регистры их челых 14 штук.

Нет их 10 с адресами от 0x00 до 0x09.
При попытке использовать адрес 0x0A или больше - он выводиться на ЖКИ крупными буквами
(к примеру 00.0A) и ничего не работает.
Аватара пользователя
invaisor
 
Сообщения: 227
Зарегистрирован: 08 апр 2008, 16:08

Re: Вопросы по ВМ NL1

Сообщение A.Sukhoy » 20 окт 2009, 01:07

Ну может у нас и 10, я просто в других исходниках смотрю.
Аватара пользователя
A.Sukhoy
 
Сообщения: 182
Зарегистрирован: 08 апр 2008, 17:53

Re: Обновления

Сообщение Рустам » 20 окт 2009, 01:52

invaisor писал(а):ПС Также хотелось бы увидеть операции поразрядного И и ИЛИ, а то без них тяжко. Особенно тем кто со светодиодами, т.к. и сдвигов нет.

Думаете это поможет? Вопрос в том, есть ли другой способ...

invaisor писал(а):При попытке использовать адрес 0x0A или больше - он выводиться на ЖКИ крупными буквами
(к примеру 00.0A) и ничего не работает.

Быстро же вы добрались. Это HALT машины :D Надпись на экране означает, что была попытка обращения в несуществующую память. Она была предпринята в нетлисте №0, а адрес ячейки памяти - 0x0A. Такой ячейки действительно нет. Если это была операция чтения, то надпись будет "000A", а если операция записи - "00.0A".
Аватара пользователя
Рустам
 
Сообщения: 164
Зарегистрирован: 27 май 2008, 01:24

Re: Обновления

Сообщение invaisor » 20 окт 2009, 09:40

Рустам писал(а):
invaisor писал(а):ПС Также хотелось бы увидеть операции поразрядного И и ИЛИ, а то без них тяжко. Особенно тем кто со светодиодами, т.к. и сдвигов нет.

Думаете это поможет? Вопрос в том, есть ли другой способ...

Другой способ есть, но он очень громоздкий :(
Аватара пользователя
invaisor
 
Сообщения: 227
Зарегистрирован: 08 апр 2008, 16:08

Re: Обновления

Сообщение Рустам » 20 окт 2009, 10:16

invaisor писал(а):Другой способ есть, но он очень громоздкий :(

С одной стороны, задача не особо сложная. Пусть способ громоздкий, но он ведь реализуем? С другой стороны, явно существуют операции И, ИЛИ логические и битовые. Сейчас в ВМ логические операции. Если их заменить на битовые, то логических мы лишимся.
Аватара пользователя
Рустам
 
Сообщения: 164
Зарегистрирован: 27 май 2008, 01:24

Re: Обновления

Сообщение Интегральный вычислитель » 20 окт 2009, 22:39

Рустам писал(а):
invaisor писал(а):Другой способ есть, но он очень громоздкий :(

С одной стороны, задача не особо сложная. Пусть способ громоздкий, но он ведь реализуем? С другой стороны, явно существуют операции И, ИЛИ логические и битовые. Сейчас в ВМ логические операции. Если их заменить на битовые, то логических мы лишимся.

Предлагаю убрать GT и LT и заменить их побитовое ИЛИ и циклический сдвиг
I Have Seen The Truth And It Doesn't Make Any Sense
Аватара пользователя
Интегральный вычислитель
 
Сообщения: 561
Зарегистрирован: 02 апр 2008, 16:04
Откуда: из Леса

Re: Обновления

Сообщение Рустам » 20 окт 2009, 23:26

Интегральный вычислитель писал(а):Предлагаю убрать GT и LT и заменить их побитовое ИЛИ и циклический сдвиг

"Мне не нравится этот корабль, мне не нравятся эти матросы. Мне вообще ничего не нравится!" (С) Остров сокровищ

А может решить задачу имеющимися средствами? В Таймере я змейку не реализовывал, но мне сейчас хватило 5 минут, чтобы придумать способ реализации змейки. 8-)
Аватара пользователя
Рустам
 
Сообщения: 164
Зарегистрирован: 27 май 2008, 01:24

Re: Обновления

Сообщение Интегральный вычислитель » 21 окт 2009, 07:07

Рустам писал(а):А может решить задачу имеющимися средствами? В Таймере я змейку не реализовывал, но мне сейчас хватило 5 минут, чтобы придумать способ реализации змейки. 8-)

Мне тоже 5 минут хватило, только вот решение получается некрасивым с точки зрения эстетики и поэтики стиля.
I Have Seen The Truth And It Doesn't Make Any Sense
Аватара пользователя
Интегральный вычислитель
 
Сообщения: 561
Зарегистрирован: 02 апр 2008, 16:04
Откуда: из Леса

Re: Обновления

Сообщение Рустам » 21 окт 2009, 08:43

Интегральный вычислитель писал(а):Мне тоже 5 минут хватило, только вот решение получается некрасивым с точки зрения эстетики и поэтики стиля.

NL1 и красота - вещи несовместимые. Забей. :D
Аватара пользователя
Рустам
 
Сообщения: 164
Зарегистрирован: 27 май 2008, 01:24

Re: Вопросы по ВМ NL1

Сообщение A.Sukhoy » 28 окт 2009, 05:03

Несколько вопросов-утверждений или то, что я не нашел в мануале по причине четырех утра: :smile:
  • Нет листы пропускать нельзя, т.е. они должны идти по порядку, а не 0,1,2,10, например;
  • TIMER_SEC ограничен 60 секундами
.
И вопрос по заданию (вариант 9).
После того, как таймер отсчитает положенное время, устройство должно включиться автоматически, или я должен еще раз подтвердить включение кнопкой SET.
Аватара пользователя
A.Sukhoy
 
Сообщения: 182
Зарегистрирован: 08 апр 2008, 17:53

Re: Вопросы по ВМ NL1

Сообщение Рустам » 28 окт 2009, 08:50

SHR писал(а):Нет листы пропускать нельзя, т.е. они должны идти по порядку, а не 0,1,2,10, например;

Да, нетлисты идут без пропусков. Порядок их указания в командной строке задает этот порядок: 0-ой, 1-ый, 2-ой и т.д. Программно переходить между нетлистами можно как угодно.

SHR писал(а):TIMER_SEC ограничен 60 секундами

Хорошая шутка. На самом деле ограничение 65 секунд. Это потому что внутри таймер все равно миллисекундный и хранится в 16-битной переменной. NL1 16-битная виртуальная машина.

SHR писал(а):После того, как таймер отсчитает положенное время, устройство должно включиться автоматически, или я должен еще раз подтвердить включение кнопкой SET.

Автоматически.
Аватара пользователя
Рустам
 
Сообщения: 164
Зарегистрирован: 27 май 2008, 01:24

Re: Вопросы по ВМ NL1

Сообщение A.Sukhoy » 28 окт 2009, 14:43

Хорошая шутка. На самом деле ограничение 65 секунд.

Эх....немного не попал, последнее значение после проверки которого я решил, что ограничение 60 секунд было 66. :smile:
Аватара пользователя
A.Sukhoy
 
Сообщения: 182
Зарегистрирован: 08 апр 2008, 17:53

Re: Вопросы по ВМ NL1

Сообщение Рустам » 28 окт 2009, 17:21

SHR писал(а):Эх....немного не попал, последнее значение после проверки которого я решил, что ограничение 60 секунд было 66. :smile:

Не знал, что в 16-битное число можно записать значение 66000.
Аватара пользователя
Рустам
 
Сообщения: 164
Зарегистрирован: 27 май 2008, 01:24

След.

Вернуться в Программно - аппаратный базис ВВС

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron