Вопросы по программированию AVR на ассемблере

Обсуждаем контроллеры компании Atmel.
Ответить
Открыл глаза
Сообщения: 49
Зарегистрирован: Ср апр 16, 2014 18:46:46

Сообщение Родион@22 »

Стыковать написанный мной код со сферическим конем в вакууме нет никакого желания.
Ну, чтож спасибо и за этот совет
Реклама
Открыл глаза
Сообщения: 49
Зарегистрирован: Ср апр 16, 2014 18:46:46

Сообщение Родион@22 »

http://radiokot.ru/circuit/digital/home/133/
А микроконтроллер из этой статьи возможно поменять на AVR мк?
Реклама
Держит паяльник хвостом
Сообщения: 933
Зарегистрирован: Ср апр 13, 2011 11:09:20
Откуда: Екатеринбург

Сообщение Alkul »

Родион@22 писал(а):А микроконтроллер из этой статьи возможно поменять на AVR мк?
Конечно возможно. Все микроконтроллеры одного класса обладают примерно одинаковыми возможностями.
Если говорить о 8-ми разрядных контроллерах, то одна и та же схема может быть реализована хоть на AVR, хоть на PIC, хоть на x51/
В статье, по-крайней мере, описан нормальный прибор, который точно будет работать.
Если нет желания строить именно прибор с малым потреблением, то индикатор можно взять и другой, например, светодиодный семисегментный. В данном случае электрическая принципиальная схема вообще не догма.
Центральная идея - использование промышленного датчика освещенности, выдающего результат измерений по интерфейсу I2C. Остальное - только "обвязка", которую можно поменять. В семействе AVR, кстати, полно МК, имеющих аппаратный I2C, что освободит программиста от необходимости писать еще и программную реализацию I2C
Открыл глаза
Сообщения: 49
Зарегистрирован: Ср апр 16, 2014 18:46:46

Сообщение Родион@22 »

Конечно возможно. Все микроконтроллеры одного класса обладают примерно одинаковыми возможностями.
а какой есть AVR аналог SiliconLabs?
и как эту программу подстроить под AVR контроллер?
Реклама
Эиком - электронные компоненты и радиодетали
Держит паяльник хвостом
Сообщения: 933
Зарегистрирован: Ср апр 13, 2011 11:09:20
Откуда: Екатеринбург

Сообщение Alkul »

Родион@22 писал(а):а какой есть AVR аналог SiliconLabs?
Для этой схемы подойдет любая ATmega. Та же ATmega8, широко распространенная и недорогая.
Родион@22 писал(а):и как эту программу подстроить под AVR контроллер?
Никак не подстроить. Вы понимаете, что это контроллеры разных семейств с совершенно разными системами команд? У AVR система команд AVR, а у данного контроллера SiliconLabs система команд х51.
Скажите, возможно взять программу, написанную для Windows и "подстроить" её так, чтобы она смогла запуститься под MacOS?

Но можно, например, написать под Линукс и под MacOS текстовый редактор, выглядящий точно так же, как Word из пакета Microsoft Office, и выполняющий те же самые функции. Проблема тут не техническая, а юридическая - права на графический интерфейс Word'а у Microsoft, и она не позволит кому бы то ни было копировать внешне свою программу.

В нашем случае, аналогично, придется писать программу заново под AVR, но так, чтобы она выполняла те же функции - общение с люксметром по интерфейсу I2C, вывод данных на индикатор. Вряд ли у Вас получится это сделать, учитывая Ваш уровень.

Я не понимаю, почему новички с практически нулевыми познаниями и опытом стремятся учиться сразу на сложных схемах и разработках? Зачем Вам сразу уровень освещенности нужно измерять? Вы бы еще MP3-плейер на AVR начали делать :))

Логичней сделать элементарную схему, состоящую из МК, пары кнопок и (допустим) восьми светодиодов. Попробовать самому написать программу опроса кнопок, самому написать "бегущий огонь" на светодиодах.
А уж потом переходить к более сложным задачам. Первоклашек вначале учат таблице умножения, а уж потом обучают методикам умножения и деления в "столбик". А Вы именно это и пытаетесь делать - умножать, фигурально выражаясь, в столбик, нетвердо зная таблицу умножения..
Сделав простую схему, о которой я сказал выше, на макетной плате совсем несложно потом "пристегнуть" к ней и ЖКИ-индикатор, и часы типа DS1307, и термометр типа DS1820 и многое другое.
Реклама
Открыл глаза
Сообщения: 49
Зарегистрирован: Ср апр 16, 2014 18:46:46

Сообщение Родион@22 »

я бы с радостью сделать сначала попроще, но система обучения в колледже требует специалиста от школьника :cry:
Реклама
Держит паяльник хвостом
Сообщения: 933
Зарегистрирован: Ср апр 13, 2011 11:09:20
Откуда: Екатеринбург

Сообщение Alkul »

Родион@22 писал(а):система обучения в колледже требует специалиста от школьника
Что это за колледж такой? Который требует довольно-таки основательного уровня знаний в электронике и программировании?

Это устройство Вам нужно "в железе" изготовить, или просто "на бумаге" оформить? И нужен именно прибор, измеряющий освещенность?
Открыл глаза
Сообщения: 49
Зарегистрирован: Ср апр 16, 2014 18:46:46

Сообщение Родион@22 »

Что это за колледж такой? Который требует довольно-таки основательного уровня знаний в электронике и программировании?
АКВТ - Астраханский колледж вычислительной техники(бывший Радиотехникум). Учитель сваливает все на министерство.
Это устройство Вам нужно "в железе" изготовить, или просто "на бумаге" оформить? И нужен именно прибор, измеряющий освещенность?
На бумаге, но я действительно заинтересован как рабтают устройства(в данном случае МК). Нужен прибор, который измеряет только солнечную энергию, не люксометр(интенсивность или мощность, как удобнее Вам). А вот мне идейку одногруппник подкинул. Идея в том, что АЦП 10-разрядный, 10 светодиодов(1 светодиод - 10% мощности солнца), 1024/10=102, 4. А в качестве датчика использовать фоторезистор. Прокомментируйте, пожалуйста, идею.
Заранее спасибо.
ТЗ прилагаю:
Вложения
Техническое задание Т3С46А.doc
(37.5 КБ) 203 скачивания
Друг Кота
Аватара пользователя
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Сообщение Ser60 »

Люкс по определению это количество световой мощности приходящейся на единицу площади. Измеряя мощность солнеччного излучения солнечной батареей фактически сводится к измерению величины светового потока, приходящегося на площадь солнечной батареи. Т.е. Вам по-сути нужен люксометр. Измерять интенсивность солнца солнечной баратеей, от которой еще и питается прибор со светодиодами это - грубо сказать не могу, а мягко выражаясь нет слов (С). Шкала будет жутко нелинейной, т.е. для академического проекта может и сойдет, но практического применения иметь не будет никакого. А главное зачем такие сложности, если есть нормальные датчики освещенности наподобии того, что в статье, снимающие проблемы точности и нелинейности полностью.

Насчет индикации результата 10-ю светодиодами, если я правильно понял, хотите сделать светодиодную шкалу подключив по светодиоду на каждый бит 10-битного АЦП (?) В этом случае линейной шкалы не получите, т.к. например, после значения 15 (в двоичном коде 1111) идет 16 (в двоичном коде 10000). Лучше подключите вместо 10 светиков один 7-сегментный светодиодный индикатор и высвечивайте на нем цифру пропорциональную коду АЦП.
Держит паяльник хвостом
Сообщения: 933
Зарегистрирован: Ср апр 13, 2011 11:09:20
Откуда: Екатеринбург

Сообщение Alkul »

Родион@22 писал(а):Нужен прибор, который измеряет только солнечную энергию
Хм. Какую именно энергию? Солнце испускает электромагнитное излучение в диапазоне от ближнего инфракрасного до самого жесткого гамма-излучения (распределение излучения по энергиям, конечно, неравномерно, но практически все участки спектра ЭМИ указанного мной диапазона (какие-то в большем, какие-то в меньшем количестве) в солнечном излучении присутствуют. Кроме того, в солнечном излучении, кроме ЭМИ присутствуют электроны и позитроны, нейтрино и т.д. Кроме того, для измерения именно энергии Вам потребуется селектирование излучения по видам, а внутри видов по энергиям. Это получится весьма нехилый набор измерительного оборудования, стоящий многие миллионы рублей. :))
Посмотрел я Ваше ТЗ. Кто его писал? "Измеритель солнечной энергии" - это круто. Я выше описАл, что Вам придется делать по этому заданию :))
Если писал преподаватель, значит, он слабо знает физику и/или не умеет формулировать. Измерить-то нужно энергию всего испускаемого Солнцем излучения, или только той части, которая входит в конус, попадающий на Землю? :)
Вам совершенно правильно сказали, что де-факто Вы все равно будете делать люксметр. Именно так и должна ставиться задача.
Родион@22 писал(а):Идея в том, что АЦП 10-разрядный, 10 светодиодов(1 светодиод - 10% мощности солнца), 1024/10=102, 4. А в качестве датчика использовать фоторезистор.
Вы нечетко формулируете. Из этого предложения непонятно, собираетесь ли Вы подключать светодиоды напрямую к АЦП или же все-таки использовать микроконтроллер, который будет либо управлять подключенным к нему внешним АЦП, либо использовать свой внутренний АЦП и по результатам замеров зажигать подключенные к свободному порту(портам) светодиоды.
Если имеется в виду первое, то сразу забудьте эту глупость. Во-первых, АЦП сам по себе работать не будет, им нужно управлять. Как минимум, запускать преобразование, но не только. Во-вторых, для этого подойдет только АЦП с параллельным выходом, но сигнал на выходах присутствует отнюдь не все время. Выходы АЦП не предназначены для подключения к ним такой нагрузки, как светодиоды и так далее. Плюс то, что выше Вам написали о неравномерности шкалы. В общем, идея бредовая.
Если имеется в виду второе - наличие в схеме управляющего микроконтроллера - идея реализуема. Конечно, в "настоящих" разработках фоторезисторы для этой цели не применяются по многим причинам, но для "учебной" разработки они вполне подойдут.
Только сразу забудьте про питание от фотоэлемента и прочую чушь. Питание нужно делать от нормальной батареи, способной отдать нужный ток. Использовать для индикации одиночные светодиоды - не самое лучшее решение, Вам выше совершенно правильно сказали, что лучше 7-ми сегментный индикатор. Для него и выводов потребуется меньше - 8 выводов (как раз один порт МК) позволят отобразить 10 состояний. А 10 одиночных светодиодов потребуют 10 выводов либо внешнюю схему на сдвиговых регистрах.
АЦП не обязательно 10-ти разрядный, хватит и 8-ми разрядного. 8 разрядов - это 256 (0...255) значений. Микроконтроллер у Вас есть. Можно разделить хоть на сколько градаций. Надо 10 - пожалуйста, на одну градацию придется 25 "попугаев" АЦП.
Имейте в виду, что схема даст Вам результат в виде неких условных "попугаев". Вы же помните, что удава можно измерять хоть в мартышках, хоть в попугаях? :))
Для того, чтобы от "попугаев" перейти к люксам, Вам потребуется образцовый люксметр для калибровки. Конечно в реале он не потребуется, коль скоро у Вас разработка "на бумаге", просто в сопроводительной документации, которую вы будете делать, нужно предусмотреть раздел "Калибровка прибора", в котором обязательно описать методику калибровки.
Поскольку у Вас индикация будет дискретная, то после калибровки Вы должны будете приложить к прибору таблицу, в которой будет указано, что (к примеру) градация 0 - это диапазон от нуля до 5 люкс, градация 1 - от 5 до 10 люкс и т.д. Вряд ли шкала будет линейная, скорее всего нет. Конкретные диапазоны (сколько люкс придется на конкретную градацию) определится только при калибровке по образцовому люксметру.
Открыл глаза
Сообщения: 49
Зарегистрирован: Ср апр 16, 2014 18:46:46

Сообщение Родион@22 »

Мне вряд ли понадобится точное измерение, скорее просто измерение :)
А вместо солнечной батареи использовать обычные батарейки. Да придется согласится, что это собственно люксометр, но люксометр только для освещения солнцем.
Из ваших комментариев я понял, что:
1) мне нужен люксометр
2) питать наверное, лучше от простых пальчиковых батарей
3) использовать 7- сегментный индикатор
4) а какой датчик освещенности использоать для Attiny26?
А конденсаторы, тоже лучше убрать?
Помогите составить программу для неродивого студента (особенно с АЦП, как он преобразует свет в цифры и покажет все это на индикаторе):write:
Держит паяльник хвостом
Сообщения: 933
Зарегистрирован: Ср апр 13, 2011 11:09:20
Откуда: Екатеринбург

Сообщение Alkul »

Родион@22 писал(а):4) а какой датчик освещенности использоать для Attiny26?
Так. Давайте еще раз. Устройство будет изготавливаться реально или нет?
Если нет, то какая разница, какой датчик применить и какой МК из семейства AVR взять?
Чего Вы уткнулись в эту ATtiny26? Выберите ATmega8, выберите датчик MAX44009, выдающий результат сразу в люксах.
Ассемблер абсолютно одинаковый, в меге8 он даже чуть расширен, например, есть команды умножения, есть команда movw, производящая разом копирование двух регистров.
Выбор конкретной модели контроллера критичен тогда, когда контроллер уже куплен, или требуется заменить один контроллер другим, если печатная плата уже сделана, тогда очень важно совпадение цоколевки. Или Вы чего-то недоговариваете? Будете изготавливать реально или нет?
Друг Кота
Аватара пользователя
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Сообщение Ser60 »

http://radiokot.ru/circuit/digital/measure/67/
Родион, посмотрите на эту статью. В конце статьи есть линк на ветку форума, где этот проект адаптировали под AVR.
Держит паяльник хвостом
Сообщения: 933
Зарегистрирован: Ср апр 13, 2011 11:09:20
Откуда: Екатеринбург

Сообщение Alkul »

Ser60 писал(а):Родион, посмотрите на эту статью. В конце статьи есть линк на ветку форума, где этот проект адаптировали под AVR.
А смысл? В ТЗ, которое дал Родион, нет ни слова о том, на МК какого семейства должен быть сделан проект.
Я так понимаю, что даже на AVR он не будет разрабатывать проект самостоятельно. Он будет просить помощи как в разработке схемы, так и в разработке программы.
То есть, будет делать курсовую не самостоятельно, поэтому о качестве обучения говорить все равно не приходится.
А коли так - чего мучиться самому и мучить других? Взять готовую схему люксметра из этой статьи, программа там тоже есть и сдать как свою работу. Какая разница, сдаст он курсовую, написанную нами, или сдаст курсовую, взятую с сайта?

Когда я прочитал вот это
Родион22 писал(а):система обучения в колледже требует специалиста от школьника
я подумал, что он действительно учится в школе, а эта работа - своего рода вступительное задание или проект, который нужно сделать на курсах подготовки к поступлению в колледж. Еще поразился, надо же, как круто образование шагнуло.
А оказалось, что это "курсач". Родион, Вы не школьник, Вы студент. Наверняка курс третий, не меньше. Именно такой сложности и должны быть курсовые, Вы же не в кулинарном техникуме обучаетесь, а в радиотехникуме (неважно, как он сейчас называется). Если во время учебы учиться, а не пинать балду, то ничего сложного тут нет, тем более при наличии интернета. Уж адаптировать-то готовое должны уметь, если хоть чему-то научились. А если схемотехника и программирование Вам непонятны, тогда, быть может, Вы не на ту специальность учитесь?

В общем, я переключаюсь из "режима помощи новичку" в "режим помощи студенту-раздолбаю" :)
А это означает, что если у Вас что-то не получается, я вначале попрошу показать, что Вы сделали и буду искать ошибку в сделанном. "С нуля" больше не напишу ни строчки кода. Нужен алгоритм подпрограммы - вначале попробуйте написать сами.
Лично у меня переделка той программы из ассемблера x51 в ассемблер AVR займет, думаю, часа полтора с перерывом на кофе. Но я этого делать не буду.
Открыл глаза
Сообщения: 49
Зарегистрирован: Ср апр 16, 2014 18:46:46

Сообщение Родион@22 »

Времена Советского союза прошли, ни один учитель в колледже не знает программирование МК, зато требует сверх того, чего не дает. Я не пропускал ни один урок, но ничего "такого" не открыл за все обучение. Да я не умею программировать, нас даже бегущим огонькам не учили, поэтому обратился к людям, да видно ничего не выйдет. Учителя работают ради галочки и денег. Я понимаю, что никто никому не обязан.
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

Думаешь здесь кого-то этому учили? Тем более, во времена СС? Здесь так же все сами, с 0 начинали. Посещение лекций ничего не дает. Необходимо еще самому чем-то интересоваться, задаваться вопросами и находить на них ответы. Так что бери книгу в руки - и вперед. А вот если будут вопросы по прочитанному - тогда к нам. :write:
P.S. За все мое время обучения с меня ни разу не потребовали того, чего не давали. И отмазка Вы нас этому не обучали всегда работала на 100%. А учился я в трех ВУЗах. Сдается мне, что наш бедный студент не все лекции посещал.
Друг Кота
Аватара пользователя
Сообщения: 6325
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

ИС-пытатель писал(а):Здесь так же все сами, с 0 начинали.
Не все, некоторые на этот сайт попали, имея два диплома :) Но что правда, так это то, что настоящий профи никогда не прекращает учиться вне зависимости от количества дипломов. Я здесь постоянно черпаю свежие мысли, ну и своими в меру слабых сил стараюсь делится с братьями меньшими :)
Держит паяльник хвостом
Сообщения: 933
Зарегистрирован: Ср апр 13, 2011 11:09:20
Откуда: Екатеринбург

Сообщение Alkul »

Родион@22 писал(а):ни один учитель в колледже не знает программирование МК, зато требует сверх того, чего не дает.
Это понятно, кто может делать - делает, а кто не может - учит. Поэтому если препод не занимается разработкой практически, то зачастую знает свой материал только "по верхушкам". Но как это извиняет Вас?
Вы учитесь для чего? Чтобы потом пойти работать по специальности, или потому что мама запихнула в колледж "лишь бы диплом был"? Если хотите работать, то как Вы собираетесь это делать с такими познаниями?

Когда нам в универе читали курс по микропроцессорам x51, вы думаете, нам вдумчиво, с чувством, с толком и расстановкой рассказывали об ассемблерных командах? Да щ-щ-щас же, ага.
Препод раздал методички "Архитектура однокристальной микроЭВМ К1816ВЕ31" и "Система команд однокристальной микроЭВМ К1816ВЕ31" (почему так хорошо помню - нам их раздали навсегда, вот они передо мной, они мне дороги как память :) ), сказал к следующему занятию изучить. На следующем занятии он показал нам отладчик и ассемблер, рассказал, как компилировать программу, показал, как запускать HEX-файл на отладку. А потом сразу раздал задания для самостоятельной работы - написать программу для заданного алгоритма. А на следующем занятии - снова самостоятельная работа еще посложнее. Пишешь код, преподу в отладчике-эмуляторе показываешь. А на следующем занятии - зачетная работа в лаборатории кафедры. Уже на аппаратных отладочных комплектах. Большое задание на целый день - написать программу, зашить в память контроллера, сдать.

Как видите, никто особо и не заморачивался с тем, чтобы чему-то нас учить. Учиться мы должны сами, а препод лишь проверяет качество усвоенного материала. Конечно, такому изучению микроконтроллеров предшествовали теоретические лекции, на которых рассказывалось, как в принципе устроены микроконтроллер и микропроцессор, про гарвардскую и принстонскую (она же Фон Неймановская) архитектуры. Но эту теорию может рассказать любой препод, даже не умеющий программировать.
Родион@22 писал(а):поэтому обратился к людям, да видно ничего не выйдет
Разве Вам мало помогали? Но писать курсовую за Вас - это уж извините, как говорится. Я свои курсовые уже давно отписал.
Одно дело помочь новичку, и совсем другое - обеспечить "халяву" безалаберному студенту.
Открыл глаза
Сообщения: 49
Зарегистрирован: Ср апр 16, 2014 18:46:46

Сообщение Родион@22 »

Разве Вам мало помогали?
Нет, такого я даже не говорил. Я, Вас наоборот благодарю, что хоть как-то откликнулись.
А курсовой проект, за меня никто не делал, не делает и не будет делать. Я и не просил его за меня делать. Я лишь хотел на примере программ узнать как АЦП преобразует свет в цифру, а потом отображает на светодиодах.
Нам даже не говорили о "хекс" файлах! Все сами.
Да и халявы не откуда ждать. Халява это когда вообще не знаешь ничего и даже никого не спрашиваешь. Я бы и не заморачивался. Некоторые просто деньги суют и все, приходя в заведение лишь на последней неделе.
Не хотите, объяснять посылайте, ваше право.
Курсовой проект это не только схема и программа. Раньше может так и было
Друг Кота
Аватара пользователя
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Сообщение Ser60 »

Родион, с таким подходом к делу Вам здесь определенно помогут. Но поке не ясно что Вы спрашиваете. АЦП преобразует аналоговый сигнал в цифру не программно, а аппаратно. Если хотите узнать как настроить и использовать АЦП в программе - это есть в любой книге по AVR.
Ответить

Вернуться в «AVR»