Цитата Сообщение от Patron Посмотреть сообщение
Байт 000, принятый без стоповых битов - это сигнал BREAK.
Я сделал проще, соединил Тх,Rx СОМ порта вместе, подал с эмулятора VT52 BREAK, получил 1000 000.

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

.
Немного переделал выход клавиатуры. В обход микросхемы двуполярного передатчика, сделал выход через инвертор с микроконтроллера. На выходе получается ТТЛ который тоже берёт СОМ порт.

Дамп с программы эмулятора VT52 (ост)
Код:
1000 000 1000 000 267 266 267

Минусовое питание передатчика D7 появляется позже плюсового питания. Из-за этого на выходе происходит сдвиг нуля в плюс, и происходит ложное срабатывание.
Это я по коду 300 который не должен быть в самом начале.

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

Кстати ТТЛ сигнал VT240 не нравится, он его просто не берёт. Видать ему надо строго от минус 3 в отличии от РС.

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

......
Внес изменения в схему клавиатуры.
1) уменьшил ёмкость до 1мкФ конденсатора С3 для более быстрого старта микроконтроллера D1. Сигнал PSEN подаётся более раньше на генератор отрицательного напряжения.

2) уменьшил ёмкость до 10мкФ конденсатора С21 для более быстрого заряда от отрицательного напряжения. В недостатке сглаживания ёмкостью С21 не наблюдается.

Теперь получается дамп такой:
Код:
1000 000 267 266 267
- - - Добавлено - - -

Цитата Сообщение от Patron Посмотреть сообщение
Т.е. к передаваемым байтам эмулятор добавляет 01000
А правильно ли это? Ведь программа
Terminal v1.9b чётко определяет последовательность нулей.
Код при старте клавиатуры МС7004 подключенной к VT240.
BIN.
Код:
00000000
10110111
10110110
10110111
В нехе так:
Код:
00 В7 В6 В7
Правда, судя по всему BREAK эта программа считает двухбайтовым.Третий байт печатает. Хотя тут уже осциллографом надо вылавливать. Может клавиатура и один байт выдаёт.


Цитата Сообщение от Patron Посмотреть сообщение
если байт был принят с ошибкой границы кадра (т.е. без стоповых битов).
Так нет там стоповых бит. Стартовый есть, после него ведется отсчет на 8бит вроде и всё.
Цитата Сообщение от Patron Посмотреть сообщение
Байт 000, принятый без стоповых битов - это сигнал BREAK.
Ну в ASCII та есть ещё и символ "NUL" (пустой символ). Как он будет передаваться без стоповых битов.

- - - Добавлено - - -
.....
Замер на осциллографе дал таки результаты:
При включении дает (непрерывный) BREAK длительностью- 130мсек.
Длительность байта - 1,6мсек. (включая старт бит)

То-есть за 130мсек даёт 81,25 байтов нулей

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

По поводу стоп бита.

При зажатой клавише повторяется код к периодом 33мсек.
В принципе этот период за стоп бит годится, за очень жирный стоп бит .