Ассемблер (ASM) для AVR в вопросах и ответах
- Starichok51
- Модератор
- Сообщения: 19039
- Зарегистрирован: Сб авг 14, 2010 15:05:51
- Откуда: г. Озерск, Челябинская обл.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
OKF, почитал статью.
получается, что у меня голимый быдлокод. я открывающую фигурную скобку всегда делаю в новой строке.
получается, что у меня голимый быдлокод. я открывающую фигурную скобку всегда делаю в новой строке.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Интересно...
Что ж тогда ОКF до нас то снизошёл в споре?
Исключительно академический подход без всяких вариантов на попытки - во истину "шаг влево, шаг вправо - одно БЫДЛО"...
Как то не слишком вежливо звучит...

Что ж тогда ОКF до нас то снизошёл в споре?
Исключительно академический подход без всяких вариантов на попытки - во истину "шаг влево, шаг вправо - одно БЫДЛО"...
Как то не слишком вежливо звучит...
- КРАМ
- Друг Кота
- Сообщения: 25123
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Ассемблер (ASM) для AVR в вопросах и ответах
[uquote="Starichok51",url="/forum/viewtopic.php?p=4662154#p4662154"]OKF, почитал статью.
получается, что у меня голимый быдлокод. я открывающую фигурную скобку всегда делаю в новой строке.[/uquote]
Старичок, успокойтесь... Я тоже.
Это шутливая статья, как и вся Лурка. Просто стеб.
[uquote="AlexS4",url="/forum/viewtopic.php?p=4662141#p4662141"]и чесно говоря осознанный отказ от таймеров, точнее от прерываний по таймерам (таймеры то обычно есть в msc чипе)
не является для меня однозначным признаком быдлокодирования[/uquote]
А это и не является быдлокодированием. Это является исключением. И потому его не стоит пропагандировать как правило. Мы же обсуждали не вообще отказ от таймера, а отказ от СИСТЕМНОГО таймера в СЛУЧАЕ разного рода опросов кнопок, светодиодов и т.п. шняги.
А так и я синтезировал радиоимпульс (синусоидальный импульс) линейным кодом в примитивном МК. Иначе я бы не смог получить столько отсчетов сигнала.
получается, что у меня голимый быдлокод. я открывающую фигурную скобку всегда делаю в новой строке.[/uquote]
Старичок, успокойтесь... Я тоже.
Это шутливая статья, как и вся Лурка. Просто стеб.
[uquote="AlexS4",url="/forum/viewtopic.php?p=4662141#p4662141"]и чесно говоря осознанный отказ от таймеров, точнее от прерываний по таймерам (таймеры то обычно есть в msc чипе)
не является для меня однозначным признаком быдлокодирования[/uquote]
А это и не является быдлокодированием. Это является исключением. И потому его не стоит пропагандировать как правило. Мы же обсуждали не вообще отказ от таймера, а отказ от СИСТЕМНОГО таймера в СЛУЧАЕ разного рода опросов кнопок, светодиодов и т.п. шняги.
А так и я синтезировал радиоимпульс (синусоидальный импульс) линейным кодом в примитивном МК. Иначе я бы не смог получить столько отсчетов сигнала.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Ассемблер (ASM) для AVR в вопросах и ответах
я открывающую фигурную скобку всегда делаю в новой строке.
Старичок, успокойтесь... Я тоже.
wc ~/data/devel/pan2/x213.asm
1529 3567 31967 ~/data/devel/pan2/x213.asm
grep -ce'\{' ~/data/devel/pan2/x213.asm
0
еще можно обсудить { на новой строке в питоне например
Re: Ассемблер (ASM) для AVR в вопросах и ответах
[uquote="Adrift",url="/forum/viewtopic.php?p=4661737#p4661737"]У вас основной цикл тормозится на 60ms, а если третье сравнение проваливается, то прыгаем в начало и ждем еще минимум 60ms. Если такое происходит раз в секунду, то 12% производительности потеряно, причем это верно как для 16 MHz AVR, так и для 1GHz ARM. Смысл писать такое на ассме, если интерпретатор бейсика работает быстрее ? ) И что будет вызываться в основном цикле помимо опроса кнопок заранее не известно, далеко не факт, что с паузой 160ms оно будет работать, потому один раз пишется нормальная функция опроса кнопок, которая работает практически всегда.[/uquote]
Я бы не стал считать проценты производительности, а исходил из решаемой задачи.
Скажем, какой-нибудь прибор-измеритель, основной цикл – 10 мс и чётко определён, а выводить информацию на табло надо раз в секунду, чтобы цифры не мелькали. Будет цикл 10 мс или 160 мс – без разницы.
Если всё же пауза будет недопустимой, то можно сделать с прерыванием по таймеру, я ведь не против. Немного будет посложнее, но это мелочь.
Можно ввести три переменные в SRAM для отсчётов и байт, в котором номер отсчёта. Тоже всё просто.
Последнее время пришлось много заниматься проверкой разных подпрограмм на макетной плате. При отладке на макетке кнопки без всяких таймеров очень удобны, никаких проблем с отлаживаемой программой, а подключить кнопки к программе – несколько минут.
Так что для некоторых задач такое решение - «на грани абсурда», для других задач – то, что надо.
В этом плане для меня ваша единая нормальная функция опроса кнопок сильно сомнительна.
[uquote="Adrift",url="/forum/viewtopic.php?p=4661737#p4661737"][uquote="AQ29",url="/forum/viewtopic.php?p=4661724#p4661724"]Если всё же надо быстро выскочить из программы, есть ведь задержки с флагом. При установке флага можно выскочить из программы, наверно, тоже где-то за 1 мкс.[/uquote]
Все можно, только теперь ваша программа уже не будет такой простой )[/uquote]
Что ж там сложного?
Будет что-нибудь вроде такого:
Delay_T 30 ms
BRTC L_0
RET
L_0:
…….. ‘Продолжение программы
Delay_T – задержка с флагом Т. При установке бита Т (регистр SREG) программа быстро выскочит из Delay_T. Встроенной такой функции пока нет (так-то есть), но появится, нередко бывает нужна.
[uquote="КРАМ",url="/forum/viewtopic.php?p=4661735#p4661735"]Таймер найдется всегда. Если он вообще есть в МК. На крайняк это может быть 100 Гц сети заведенные на внешнее прерывание. Делать плавающий опрос - это очень плохая идея. Как правило, клавиатуры/кнопки сопровождают светодиоды, которые тоже традиционно мультиплексированы. Опрос традиционно общий.
Вы пытаетесь доморощенное частное решение пропагандировать как верное. Еще раз повторю - это смешно.[/uquote]
Таймер может быть занят. Один ШИМ-ом, другой подсчётом каких-нибудь внешних импульсов.
Была как-то задача – формирование сложного электрического сигнала. МК постоянно занят, отвлекаться нельзя, все прерывания запрещены. Есть только небольшое окно для обработки флагов прерываний, взаимодействия с внешней средой. Здесь прерывания не прокатят. Правда, это был периферийный МК, кнопок у него не было.
[uquote="КРАМ",url="/forum/viewtopic.php?p=4661735#p4661735"]Вопрос с помехами даже не буду комментировать. Ваши фантазии - они только ваши фантазии.[/uquote]
Прочитал ваш пост про преобразователь с регулярными помехами, сбивающими электронику. Первой мыслью было: наймите на работу грамотного электронщика, он сделает источник питания, который не будет сбивать МК.
Вспомнил ситуацию. Разработал по заказу небольшой импульсный источник. Заказчик сделал такой же заказ ещё у другого исполнителя, наверно, для сравнения. Потом сообщают, у того источник получился гораздо меньше, вот, мол, как надо работать.
Стали испытывать. Оказалось, у того источника были такие помехи, что невозможно измерить напряжение на выходе, электронный мультиметр сбивался. Наверно, тяжёлый режим трансформатора плюс непрерывный режим.
Я бы не стал считать проценты производительности, а исходил из решаемой задачи.
Скажем, какой-нибудь прибор-измеритель, основной цикл – 10 мс и чётко определён, а выводить информацию на табло надо раз в секунду, чтобы цифры не мелькали. Будет цикл 10 мс или 160 мс – без разницы.
Если всё же пауза будет недопустимой, то можно сделать с прерыванием по таймеру, я ведь не против. Немного будет посложнее, но это мелочь.
Можно ввести три переменные в SRAM для отсчётов и байт, в котором номер отсчёта. Тоже всё просто.
Последнее время пришлось много заниматься проверкой разных подпрограмм на макетной плате. При отладке на макетке кнопки без всяких таймеров очень удобны, никаких проблем с отлаживаемой программой, а подключить кнопки к программе – несколько минут.
Так что для некоторых задач такое решение - «на грани абсурда», для других задач – то, что надо.
В этом плане для меня ваша единая нормальная функция опроса кнопок сильно сомнительна.
[uquote="Adrift",url="/forum/viewtopic.php?p=4661737#p4661737"][uquote="AQ29",url="/forum/viewtopic.php?p=4661724#p4661724"]Если всё же надо быстро выскочить из программы, есть ведь задержки с флагом. При установке флага можно выскочить из программы, наверно, тоже где-то за 1 мкс.[/uquote]
Все можно, только теперь ваша программа уже не будет такой простой )[/uquote]
Что ж там сложного?
Будет что-нибудь вроде такого:
Delay_T 30 ms
BRTC L_0
RET
L_0:
…….. ‘Продолжение программы
Delay_T – задержка с флагом Т. При установке бита Т (регистр SREG) программа быстро выскочит из Delay_T. Встроенной такой функции пока нет (так-то есть), но появится, нередко бывает нужна.
[uquote="КРАМ",url="/forum/viewtopic.php?p=4661735#p4661735"]Таймер найдется всегда. Если он вообще есть в МК. На крайняк это может быть 100 Гц сети заведенные на внешнее прерывание. Делать плавающий опрос - это очень плохая идея. Как правило, клавиатуры/кнопки сопровождают светодиоды, которые тоже традиционно мультиплексированы. Опрос традиционно общий.
Вы пытаетесь доморощенное частное решение пропагандировать как верное. Еще раз повторю - это смешно.[/uquote]
Таймер может быть занят. Один ШИМ-ом, другой подсчётом каких-нибудь внешних импульсов.
Была как-то задача – формирование сложного электрического сигнала. МК постоянно занят, отвлекаться нельзя, все прерывания запрещены. Есть только небольшое окно для обработки флагов прерываний, взаимодействия с внешней средой. Здесь прерывания не прокатят. Правда, это был периферийный МК, кнопок у него не было.
[uquote="КРАМ",url="/forum/viewtopic.php?p=4661735#p4661735"]Вопрос с помехами даже не буду комментировать. Ваши фантазии - они только ваши фантазии.[/uquote]
Прочитал ваш пост про преобразователь с регулярными помехами, сбивающими электронику. Первой мыслью было: наймите на работу грамотного электронщика, он сделает источник питания, который не будет сбивать МК.
Вспомнил ситуацию. Разработал по заказу небольшой импульсный источник. Заказчик сделал такой же заказ ещё у другого исполнителя, наверно, для сравнения. Потом сообщают, у того источник получился гораздо меньше, вот, мол, как надо работать.
Стали испытывать. Оказалось, у того источника были такие помехи, что невозможно измерить напряжение на выходе, электронный мультиметр сбивался. Наверно, тяжёлый режим трансформатора плюс непрерывный режим.
- КРАМ
- Друг Кота
- Сообщения: 25123
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Ассемблер (ASM) для AVR в вопросах и ответах
[uquote="AQ29",url="/forum/viewtopic.php?p=4662376#p4662376"]Первой мыслью было: наймите на работу грамотного электронщика, он сделает источник питания, который не будет сбивать МК.[/uquote]
Наглость - вторая натура.
А кто вам сказал, что помехи создает СВОЙ источник? Свой источник сделать под собственные требования - не велика задача. Проблема в тех, которые в этой же сети включены и находятся в оборудовании за охулиард денег. Так что дело не в источнике, а в схемотехнике собственно целевого низковольтного устройства с учетом наличия внешних мощных помех.
Просто пример из моего опыта.
Наша контора разработала (ваш покорный слуга разработал единолично) и выпускает устройство под названием "деактиватор акустомагнитных этикеток". В нем электроника устройства выполняющая не только заявленную в названии функцию, но и детектирование наличия этикеток, размещена прямо в катушке деактивации с импульсным переменным магнитным полем созданным 8,5 килоампервитками этой катушки.
И ничего, работает как часы.
ЗЫ. К слову. Пара кнопок на лицевой панели имеются. Догадайтесь какой у них алгоритм?
Наглость - вторая натура.
А кто вам сказал, что помехи создает СВОЙ источник? Свой источник сделать под собственные требования - не велика задача. Проблема в тех, которые в этой же сети включены и находятся в оборудовании за охулиард денег. Так что дело не в источнике, а в схемотехнике собственно целевого низковольтного устройства с учетом наличия внешних мощных помех.
Просто пример из моего опыта.
Наша контора разработала (ваш покорный слуга разработал единолично) и выпускает устройство под названием "деактиватор акустомагнитных этикеток". В нем электроника устройства выполняющая не только заявленную в названии функцию, но и детектирование наличия этикеток, размещена прямо в катушке деактивации с импульсным переменным магнитным полем созданным 8,5 килоампервитками этой катушки.
И ничего, работает как часы.
ЗЫ. К слову. Пара кнопок на лицевой панели имеются. Догадайтесь какой у них алгоритм?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
AQ29, давайте таки переберемся в тему про кнопки, чтобы никто не нудил, я там ответил )
Re: Ассемблер (ASM) для AVR в вопросах и ответах
[uquote="shonty",url="/forum/viewtopic.php?p=4659251#p4659251"]
[uquote="BOB51",url="/forum/viewtopic.php?p=4659280#p4659280"]Нет - ATtiny2313...
AT90S2313 это вроде из самых старых... Такой даже в "пробниках" не было...[/uquote]
Таки вдохновила меня AT90S2313 спаять стендик..
Да и проектик уже к концу подходит.. да уже бы и закончил))
Осталось чуть-чуть. и вдруг обнаруживаю, что в AT90S2313 нет mul

Думаю теперь)) почитать что-нибудь по теме.. или сложение в цикле замутить
Нужно то всего в одном месте на 60 умножить..
Всем
Добавлено after 9 minutes 26 seconds:
PS ""mpy8u" - 8x8 Bit Unsigned Multiplication" конечно жёсткая по коду
Через цикл сложения сделаю.. Всё равно потом ещё задержку вставлять перед переходом..
AT90S2313 ?[/uquote]BOB51 писал(а):Есть еще для нескольких МК, но те пока не проверялись в проектах.
[uquote="BOB51",url="/forum/viewtopic.php?p=4659280#p4659280"]Нет - ATtiny2313...
AT90S2313 это вроде из самых старых... Такой даже в "пробниках" не было...[/uquote]
Таки вдохновила меня AT90S2313 спаять стендик..
Да и проектик уже к концу подходит.. да уже бы и закончил))
Осталось чуть-чуть. и вдруг обнаруживаю, что в AT90S2313 нет mul
Думаю теперь)) почитать что-нибудь по теме.. или сложение в цикле замутить
Всем
Добавлено after 9 minutes 26 seconds:
PS ""mpy8u" - 8x8 Bit Unsigned Multiplication" конечно жёсткая по коду
Через цикл сложения сделаю.. Всё равно потом ещё задержку вставлять перед переходом..
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Список доступных команд обычно в даташите прилагается.
Не у всех одинаков - надо порой посматривать туда.
Касательно умножения... Хорошо, когда степень двойки... А на 60...
Может чего другого в соответствии с задачей придумать можно?...
Или уж сложение со сдвигами...

Не у всех одинаков - надо порой посматривать туда.
Касательно умножения... Хорошо, когда степень двойки... А на 60...
Может чего другого в соответствии с задачей придумать можно?...
Или уж сложение со сдвигами...
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Да не..))BOB51 писал(а):А на 60... Может чего другого в соответствии с задачей придумать можно?...
Или уж сложение со сдвигами...
Дольше здесь писал, чем код. 8 строк всего))
Понимаю, что не спортивно
Спойлер
Код: Выделить всё
ldi R16, 59
clr R17
mov MAIN_COUNT_L, R23
clr MAIN_COUNT_H
add MAIN_COUNT_L,R23
adc MAIN_COUNT_H,R17
dec R16
brne PC-3- ДядяВован
- Мучитель микросхем
- Сообщения: 482
- Зарегистрирован: Вс окт 25, 2020 22:13:25
- Откуда: Смоленск
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Если скорость не важна, то и нормально.
Если надо быстро, то сдвигом умножить на 64, потом четыре раза вычесть.
Если надо быстро, то сдвигом умножить на 64, потом четыре раза вычесть.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Ещё задержку примерно в 0,7 секунд после цикла поставил.. там переход в другое меню, так что норм))
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Всем привет! Вопросик, как учесть часовой пояс , без переводов DEC->BIN->DEC
- ДядяВован
- Мучитель микросхем
- Сообщения: 482
- Зарегистрирован: Вс окт 25, 2020 22:13:25
- Откуда: Смоленск
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Вычитанием или сложением.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
[uquote="ДядяВован",url="/forum/viewtopic.php?p=4665074#p4665074"]Если надо быстро, то сдвигом умножить на 64, потом четыре раза вычесть.[/uquote]
Умножить на 64 – это 5 раз сдвигать, многовато. Лучше, наверно, приписать младший байт и сдвинуть вправо пару раз.
Умножить на 64 – это 5 раз сдвигать, многовато. Лучше, наверно, приписать младший байт и сдвинуть вправо пару раз.
- ДядяВован
- Мучитель микросхем
- Сообщения: 482
- Зарегистрирован: Вс окт 25, 2020 22:13:25
- Откуда: Смоленск
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Можно и так.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Приветствую Всех.
Вопрос к знатокам по ассемблеру "gavrasm"
строка по тексту
.DB "test"
.DB "TEST"
На выходе компиляции только заглавные буквы (русские ,латинские)
Из за того что нету строчных букв на выходе компиляции приходится переводить свои проекты на "IAR ASSembler".
Новые свои проекты уже в "IAR ASSembler".
Мне удобнее программировать на этом "gavrasm" ассемблере.
Как и где указать "gavrasm" компилятору что не надо переводить всё в заглавные буквы?.
И возможно ли это вообще?
Вопрос к знатокам по ассемблеру "gavrasm"
строка по тексту
.DB "test"
.DB "TEST"
На выходе компиляции только заглавные буквы (русские ,латинские)
Из за того что нету строчных букв на выходе компиляции приходится переводить свои проекты на "IAR ASSembler".
Новые свои проекты уже в "IAR ASSembler".
Мне удобнее программировать на этом "gavrasm" ассемблере.
Как и где указать "gavrasm" компилятору что не надо переводить всё в заглавные буквы?.
И возможно ли это вообще?
- ДядяВован
- Мучитель микросхем
- Сообщения: 482
- Зарегистрирован: Вс окт 25, 2020 22:13:25
- Откуда: Смоленск
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Этот баг появился с очередным обновлением, в младших версиях всё было нормально с буквами.
Не лечится.
Писал автору, но он не ответил. Хотя ранее я с ним переписывался по какой-то другой ошибке. Может быть его не стало, достаточно пожилой человек...
Долго пользовался этим компилятором, но с появлением ошибки заглавных букв пришлось уйти на другой.
Добавлено after 11 minutes 15 seconds:
Не лечится.
Писал автору, но он не ответил. Хотя ранее я с ним переписывался по какой-то другой ошибке. Может быть его не стало, достаточно пожилой человек...
Долго пользовался этим компилятором, но с появлением ошибки заглавных букв пришлось уйти на другой.
Добавлено after 11 minutes 15 seconds:
Я перешёл на AVRAkuber писал(а):Новые свои проекты уже в "IAR ASSembler"
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Спасибо за ответ "ДядяВован"
Не зря перешел на "IAR ASSembler"
В "gavrasm" мне было на много удобней.
AVRA - чем то не зашло, уже и не помню.
Ещо раз Спасибо за ответ.
Не зря перешел на "IAR ASSembler"
В "gavrasm" мне было на много удобней.
AVRA - чем то не зашло, уже и не помню.
Ещо раз Спасибо за ответ.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
[uquote="kuber",url="/forum/viewtopic.php?p=4775731#p4775731"]Вопрос к знатокам по ассемблеру "gavrasm"[/uquote]
Может, это я его разработал, а потом по-старчески забыл?
Нет, это на Линухе - не моё. Жаль 
