Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
28.12.2011, 20:29
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Pinco, Вы знатный спорщик и отстаиваете свою точку зрения до конца - это похвально. Но кнопка может быть с разным функциями по нажатию и отпусканию.
Пример. Нажимаете кнопку "Параметр", на индикатор выводится какое-то значение параметра №1. Пока удерживаете эту кнопку, другими кнопками ("больше", "меньше") можно изменять значение. По отпусканию кнопки "Параметр" происходит запись в EEPROM. По следующему нажатию на кнопку "Параметр" на индикатор выводится параметр №2 и т.д. Я надеюсь, почему нужно отсекать дребезг и до и после объяснять не надо.
P.S. А по поводу мыши попробуйте правую кнопку в текстовом редакторе.
|
|
|
|
28.12.2011, 21:39
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
|
|
|
|
28.12.2011, 21:53
|
|
Частый гость
Регистрация: 19.12.2011
Адрес: Россия г.Брянск
Сообщений: 38
Сказал спасибо: 5
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
От споров на чем лучше писать под МК голова пухнет. Я так понимаю, что сравнивать Си и АСМе тоже самое, что сравнивать топор и скальпель. Топором можно нарубить дров, вырубить шикарную статую, но никогда не сможешь прооперировать человека, тоже самое касается и скальпеля им можно прооперировать человека, вырезать статую но не получится нарубить дров. И помимо этого результат зависит не только от самого инструмента но и от того кто им орудует(это как дать хирургу топор, а дровосеку скальпель). В общем смысл в том, что для каждой задачи и поставленных условий хорош свой инструмент.
Или я не прав? Я только начинаю изучение и не знаком еще ни с АСМе ни с Си, мой вывод сложился на основании ваших дискуссий.
|
|
|
|
28.12.2011, 22:12
|
|
Гражданин KAZUS.RU
Регистрация: 25.11.2008
Адрес: Волгоград
Сообщений: 507
Сказал спасибо: 42
Сказали Спасибо 49 раз(а) в 46 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Сообщение от pinco
|
Посмотрел прогу от DAVE_ELEKTRIK.(ссылка в постах выше была )
Первое замечание по проге - подпрограммы ну надо же располагать ПОСЛЕ инициализации и тела основной программы , ну сколько же раз говорили - а так сейчас получается все "задом наперед"
.
|
Pinco, Ваши мысли иной раз меня направляли в нужное русло, Но в этом случая, я уже убедился, программист лично для себя пишет обработку подпрограмм(по тексту) в нужном именно ему месте, обозначив адрес вектора прерывания(т.е. как он больше воспринимает). А про остальное , наверное согласен, т.е. прерывания. Чуток познав МК51 я немного узнал регистр приоритетов прерываний, а в АВР пока думаю, что их приоритет идет в порядке адресов векторов. Кстати DAVE зря побаивается использовать аппаратные прерывания - это же милое дело!
Последний раз редактировалось roma9112; 28.12.2011 в 22:15.
|
|
|
|
28.12.2011, 22:38
|
|
Прописка
Регистрация: 18.10.2010
Адрес: Planet Earth )
Сообщений: 120
Сказал спасибо: 14
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Сообщение от roma9112
|
Кстати DAVE зря побаивается использовать аппаратные прерывания - это же милое дело!
|
Да я не боюсь этих прерываний, я боюсь сложных алгоритмов!
А именно где надо всю периферию задействовать, в нужном месте какую команду лучше использовать - ASM. Не художник я пока этих алгоритмов! Вот сижу и по 10 раз одну и тоже главу перечитываю, может где то смысл потерял, или что то пропустил в книге!
__________________
Мозги кипят, ядрить твою валентность!!! Пойду закладывать остальные ингредиенты...
Последний раз редактировалось DAVE_ELEKTRIK; 28.12.2011 в 23:51.
|
|
|
|
28.12.2011, 22:48
|
|
Гражданин KAZUS.RU
Регистрация: 04.04.2007
Сообщений: 941
Сказал спасибо: 571
Сказали Спасибо 113 раз(а) в 85 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Сообщение от roma9112
|
Pinco, Ваши мысли иной раз меня направляли в нужное русло, Но в этом случая, я уже убедился, программист лично для себя пишет обработку подпрограмм(по тексту) в нужном именно ему месте, обозначив адрес вектора прерывания(т.е. как он больше воспринимает). А про остальное , наверное согласен, т.е. прерывания. Чуток познав МК51 я немного узнал регистр приоритетов прерываний, а в АВР пока думаю, что их приоритет идет в порядке адресов векторов. Кстати DAVE зря побаивается использовать аппаратные прерывания - это же милое дело!
|
Спасибо , стараюсь говорить о том что точно знаю .
А вот обработку подпрограмм запускать еще до инициализации - никто так не пишет , пока до конца не инициализирован контроллер .Проинициировали все там в нем , выставили нужные условия начальные для прерываний , и пусть даже потом эти условия сами могут быть изменены , но это именно потом ,когда все сделали правильно - вот тогда и пишите саму обработку или как там хотите , но все же лучше как полагается писать - чтобы правильно срабатывало .Невозможно определять условия для прерывания в самом уже случившемся прерывании - оно-то уже произошло , и по каким-то умолчальным условиям ,другим , и от измены условий в текущем прерывании все это может вступить в силу только в следующем прерывании , но не в этом же текущем .И вектор вектором но тот кусок обработчика для этого вектора не должен проигрываться и срабатывать прежде инициализации ,а посему и располагаться должен не перед инициализацией полной а именно ПОСЛЕ нее .А так как вниз по проге должна быть основная прога то этот кусок обработчика располагают после текста основной проги ,чтобы контроллер зря не выполнил этот Ваш кусок с подпрограммой обработчика просто потому что он располагается по ходу текста до основной проги , и независимо ,от того было там прерывание или нет ,паразитно это выполнил при включении .Надеюсь что в основном понятно обьяснил .
__________________
Короче асма кода нет !
|
|
|
|
28.12.2011, 23:14
|
|
Прописка
Регистрация: 18.10.2010
Адрес: Planet Earth )
Сообщений: 120
Сказал спасибо: 14
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Сообщение от pinco
|
Первое замечание по проге - подпрограммы ну надо же располагать ПОСЛЕ инициализации и тела основной программы , ну сколько же раз говорили - а так сейчас получается все "задом наперед" - пока по проге контроллер добирается до основной проги после включения - ему надо-не надо приходится бестолково выполнять и все что в подпрограммах ,а он еще даже и сам не до конца в этот момент проинициализирован ! - а там еще и reti есть у подпрограмм - и куда там он будет возвращаться если он даже не дошел до начала тела основной программы (хоть и короткой , две строчки там всего , но все же)
|
Почему Вы говорите - "пока по проге контроллер добирается до основной проги после включения" и все это выше написанное...? Для меня становится вопросом! Самое интересное все новички в первые задают вопросы профи как преподавателю на паре, с просьбой рассказать еще раз и попонятней, потому что не знают..., это в первый раз. И учителя сразу отвечают - а ты читал книгу такую и такую?
Так вот к чему я веду. Читать книги я не разучился, во первых просто в обеденный перерыв на работе просто люблю расслабиться успокоить нервы, снять усталость и напряжение, это как раз почитать любимую книгу - касается хобби. Значит я про счетчик команд. Начальное понятие имею, про относительные переходы тоже. Вы уверяете что программа не правильно оформлена.
Тогда почему в книгах пишут типа:
После сброса микроконтроллера в счетчик команд записывается ноль.
Затем контроллер переходит в режим выполнения программы. В процессе выполнения программы счетчик всегда указывает на текущую выполняемую команду. При считывании кода команды значение счетчика увеличивается на один или два (в зависимости от длины команды). При выполнении команд безусловного и условного переходов содержимое счетчика резко меняется. В него записывается новое значение адреса.
Я думаю что компилятор должен как то сам определить мое оформление программы, как лучше перевести в hex код, или это не так?
__________________
Мозги кипят, ядрить твою валентность!!! Пойду закладывать остальные ингредиенты...
|
|
|
|
28.12.2011, 23:21
|
|
Гражданин KAZUS.RU
Регистрация: 04.04.2007
Сообщений: 941
Сказал спасибо: 571
Сказали Спасибо 113 раз(а) в 85 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Сообщение от alvadep
|
...Но кнопка может быть с разным функциями по нажатию и отпусканию.
Пример. Нажимаете кнопку "Параметр", на индикатор выводится какое-то значение параметра №1. Пока удерживаете эту кнопку, другими кнопками ("больше", "меньше") можно изменять значение. По отпусканию кнопки "Параметр" происходит запись в EEPROM....
|
Конечно может быть , но основной режим все же - на нажатие , а иначе не получится сделать как в Вашем же примере - у DAVE_ELEKTRIK было вообще срабатывание только по отжатию - так вот нажали - ничего - отпустили - и только тогда включится режим "Параметр" , ну допустим отредактировали - а запомнить-то как - кнопка - то уже отжата , и что , тогда сделать запоминаниев EEPROM на действии снова нажать и отпустить ? Как-то много долбежки получается .
__________________
Короче асма кода нет !
|
|
|
|
28.12.2011, 23:33
|
|
Гражданин KAZUS.RU
Регистрация: 04.04.2007
Сообщений: 941
Сказал спасибо: 571
Сказали Спасибо 113 раз(а) в 85 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Сообщение от DAVE_ELEKTRIK
|
Почему Вы говорите - "пока по проге контроллер добирается до основной проги ...В процессе выполнения программы счетчик всегда указывает на текущую .... При выполнении команд безусловного и условного переходов содержимое счетчика резко меняется. В него записывается новое значение адреса.
Я думаю что компилятор должен как то сам определить мое оформление программы, как лучше перевести в hex код, или это не так?
|
Про счетчик все верно , но дальше не так .
Потому что компилятор (в асме) не переоформляет кое-как оформленную прогу по какому-то заложенному в него шаблону , а смотрит расположение кусков проги и приписывает такой же порядок и в конечной заливке в кристалл .Поэтому не следует от него ждать автоматизма как от шаблонов -заготовок в С , но это здесь ,в асме, даже и лучше - потому что здесь Вы сами можете реализовывать специфические виды инициализаций и загрузок какой хотите ,появляется полная свобода действий , но и одновременно ответственность за правильность этих действий , лишь бы правильно работало и ,короче,было правильно оформлено .(Плюс еще пост 316 посмотрите , пока писал ответ в нем , еще других накидали) .
__________________
Короче асма кода нет !
Последний раз редактировалось pinco; 28.12.2011 в 23:44.
|
|
|
|
29.12.2011, 00:34
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
|
Re: Помогите начинающему по ATmega8515
Цитата:
|
Первое замечание по проге - подпрограммы ну надо же располагать ПОСЛЕ инициализации и тела основной программы , ну сколько же раз говорили - а так сейчас получается все "задом наперед" - пока по проге контроллер добирается до основной проги после включения - ему надо-не надо приходится бестолково выпонять и все что в подпрограммах
|
Цитата:
|
Потому что компилятор (в асме) не переоформляет кое-как оформленную прогу по какому-то заложенному в него шаблону , а смотрит расположение кусков проги и приписывает такой же порядок и в конечной заливке в кристалл
|
БРЕД СИВОЙ КОБЫЛЫ !!!!! Вы хоть раз смотрели на процедуру начального старта любой вычислительной системы???
Согласно стандартов, объявления процедур и функций обязаны находиться компилятором в тексте до их первого использования. Это достигается или расположением тел функций перед основной программой или объявлением их в заголовочном файле или в теле основного модуля. Для программ на ассемблере это не действует, там программист сам должен заботиться о правильном размещении функций в памяти программ. Но я не знаю контроллера, у которого по адресу начального сброса в радиусе 3-10 команд не находился бы безусловный переход на процедуру начальной инициализации системы.
__________________
misterdi<@>i.ua
Последний раз редактировалось MisterDi; 29.12.2011 в 00:45.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:17.
|
|