Делаю первые шаги в МК и пытаюсь разобраться)
|
|
levon66 | Дата: Четверг, 08.01.2009, 21:00 | Сообщение # 1 |
Рядовой
Группа: Пользователи
Сообщений: 2
Статус: Offline
| Достало копаться в сети и листать книги, поэтому обращаюсь к живым микроэлектронщикам... Ситуация вот какая. Есть сигнал аналоговый. Напряжение от 0 до +5В. Нужно на 4 блока по 2 индикатора семисегментных вывести: среднее значение за 10 измерений, текущее, миниммальное и максимальное. Есть еще 2 кнопки: старт и сброс. Есть контроллер КР1816ВЕ31. Соотвественно без памяти программ, но с памятью данных. Есть АЦП-8ми разрядное. На выбор..... Вот так) вообщем начал разбираться, то-се. 1. Дошел до ацп-AD7880. Как его подключить-понятно. Но вот вопрос. Он же выдаст мне 8 бит. А нужно выводить "целые" вольты и "десятые". Можно взять и четыре старших бита-как целые вольты, а 4 младших - за десятые? если да-то как? или если нет, то что делать? Или нужно переводить в 2-10 систему? 2. Дальше...я эти биты принял, и решил кидать в "банки" то есть все операции там произвести. Положим получилось и у меня будут они лежать как 1 байт. Можно видимо выделить старшие и младшие и отдельно подавать на индикаторы? И здесь же - как быть с точкой "h" циферкой. Ее зажигать нужно будет одновременно со старшим разрядом или как??? 3. Кнопки. От них нужно будет делать прерывание? то есть нажал "старт" у меня запустился МК, обнулили все, а потом запустили ацп, считали и пошло-поехало. Или как? Или старт включать должно считывание ацп? Сброс-просто обнуляет видимо. 4. Внешняя память (здесь видимо мое непонимание читателя выбесит, но все же) - - - я в нее что записывать-то должен??? программу??? то есть мне нужно каждый mov кидать как-то туда....?? то есть у меня порты P0 и P2. На Р0 подаю младший байт адреса ячейки ПЗУ, а на Р2-старший. Младший по сигналу ALE уходит в защелку (ну эти RG)??? а потом на Р0 выставляю свой несчастный mov???? вообщем я пока в трансе, но затею это все дело изучить не оставлю) помогите, микроконтроллерщики добрые..) Добавлено (08.01.2009, 18:32) --------------------------------------------- ОЧЕНЬ-ОЧЕНЬ нужна помощььььь Добавлено (08.01.2009, 21:00) --------------------------------------------- блин, тут люди живые есть вообще?
|
|
| |
Юра | Дата: Пятница, 09.01.2009, 09:18 | Сообщение # 2 |
Генерал-лейтенант
Группа: Проверенные
Сообщений: 618
Статус: Offline
| Quote (levon66) блин, тут люди живые есть вообще? Есть причем немало По МК есть у нас один спец Василый вот он и поможет вам с вашей проблемой
Учиться никогда не поздно!
|
|
| |
ЛЕВША | Дата: Пятница, 09.01.2009, 13:25 | Сообщение # 3 |
Admin
Группа: Администраторы
Сообщений: 1923
Статус: Offline
| Quote (levon66) блин, тут люди живые есть вообще? люди то есть, потерпите. если кто сможет помочь, обязательно откликнется.
упростить - улучшить! если ВЫ хотите помочь сайту в развитии, наши счета: Z789673670495 ($) R806233314616 ® 41001205775274(yand)
|
|
| |
levon66 | Дата: Пятница, 09.01.2009, 19:10 | Сообщение # 4 |
Рядовой
Группа: Пользователи
Сообщений: 2
Статус: Offline
| будем ждать добрых людей.... Добавлено (09.01.2009, 13:49) --------------------------------------------- а может есть здесь где нибудь похожие штуки? или примеры программ с индикацией динамической на асме? или пересчет из bin в 2-10 систему? асм для кр1816ве31 Добавлено (09.01.2009, 18:55) --------------------------------------------- как можно сделать перевод из двоичной системы в двоично-десятичную? команд таких нет. а поиски написанных программ с такими оперциями не помогают. мысль о том, что каждой комбинации числа в bin сопоставить 2-10 число это как-то пугает. и еще вопрос. как реализовать можно вычисление среднего из 10 последних показаний. Есть мысль, что есть 10 разрядов. Вычислил среднее, потом получил новое измерение-записал вместо 1-го из тех десяти, вычислил среднее. ПОотом получил измерение записал вместо второго, вычислил и т.д. Но как это в асме сделать. Это ведь не паскаль с циклами обычными. Как-то может связываться с SP??? ________________ а задача вот какая:с ацп с интервалом в 1с выводить-текущее, мин, макс, и среднее из 10 последних. Индикаторы 4 по 2 разряда. а еще кнопки пуск и сброс предусмотреть. Добавлено (09.01.2009, 19:10) --------------------------------------------- про системы счисления я понял как реализовать... ПОМОГИТЕ КТО-НИБУДЬ!!!!!!!!!!!! как В АССЕМБЛЕРЕ ПОД кр1816ве31 реализовать можно вычисление среднего из 10 последних показаний. Есть мысль, что есть 10 разрядов. Вычислил среднее, потом получил новое измерение-записал вместо 1-го из тех десяти, вычислил среднее. ПОотом получил измерение записал вместо второго, вычислил и т.д. Но как это в асме сделать. Это ведь не паскаль с циклами обычными. Как-то может связываться с SP??? ________________ а задача вот какая:с ацп с интервалом в 1с выводить-текущее, мин, макс, и среднее из 10 последних. Индикаторы 4 по 2 разряда. а еще кнопки пуск и сброс предусмотреть.
|
|
| |
Юра | Дата: Пятница, 09.01.2009, 19:22 | Сообщение # 5 |
Генерал-лейтенант
Группа: Проверенные
Сообщений: 618
Статус: Offline
| Quote (levon66) ПОМОГИТЕ КТО-НИБУДЬ!!!!!!!!!!!! Так без паники..! сёдня постараюсь найти Василия он поможет вашей проблеме..
Учиться никогда не поздно!
|
|
| |
VasylYE | Дата: Суббота, 10.01.2009, 13:35 | Сообщение # 6 |
Рядовой
Группа: Проверенные
Сообщений: 263
Статус: Offline
| Прошу прощения, есть проблемы со связью, не было возможности раньше зайти на сайт. А почему выбор именно на КР1816ВЕ31? это очень древняя микросхема, давно уже не выпускается, да и лучше все таки искать такую, в которой и память данных, и память програм все находится внутри Далее 1. Если мы с АЦП получаем 8-битный результат, это значит, что диапазон от 0 до опорного напряжения разбит на 255 частей, например, если опорное напряжение 5 вольт, то 1 бит у нас равен 5/255=0,0196 вольт. Таким образом, результат с АЦП нужно множить на коэффициент 0,0196, тогда мы получим значение в вольтах. Преобразование в десятичную форму нужно делать непосредственно перед выводом на индикацию. Для примера - Если мы считали с АЦП значение 0х5F (шестнадцатеричное), коэф. 0,0196 чтобы не мучаться с дробями, можно записать как 196 или 0хС4 (шестнадцатеричное), а в самом конце мы перенесем точку дроба туда, куда нужно. Множим 0х5F на 0хС4, получаем результат 0х48ВС. Далее преобразуем шестнадцатеричное значение в так называемое упакованное десятеричное, то есть мы получим десятеричное число 18620 (ниже покажем, как это делать). Помня, что нам нужно перенести точку на 4 знака влево, мы получили результат 1,8620 вольта. Далее, выводим это на индикатор. 2. После множения на коефициент, и преобразования из шестнадцатеричной в десятеричную систему, мы можем выводить результат на индикацию. Например, у нас трехразрядный индикатор. Значит, крайний левый будет показывать единицы, средний десятые, правый - сотые. Точку, соответственно нужно зажигать в левом индикаторе (т.е. перед десятыми). 3. Кнопки можно считывать в цикле, если не нужна мгновенная реакция на изменения их состояния. Сброс лучше не делать, так как тогда все обнуляется. 4. Работа с внешней памятью идет полностью автоматически, т.е. процессор сам выставляет значения на порты Р0 и Р2, сам дергает сигналом ALE и т.д. Quote (levon66) а может есть здесь где нибудь похожие штуки? или примеры программ с индикацией динамической на асме? или пересчет из bin в 2-10 систему? асм для кр1816ве31 асм для кр1816ве31 это класический 51ый асм думается, что нужно делать все последовательно - например. Рисуем схему, пишем подпрограмму вывода на индикацию (пусть берет себе значения из каких то ячеек, в которые мы потом будем писать результат вычислений). Далее делаем подпрограмму считывания из АЦП. Потом обрабатываем полученный результат (множим на коэф.) Переводим в десятеричный вид и уж это пишем в те ячейки, откуда подпрограмма вывода на индикацию будет их читать и показывать. Quote (levon66) как можно сделать перевод из двоичной системы в двоично-десятичную? команд таких нет. а поиски написанных программ с такими оперциями не помогают. мысль о том, что каждой комбинации числа в bin сопоставить 2-10 число это как-то пугает. и еще вопрос. как реализовать можно вычисление среднего из 10 последних показаний. Есть мысль, что есть 10 разрядов. Вычислил среднее, потом получил новое измерение-записал вместо 1-го из тех десяти, вычислил среднее. ПОотом получил измерение записал вместо второго, вычислил и т.д. Но как это в асме сделать. Это ведь не паскаль с циклами обычными. Как-то может связываться с SP??? здесь тоже есть циклы, есть и целые решения данного вопроса Например, мы суммируем десять измерений, потом делим на 10. Это не сложно сделать Лучше суммировать такое количество измерений, которое является степенью от 2 (4, 8, 16, ...). Такие числа проще делить на число, кратное 2 (сдвигая их вправо). Если это должен быть реальный прибор, то лучше взять любой другой МК той же архитектуры, но посовременнее, и с встроенной памятью. Что именно уже сделано? задавайте вопросы, будем стараться ответить.
А нам своє робить!
|
|
| |
любитель | Дата: Среда, 18.02.2009, 20:32 | Сообщение # 7 |
Лейтенант
Группа: Проверенные
Сообщений: 44
Статус: Offline
| дядьку, не мучайтесь.возьмите мелкосхему посвежее.(они сейчас мизер стоят).и что бы все уже внутри было.а выводить лучше на жк дисплей.там много чего хорошего написать можно.выйдет намного быстрее по времени, да и по деньгам тоже.а то что применили вы, это вчераший день.вы в совершенстве изучите кр1816ве31.и к этому приятному моменту вы обнаружите неприятные моменты.мелкосхем таких уже нет (снимут, если уже не сняли с производства).и ваши знания уже никому не будут нужны.(базовая подготовка конечно не в счет, процессор он и в африке процессор).и вам прийтется изучать то, с чего надо было сразу начинать.опишите вашу задачку в общем, и думаю гуртом посоветуем на каком камне остановиться.
|
|
| |
c8051 | Дата: Пятница, 20.02.2009, 12:56 | Сообщение # 8 |
Рядовой
Группа: Пользователи
Сообщений: 2
Статус: Offline
| Если Вам интересен именно 51-й, то: 1) купить готовую недорогую платку от SiLabs ( ToolStick = $25) = пошаговая отладка по USB 2) купить готовую плату на Futurlec.com ( $20-$90 + mail $7) 3) купить(найти) at89c51ed2,rd2, id2,.. ( $6-$10) = отладка по UART
|
|
| |
Katz | Дата: Суббота, 21.02.2009, 17:00 | Сообщение # 9 |
Ефрейтор
Группа: Проверенные
Сообщений: 29
Статус: Offline
| Для отладки - да, камешек неплохо бы покрупнее, на будущее сгодится. Тут можно и потратиться. А с данной задачкой на ура справится какой-нибудь из мелких Атмелов (пожалуй, даже 1051) или LPC900 - за доллар-полтора, среди LPC900 есть модели с АЦП на борту. И LCD вместо светодиодов - удобнее подключать и куда меньше кушает, если подсветку не считать.
Летать быстрее света невозможно, да и стоит ли стараться - всё равно никто не увидит и не оценит.
Сообщение отредактировал Katz - Суббота, 21.02.2009, 17:08 |
|
| |
любитель | Дата: Воскресенье, 22.02.2009, 18:20 | Сообщение # 10 |
Лейтенант
Группа: Проверенные
Сообщений: 44
Статус: Offline
| да, поддерживаю.камешек действительно надо сразу изучать покрупнее.к тому приятному моменту когда он будет изучен, он будет стоить копейки.да и сейчас они в принципе недорого стоят.а если програмить во фловкоде.так и вообще разницы особой нет.главное что бы ног хватило и периферии.ну может еще какое нибуть сверх низкое энергопотребление.только что одно, что другое.а учиться то все равно надо.за нас никто не научиться.
|
|
| |
Leksus | Дата: Суббота, 20.06.2009, 00:01 | Сообщение # 11 |
Подполковник
Группа: Проверенные
Сообщений: 125
Статус: Offline
| Почему не происходит стирание Flash памяти микроконтроллера все прозвонил все нормально уже третью паяю что делать даже не знаю
|
|
| |
Leksus | Дата: Воскресенье, 21.06.2009, 17:22 | Сообщение # 12 |
Подполковник
Группа: Проверенные
Сообщений: 125
Статус: Offline
| Начинаю стирать микроконтроллер пишет стерт потом проверяю Проверка на чистоту пишет Flash не пуста
Электроника это - ... наука о контактах!
|
|
| |
ЛЕВША | Дата: Воскресенье, 21.06.2009, 17:48 | Сообщение # 13 |
Admin
Группа: Администраторы
Сообщений: 1923
Статус: Offline
| Дело скорее всего в железе (програматор), тоже намаялся в начале пока собрал и отладил. Вытворял нечто похожее. Настройки нужно глянуть.
упростить - улучшить! если ВЫ хотите помочь сайту в развитии, наши счета: Z789673670495 ($) R806233314616 ® 41001205775274(yand)
|
|
| |
VasylYE | Дата: Воскресенье, 21.06.2009, 21:18 | Сообщение # 14 |
Рядовой
Группа: Проверенные
Сообщений: 263
Статус: Offline
| Что за МК? какой программатор? а если что то запрограммировать после стирания?
А нам своє робить!
|
|
| |
Leksus | Дата: Понедельник, 22.06.2009, 01:07 | Сообщение # 15 |
Подполковник
Группа: Проверенные
Сообщений: 125
Статус: Offline
| Да не железо проверено на другой плате Мк атмеловский самое интересное то что при понижении напряжения питания он один раз запрограммировался т.е сначала стерся а потом запрограмировался
Электроника это - ... наука о контактах!
|
|
| |
|