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

Обсуждаем контроллеры компании Atmel.
Ответить
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Все. Тема моя походу умерла сама собой. )))) Я только что осознал, что в городе есть светофоры и пешеходные переходы... И каждое снижение скорости или остановка будут гасить туманки и второй ближний свет. Лампам придет писец еще быстрее... :facepalm: Вот блин.

У кого есть предложения, куда еще можно применять эту плату? Может использовать ее как отсечку для Жигулей? А то у меня просили. :)))
Станислав
Реклама
Это не хвост, это антенна
Сообщения: 1495
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

СКАЗОЧНИК писал(а):...
Смириться, успокоив себя тем, что получил бесценный опыт. Отрицательный результат - тоже результат.
А наработки когда-нибудь пригодятся в другом устройстве.
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

А ввести два режима - город и трасса? В одном ничего такого не делать (или делать иначе), в другом - переключать фары как задумано.
Контактная информация:
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Хороший вариант. ))) Все равно решили эту схему доделывать, но изменили немного критерии и включили в работу задержки, т.е. если стоим более 10 секунд, то выключить свет. А город-трасса - тоже есть, можно включить в ручную все. А можно в автоматическом режиме через эту конструкцию.
Сейчас буду додумывать.
Спасибо.
Станислав
Реклама
Эиком - электронные компоненты и радиодетали
Держит паяльник хвостом
Аватара пользователя
Сообщения: 906
Зарегистрирован: Ср мар 28, 2012 21:45:24
Откуда: ВО

Сообщение ILYAUL »

Код: Выделить всё

;----------------------------------------------------------------------------------------

   OVF0add:

      inc OVF

      cpi OVF, 251
      brsh OVER
      reti


   reti
Команда CPI меняет регистр SREG. Когда Вы научитесь сохранять этот регистр , если применяете команды его изменяющие?
Реклама
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

В прерываниях у меня сохраняется этот регистр. Уже )))) :dont_know:
Станислав
Реклама
akl
Друг Кота
Сообщения: 4470
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

СКАЗОЧНИК писал(а): ...Мои подсчеты по замерам на реальном автомобиле при скорости в районе 5 км/ч fимп. = 8,75 Гц или Тимп. = 0,1143 с. А при скорости 200 км/ч fимп. = 141,844 Гц или Тимп. = 0,007 с.
Уточню. Если при скорости 200 км/3600сек измерено 141,844 имп./сек, то датчик выдает 2553 имп/км. В общем, ожидаемо. Чего нельзя сказать про скорость 5км/час. Должно получиться 3,54 имп./сек.
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

Все правильно. Так я и считал тоже.
Схему доделал. Поставили на машину. Успешно работает. ))) Изменили только критерии (условия включения и выключения).
Теперь она включает свет туманок только если машина двигается (не важно как, главное, что импульсы от спидометра идут), при этом, включает их только после 5 секунд задержки. Если разогнались до 40 км/ч, то включает второй ближний. Выключает их одновременно, если мы 10 секунд никуда не двигались. Если в течение 10 секунд двигались, то они продолжают гореть.
Как показывает практика, даже в пробках по городу, автомобиль все равно катится чуток, чего вполне достаточно, чтобы не моргали фары.
Как-то так.

Если кому нужно, то выложу схему и исходник.
Станислав
Это не хвост, это антенна
Сообщения: 1495
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

СКАЗОЧНИК писал(а):...
Зачем столько заморочек с фарами? Смысл вашего девайса?
Контактная информация:
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

:) Все очень просто. :)
Заказ, за который я заработал немножко денежков. Подобные заказы на данный момент, практически основной мой источник доходов... :dont_know:

З.Ы. А практический смысл в том, что по вразумению того человека его ксеноновые фары в туманках в маленьком объеме будут греться. Если в движении они лучше остывают, а когда остановился, чтобы зря не горели и не забывать выключать их.
Станислав
Друг Кота
Аватара пользователя
Сообщения: 4966
Зарегистрирован: Сб май 05, 2012 20:19:55
Откуда: Минск

Сообщение Seriyvolk »

Хоть и оффтоп, но от такого дрыгания ксенону придёт трындец ещё быстрее.
Прибор, защищённый предохранителем, сгорает первым, защитив предохранитель. Закон Мерфи.
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватара пользователя
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Сообщение СКАЗОЧНИК »

А нет никакого дрыгания.. :) Он не выключается, пока не остановишься. А когда останавливаешься, обычно сам выключаешь его...
Станислав
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 386
Зарегистрирован: Чт окт 31, 2013 10:54:32

Сообщение alex38779 »

Хочу переходить по подпрограммам из таблицы по нажатию кнопки, но что то не выходит.

Для отладки сделал так первая - горит диод, вторая - мигает.

Изначально горит, нажимаю и держу кнопку- мигает, отпускаю -снова горит. Как сделать что бы осталась подпрограмма где мигает светодиод? В ручную вбиваю индекс подпрограммы - все переходит и работает.

регистры:

Код: Выделить всё

 .def temp = r20
 .def temp1 = r21
это в озу

Код: Выделить всё

;выбор подпрограммы
	count_prog:  .byte 1
	count_prog1:  .byte 1
таблица подпрограмм:

Код: Выделить всё

;таблица подпрограмм
table_prog:
	.dw program_z, program_0, program_1, program_2, program_3
сам код

Код: Выделить всё

main:	
	lds temp, count_prog
	;выбор подпрограммы
	in temp1, PINB ;кнопка, подтянута к плюсу
	sbrс temp1, 3 ;если в ноль то пропуск след команды
	rjmp main_1
	inc temp
	sts count_prog, temp

 main_1:
	;выбор из таблицы
	lds temp, count_prog
	lds temp1, count_prog1	
	ldi ZL, low(table_prog<<1)
	ldi ZH, high(table_prog<<1)
	lsl temp
	clr temp1
	add zl, temp
	add zh, temp1
	lpm temp, Z+
	lpm temp1, Z
	movw ZH:ZL, temp1:temp
	ldi temp, 0
	ldi temp1, 0	
	ijmp ;переход по адресу


	rjmp main
разобрался. не правильный ход алгоритма :)
Контактная информация:
Потрогал лапой паяльник
Сообщения: 315
Зарегистрирован: Пт янв 29, 2010 19:42:27

Сообщение 12val12 »

Фонарик с включением-выключением нефиксированной кнопкой
и накачкой меандром (~100кГц) на at90s1200 написать на asm как можно ближе к следующему коду

DDRD=0x00;PORTD=0x01;
DDRB=0x1C;PORTB=0x00;
R28=1;
While(1)
{
if (PIND.1 ==0)
{ delay_200ms (+-50%)
if (PIND.1 ==0 )
{ if ( R28==0) R28=1;
else R28=0;
delay_200ms (+-50%)
}
}
if (R28==1)
{
PORTB=0x1C;
PORTB=0x1C;
PORTB=0x1C;
PORTB=0x1C;
PORTB=0x1C;
PORTB=0x0;
PORTB=0x0;
}
ух ты.... показывает
Друг Кота
Аватара пользователя
Сообщения: 6347
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

Писать эту лабуду не буду, но тут не соблюден баланс скобок: While (1) { не закрыт. Если писать на асме, нужно знать, как принимает параметр подпрограмма задержки. Или она рассчитана на тупо отмерить всегда 200ms ?
И вообще: что за странная задача - очередной курсач ? И что за бессмысленное пихание одной и той же инфы несколько раз в порт ?
Изображение
Это не хвост, это антенна
Сообщения: 1495
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

Могу написать. За деньги. 1000 р на карту сбербанка. Предоплата.
Приведенный код никуда не годится.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 6347
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

Могу за бесплатно :) , если спрошающий объяснит внятно, что должен делать этот бред сивой кобылы код и расставит скобки и ; . О том, что исходник д.быть читаемо отформатирован, и мечтать уж не приходится. :(
Последний раз редактировалось Jack_A Вт апр 19, 2016 19:39:55, всего редактировалось 1 раз.
Изображение
Это не хвост, это антенна
Сообщения: 1495
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

Jack_A писал(а):Могу за бесплатно :) , если спрошающий объяснит внятно, что должен делать этот бред сивой кобылы код . :(
Товарищ даже не потрудился сказать: мол, ребята, так и так, я полный лох чайник, помогите, пожалуйста, написать программу примерно такого плана "бла-бла".
Он просто поставил перед фактом. А ну-ка быстренько накидали мне на асме по моему невнятному ТЗ.

Все еще есть желание заняться бесплатным альтруизмом?
Контактная информация:
Потрогал лапой паяльник
Сообщения: 315
Зарегистрирован: Пт янв 29, 2010 19:42:27

Сообщение 12val12 »

DDRD=0x00;PORTD=0x01;
DDRB=0x1C;PORTB=0x00;
PowerOn=1;
while (1)
{
if (PIND.0 ==0)

{ PORTB=0x1C;
delay_ms(100);
PORTB=0x0;
if (PIND.0 ==0 )
{ if ( PowerOn==0) PowerOn=1;
else PowerOn=0;
delay_ms(100);
}
}
if (PowerOn==1)
{
PORTB=0x1C;
PORTB=0x1C;
PORTB=0x1C;
PORTB=0x1C;
PORTB=0x1C;
PORTB=0x1C;
PORTB=0x1C;
PORTB=0x1C;
PORTB=0x1C;
PORTB=0x1C;
PORTB=0x0;
}
}
вот рабочий код (tiny2313) хочу на асм (90s1200) PowerOn - любой РОН
собственно даже код не нужен
но duty cycle на выходе 40 -60%

второй оратор веселит .

сосбственно проще asm листинг подкорректировать под 1200 даже не вникая в джампы
стек в апаратный и все
смысл прост кнопкой без фиксации включаем-выключаем генератор накачки удвоитель или степап на светодиод
ух ты.... показывает
Это не хвост, это антенна
Сообщения: 1495
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

12val12 писал(а):второй оратор веселит .
Самим в лом написать, если вас ораторы веселят? Почему выбран такой древний МК, у которого аппаратный стек, и который снят с производства? У вас остался этот камушек? Вот и пишите сами программу под этот камень. Не хотите сами, выбросьте каку приведенный код, напишите нормальное ТЗ, без приведения сторонних кодов, которые только с толку сбивают. И просите нормально. А не ставьте перед фактом. Типа, запилите-ка мне программу на асме. За спасибо.
Контактная информация:
Ответить

Вернуться в «AVR»