|
5 / 5 / 3
Регистрация: 30.05.2012
Сообщений: 89
|
|||||||
KP1878BE1. Передача значений с датчика давления по UART07.01.2014, 21:06. Показов 4547. Ответов 20
Метки нет (Все метки)
Суть проблемы в следующем:
Есть датчик с которого непрерывно посылаются данные (датчик давления), мк через АЦП получает эти данные(разрядность 8 бит, как раз можно получать по порту B), все данные - значения заранее просчитаны и зашиты в памяти - всего 256 значений, т.е если нам например пришло такое вот число 00010001, это число будет являться адресом где хранится определенное значение давления, также есть устройство верхнего уровня, которое может в любой момент времени запросить текущее давление, как только это случилось программа должна по последовательному каналу передать данные(давление) на верхний уровень и вернуться к обычному состоянию - т.е продолжать считывать давление с датчика и т.д. Надеюсь объяснил понятно) Вроде как ничего сложного и нет, но в низкоуровневом программировании мои возможности в данный момент нуливые...может кто сталкивался с данным мк и поможет написать программку уверен она строк в 50 не больше) ну или хотя бы хоть что то скажет по данной проблеме.
0
|
|||||||
| 07.01.2014, 21:06 | |
|
Ответы с готовыми решениями:
20
код для датчика давления
считать показания датчика давления масла в мк? |
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
|
| 08.01.2014, 07:42 | |
|
Свободно пишу на ассемблере для этого процессора. Только программа выйдет вовсе не 50 строчек. Вот, например, ты пишешь программа должна по последовательному каналу передать данные(давление). По какому каналу ? RS-232 ? Тогда какова частота тактирования процессора, какова скорость передачи в бодах, сколько бит данных, какова четность, сколько стоп-бит, каков протокол синхронизации передачи - DTR/RTS или без такового, каков формат передаваемой посылки, каков протокол обмена ? Одна только подпрограмма программного телепания бита при передаче по RS-232 уже строк под 30, да подпрограмма приема строк под 20, а тогда вся программа никак не 50.
Надеюсь объяснил понятно) Или напиши нормальную постановку задачи, или удовольствуйся ответом, что не понятно. Добавлено через 35 минут Сложный момент в этой задаче есть. С твоих слов получается, что микропроцессор у тебя устройство со всех сторон пассивное. Не он является инициатором передачи данных от датчика и не он от верхнего устройства. Как-то это идеологически криво, когда процессор ни разу и нигде не является задатчиком. Можно такое построить, но решение не очевидно. Решение мыслится таким - запрос от верхнего устройства должен быть посажен на прерывание. По этому запросу процессор должен немедля прекращать любую текущую операцию с датчиком (любая текущая операция с датчиком должна быть организована так, чтобы заведомо могла быть прервана в любой момент и не доделана до конца) и переходить по прерыванию к обмену с устройством, а после окончания обмена не возвращаться к прерванной операции, а начинать ее сначала, т.е. начинать сначала ожидание готовности данных от АЦП. И эту готовность отслеживать не по готовности в данный момент, а по моменту перехода от не готовности к готовности. Вот так, кое-как, идеологически твое устройство в своей логике вырисовывается. Если понятно о чем я говорю и какие грабли имею ввиду.
2
|
|
|
5 / 5 / 3
Регистрация: 30.05.2012
Сообщений: 89
|
||
| 08.01.2014, 15:24 [ТС] | ||
|
Ethereal, здравствуйте, рад что вы откликнулись на мою проблему. Согласен с тем что вы написали выше
В несу ясность как я представляю алгоритм работы такой программы: 1)Вероятнее всего сначала идет инициализация портов и необходимых переменных 2)Я не верно описал свою проблему, мк должен сам брать данные с АЦП(датчика) т.е он не будет как бы пассивным. 3)Вероятнее всего запрос с верхнего уровня нужно делать через прерывание, после чего по последовательному каналу передать его 4)После передачи разумнее всего переходить на новое считывание информации с АЦП(датчика). как я думаю это все. П.С программа нужно грубо говоря для галочки, поэтому надеюсь на вашу помочь
0
|
||
|
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,701
|
|
| 08.01.2014, 23:11 | |
|
С датчиком на АЦП канале ясно.
Скажем можно каждую секунду заставить МК посылать информацию по RS-232 о состоянии регистров АЦП. Можно только когда произойдёт изменение значений в регистрах АЦП. А куда у вас будет приходить информация по RS-232 от МК?
0
|
|
|
5 / 5 / 3
Регистрация: 30.05.2012
Сообщений: 89
|
||
| 09.01.2014, 15:31 [ТС] | ||
|
0
|
||
|
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,701
|
|
| 09.01.2014, 17:53 | |
|
KP1878BE1 не содержит модуля UART вам придётся программно организовывать роботу UART.
Не помогу
0
|
|
|
5 / 5 / 3
Регистрация: 30.05.2012
Сообщений: 89
|
|
| 09.01.2014, 20:50 [ТС] | |
|
VladimirU, спасибо за замечания, может хоть чем то можете помочь, хотя бы начало инициализация ,считывание с портов, и механизм обработки прерывания, можно без вывода на верхний уровень
0
|
|
|
194 / 154 / 23
Регистрация: 16.08.2013
Сообщений: 738
|
||
| 09.01.2014, 23:42 | ||
|
По внешнему прерыванию (старт бит) запускаете прерывания от таймера (соответственно отключаете внешнее прерывание) с периодом соответствующим скорости передачи одного бита и принимаете/передаете по-битно байт данных. далее стоп бит.
0
|
||
|
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,701
|
||
| 10.01.2014, 22:00 | ||
|
И можете рассмотреть МК например PIC, AVR их в продаже много да и можно найти в бытовой аппаратуре.
0
|
||
|
5 / 5 / 3
Регистрация: 30.05.2012
Сообщений: 89
|
|
| 11.01.2014, 02:22 [ТС] | |
|
не то что бы это знакомство - это курсовая) по этому и пишу сюда чтобы помогли конкретно с кодом, так понятия не имею с чего и как начать, точнее алгоритм грубо говоря и есть, но вот как ее реализовать программно это другой вопрос...
0
|
|
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
||||||
| 11.01.2014, 07:22 | ||||||
|
Вот
kr_dre2.zip прошивка пиратской карты Дрекрипт Триколор на КР1878ВЕ1 в исходниках. В ней можешь взять пример подпрограмм обмена по RS-232. Подпрограмма передачи байта SEND и приема байта RECV :
готовности, т.е. в цикле опрашивает линию данных PORTB.0 Временные интервалы в обеих подпрограммах организованы пустыми циклами. Параметры приема и передачи такие : Если КР1878ВЕ1 тактируется частотой 3.579545 MHz, то скорость обмена 9600 бод, 8 бит данных, четность четная, два стоп бита.
1
|
||||||
|
5 / 5 / 3
Регистрация: 30.05.2012
Сообщений: 89
|
|
| 11.01.2014, 18:19 [ТС] | |
|
Спасибо конечно, но данный кусок кода возможно и поможет, но сейчас в нем особой нужды нет( имею ввиду в передаче и приема сигнала)
Вы писали что свободно программируете на данном мк. могли бы вы написать такое: инициализацию портов - с порта b0 - b7 считываются данные с ацп (ацп 8 разрядный) порт а0 для последовательной передачи, а1 для сигнала запроса верхнего уровня(прерывание) ну и прием с порта b с сохранением в какой либо регистр. буду очень благодарен
0
|
|
|
|
|
| 11.01.2014, 20:06 | |
|
TC, а вы под помощью подразумеваете написание полного кода для вас, а вы будете раздавать ценные указания, что вам нужно сейчас или потом, не потрудившись выложить наработки и заглянуть в документацию на МК?
0
|
|
|
5 / 5 / 3
Регистрация: 30.05.2012
Сообщений: 89
|
|
| 11.01.2014, 20:57 [ТС] | |
|
С чего вы так решили, сюда я пишу когда чего то не могу понять, с целью что бы помогли привели пример,
повторюсь еще раз что на asm я не программирую и написания целого кода не требую и уж тем более никого не принуждаю это делать за меня, а всего лишь прошу выполнить не трудоемкую работу для тех кто понимает в этом.
0
|
|
|
5 / 5 / 3
Регистрация: 30.05.2012
Сообщений: 89
|
|
| 11.01.2014, 23:06 [ТС] | |
|
В данный момент пытаюсь разобраться, если что получится результаты закину сюдаю
0
|
|
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
|||
| 12.01.2014, 12:20 | |||
|
К тому-же я уже говорил - напиши постановку задачи ! Без нее разговор ни о чем. 1.) Кто дает команду АЦП начать преобразование ? 2.) Как АЦП сообщает процессору, что данные готовы и выставлены на линии b0 - b7 ? Данные на линии b0 - b7 при этом выставляются, надо полагать, в прямом виде ? 3.) У порта a0 при последовательном обмене пассивное состояние - ноль или единица, т.е. земля или 5 вольт ? 4.) Последовательная передача - это RS-232 ? Если да, то сколько бод, бит данных, какая четность, сколько стоп-бит ? 5.) Запрос прерывания на линию a1 выставляется фронтом или уровнем ? Если уровнем, то каким ? 0 или 5 вольт ? И при каких обстоятельствах запрос снимается ? Если фронтом, то каким ? Падающим или нарастающим ? 6.) Какова частота тактирования процессора ? Или ее можно выбирать по вкусу ? Или все это остальные должны узнать телепатически ? Замедитировать и прямо из астрала ?
0
|
|||
|
5 / 5 / 3
Регистрация: 30.05.2012
Сообщений: 89
|
|
| 12.01.2014, 15:38 [ТС] | |
|
1.) Кто дает команду АЦП начать преобразование ?
Насчет этого точно не знаю, в задаче сказано что данные преобразуются непрерывно, т.е постоянно, будем считать что АЦП просто преобразует данные и выдает их по готовности. 2.) Как АЦП сообщает процессору, что данные готовы и выставлены на линии b0 - b7 ? Данные на линии b0 - b7 при этом выставляются, надо полагать, в прямом виде ? Хорошее замечание, насколько я понимаю с АЦП также можно подать сигнал готов на какой либо из портов a, точнее щас посмотрел так и есть. 3.) У порта a0 при последовательном обмене пассивное состояние - ноль или единица, т.е. земля или 5 вольт ? Если я читал верную литературу то должно быть еденица т.е 5v 4.) Последовательная передача - это RS-232 ? Если да, то сколько бод, бит данных, какая четность, сколько стоп-бит ? Вот тут не могу точно сказать к сожалению. 5.) Запрос прерывания на линию a1 выставляется фронтом или уровнем ? Если уровнем, то каким ? 0 или 5 вольт ? И при каких обстоятельствах запрос снимается ? Я считаю что уровнем, можно также 5v, запрос снимается как будут переданы данные с порта a на верхний уровень. Если фронтом, то каким ? Падающим или нарастающим ? 6.) Какова частота тактирования процессора ? Или ее можно выбирать по вкусу ? думаю по вкусу
0
|
|
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
|
| 13.01.2014, 09:49 | |
|
Ты считаешь, что это постановка задачи ? Я - нет.
К примеру : >Хорошее замечание, насколько я понимаю с АЦП также можно подать сигнал готов на какой либо из портов >a, точнее щас посмотрел так и есть. Как ты думаешь, сигнал "данные готовы" от АЦП по барабану какой полярности ? Т.е. программа должна выходить одинаковой, независимо от того готовность данных - это ноль, а не готовность - единица или готовность - единица, а не готовность - ноль ? Как ты думаешь ? Как думаешь, может программист без этой информации обойтись ? Или из тебя ее клещами вытаскивать нужно ? Как хочешь, но я пас. Не хочу я ничего, ни из кого клещами вытаскивать. Сначала уясни свою задачу, потом напиши ее постановку и только потом кому-нибудь мозг выноси. А пока ты сам до конца не знаешь что тебе нужно, нам то откуда об этом узнать ?
0
|
|
|
5 / 5 / 3
Регистрация: 30.05.2012
Сообщений: 89
|
|
| 13.01.2014, 10:10 [ТС] | |
|
Ethereal, спасибо и тебе удачи тут все ясно
0
|
|
| 13.01.2014, 10:10 | |
|
Помогаю со студенческими работами здесь
20
АЦП для термопары (датчика давления) Arduino. Управление двигателем от датчика давления
Усиление сигнала с дифференциального датчика давления Чтение датчика абсолютного давления BMP085 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
|
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|