Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 04.04.2018
Сообщений: 32

[Am186ES] Копировать данные из ячейки памяти в txt файл постоянно с периодом 2 мс

06.09.2022, 16:35. Показов 3233. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.Есть микроконтроллер Am186ES Microcontroller в память по адресу (сегмент и смещение) 9000:0040 постоянно с периодичностью в 2 мс записываются данные с датчиков положения ротора, мне необходимо эти данные считывать постоянно в файл txt, чтобы потом проанализировать .Подскажите пожалуйста код программы на accembler ?С чего начинать?(Я новичок в программировании.).Происходить обработка прерывания IRQ 7 по линии INT 3 и после этого записываются данные в ячейки памяти.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.09.2022, 16:35
Ответы с готовыми решениями:

Как сохранить данные из dataGridView1 в txt файл и открывать данные из txt в программе без удаления имеющихся
1) Помогите пожалуйста. Мне нужно сохранить данные из dataGridView1 в txt файл так, чтобы при нажатии на кнопку сохранить, автоматически...

Копировать консоль в файл txt
Нужно скопировать вывод консоли в файл, я новичек, камнями не кидайтесь как говорится Собственно код: class mealyaut : public...

Как можно копировать себе на сайт, постоянно обновляемые данные с других сайтов, например с Avito
Всем привет! К примеру, мы хотим автоматически копировать только что появившиеся объявления на авито в разделе дома. Объявления должны...

23
4039 / 2651 / 582
Регистрация: 11.09.2009
Сообщений: 9,456
07.09.2022, 00:33
Цитата Сообщение от Andrew16363 Посмотреть сообщение
С чего начинать?
С объяснения, каким образом у вас в микроконтроллере (больше в вашем вопросе ничего не упоминается) существует файл "txt".
0
0 / 0 / 0
Регистрация: 04.04.2018
Сообщений: 32
07.09.2022, 08:27  [ТС]
Добрый день.Из моего сообщения этого не следует(что в микроконтроллере существует файл txt).Я указал вот ,что (из 1-го сообщения ) мне необходимо эти данные считывать постоянно в файл txt, чтобы потом проанализировать (либо какой-то другой способ записи , чтобы данные можно было открыть и просмотреть.) Стоит плата CPU188-5MX Процессорная плата MicroPC, 1024 КБ ОЗУ, 8 каналов AI, 2 канала AO+R[48]C. Какой вопрос мне необходимо вам раскрыть , чтобы вам дать конкретный ответ?
0
1184 / 670 / 113
Регистрация: 15.05.2012
Сообщений: 4,078
07.09.2022, 10:28
Начать с изучения архитектуры и системы команд микроконтроллера.
1
101 / 95 / 10
Регистрация: 31.08.2022
Сообщений: 1,014
07.09.2022, 10:50
сразу в прерывании и пихайте в "файл"....
скорее всего запись на внешний носитель...
если новичок, то даже с С обломаешься, не говоря уже об ASM

эы. исходник то какой то есть?
0
Windows must die
672 / 849 / 103
Регистрация: 23.11.2021
Сообщений: 4,958
Записей в блоге: 15
07.09.2022, 11:00
Цитата Сообщение от Andrew16363 Посмотреть сообщение
код программы на accembler
USB на асме? Ну-ну...
Или таки USART хочешь?
Или надо вообще на флешку писать в файл?
Ты бы четко ТЗ для начала поставил. Ведь от этого сильно зависит то, насколько далеко тебя пошлют с желанием написать это на асме ☺
И да, ведь данные записываются не сами по себе, а исходя из уже готовой прошивки. Следовательно, тебе нужно модифицировать эту прошивку (все равно ты больше никак, по видимому, к памяти МК доступ не получишь). В общем, бесполезное занятие совершенно, т.к. с твоим уровнем знаний это невозможно.
1
4039 / 2651 / 582
Регистрация: 11.09.2009
Сообщений: 9,456
07.09.2022, 11:41
Цитата Сообщение от Andrew16363 Посмотреть сообщение
Какой вопрос мне необходимо вам раскрыть
Чтобы "подсказать код программы на accembler"?
Для этого нужно передать всю документацию на имеющуюся систему, включая электрические схемы, чтобы понять, откуда, по каким каналам и в какой накопитель надо гнать данные, где он расположен и что собой представляет. Нужно знать формат данных (сколько байт на отсчёт), чтобы определить скорость потока. Нужно знать требования к длительности этой записи, которую надо "потом посмотреть", чтобы оценить, влезет ли она в предлагаемый накопитель. Ну и в процессе возникнет ещё масса вопросов "по мелочи".
С вашей скоростью и качеством выдачи информации, такое обсуждение на форуме заняло бы несколько лет, поэтому эту тему никто серьёзно обсуждать не будет.
Вариантов у вас немного. Или найдётся кто-то, у кого точно такая же система, и он скинет вам какой-то кусок кода, или может в "Фрилансе" вам смогут помочь. Но и там, только если вы в состоянии дать вменяемое ТЗ.
0
0 / 0 / 0
Регистрация: 04.04.2018
Сообщений: 32
07.09.2022, 20:58  [ТС]
Есть исходники резидентных программ, которые работают в MS.DOS 6.22. Есть в файле СТС_5300.CPP фрагмент кода с прерыванием void interrupt far CTC_5300_IRQ (обработчик прерывания платы таймеров 5300) он там на протяжении 2 мс расписан код.К сожалению документы сбросить не смогу (меня могут к ответственности привлечь за это).Вот алгоритм прерывания IRQ 7 по линии INT 3 постараюсь сбросить.В этом файле пишутся данные sin A6
Счетчик секунд (*(pOutBuff+0x09)) OutBuff имеет адрес 9000:0020.Вот из этих ячеек и нужны данные SinA6 =(short int)(*(pAUXBuff+0xA6)); CosA7 =(short int)(*(pAUXBuff+0xA7)), SinA8 =(short int)(*(pAUXBuff+0xA8)); CosA9 =(short int)(*(pAUXBuff+0xA9))
0
0 / 0 / 0
Регистрация: 04.04.2018
Сообщений: 32
07.09.2022, 21:02  [ТС]
Не всегда есть возможность предоставить ТЗ и сопутствующую документацию.Есть исходники резидентных программ, которые работают в MS.DOS 6.22. Есть в файле СТС_5300.CPP фрагмент кода с прерыванием void interrupt far CTC_5300_IRQ (обработчик прерывания платы таймеров 5300) он там на протяжении 2 мс расписан код.К сожалению документы сбросить не смогу (меня могут к ответственности привлечь за это).Вот алгоритм прерывания IRQ 7 по линии INT 3 постараюсь сбросить.В этом файле пишутся данные sin A6
Счетчик секунд (*(pOutBuff+0x09)) OutBuff имеет адрес 9000:0020.Вот из этих ячеек и нужны данные SinA6 =(short int)(*(pAUXBuff+0xA6)); CosA7 =(short int)(*(pAUXBuff+0xA7)), SinA8 =(short int)(*(pAUXBuff+0xA8)); CosA9 =(short int)(*(pAUXBuff+0xA9))
Вложения
Тип файла: 7z BASE188.7z (23.6 Кб, 2 просмотров)
Тип файла: 7z CTC_5300.7z (16.5 Кб, 0 просмотров)
Тип файла: 7z UNIO48.7z (2.1 Кб, 0 просмотров)
0
0 / 0 / 0
Регистрация: 04.04.2018
Сообщений: 32
07.09.2022, 21:10  [ТС]
AuxBuff имеет адрес 9000:0040.
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8657 / 4491 / 1670
Регистрация: 01.02.2015
Сообщений: 13,899
Записей в блоге: 12
07.09.2022, 23:29
Лучший ответ Сообщение было отмечено ValeryS как решение

Решение

Поиск по "CPU188-5MX" привёл к пониманию, что топикстартер работает с ПЛК Fastwell CPU188-5MX.
Никогда с ними не работал, только читал обзоры, что ПЛК работает с сильно модифицированным клоном DOS.

Думаю, что нужно искать документацию по программированию у производителя - должны быть примеры, пояснительные материалы.
А также, нужно читать старые учебники по программированию в DOS на ассемблере или C.
Я бы порекомендовал:
Зубков. Ассемблер для DOS, Windows и Linux
Абель. Программирование на ассемблере.
Фроловы. Серия книг "Системное программирование"
Касаткин. Серия книг "Системное программирование"
Кулаков. Программирование на аппаратном уровне

Также, так называемый чипсет - содержащий таймеры, интерфейс и прочее - имеет прародителей из микропроцессорного комплекта кр580. Т.е. о конфигурировании именно таймера 8053 (или его клона) можно узнать из справочника
Микропроцессоры и микропроцессорные комплекты интегральных микросхем, справочник, в 2 томах

По поводу алгоритма - я бы попробовал сделать так:
- по прерыванию таймера опрашивается датчик, измеренные показания сохраняются в первом массиве (буфере)
- тем временем второй массив (буфер) передаётся операционной системе для записи в файл
- когда первый массив заполнится, он отдаётся на запись в файл, а заполнение измерениями производится во второй массив.
Сейчас винчестеры имеют собственный кэш и запись происходит довольно быстро. Да и размер буфера нужно выбирать кратный 512 байтам, а лучше посмотреть в свойствах винчестера размер кластера. Я бы не глядя взял размер 32 кБайта.

Ну и количество отсчётов ограничил - 2 мс это 500 отсчётов в секунду - файл быстро преодолеет ограничение в 2 ГБайта на размер одиночного файла для DOS и файловой системы FAT32.

Добавлено через 6 минут
И ещё. Именно IBM PC не имел таймера с разрешением 2 мс - только около 55 мс. Можно было изменить настройки таймера 8053 для уменьшения до 2 мс, но именно этот таймер тактировал и работу с дисководами - после использования нужно было восстанавливать настройки.

Это я к тому, что в классическом DOS для IBM PC нет решения исходной задачи.

Добавлено через 19 минут
Имеет смысл обратиться в техподдержку - могут прислать (а могут и не прислать) материалы по программированию - какие-то примеры, рекомендации по программированию и прочее. Могут посоветовать.
Но перед обращением нужно уже понимать половину решения, иначе будет непонятно всё.
0
Windows must die
672 / 849 / 103
Регистрация: 23.11.2021
Сообщений: 4,958
Записей в блоге: 15
07.09.2022, 23:37
Я подозреваю, что динозавра проще выкинуть и перейти на современные вещи. И в плане разработки это будет явно дешевле.
Вообще, ни в коем случае нельзя допускать эксплуатации железа, которое уже лет 10 (а то и больше), как вообще не поддерживается производителем и устарело как физически, так и морально. Как только изготовитель закончил поддержку, следует, пока не закончился ЗИП, начать реструктуризацию и модернизацию.
0
101 / 95 / 10
Регистрация: 31.08.2022
Сообщений: 1,014
08.09.2022, 09:45
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
По поводу алгоритма - я бы попробовал сделать так:
- по прерыванию таймера опрашивается датчик, измеренные показания сохраняются в первом массиве (буфере)
зачем так сложно?
2ms
открываем файл... и сразу в прерывании тупо добавляем значение прямо в файл...
можно счётчик завести... типа- больше 100к накидали.... закрываем этот файл, открываем следующий...
0
0 / 0 / 0
Регистрация: 04.04.2018
Сообщений: 32
08.09.2022, 09:56  [ТС]
Добрый день.Да все верно это он и есть(ПЛК Fastwell CPU188-5MX.).Спасибо за информацию(ФедосеевПавел).По поводу "динозавра" от пользователя (Eddy_Em), да я согласен , что нужно обновлять, но бюджет под эту замену не выделят так как договор на проект по работам закрыт и на обслуживание тоже договор закрыт.По этому своими силами исправляем неисправности.
Вложения
Тип файла: docx IRQ7 .docx (367.2 Кб, 7 просмотров)
0
0 / 0 / 0
Регистрация: 04.04.2018
Сообщений: 32
08.09.2022, 09:59  [ТС]
Выше выложил файлы *.CPP резидентных программ ниже алгоритм работы прерывания.
0
1184 / 670 / 113
Регистрация: 15.05.2012
Сообщений: 4,078
08.09.2022, 14:25
Цитата Сообщение от Andrew16363 Посмотреть сообщение
с датчиков положения ротора
Может проще навесить клещи и посмотреть где заедает?
0
0 / 0 / 0
Регистрация: 04.04.2018
Сообщений: 32
08.09.2022, 17:08  [ТС]
По поводу "навесить клещи на контакты" как мне сообщил нашил радиоэлектрик, что подключались на разъемы на которые возможно везде -все в порядке.

Добавлено через 2 минуты
Может целесообразней обсуждение вести в соответствующей теме?
По теме тоже согласен, может и будет больше результата.
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8657 / 4491 / 1670
Регистрация: 01.02.2015
Сообщений: 13,899
Записей в блоге: 12
09.09.2022, 22:55
Andrew16363, мне просто любопытно - это учебное задание или на производстве вы решили из киповца эволюционировать в асушника?

Если речь об эволюции, то код по обработке прерывания не поможет в решении общей задачи, т.к. будет являться ещё одним бесполезным примером.
Вот без шуток - вам нужны для изучения
- описания этой платы с точки зрения программирования (я вчера находил их в сети по запросу названия платы)
- книги с описанием аппаратного программирования (описания аппаратной части), например, книга Кулакова или Гука
- книги по аппаратному программированию на Turbo C - книги Касаткина и Фроловых.

Судя по описанию платы CPU188-5MX, она содержит другой чипсет, нежели персональные компьютеры, проверка программ на компьютерах просто невозможна.
Да, сам процессор совместим с Intel 8086, состав чипсета похож, книги по программированию в DOS будут полезны. Но на этом всё и заканчивается.

Т.к. Вы уже потратили время на изучение темы, ответьте на вопросы:
- на чём можно эмулировать программу?
- на сайте Fastwel уже нет поддержки этой платы, т.е. нет документации - что имеется у Вас?
- что за примеры прикладываете? они рабочие? что за описание алгоритма в файле "IRQ7.docx"?
- Вы уже обращались в техподдержку за документацией, за примерами? Что получили в ответ?
- что уже изучено и сделано? какие промежуточные подзадачи решены? как решены?
0
09.09.2022, 23:55
 Комментарий модератора 
Разделил тему

Вопрос перенёс и в раздел АСУТП:

[Fastwel CPU188-5MX] Сохранять каждые 2 мс значения из памяти в файл
0
0 / 0 / 0
Регистрация: 04.04.2018
Сообщений: 32
10.09.2022, 10:03  [ТС]
1)Резидентные программы написаны на TURBО C++.
2) У меня есть DOSBOX на ней и делаю задачу при помощи TURBO C++.
3)Примеры рабочие это программы которые работают на Fastwell.
4)Описание алгоритма прерывания при срабатывании запроса на прерывание от датчиков положение ротора.То есть стоят датчики на вращающейся части поворотного устройства и они выдают углы поворота в градусах с отрицательным значение и с положительным значением.
5)По поводу техподдержки ее не оказывает это компания которая устанавливала так как это все устарело и они не поддерживают уже эту плату и предлагают переходить на современные технологии(такой возможности нет в данной ситуации).
6) Так как электрическая часть проверена, и ошибок не найдено, не мной(радиоэлектриком, подключали осцилограф вольтметр и так далее) то начальник решил проверить программную составляющую правильно ли выдают значения АЦП и ЦАП это первые задачи.
7) Для этих задач написать программы ,чтобы понять правильно срабатывает АЦП поручили мне.
8) Это производство оно реально работает каждый день.
9) Что я сделал, самое простое на TURBOC++ написал бесконечный цикл для считывания данных из ячеек памяти до 640кб только пока не тестировал.При помощи MK_FP создал дальний указатель для доступа к ячейкам памяти так как до 640кб в реальном режиме можно напрямую обращаться к ОЗУ через сегмент и смещение (как я понял).Все данные в этих ячейках - СЛОВО.Есть сегмент и смещение ячеек памяти в которые пишутся данные.Пока все.
10)IRQ 7 это и есть аппаратное прерывание от датчиков слева мкс в таблице все данные готовы через 2 мс вот это GetDPR(); // 1-е чтение ДПР есть такое же второе, вот это мне и нужно .Они записаваюся в ячейки в буфер с номерами элементов.

Добавлено через 3 минуты
Сам процессор вот такой на него была документация.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.09.2022, 10:03
Помогаю со студенческими работами здесь

Копировать файл и сохранить содержимое файла в .txt
Добрый день форумчане. у меня возникла проблема. Мне надо написать программу которая: 1. копирует из определенной папки в указанную папку...

Данные в памяти программы постоянно меняются
Изучаю работу AVR МК. Пока ещё ничего не работает, но заметил, что после того, как программа зальётся в МК она там каким-то образом...

Переписать данные файла input.txt в файл output.txt, отсортировав их:
Переписать данные файла input.txt в файл output.txt, отсортировав их: в алфавитном порядке по фамилии, а затем по возрастанию года рождения...

Записать в выходной файл (txt) данные из исходного (txt)
записать в выходной файл данные из исходного(txt). Данные выходного файла(txt) должны располагаться в следующем порядке: сначала все цифры,...

Переписать данные файла input.txt в файл output.txt, отсортировать их в алфавитном порядке по фамилии
Народ меня тут 11 задач мне нужно их подробно прокомментировать какая строчка что делает(пример первая задача) помогите плиз кому не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru