| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
Inline функции в CodeVision AVR
23.08.2011, 00:11
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
|
Re: Inline функции в CodeVision AVR
Не выкинет.
Можно отдать на усмотрение компилятора, какой регистр выбрать. Без явного указания на номер регистра.
|
|
|
|
23.08.2011, 00:42
|
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,102
Сказал спасибо: 113
Сказали Спасибо 860 раз(а) в 610 сообщении(ях)
|
Re: Inline функции в CodeVision AVR
|
|
|
|
23.08.2011, 14:10
|
|
|
Прописка
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Re: Inline функции в CodeVision AVR
Вот так будет 4000 кГц. Выход фазы А подключаете ко входу счётчик1, настраиваете его на требуемое количество импульсов и вызываете подпрограмму из си
|
Код:
|
loop: ld r16,z+
out portd,r16
and zl,0xFC
nop
ld r16,z+
out portd,r16
rjmp loop |
Для смены направления заносите в zh,zl адрес другого массива. Ну или вызываете другую п/п
Последний раз редактировалось =GM=; 23.08.2011 в 14:13.
|
|
|
|
23.08.2011, 14:49
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 29.10.2006
Сообщений: 1,449
Сказал спасибо: 99
Сказали Спасибо 318 раз(а) в 234 сообщении(ях)
|
Re: Inline функции в CodeVision AVR
Настроил на сравнение, допустим. Возникло прерывание. И всё. Я сижу в этом прерывании, пока не надоест? А когда вернусь из него - ипульсы продолжатся.
В прерывании можно будет менять z и, таким образом, замораживать счёт... А вот менять длительность импульса?
1 Гц, 1000 Гц, 10000... и т.д.?
Реакцию на кнопки - тоже через прерывания?
Последний раз редактировалось Godzilla82; 23.08.2011 в 14:58.
|
|
|
|
23.08.2011, 14:57
|
|
|
Прописка
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Re: Inline функции в CodeVision AVR
А подправить стек и прыгнуть, куда надо из прерывания, религия не позволяет?
Я вам дал пример построения максимально быстрой программы (кстати, можно и до 3 тактов довести, будет уже 6700 кГц). Чтобы менять длительность импульса надо вставить задержку. Это уж сами сделайте, там ничего сложного.
|
|
|
|
23.08.2011, 15:22
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 29.10.2006
Сообщений: 1,449
Сказал спасибо: 99
Сказали Спасибо 318 раз(а) в 234 сообщении(ях)
|
Re: Inline функции в CodeVision AVR
Сообщение от =GM=
|
|
А подправить стек и прыгнуть, куда надо из прерывания, религия не позволяет?
|
Ну да... точно... Всё упирается в ассемблер. Разбираться с ним щас пока не готов... Хотя всё чаще появляется желание
Вот ещё вопросик. ISR_NAKED. Сохранять SREG в стеке надо же? Из СИ ( WinAVR) - как?
Последний раз редактировалось Godzilla82; 23.08.2011 в 15:26.
|
|
|
|
23.08.2011, 15:36
|
|
|
Прописка
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Re: Inline функции в CodeVision AVR
Ну так
Сообщение от Godzilla82
|
|
Всё упирается в ассемблер
|
Почему всё? 7 строк кода можно заинлайнить, остальное на си.
|
|
|
|
23.08.2011, 15:46
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 29.10.2006
Сообщений: 1,449
Сказал спасибо: 99
Сказали Спасибо 318 раз(а) в 234 сообщении(ях)
|
Re: Inline функции в CodeVision AVR
Сообщение от =GM=
|
|
Ну так Почему всё? 7 строк кода можно заинлайнить, остальное на си.
|
То есть, явно push SREG нельзя писать...
Менять адрес возврата в стеке на нужный... На СИ, не зная асма?... Спасибо, мне трудноуловимых глюков в программе не надо...
|
|
|
|
23.08.2011, 16:27
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
|
Re: Inline функции в CodeVision AVR
Сообщение от Godzilla82
|
|
Менять адрес возврата в стеке на нужный...
|
Что-то я не въехал - зачем?
|
|
|
|
23.08.2011, 16:32
|
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,102
Сказал спасибо: 113
Сказали Спасибо 860 раз(а) в 610 сообщении(ях)
|
Re: Inline функции в CodeVision AVR
Для эквилибристики...
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Литература по микроконтроллерам (AVR, PIC, ПЛИС и т.д.). Сборка книг - (256 книг+ 27 CD c примерами из книг) [обновление 2011, PDF, DJVU]
|
yurinform |
Микроконтроллеры, АЦП, память и т.д |
5 |
05.07.2011 19:00 |
|
Codevision AVR + AVR Studio помогите разобраться с отладкой
|
Daget |
Микроконтроллеры, АЦП, память и т.д |
24 |
07.03.2011 14:41 |
|
CodeVision AVR 2.05.0 работа с битами портов
|
ajsn |
Микроконтроллеры, АЦП, память и т.д |
4 |
06.03.2011 23:15 |
|
mRTOS - кооперативная ОС для AVR. Порт CodeVision.
|
LVII |
Микроконтроллеры, АЦП, память и т.д |
5 |
29.11.2008 14:44 |
|
Как работать с AT89C5131 в CodeVision AVR?
|
lom771 |
Микроконтроллеры, АЦП, память и т.д |
2 |
29.08.2006 16:51 |
Часовой пояс GMT +4, время: 22:54.
|
|