Обсуждаем контроллеры компании Atmel.
Ответить

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пн июн 06, 2022 11:44:47

Подскажите про ШИМ... Его выполнение должно быть строго в пределах вектора прерывание или можно, "как-то" вынести за пределы вектора в основное тело программы. Я сделал измеритель тока мотора и мне надо его остановить при увеличении на него нагрузки... Но я еще присандалел ШИМ индикацию, и когда появляется индикация, я не могу остановить мотор, т.е. он остановится после выполнения ШИМ. Хотелось бы, что при выполнение ШИМ, я мог останавливать мотор... Пробовал запихнуть в основной цикл ШИМ... не работает индикация, а в таймере работает...

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пн июн 06, 2022 12:44:43

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

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пн июн 06, 2022 13:17:31

Подскажите про ШИМ... Его выполнение должно быть строго в пределах вектора прерывание или можно, "как-то" вынести за пределы вектора в основное тело программы. Я сделал измеритель тока мотора и мне надо его остановить при увеличении на него нагрузки... Но я еще присандалел ШИМ индикацию, и когда появляется индикация, я не могу остановить мотор, т.е. он остановится после выполнения ШИМ. Хотелось бы, что при выполнение ШИМ, я мог останавливать мотор... Пробовал запихнуть в основной цикл ШИМ... не работает индикация, а в таймере работает...

у вас программный ШИМ, что ли? что такое "ШИМ-индикация" и как она связана с управлением мотором?

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пн июн 06, 2022 15:00:53

Под ШИМ индикацией, я понимаю плавное мигание светодиода. А мотор посадил через токоизмеритель и пороговый уровень на отдельных микрухал, и в МК приходит 1 или 0 на PCINT. Так вот, когда "Плавное включение светодиода" работает, приходящая единица по PCINT, не срабатывает, пока не отработает вектор прерывания таймера... Вот думал разместить "Плавное включение светодиода" в основной цикл программы, чтоб его можно прервать вектором, но не работает. Отсюда вопрос, может ШИМ работать вне вектора прерывания...

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пн июн 06, 2022 15:07:41

Двигатель важнее. Поэтому, сделай аппаратный ШИМ для светодиодов

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пн июн 06, 2022 15:08:18

я не понимаю, как там у вас всё устроено...
ШИМ мотора аппаратный?
ШИМ светодиода аппаратный?
что за прерывания - по таймеру или от совпадения ШИМ?
если вы пишите на ассемблере, что мешает вам разрешить прерывания сразу при входе в обработчик "мешающего" прерывания?

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пн июн 06, 2022 15:30:49

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



Поэтому, я предположил запихнуть ШИМ в основной цикл



И так индикация не работает. Вот это хотелось узнать... почему...

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Вт июн 07, 2022 11:26:15

Странно, сейчас добавил... и заработало... Единственное что потом добавил это

cli
out OCR1A,Temp7
sei

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пт июн 10, 2022 14:08:53

Задержка в прерывании - это как матерится в дамском обществе.

Добавлено after 1 minute 38 seconds:
Код написан жутко.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пт июн 10, 2022 16:58:00

Зависит от задачи. А данном случае три такта. Но и чем. Код. Ну да.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Чт дек 29, 2022 20:53:19

Здравствуйте. Возник вопрос, как в AVR ассемблере посчитать длину строки, размещенной в памяти программ директивой DB.
Например, в 8051 для этого достаточно отнять от адреса метки после строки, адрес метки самой строки. Сделано по-людски, один адрес - один байт.
Но в AVR, одному адресу зачем-то соответствует два байта, и я не очень понимаю, как оно там размещается, и как это считать

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Чт дек 29, 2022 21:41:00

Ну так и считать
отнять от адреса метки после строки, адрес метки самой строки.
, только умножить на 2. в чём проблема?

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Чт дек 29, 2022 21:47:55

Jack_A, а если строка с нечетным количеством символов? И добита нулем в конце до четного ?

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Чт дек 29, 2022 22:48:21

Just_Fluffy писал(а):а если строка с нечетным количеством символов? И добита нулем в конце до четного ?

Оно само так делает :)
Код:
home/lester/AVR/avra-master/includes/m48def.inc(914) : PRAGMA directives currently ignored
asmtest.asm(31) : Warning : A .DB segment with an odd number of bytes is detected. A zero byte is added.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пт дек 30, 2022 00:05:29

Shuspano, да, студия умная. Но вопрос остается - как определить нечетную длину строки?

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пт дек 30, 2022 03:21:13

Подсчитать число символов в строке, кроме нуля. Если младший байт 1, значит нечётное.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пт дек 30, 2022 07:01:04

Shuspano, да, студия умная. Но вопрос остается - как определить нечетную длину строки?

Так, как говорит Demiurg. "В лоб" - программно. Сам так поступаю.
Код:
#define Text  "Ля-Ля-Ля"
.
.
.Macro   ldiw
ldi    @0L,low(@1)
ldi   @0H,High(@1)
.EndMacro
.
.
textptr: .db Text,'\0'   
.
.
ldiw Z,textptr*2
clr   r16
loop1:   
inc r16
lpm r17,Z+
tst r17
brne loop1
;            r16 - длина строки


Ну или совсем просто

ldi r16,STRLEN(Text)

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пт дек 30, 2022 12:26:59

Хе... "В лоб" там вообще не нужно знать конец строки, только начало. Но это только в Run-Time.
А на этапе компиляции, увы, только по дельте 2 меток, помноженной на 2. И принимать потом уже программные меры, что б не схавать лишний ноль.

С.Н.,
STRLEN(Text)
- простите, это что? Фишка препроцессора?
Каюсь, я уже достаточно давно перестала писать под АВР на асме... Хотя это был первый асм для МК, который изучала вместе с АВРками. Эхххх.. где моя любимая отладка 2313....

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пт дек 30, 2022 14:13:06

В avrasm2 такой директивы (strlen) нету...
Или макрос или чего-то из микрочипстудио...
:dont_know:

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пт дек 30, 2022 17:57:57

В avrasm2 такой директивы (strlen) нету...
Или макрос или чего-то из микрочипстудио...
:dont_know:

Нет проблем. Сам как-то пропустил.
Стр. 33.
Я сначала проверил, прежде чем выкладывать версию.
Вложения
AVRASM2 Assembler Manual.pdf
(312.32 KiB) Скачиваний: 56
Ответить