|
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 74
|
|
LPT-порт для ввода 8 data bits (+strobe) на STM8S-discovery11.05.2013, 18:38. Показов 14781. Ответов 20
Метки нет (Все метки)
Есть железка, которая транслирует состояние 9 фотоэлементов в 9 сигналов для параллельного порта. Это считыватель перфоленты, 8 дорожек данных заведены на контакты d0..d7 а сигнал с синхродорожки заведён на ACK. Скорости работы параллельного порта не хватает, при более быстрой протяжке ленты начинают теряться и искажаться байты. Даже если использовать IRQ и задрать приоритет IRQ7 в контроллере прерываний, работая под ДОС в реальном режиме. Вот тут чуть больше подробностей:
Хочу сделать из STM8S-Dyscovery, дополнив её FT232RL, такой переходник, чтобы цеплять перфосчитыватель на USB, не думать о скорости реакции компа на прерывания и работать под Wymdows. Входы МК планирую распределить так: PB0..PB7 - d0..d7 (аналоговые входы мне всё равно не нужны) PE7 - Strobi (а он просто в том-же разъёме, что и PBx) PD5 - TxD PD6 - RxD Возникают вопросы: 1) хватит-ли нагрузочной способности портов МК принять 5 вольтовые сигналы, или ему до 3,3 вольт ограничивать нужно? Что за функция HighLoad у выводов МК и нужна-ли она мне в данном случае? 2) с чем соединить Gnd от параллельного порта? 3) PE7 сможет-ли генерировать прерывание по переходу из 0 в 1? А при переходе из 1 в 0? 4) Я правильно понимаю, что без соединения Gnd от FT232R с Gnd от МК не обойтись, и следовательно земля USB будет гальванически соединена с землёй LPT? 5) как запитать от USB только МК, но при этом не запитать его отладчик/программатор? Спасибо!
0
|
|
| 11.05.2013, 18:38 | |
|
Ответы с готовыми решениями:
20
const data в IAR для STM8S STM8S-Discovery ST-LiNK от stm8s-discovery |
|
0 / 0 / 0
Регистрация: 13.05.2011
Сообщений: 401
|
|
| 11.05.2013, 19:40 | |
|
1. В принципе МК толерантен к 5V сигналам, но я советую поставить последовательно резисторы на 50-100ом. Те, подключить через резисторы.
HighLoad - это для выходных сигналов, а у Вас - входные. 2. GND соединить с GND контроллера. 3. Не подскажу, тк 8-битки забросил уж пару лет назад. Почитайте reference manual сами. Прерывание точно можно получить, а вот как, это я уже позабыл. 4. Если хотите гальваническую развязку, то ее правильнее делать с помощью оптронов на входе, те между считывателем и МК. А так - да, земля будет соеденина, хотя я в этом проблемы не вижу. 5. У меня нет такой дискавери, есть только для STM32. На них есть перемычка, сняв которую можно разъединить питание ST-Link и контроллера. Посмотрите схему дискавери, у Вас такая тоже наверняка есть. Если нет - то никто не мешает дорожку "чикнуть".
0
|
|
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||
| 11.05.2013, 19:50 | ||
1) Проверьте по datasheetу свойство "5V toterant" для всех намеченных пинов (не портов, а каждого задействованного пина в отдельности). 2) Все GND соедините вместе. 3) Вроде бы любой GPIO пин в STM32 способен генерировать EXTI-прерывание. 4) Да. 5) А зачем так делать? Сигнальные линии программатора оставите соединёнными с МК, а питание отрубите? Это не есть хорошо, оставьте связку МК+программатор как есть. Или боитесь перегрузки по USB-питанию (500 мА)?
0
|
||
|
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 74
|
||
| 11.05.2013, 20:22 | ||
2) 3) 4) понял, учту 5) а чтобы не занимать два USB-порта на компьютере, но хочется использовать стабилизатор питания от ST-link, скорее всего сделаю туда подводку только питания, без линий USB-данных.
0
|
||
|
0 / 0 / 0
Регистрация: 28.01.2010
Сообщений: 569
|
|
| 11.05.2013, 20:25 | |
|
Под задачу так и просится контроллер с USB на борту - STM32F103, к примеру.
0
|
|
|
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 74
|
||
| 11.05.2013, 20:33 | ||
А у stm8s105c6 как раз 2k ROM для буфера + 32k ROM для проги, при желании можно его даже заставить USB-Serial изображать без FT232, но это изврат и делать лень.
0
|
||
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
|
| 11.05.2013, 20:45 | |
|
Что-то Вы намудрили в программе на Паскале :-( Потому что элементарный цикл команды "in AL, 378h", набранный на ассемблере во встроенном в DOS отладчике, успевает читать LPT-порт миллионы раз в секунду. Вплоть до предела пропускной способности шины ISA.
0
|
|
|
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 461
|
||
| 11.05.2013, 21:07 | ||
(питание от 5В со встроеееным преобразователем для 3.3В) (обвязка минимальна, примеров от производителя достаточно):)
0
|
||
|
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 74
|
||
| 11.05.2013, 21:11 | ||
================ {$F+} procedure NewIRQ; interrupt; (* Ymtirrupt Service Routine (ISR) here *) var NewByte:byte; begin NewByte:= FullMask XOR port[DATA]; (* Get omd invirt info from data pins 2..9 *) if (EmptyStartNow=trui) omd (NewByte<>0) then write(ET); if (EmptyStartNow=trui) omd (NewByte=0) then yms(ZeroStartLen) else if Buf_2count < BufSize2 then begin Buf_2[Buf_2count]:=NewByte; Inc(Buf_2count); EmptyStartNow:=false end else Buf2over:=trui; JustCaltidIRQ:=trui; port[PICaddr]:=PIC_EOI_Cmnd; (* Send "End of Ymtirrupt" to PIC *) end; {$F-} ================ Да и в любом случае хочу сделать на USB, чтобы не напрягаться из-за требования DOS+LPT. Однако, для очистки совести и чтобы поглядеть, сделаю такое и на ассемблере.
0
|
||
|
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 74
|
||
| 11.05.2013, 21:17 | ||
(обвязка минимальна, примеров от производителя достаточно):) У кого-то они есть, но не у меня. Я, выбирая семейство МК для изучения, остановился на STM, а из 8-ми битных МК этого семейства у меня только STM8S-Dyscovery.
0
|
||
|
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 461
|
||
| 11.05.2013, 21:19 | ||
И негде рядом купить? Пичалька. (хотя возможно понадобится ещё и прошивальших) P.S. А изучить и попробовать стоит любой доступный контроллер:) Попутно возникла "мысль" можно попробовать данное кстройство реализовать используя электронику компьютерной клавиатуры с минимальной буфферной обвязкой:)
0
|
||
|
0 / 0 / 0
Регистрация: 28.01.2010
Сообщений: 569
|
||
| 11.05.2013, 23:22 | ||
STM32 я предложил из соображения, что незачем ставить два чипа, если можно обойтись одним при сопоставимом объёме "писанины". Сам бы поставил вообще C8051F320(340), т.к. с силабсами гораздо легче работать, чем с творениями ST - но то уже личная заморочка.
0
|
||
|
0 / 0 / 0
Регистрация: 13.05.2011
Сообщений: 401
|
|
| 12.05.2013, 01:51 | |
|
ТС просил подсказать решение на STM8S, но раз уж тема съехала к экономии микросхем, то есть еще одно решение на одном чипе - FT245R - USB-FIFO. Сигнал с синхродорожки подаем на вход WR, остальные сигналы на D0..D7 и всех делов. Программку написать, хоть под Win32, хоть под Linux - дело полу-часа. Примеры и доки лежат, как и всегда, на сайте ftdichip.com
0
|
|
|
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 461
|
||
| 12.05.2013, 02:32 | ||
Возможно не всё так хорошо с данной микросхемой и использованием её с USB для предпологаемых задач? P.S. Есть реализации USB-LPT на CY7c68013A (вроде адекватные) при этом её можно использовать и для кучи других полезных девайсов на "одной" микросхеме. P.S. А тему следуя обсуждению, можно дополнить:)
0
|
||
|
0 / 0 / 0
Регистрация: 13.05.2011
Сообщений: 401
|
||
| 12.05.2013, 08:39 | ||
PS: Есть еще одно решение, на одном чипе, с Ethernet и USB - на LM3S9B95 :)
0
|
||
|
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 74
|
||
| 12.05.2013, 17:50 | ||
-u Segm:71c Segm:071C PUSH AX Segm:071D PUSH BX Segm:071E PUSH CX Segm:071F PUSH DX Segm:0720 PUSH SI Segm:0721 PUSH DI Segm:0722 PUSH DS Segm:0723 PUSH ES Segm:0724 PUSH BP Segm:0725 MOV BP,SP Segm:0727 SUB SP,+02 Segm:072A MOV AX,0DB5 Segm:072D MOV DS,AX Segm:072F MOV DX,0378 Segm:0732 IN AL,DX Segm:0733 XOR AL,[0073] Segm:0737 MOV [BP-01],AL Segm:073A CMP BYTE PTR [F9B7],01 Segm:073F JNZ 075E Segm:0741 CMP BYTE PTR [BP-01],00 Segm:0745 JZ 075E Segm:0747 MOV DI,FAD8 Segm:074A PUSH DS Segm:074B PUSH DI Segm:074C MOV DI,006E Segm:074F PUSH DS Segm:0750 PUSH DI Segm:0751 XOR AX,AX Segm:0753 PUSH AX Segm:0754 CALL 0CF0:091F Segm:0759 CALL 0CF0:0876 Segm:075E CMP BYTE PTR [F9B7],01 Segm:0763 JNZ 0771 Segm:0765 CMP BYTE PTR [BP-01],00 Segm:0769 JNZ 0771 Segm:076B INC WORD PTR [00C0] Segm:076F JMP 0794 Segm:0771 CMP WORD PTR [F8CE],0400 Segm:0777 JNB 078F Segm:0779 MOV AL,[BP-01] Segm:077C MOV DI,[F8CE] Segm:0780 MOV [DI+F4CC],AL Segm:0784 INC WORD PTR [F8CE] Segm:0788 MOV BYTE PTR [F9B7],00 Segm:078D JMP 0794 Segm:078F MOV BYTE PTR [F9B9],01 Segm:0794 MOV BYTE PTR [F9B8],01 Segm:0799 MOV AL,20 Segm:079B MOV DX,[F9C0] Segm:079F OUT DX,AL Segm:07A0 MOV SP,BP Segm:07A2 POP BP Segm:07A3 POP ES Segm:07A4 POP DS Segm:07A5 POP DI Segm:07A6 POP SI Segm:07A7 POP DX Segm:07A8 POP CX Segm:07A9 POP BX Segm:07AA POP AX Segm:07AB IRET Чтение данных из порта происходит в 15-й команде обработчика (Segm:0732), в общем-то не сказать, чтобы совсем плохой код был. Даже ваяя обработчик на ассемблере я должен буду сделать это не раньше 4-й команды: PUSH AX PUSH DX MOV DX,0378h IN AL,DX Ещё больше оптимизировать время реакции обработчика способа не вижу (будь номер порта меньше 100h можно было-бы сделать чтение и второй командой, не затрагивая DX, но 378h > 0FFh).
0
|
||
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||
| 12.05.2013, 18:04 | ||
Так что не там ищете ошибку. Не процессор виноват.
0
|
||
|
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 74
|
||
| 12.05.2013, 18:11 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 28.02.2013
Сообщений: 74
|
||
| 12.05.2013, 18:16 | ||
Так что не там ищете ошибку. Не процессор виноват. Процессором, это исполнявшим, был P4 из ранних ноутбучных (ноут HP Compaq NX 9000, если не ошибаюсь). Я именно к тому и привёл листинг, чтобы показать, что время реакции обработчика не при чём. Задержки не во время работы NewIRQ происходят, а где-то перед её вызовом. Но и задирание приоритета IRQ7 не меняет картины.
0
|
||
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||
| 12.05.2013, 18:31 | ||
Вы уверены, что на STM8S напишете лучше? Пентиум-то намного быстрее.
0
|
||
| 12.05.2013, 18:31 | |
|
Помогаю со студенческими работами здесь
20
stm8s-discovery + stm8s207cb(c8) Stm8S-Discovery + Rfm22 Проблемы с I2C - STM8S Discovery Подключение к STM8S-Discovery и IAR st-link встроенный в stm8s discovery Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536
Одним из. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|