Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт мар 01, 2011 17:29:12
Первый раз сказал Мяу!
Зарегистрирован: Ср сен 22, 2010 23:17:40 Сообщений: 26
Рейтинг сообщения:0
Здравствуйте, Ув. Коты и Кошечки. Новоиспеченный пользователь АVR (то есть я) пытается настроить на вывод два порта D и В, на одновременную работу, на тини2313. но ни че не получается, поиск результатом не увенчался((( цель: "дергание" лапками тини на двух портах.
Если кому не жалко кода кусочек, или подправте мой))) поделитесь опытом, плз.
Ну порт B настроили на выход, ну посылаете на него какие-то данные, ничего что индусский код, вроде должен работать. Но что мешает точно так-же настроить порт D (один раз при инициализации, а не в цикле) и выводить на него тот же самый temp в той-же процедуре delay?
Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вт мар 01, 2011 18:49:28
Потрогал лапой паяльник
Зарегистрирован: Пн мар 16, 2009 23:35:42 Сообщений: 383 Откуда: Украина Новоднестровск
Рейтинг сообщения:0
chezetmobile писал(а):
Здравствуйте, Ув. Коты и Кошечки. Новоиспеченный пользователь АVR (то есть я) пытается настроить на вывод два порта D и В, на одновременную работу, на тини2313. но ни че не получается, поиск результатом не увенчался((( цель: "дергание" лапками тини на двух портах.
Если кому не жалко кода кусочек, или подправте мой))) поделитесь опытом, плз.
Я конечно тоже новичек, но мне кажется что содержимое temp нужно переносить в PORTB вроде типа того ldi Temp,0b00010010 ; запись константы out PORTB,temp ;вывод на индикацию rcall Delay ;вызов подпрограммы задержки
Здравствуйте. Переписал пример с таймерами с обучалки на свою мегу32, не работает. Компилируется, но не работает, код который идет в начале загрузке трассируется нормально, а вот в протеусе модель ничего не выводит. Поделитесь опытом, где я мог ошибиться?
Вложения:
Комментарий к файлу: код и моделька от протеуса TimerTest.zip [16.72 KiB]
Скачиваний: 148
Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср мар 02, 2011 15:55:01
Первый раз сказал Мяу!
Зарегистрирован: Ср сен 22, 2010 23:17:40 Сообщений: 26
Рейтинг сообщения:0
здравствуйте, попытки переписать код из обучалки на одновременную работу портов В и D не дали нужного результата. подскажите, пожалуйста, где накосячил.
Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Ср мар 02, 2011 16:07:51
Друг Кота
Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19844 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
chezetmobile писал(а):
здравствуйте, попытки переписать код из обучалки на одновременную работу портов В и D не дали нужного результата. подскажите, пожалуйста, где накосячил.
Вместо
Код:
ldi Temp,RamEnd ;инициализация стека out SPL,Temp
Попробуйте
Код:
ldi Temp,low(RamEnd) ;инициализация стека out SPL,Temp
И ещё, приглядитесь внимательно: ;Задержка Delay: out PortB,Temp ldi Temp1,50 ldi Temp2,50 ldi Temp2,5 Loop: dec Temp1 brne Loop1 dec Temp2 brne Loop dec Temp3 brne Loop ret Спрашивается, нахера дефайнить регистры чтобы потом давать им однотипные ничего не значащие имена???
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Последний раз редактировалось Gudd-Head Ср мар 02, 2011 16:14:34, всего редактировалось 1 раз.
здравствуйте, попытки переписать код из обучалки на одновременную работу портов В и D не дали нужного результата. подскажите, пожалуйста, где накосячил.
Вы хотя бы пробовали вашу программу в уме прогнать? Как по-вашему в каком случае контроллер должен перейти к метке Label2? Вот что получается:
Код:
1) инициализация стека, порты на выход 2) label 3) вывод в B ;зачем, если сразу за этим все равно вывод другого значения в процедуре задержки? 4) загрузка temp, задержка (повтор 3 раза) 5) переход к п.2 ---подпрограмма задержки--- -вывод temp в B -непосредственно задержка -возврат ---------- 6) label2 ; как и откуда сюда попадет контроллер? 7) вывод в D ;опять же, зачем, если сразу новый вывод? 8) загрузка temp5, задержка2 (повтор 4 раза) 9) переход к п.6 ---задержка 2---- ... ... возврат
Определитесь, в какой последовательности вам нужно выводить данные в порты и составьте хотя бы алгоритм...
Насчет дефайнов регистров - вопрос далеко не в этом, тут с алгоритмом беда...
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Кстати, у более продвинутых контроллеров, у которых регистров периферии >32, эти регистры попадают совсем в другую страницу памяти, и LDS/STS - единственный способ к ним достучаться, например, ADC в Атмега88. И этот способ очень даже документирован, а указатель Z здесь лишний, простой STS рулит.
Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт мар 03, 2011 14:27:38
Друг Кота
Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52 Сообщений: 4468 Откуда: Главный Улей России (Moscow)
Рейтинг сообщения:0
А почему лишний? В некоторых случаях совсем не лишний. Если вдруг надумается сделать какой-нибудь сложный алгоритм. Типа автонастройки таймера или UART. Или выбор порта для вывода данных. Или как метод защиты программы от декомпилирования и разбора программы. Так-же можно применить в полиморфных алгоритмах. Или, как вариант - в случае нехватки памяти флэша, при условии, что ЕЕPROM имеет много свободного места, можно организовать настройку периферии при старте одним-двумя циклами, вытащив данные из EEPROM и раскидав их по соответствующим регистрам. На счёт того, что в более продвинуты МК, некоторые регистры числятся как Memory mapped, я в курсе. Тут именно обычный регистр, к которому обращаются только через команды in и out, адресуется парой Z. Этого-то точно нет в мануалах. Приведённый выше код работает в простой тиньке 26L.
_________________ I am DX168B and this is my favourite forum on internet!
Последний раз редактировалось DX168B Чт мар 03, 2011 14:40:56, всего редактировалось 1 раз.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 54
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения