Интересно... Что ж тогда ОКF до нас то снизошёл в споре? Исключительно академический подход без всяких вариантов на попытки - во истину "шаг влево, шаг вправо - одно БЫДЛО"... Как то не слишком вежливо звучит...
и чесно говоря осознанный отказ от таймеров, точнее от прерываний по таймерам (таймеры то обычно есть в msc чипе) не является для меня однозначным признаком быдлокодирования
А это и не является быдлокодированием. Это является исключением. И потому его не стоит пропагандировать как правило. Мы же обсуждали не вообще отказ от таймера, а отказ от СИСТЕМНОГО таймера в СЛУЧАЕ разного рода опросов кнопок, светодиодов и т.п. шняги. А так и я синтезировал радиоимпульс (синусоидальный импульс) линейным кодом в примитивном МК. Иначе я бы не смог получить столько отсчетов сигнала.
У вас основной цикл тормозится на 60ms, а если третье сравнение проваливается, то прыгаем в начало и ждем еще минимум 60ms. Если такое происходит раз в секунду, то 12% производительности потеряно, причем это верно как для 16 MHz AVR, так и для 1GHz ARM. Смысл писать такое на ассме, если интерпретатор бейсика работает быстрее ? ) И что будет вызываться в основном цикле помимо опроса кнопок заранее не известно, далеко не факт, что с паузой 160ms оно будет работать, потому один раз пишется нормальная функция опроса кнопок, которая работает практически всегда.
Я бы не стал считать проценты производительности, а исходил из решаемой задачи. Скажем, какой-нибудь прибор-измеритель, основной цикл – 10 мс и чётко определён, а выводить информацию на табло надо раз в секунду, чтобы цифры не мелькали. Будет цикл 10 мс или 160 мс – без разницы. Если всё же пауза будет недопустимой, то можно сделать с прерыванием по таймеру, я ведь не против. Немного будет посложнее, но это мелочь. Можно ввести три переменные в SRAM для отсчётов и байт, в котором номер отсчёта. Тоже всё просто. Последнее время пришлось много заниматься проверкой разных подпрограмм на макетной плате. При отладке на макетке кнопки без всяких таймеров очень удобны, никаких проблем с отлаживаемой программой, а подключить кнопки к программе – несколько минут. Так что для некоторых задач такое решение - «на грани абсурда», для других задач – то, что надо. В этом плане для меня ваша единая нормальная функция опроса кнопок сильно сомнительна.
Если всё же надо быстро выскочить из программы, есть ведь задержки с флагом. При установке флага можно выскочить из программы, наверно, тоже где-то за 1 мкс.
Все можно, только теперь ваша программа уже не будет такой простой )
Что ж там сложного? Будет что-нибудь вроде такого:
Delay_T 30 ms BRTC L_0 RET L_0: …….. ‘Продолжение программы
Delay_T – задержка с флагом Т. При установке бита Т (регистр SREG) программа быстро выскочит из Delay_T. Встроенной такой функции пока нет (так-то есть), но появится, нередко бывает нужна.
Таймер найдется всегда. Если он вообще есть в МК. На крайняк это может быть 100 Гц сети заведенные на внешнее прерывание. Делать плавающий опрос - это очень плохая идея. Как правило, клавиатуры/кнопки сопровождают светодиоды, которые тоже традиционно мультиплексированы. Опрос традиционно общий. Вы пытаетесь доморощенное частное решение пропагандировать как верное. Еще раз повторю - это смешно.
Таймер может быть занят. Один ШИМ-ом, другой подсчётом каких-нибудь внешних импульсов. Была как-то задача – формирование сложного электрического сигнала. МК постоянно занят, отвлекаться нельзя, все прерывания запрещены. Есть только небольшое окно для обработки флагов прерываний, взаимодействия с внешней средой. Здесь прерывания не прокатят. Правда, это был периферийный МК, кнопок у него не было.
Вопрос с помехами даже не буду комментировать. Ваши фантазии - они только ваши фантазии.
Прочитал ваш пост про преобразователь с регулярными помехами, сбивающими электронику. Первой мыслью было: наймите на работу грамотного электронщика, он сделает источник питания, который не будет сбивать МК. Вспомнил ситуацию. Разработал по заказу небольшой импульсный источник. Заказчик сделал такой же заказ ещё у другого исполнителя, наверно, для сравнения. Потом сообщают, у того источник получился гораздо меньше, вот, мол, как надо работать. Стали испытывать. Оказалось, у того источника были такие помехи, что невозможно измерить напряжение на выходе, электронный мультиметр сбивался. Наверно, тяжёлый режим трансформатора плюс непрерывный режим.
Первой мыслью было: наймите на работу грамотного электронщика, он сделает источник питания, который не будет сбивать МК.
Наглость - вторая натура. А кто вам сказал, что помехи создает СВОЙ источник? Свой источник сделать под собственные требования - не велика задача. Проблема в тех, которые в этой же сети включены и находятся в оборудовании за охулиард денег. Так что дело не в источнике, а в схемотехнике собственно целевого низковольтного устройства с учетом наличия внешних мощных помех. Просто пример из моего опыта. Наша контора разработала (ваш покорный слуга разработал единолично) и выпускает устройство под названием "деактиватор акустомагнитных этикеток". В нем электроника устройства выполняющая не только заявленную в названии функцию, но и детектирование наличия этикеток, размещена прямо в катушке деактивации с импульсным переменным магнитным полем созданным 8,5 килоампервитками этой катушки. И ничего, работает как часы. ЗЫ. К слову. Пара кнопок на лицевой панели имеются. Догадайтесь какой у них алгоритм?
Нет - ATtiny2313... AT90S2313 это вроде из самых старых... Такой даже в "пробниках" не было...
Таки вдохновила меня AT90S2313 спаять стендик.. Да и проектик уже к концу подходит.. да уже бы и закончил)) Осталось чуть-чуть. и вдруг обнаруживаю, что в AT90S2313 нет mul
Думаю теперь)) почитать что-нибудь по теме.. или сложение в цикле замутить Нужно то всего в одном месте на 60 умножить..
Всем
Добавлено after 9 minutes 26 seconds: PS ""mpy8u" - 8x8 Bit Unsigned Multiplication" конечно жёсткая по коду Через цикл сложения сделаю.. Всё равно потом ещё задержку вставлять перед переходом..
Список доступных команд обычно в даташите прилагается. Не у всех одинаков - надо порой посматривать туда. Касательно умножения... Хорошо, когда степень двойки... А на 60... Может чего другого в соответствии с задачей придумать можно?... Или уж сложение со сдвигами...
Приветствую Всех. Вопрос к знатокам по ассемблеру "gavrasm" строка по тексту
.DB "test" .DB "TEST"
На выходе компиляции только заглавные буквы (русские ,латинские) Из за того что нету строчных букв на выходе компиляции приходится переводить свои проекты на "IAR ASSembler". Новые свои проекты уже в "IAR ASSembler".
Мне удобнее программировать на этом "gavrasm" ассемблере.
Как и где указать "gavrasm" компилятору что не надо переводить всё в заглавные буквы?. И возможно ли это вообще?
Этот баг появился с очередным обновлением, в младших версиях всё было нормально с буквами. Не лечится. Писал автору, но он не ответил. Хотя ранее я с ним переписывался по какой-то другой ошибке. Может быть его не стало, достаточно пожилой человек... Долго пользовался этим компилятором, но с появлением ошибки заглавных букв пришлось уйти на другой.
Спасибо за ответ "ДядяВован" Не зря перешел на "IAR ASSembler" В "gavrasm" мне было на много удобней. AVRA - чем то не зашло, уже и не помню. Ещо раз Спасибо за ответ.
СпойлерСтранно - уже более четверти века занимаюсь АВРами, а о таковом не слышал. Тем более странно, что первые 4 буквы названия - это первые 4 буквы моей фамилии Может, это я его разработал, а потом по-старчески забыл? Нет, это на Линухе - не моё. Жаль
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения