Перейти к содержанию

Зацикливание Кода На Несколько Повторений.


hardbar

Рекомендуемые сообщения

breq это не вызов пропрограммы а условный переход

Значит будет сброс, проблем-то.

В Студии и Протеусе программа работает.

Изменено пользователем COKPOWEHEU

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

В симуляторах 0, в реальности - мусор. С другой стороны автор говорил что код доходит до определенного значения. Наверное доходит он с первого иначе бы была указана и эта странность

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Автор точно весь код выложил? Например, в задержке (wait) используется регистр timer, но нигде нет записи в него какого-либо значения.

Некоторые поправки, не вдаваясь в подробности кода:

.include "tn2313def.inc"
.list
.def temp=r16
.def temp1=r17
.def tim=r18
.def timer=r19
.def pob=r20
;-----------------------------
.macro outi
ldi temp,@1
out @0,temp
.endm
.cseg
.org 0
rjmp reset
.org 0x0013
;----------------------------
reset:
cli
outi spl,low(ramend)
outi ddra,0xff
outi ddrd,0xff
outi ddrb,0xff
outi porta,0x00
outi portd,0x00
outi portb,0x00
outi acsr,0x80
outi tccr0b,0x05
ldi timer,200
sei
;------------------------------
ReadArray:
clr temp1
ldi ZH,High(Array*2) ;загрузка начального адреса массива
ldi ZL,Low(Array*2)
r_a:
cpi temp1,31
breq main
lpm pob,Z+							 ;загрузка из ПЗУ
inc Temp1					    ;увеличение внутр. адреса
out PortB,pob    ;вывод в порт
rcall wait
rjmp r_a
;------------------------------
main:
rjmp main			
;--------------------------------
wait: ;Все что снизу задержка на таймере.
ldi tim,0
out tcnt0,tim
wt1:
in tim,tcnt0
cp tim,timer
brlo wt1
ret
;-------------------------------------
Array:
.db 0b10000001,0b01000010
.db 0b00100100,0b00011000
.db 0b00011000,0b00111100
.db 0b01111110,0b11111111
.db 0b11100111,0b11000011
.db 0b10000001,0b11000001
.db 0b11100001,0b11110001
.db 0b11111001,0b11111101
.db 0b11111111,0b01111111 ;строка где останавливаеться.
.db 0b00111111,0b00011111
.db 0b00001111,0b00000111
.db 0b00000011,0b00000001
.db 0b00000011,0b00000101
.db 0b00001001,0b00010001
.db 0b00100001,0b01000001

Изменено пользователем Геннадий
Ссылка на комментарий
Поделиться на другие сайты

Автор точно весь код выложил? Например, в задержке (wait) используется регистр timer, но нигде нет записи в него какого-либо значения.

ldi timer,200

И, видимо, вместо

breq main

нужно

breq ReadArray

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

Ссылка на комментарий
Поделиться на другие сайты

вряд ли, скорее после окончания светового эффекта надо зациклиться. Впрочем автору нужна только проверка чтения из ПЗУ (правда не слишком понятно зачем), там это несущественно.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Так я и предложил зациклится.

По крайней мере в исходнике сделано так. Т.е. световой эффект идёт по кругу.

Изменено пользователем Григорий Т.

Никогда не спорьте с дураком - люди могут не заметить между вами разницы

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Что то я зашел в тупик. Не могу понять что не так сверял с сайтами и прежними проектами вроде верно. Но неработает.

Если кто может проверьте пожалуста.


.include "tn2313def.inc"
.list
.def temp=r16 ;переименуем регистр под удобное имя
.def cicle=r17
.def tim=r18
.def timer=r19
.def numer=r21
.equ ver=250
.equ niz=10
.def znag=r23
;--------------------------------------
;ПАМЯТЬ И УСТАНОВКА ПРЕРЫВАНИЙ
;--------------------------------------
.cseg ;выбор памяти. внашем случае работаем с flesh.
.org 0 ;начальный адрес
rjmp reset ;прерывание по сбросу
rjmp t0
rjmp t1
.org 0x0013
;------------------------------------------
;ИНИЦИАЛИЗАЦИЯ ПОРТОВ, ПРЕРЫВАНИЙ,ТАЙМЕРОВ.
;------------------------------------------

reset: ;
cli ;запрет прерывания
ldi temp,ramend ;установка нижней границы стека
out spl,temp ;
ldi temp,0x05 ;пред-делитель
out tccr0b,temp ;таймера
ldi temp,0x80 ;отключение
out acsr,temp ;чегото там
ldi temp,(0<<ISC00)|(1<<ISC01)|(0<<ISC10)|(1<<ISC11)
out MCUCR,temp
ldi temp,(1<<INT0)|(1<<INT1) ;глобальное разрешение прерывния
out GIMSK,temp
ldi temp,0b11111111 ;настройка порта на
out ddrb,temp ;вод.вывод
ldi temp,0b00000000 ;подтяжка резистрами
out portb,temp ;установка в порте
ldi temp,0b11110011 ;настройка порта на
out ddrd,temp ;вод.вывод
ldi temp,0b00001100 ;подтяжка резистрами
out portd,temp ;установка в порте
ldi timer,100 ;задержка
ldi numer,0b00000001
sei ;разрешение прерывания
;-------------------------------------------
;ОСНОВНАЯ ПРОГРАМА.
;-------------------------------------------

Shift:
	 sbi portd,0
	 out portb,numer




	 rcall wait		 ;вызов п/п Delay(вывод+задержка)
	 cpi numer,0b10000000 ;сравнить Temp с крайним значением
	 breq Init		 ;если равно - перейти на загрузку нач. значения

	 lsl numer		 ;иначе - сдвиг влево
	 rjmp Shift		 ;перейти в начало цикла Shift

Init: ldi numer,0b00000001 ;загрузка начального значения

	 rjmp Shift		 ;перейти в начало цикла Shift
;---------------------------------------------------------------------;
; ПП задержки
;---------------------------------------------------------------------;
wait: ;Все что снизу задержка на таймере.
ldi tim,0
out tcnt0,tim
wt1:
in tim,tcnt0
cp tim,timer
brlo wt1
ret
;---------------------------------
t0:
cli
in R5,SREG
push R5

sub timer,znag

pop r5				
out SREG,R5
sei
reti
;---------------------------------
t1:
cli
in R5,SREG
push R5

add timer,znag

pop r5				
out SREG,R5
sei
reti

Изменено пользователем hardbar

Очень люблю спасибку.

Спасибка ни кого еще не убила.

Професия: Електро-механик.

Ссылка на комментарий
Поделиться на другие сайты

R5 не имеет смысла помещать в стек (он не используется в основном цикле). Думаю, не стоит ждать срабатывания прерывания от таймера Т0. Ты сам его обнуляешь в цикле задержки, причем гораздо чаще, чем он успеет досчитать до события возникновения прерывания. Поэтому вычитания значения znag из длительности задержки (timer) не произойдет. Да и значение регистра znag не определено в программе. Как-то так, на первый взгляд.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Сообщения

    • Зачем же пугать человека? Он же правильно мыслит. Вопрос чтобы правильно все сделал. Гальванику...
    • Вероятно, в разделе "Работа" вам помогут. При условии предоставления чёткого и недвусмысленного технического задания.
    • Привет кто это еще читает. Знакомый купил в Москве по адекватной цене пару  B615D, дал на диагностику перед уверенной эксплуатацией. Одна сразу в защите, большой динамик спален, усилители на высокоомную нагрузку поют, буду позже разбираться. А вот вроде бы вполне работоспособная не сдюжила и 10 минут на хорошей мощности на плотном прогрессиве. Вылетели ключи в БП и драйвера на MMBTA56. Видно что был в ремонте, возможно ключи оказались палёнкой. Есть мысль впаять вместо FQPF13N50  чуток помощней по току 18N50-e. По параметру Qg аналогичные, а по  Сg будут потяжелей, 2350пф против 1800 у 13н50-х. 
    • Ну так теперь фигня вопрос. Проверить, что кнопки невозможно замкнуть одновременно, да определить, на какой ток транзисторы нужны. По характеристикам мотора или по максимально-допустимому току диодов D1-D4. Навскидку, моторчик низковольтный, диоды тоже. Транзисторы тогда на PBSS4350 можно заменить. Они на Али почти задаром продаются.
    • Сами же понимаете, что так не может быть. Или нет "сквозняка", или схема неправильно собрана, элементы не те, битые и пр., и схема защиты не работает. Проверьте сначала работу защёлки защиты при питании от 15 В, отпаяв R19 и подавая туда медленно увеличивающееся напряжение до 1,5 - 2 В (можно с потенциометра ом на 100-500). Добейтесь, чтобы работала. Порог срабатывания измерьте. Пересчитайте в ток через резистор 0,1 Ом. Соответствует ли "правильному"? Проверьте, что у этого резистора сопротивление действительно 0,1 Ом. Запаяйте 0,1 Ом обратно. Напишите, какая лампочка. А то мало ли какая, может она не от "сквозняка", а от броска тока заряда С18 С16 мигает. Транзисторы ключей проверьте. Впаяйте вместо первичной трансформатора резистор ом 150 - 300, чтобы ток с ключей в этот "эквивалент трансформатора" не больше 50-100 мА был. Посмотрите форму напряжения на выходе ключей, в точке соединения С16 и С18, на питании после лампочки. Ищите, где ляп. Умозрительно подсказать можно только по каким-то измеренным данным. Кроме вас никто их не добудет. В общем, как в анекдоте: - Молодой человек, ну делайте же уже хоть что-нибудь!
    • Ну так можно увеличить глубину ООС, тем самым понизив чувствительность и повысив линейность
    • Судя по этой картинке   в трухе передней панели под выступающие болты и шишки паек ЗК динамиков выковыряныфрезерованы выемки, иначе бы динамики так плотно не прилегали бы к ДВП.    А оно тебе надо? "Работает - не мешай"(с)/это уже аксиома, не требующая доказательств/ , пытаясь сделать лучше, чем сделано на заводе. Сanton-ят, т.е. поют, и лучше, чем есть, тебе не сделать. Ну перенесёшь ты динамики наружу, а что тебе это даст? Кроме того, что при попытке их продать(а продавать их когда-нибудь придётся, т.к. эта акустика бюджетного сегмента без потуг на высший класс Hi-Fi) , тебе придётся объяснять потенциальному покупателю причину, по которой какой-то умник заколхозил такую переделку с акустикой, ты ничего хорошего не получишь. Задуманная тобой переделка - это по сути возня ради возни. 
  • Похожий контент

×
×
  • Создать...