Например TDA7294

Форум РадиоКот • Просмотр темы - Вопросы начинающих PIC ASM
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пн июл 28, 2025 01:31:12

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 731 ]    , , 3, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Пт апр 29, 2016 17:41:55 
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватар пользователя

Карма: 133
Рейтинг сообщений: 782
Зарегистрирован: Чт апр 21, 2011 17:55:50
Сообщений: 4995
Откуда: Иркутск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Во! Это уже интересно. Спасибо. ) :beer: Вот я тупой...

_________________
Станислав


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Пн май 02, 2016 19:24:49 
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватар пользователя

Карма: 133
Рейтинг сообщений: 782
Зарегистрирован: Чт апр 21, 2011 17:55:50
Сообщений: 4995
Откуда: Иркутск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Кое-чего добился. Простите, но я снова без кода...

Есть в главном цикле часть кода, которая прекрасно работает и делает то, что мне нужно. Следом написал еще одну часть кода точно такую же, только переменная другая. Внутри используется команда сдвига вправо через перенос. Так вот, эта часть совсем не работает, в то время как аналогичная сверху прекрасно пашет.

Ставил индикаторные светодиоды "контрольки", проверил, что все приходит туда. Но сложилось впечатление, что переменная, которую отправляю в эту часть программы приходит нулевая, т.к. после ее сдвига ничего не появляется в флаге С и программа уходит на начало. (проверял тоже индиктором светодиодом, вставив в программе соответствующую строку).
Решил не отправлять через переменную, а жестко задать константу прямо в этой части программы (которая отказывается работать). Тот же результат. После команд сдвига флаг С получается все время пустой и результат работы выходит на новый круг (на начало)...

Что за ???

И еще не понравилось, когда напоролся на команду call. Она работает в ограниченном диапазоне адресов. :facepalm:

Простите за глупые вопросы, но я только изучаю их еще... потому и тупой. :)

_________________
Станислав


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Пн май 02, 2016 20:10:03 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2918
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 23934
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Может, любезный Станислав, Вы приведете ту часть кода, которая вызвала Ваши трудности.
Заодно и с CALL разберемся... Что то я не припомню, чтобы я сталкивался с ограничениями этой команды...
Что за контроллер у Вас нынче?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Пн май 02, 2016 20:12:48 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2708
Откуда: г. Чайковский
Рейтинг сообщения: 3
Медали: 1
Получил миской по аватаре (1)
КРАМ писал(а):
Что то я не припомню, чтобы я сталкивался с ограничениями этой команды...
Ну как же, стек то аппаратный, глубиной 8 адресов вроде. Только такой глубины ухода в подпрограммы более чем достаточно, как мне кажется.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Пн май 02, 2016 20:13:20 
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватар пользователя

Карма: 133
Рейтинг сообщений: 782
Зарегистрирован: Чт апр 21, 2011 17:55:50
Сообщений: 4995
Откуда: Иркутск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
:) PIC16F84

Приведу код завтра, т.к. приходится все делать у друга. У меня на компе не стоит программное обеспечение, да и программатора для ПИКов нету. Благодарю, что откликнулись. :beer:

А как же она на стек то??? У меня вызов подпрограммы, которая выбирает из таблицы значение цифры индиктора, т.е. сдвигается по ней и тут же выходит с занесением этого значения в аккумулятор. Разве можно этим стек переполнить? :dont_know:

_________________
Станислав


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Пн май 02, 2016 20:27:57 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2918
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 23934
Откуда: Московская область, Фрязино
Рейтинг сообщения: 3
Если честно, то я догадался, что речь шла о табличном чтении.
Но проблема тут совсем не в команде CALL. Эта команда исполняется во всем поле адресов, потому что она занимает 2 слова команды.
Проблема тут в том, что Вы не понимаете смысл вычисляемого перехода в 8 разрядной машине.
Команда addwf PCL, F прибавляет к счетчику команд значение аккумулятора. Но аккумулятор 8 разрядный, а счетчик команд в общем случае 21 разрядный. То есть прежде чем прибавлять к МЛАДШЕМУ байту программного счетчика (PCL) и тем самым вызывать немедленный переход по вычисленному адресу, следовало бы посчитать и старшие байты (в этом контроллере только один старший байт счетчика команд) и ПРЕДВАРИТЕЛЬНО его записать в защелку PCLATH. Тогда ОДНОВРЕМЕННО с записью в младший PCL будет перезаписан и старший байт из PCLATH в PCH.
Ну либо побеспокоиться о неизменности PCH.
И стек здесь совсем не причем. Ошибка в вычислении перехода приводит к непредсказуемому ходу исполнения флеша.


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Пн май 02, 2016 20:40:10 
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватар пользователя

Карма: 133
Рейтинг сообщений: 782
Зарегистрирован: Чт апр 21, 2011 17:55:50
Сообщений: 4995
Откуда: Иркутск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
КРАМ писал(а):
следовало бы посчитать и старшие байты

А можно подробнее? как же я определю, что их пора считать уже? :dont_know: И как их посчитать непосредственно?

_________________
Станислав


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Пн май 02, 2016 21:05:36 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2918
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 23934
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
В том виде, в котором Вы написали, и сама команда вызова и табличный переход обязаны уместиться в пределах ОДНОЙ СТРАНИЦЫ (256 байт). Не важно какой, нулевой или какой другой. Важно, что при таком вычислении старший байт меняться не имеет права.
А если Вы желаете их разместить В РАЗНЫХ страницах, но не пересекая границу страниц самим телом таблицы, то можно вместо
Код:
addwf PCL, F

применить конструкцию:
Код:
clrf PCLATH
incf PCLATH, F
addwf PCL, F
.........
.........

Или вообще так, без вычислений, прямым присвоением:
Код:
clrf PCLATH
incf PCLATH, F
movwf PCL
............
............
org 0x100
retlw ...
retlw ...


Последний раз редактировалось КРАМ Вт май 03, 2016 08:56:16, всего редактировалось 3 раз(а).

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Пн май 02, 2016 21:10:26 
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватар пользователя

Карма: 133
Рейтинг сообщений: 782
Зарегистрирован: Чт апр 21, 2011 17:55:50
Сообщений: 4995
Откуда: Иркутск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
А если эту таблицу разместить сразу где-то после .org0? По сути она же не будет никуда улетать при увеличении кода. Значит ее адресация останется неизменной в пределах одной страницы.
Ткните носом еще, где можно доступно и просто почитать про организацию памяти ПИК. :roll:

_________________
Станислав


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Пн май 02, 2016 21:32:19 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2918
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 23934
Откуда: Московская область, Фрязино
Рейтинг сообщения: 4
А зачем таблицу размещать сверху? Это же неудобно. Там вектор сброса и прерываний.
Наоборот, ее нужно засунуть куда нибудь в конец. По последнему варианту с прямым присвоением.
Тогда не нужно вообще думать о пересечении страниц, потому что сама таблица (retlw подряд) будет привязана метакомандами org.
Прочитать проще всего в даташите или в его переводе на http://www.microchip.ru/lit/?mid=1x0
Например: http://www.microchip.ru/files/d-sheets-rus/pic16_6.pdf


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Сб май 07, 2016 13:19:12 
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватар пользователя

Карма: 133
Рейтинг сообщений: 782
Зарегистрирован: Чт апр 21, 2011 17:55:50
Сообщений: 4995
Откуда: Иркутск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Прошу прощения, но задам еще один глупый вопрос...

Можно ли как-то затереть стек? Ну или, если быть точнее, то выкинуть последней адрес, который в него положили и сдвинуть его.

Т.е. сделать вид, как будто мы не уходили по команде call?

З.Ы. не спрашивайте, зачем мне это надо... :facepalm:

_________________
Станислав


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Сб май 07, 2016 16:16:09 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2708
Откуда: г. Чайковский
Рейтинг сообщения: 3
Медали: 1
Получил миской по аватаре (1)
СКАЗОЧНИК писал(а):
З.Ы. не спрашивайте, зачем мне это надо...
Нет уж, расскажите :).

Стек и указатель стека куда-то зарыты в МК и программного доступа к ним нет.

Ну сделайте аналоги командам вызова и возврата из нескольких других.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Сб май 07, 2016 20:09:38 
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватар пользователя

Карма: 133
Рейтинг сообщений: 782
Зарегистрирован: Чт апр 21, 2011 17:55:50
Сообщений: 4995
Откуда: Иркутск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Z_h_e писал(а):
Стек и указатель стека куда-то зарыты в МК и программного доступа к ним нет.

А в АВР же есть... Там сам указываешь вершину стека... Блин, жалко.

Z_h_e писал(а):
Нет уж, расскажите

Есть у меня друг, ему 42 года. Он меня подсадил на ПИК контроллеры, а так как сам он раньше не занимался программированием и микроконтроллерами, то жутко БЫДЛОКОДИТ.
Я ему помогаю время от времени прерывание на них написать или опрос какой и т.д. Поэтому и сам в них начал понимать уже.
Он читает даташит и ничего не может вкурить. Поэтому звонит мне. Я к нему еду и сам читаю даташит и конфигурирую то, что надо. Также говорю как надо было сделать.
А он упертый. :facepalm:
И сделал вызов подпрограммы задержки, а в подпрограмме задержки сделал опрос кнопки и выход не по RET... , а goto куда ему надо. :facepalm: :facepalm: :facepalm:
Я сказал ему, что есть такое понятие, как стек, и что его будет сносить, а микроконтроллер виснуть. У него еще и прерывание есть в этой программе.
А он уперся, что все работает! И показывает мне эмуляцию в Протеусе. (Еще раз я убедился, что Протеус это тоже зло в руках дилетантов). :))) :))) :)))
На что ему был дан совет собрать всю эту лабуду в железе, а потом застрелиться, но не звонить мне, что бы я приехал и помог разобраться. :kill:

З.Ы. Вопрос задал так, на всякий случай. Вдруг он меня все же достанет. :roll:

_________________
Станислав


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Сб май 07, 2016 20:19:05 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2708
Откуда: г. Чайковский
Рейтинг сообщения: 3
Медали: 1
Получил миской по аватаре (1)
Ну если он решил выпрыгивать из подпрограммы обычным переходом, то пускай в нее этим же методом и запрыгивает.
Цитата:
все работает! И показывает мне эмуляцию в Протеусе
Очень даже может быть, что Протеус параллельно кучей ошибок плюется, он же ведет лог во время симуляции.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Последний раз редактировалось Z_h_e Сб май 07, 2016 20:21:41, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Сб май 07, 2016 20:19:50 
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватар пользователя

Карма: 133
Рейтинг сообщений: 782
Зарегистрирован: Чт апр 21, 2011 17:55:50
Сообщений: 4995
Откуда: Иркутск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Хм... Тоже вариант. )))

_________________
Станислав


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Сб май 07, 2016 20:35:42 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2918
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 23934
Откуда: Московская область, Фрязино
Рейтинг сообщения: 1
Вмешиваться в стек - худшее, что можно придумать. Кнопки в прерывании - не многим лучше.
Так зачем множить глупости?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Сб май 07, 2016 20:47:42 
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватар пользователя

Карма: 133
Рейтинг сообщений: 782
Зарегистрирован: Чт апр 21, 2011 17:55:50
Сообщений: 4995
Откуда: Иркутск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
КРАМ писал(а):
Кнопки в прерывании - не многим лучше.

Не. это уже другая программа и другой МК. :)
Здесь в прерывании мы просто по таймеру TMR1 мигаем светодиодиком.

А так... многие на своих граблях учатся, даже если им и сказали истину, все равно ошибок нарисуют... Видимо натура такая.

_________________
Станислав


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Сб июн 18, 2016 19:12:38 
Опытный кот
Аватар пользователя

Карма: 18
Рейтинг сообщений: 44
Зарегистрирован: Чт апр 12, 2012 07:19:59
Сообщений: 870
Откуда: Тюмень
Рейтинг сообщения: 0
Приветствую, такой вопросик, когда начинаете писать код на асме, начинаете с чистого файла или у вас уже есть какой-либо заготовленный шаблон, со всеми опциями и структурой файла(функциями) и вы лишь комментируете или убираете лишнее? Если есть такой шаблрн, поделитесь, а ... охота поглядеть, да себе для пользы сохранить :roll:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Сб июн 18, 2016 19:20:33 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2918
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 23934
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Шаблон конечно имеется.
Все зависит от наличия аналогичного проекта. Если ничего подобного еще не было, то просто повторяется типовая шапка.
Какой АСМ интересует? Есть MPASM для 8-разрядных ПИКов и ASM30 для 16-разрядных PIC24/dsPIC30/dsPIC33.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Сб июн 18, 2016 19:31:23 
Опытный кот
Аватар пользователя

Карма: 18
Рейтинг сообщений: 44
Зарегистрирован: Чт апр 12, 2012 07:19:59
Сообщений: 870
Откуда: Тюмень
Рейтинг сообщения: 0
Интересует MPASM для 8-разрядных пиков, ибо я ни с чем, более pic16f... не работал(в принципе и их хвататет) да и работаю с ними не часто, а щаблона до сих пор никакого нет, думаю, наверняка у народа есть, дай спрошу :roll:


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 731 ]    , , 3, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y