Цитата:
Сообщение от
Serebriakov
Лучше, действительно, добавить индикацию.
Может сделать ее и для каких-нибудь других непредвиденных операций?
Я уже думал об этом. У нас пропадает более 10 ножек процессора, которые можно было бы для каких-нибудь целей использовать.
Цитата:
Понятно, что нет смысла вешать диоды на каждую ногу или порт =), но, к примеру, показывать чтение-запись на флеш-память.
Такая индикация уже есть - у меня же светодиод один висит на PB0. На ранних этапах я его использовал для отладки, а теперь он включается при входе в обработчик API, отключается при выходе. Получается типа лампочки на дисководе - весело помаргивает при обмене данными. Заодно, если программа недочитала из контроллера буфер - сразу видно по непогасшему светодиоду.
Цитата:
Заодно мигать при включении, инициализации (флешка нашлась и определилась) и другом разном.
Это я тоже планировал - сделать равномерное мигание с некоторой частотой в процессе ожидания загрузки. Поскольку PB0 - это еще и выход таймера T0. Впрочем, если повесить индикацию сигнала Control, то по нему и будет видно состояние загрузки.
Цитата:
Устройство, как я понял, планируется самодостаточное (без участия пк), пусть бы сигналило, что происходит.
Может даже отладку на железе несколько упростит.
Для отладки железа там есть последовательный порт, на который выдается исчерпывающая информация. Но вот на что точно надо вешать индикацию - это на ошибки. Если нет карты, если на карте нет загрузчика 1 фазы или он не читается, итд - как-то надо показать. Или добавить третий - красный - светодиод, или как-то хитро помигать уже существующим. Я это уже начал обдумывать, в воскресенье сделаю в железе.
Цитата:
Ну или если есть свободные ноги, какой-нибудь простой цифровой индикатор повесить.
Парой индикаторов, да даже и одним, можно было бы показать много интересного онлайн, без необходимости лезть за логами на флешку.
Не, это, я думаю, уже излишне. Это как минимум 8 провдков от меги только для одноразрядного индикатора, а для двухразрядного - уже 10, и два транзисторных ключа. Мне бы не хотелось усложнять схему без крайней необходимости, с учетом того, что она рассчитана на сборку далекими от электроники людьми :)
Цитата:
Только, пожалуйста, без "LCD от Нокии" =), усложнит схему до безобразия.
Вообще-то, LCD от нокии проще гораздо, чем семисегментный цифровой индикатор. Там всего 4 провода - DO, SS, CLK, C/D. Как на SD карте примерно. Уж 4 проводка любой начинающий запаяет. Хотя я ими пльзуюсь довольно широко в своих схемах, но тут, заметь, даже словом об этм не упоминал. Потому как старался делать как можно проще. Ну и сам LCD теперь не так просто добыть. Я покупаю их на ебее, уже прямо с несущей платой.
Цитата:
Простые смертные то же хотят потом это собрать =)
Вот и я о том же. Я думаю, ограничимся пока парой-тройкой светодиодов. Только надо функции придумать. Например так:
1 - обращение к контроллеру от корвета
2 - Control
3 - индикация ошибок.
По крайней мере, этого достаточно для отлова зависонов. А для более детального анализа - пдключаем через переходник к компорту РС и смотрим, что там происходит. Но это скорее для отладки железа нужно, не для работы.
---------- Post added at 07:18 ---------- Previous post was at 06:47 ----------
Цитата:
Сообщение от
esl
по поводу runner - бага эмулятора ;(
при чтении из порта 2C читались 0 кроме статуса SoundEnabled
пофиксил
на реальной железке не должно повторяться
О, а я себе уже всю голову сломал - почему у меня на корвете все работало, хотя явно не должно. А вот оно как. Только
Цитата:
a=PPI2C
a&=0b11110111
PPI2C=a
по идее, должно раз и навсегда сбросить control, раз из порта С читались нули. А он дергался туда-сюда. Ну да ладно, разобрались с проблемой.
Цитата:
только делает это еще более медленно и многослова\но ;)
явно на ЯВУ писалось потому что ТАКОЕ нагенерить может только компилер ;)
Ну вообщем да, писать такого уровня программы на ассемблере - это удавиться проще. Судя по твоему листингу ниже - операция AND делается с 16-битным числм DE, но потом используется только младший байт E. Человек такого никогда бы не написал. Но тут опять проявилось то самое разгильдяйство. Скорее всего, в коде было написано что-то вроде
*PORTA&=mask;
Причем mask описан как INT. Вот отсюда и монстр. Описали бы его как unsigned char - улжились бы в 3 инструкции. GCC в этом случае соптимизировал бы код, убрав лишние операции. А вот какой-нибудь C80 - он еще и сам кучу лишнего добавляет.
Я сейчас на этом С80 пытаюсь писать - это прост АД. Такой древний диалект языка С уже лет 20 мне не встречался.
Цитата:
не так уж много игр на корвете использует диск во время работы
теперь надо их всех проверить.
Я, еще когда с CP/N возился, обратил внимание, что игрушка KLAD открывает на диске какой-то DAT-файл. Но он не похож на оверлей - скорее всего, какая-нибудь таблица результатов. Но тоже надо бы проверить.
Цитата:
я думаю что софта который сбрасывает этот бит должно быть очень мало
и имхо можно поставть тумблер для таки случаев "ОТКЛЮЧИТЬ BOOT" ;)
такой себе хардкор ;)
Не, ну ведь тумблер - это не эстетично :) Проще сделать вызов API, запрещающий реакцию на Control. При этом в железке я просто отключу прерывание Int0, а в эмуляторе - добавишь еще один флаг к проверке при записи в PPI3 А. Ну и утилитку control с ключами -e и -d. При этом понимать, что при отключенном control перезагрузка возможна только отключением питания.