Согласен, сам ему говорил, что в реальном проекте это бессмысленная затея. Но часто бывает, что человеку нужен просто кусок кода, чтоб натолкнуть на мысль. Если наши куски ему помогут - я только рад буду.
ploop Спасибо большое за код с пояснениями, буду разбираться. Gudd-Head Тоже спасибо, не оставлю и ваш код без внимания. ChipKiller Без пол литры с табличным методом мне пока точно не разобраться, но все равно спасибо.
ChipKiller писал(а):
.. ни каких споров - просто qmix занимается, мягко говоря, ерундой ИМХО.
ChipKiller писал(а):
ЗЫ. Вообще следует различать, когда "выгодно" применять "рассыпуху" и ПЛМ, а когда МК и не путать одно с другим.
даже на "рассыпухе" это легко решаемо и будет работать в 100 раз быстрее, чем на МК, зачем заморачиваться ????
Согласен, что ерундой, но для меня смысл не в том, чтобы работало быстро или то, что на рассыпухе это проще. Я просто хочу научится.... ploop Куски еще как помогают.
p.s. Ушел курить инфу про ATF16v8 и WinCupl, и как можно решить эту задачу несколькими строками. Всем спасибо, вернусь с новыми вопросами.
Насколько я понимаю, топик стартеру было интересно, чтобы данные лог. функции вычислил сам МК, а не дядя на бумажке с тупой (простите, механической) набивкой в таблицу. Или я что-то не так понял?
Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср фев 16, 2011 19:11:47
Друг Кота
Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19733 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
IM1 писал(а):
Или я что-то не так понял?
Зачем же ограничиваться одним вариантом? Хорошо бы показать все способы. Ну и поскольку у нас всего 4 входа, то в таблице будет всего 16 значений, которые можно засунуть в два байта (т.к. выход однобитный).
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Ну и поскольку у нас всего 4 входа, то в таблице будет всего 16 значений, которые можно засунуть в два байта (т.к. выход однобитный).
Засунуть то можем, а вот рассунуть! Боюсь, что проще сделать нормальную табличку (без идиотских ijmp и ret) с 16 байтами, чем писать миллион условий и сдвигов для упакованного результата. Да и время выполнения получится одинаковое для всех комбинаций, что есть хорошо .
Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср фев 16, 2011 19:48:12
Друг Кота
Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19733 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
IM1 писал(а):
проще сделать нормальную табличку (без идиотских ijmp и ret) с 16 байтами
А если входов будет... 8? Тогда таблица будет уже 256 байт. А это 12,5% памяти 2313
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
А если входов будет... 8? Тогда таблица будет уже 256 байт. А это 12,5% памяти 2313
Ну тогда два варианта: 1. если выход 1 бит, однозначно мудрить, все таки уменьшение занятости памяти в 8 раз 256/8=32 (12,5/8=1,56%) 2. если выход >1 бит, то думать, а если байт, то однозначно 256 к исполнению.
Кажись начинаю догонять, что такое табличный метод.. Это значит задаем массивом все возможные состояния входа, в процессе, сравнивается имеющееся значение с заданной таблицей, и в соответствии с ней выводится результат. Поправьте если неправильно.
Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт фев 17, 2011 09:48:58
Друг Кота
Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19733 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
qmix писал(а):
в процессе, сравнивается имеющееся значение с заданной таблицей, и в соответствии с ней выводится результат. Поправьте если неправильно.
Не сравнивается, а так или иначе состояние входа указывает на адрес в таблице, где хранится результат.
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Во входном байте in_dat содержится номер байта таблицы (от 0 до 15 в данном случае), а уж в саму таблицу пишете то, что Вам необходимо. В данном примере используется регистр косвенной адресации z=r31:r30, который совместно с командой lpm позволяет загружать данные из программной памяти.
_________________ Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 44
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения