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

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


hardbar

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

Почему студия пишет что в коде есть ошибка??

.macro outi
ldi temp,@1
out @0,temp
.endm

А имено в что ошибкой есть @1

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

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

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

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

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

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

В самом макро? У меня не ругается.

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

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

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

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

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

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

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

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

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

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

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

Наверно, не нравится (ramend).

В Tiny13 нет SPH регистра, так что можете просто писать ramend.

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

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

что еще за liw(RAMEND) внизу?!

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

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

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

Да все из за liw(ramend).НЕ правельно написал. Спасиба

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

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

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

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

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

Ерунду говорите, сударь. Это обычная структура, а RB3 - её битовое поле. Си очень хорошо это всё знает.

Ну-ка, ну-ка, приведите полный код который бы таким образом скомпилировался любым компилятором Си а не только специализированными под пики или cvavr. Конкретно интересует комбинация
counter++;
if(counter.bit0){}

Какой там тип данных у counter'а? Сколько помню, спецификация Си не знает про классы (это не С++ или objectiveC) а структуры не знают про перегрузку операторов.

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

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

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

Почему в терминал приходит только символ "Р". А остальные символы не приходят.

;Дата:21.08.13
;Автор:Паша Бурлака

;----------------------------
.include "tn2313def.inc"
.list
.def temp=r16
.equ ur=25
;-----------------------------
.macro outi
ldi temp,@1
out @0,temp
.endm
.cseg
.org 0
rjmp reset
.org 0x0013
;----------------------------
reset:
cli
outi spl,low(ramend)
outi spl,high(ramend)
outi ddra,0x00
outi ddrd,0xff
outi ddrb,0x00
outi porta,0xff
outi portb,0xff
outi acsr,0x80
outi ubrrl,low(ur)
outi ubrrh,high(ur)
LDI temp,0
OUT UCSRA,temp
LDI R16,(1<<RXEN)|(1<<TXEN)|(0<<RXCIE)|(0<<TXCIE)|(0<<UDRIE)
OUT UCSRB, R16
LDI R16,(3<<UCSZ0)|(1<<USBS)
OUT UCSRC, R16
;--------------------------------------------
main:
ldi r17,'p'
rcall out_ua
ldi r17,'a'
rcall out_ua
ldi r17,'h'
rcall out_ua
ldi r17,'a'
rcall out_ua
rjmp main
out_ua:
SBIS UCSRA,UDRE ; ожыдание флага готовности
rjmp out_ua ; ждем готовности - флага UDRE
OUT UDR, r17
ret

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

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

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

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

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

outi spl,low(ramend)

outi spl,high(ramend)

Убери вторую строчку, она зануляет указатель стека. Достаточно было разок прогнать в эмуляторе Студии чтобы понять что программа не возвращается из процедуры.

И еще кое-что. Правилом хорошего тона считается указание тактовой частоты контроллера (.equ F_CPU 8000000 ;например) и частоты интерфейсов, из которых в дальнейшем вычисляются значения регистров:

.equ F_CPU 1000000
.equ UART_BAUD 9600
.equ UBRR F_CPU/16/UART_BAUD-1
;---
ldi temp,low(UBRR)
out UBRRH,temp
ldi temp,high(UBRR)
out UBRRL,temp

Как-то так

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

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

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

Убрал только вторую строчку и все заработало спасибо.

outi spl,low(ramend)
outi spl,high(ramend)

А скорость я взял из даташита , мне так удобнее.

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

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

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

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

через формулу все же лучше. Проще менять частоту, например, да и понятнее

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

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

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

Буду и меть в виду если что. Но пока по даташиту.

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

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

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

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

С uart я разобрался где можно почитать про массивы для Asm кроме Радиокота там я уже был.

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

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

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

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

Асм не знает что такое массивы, там можно работать только с областями памяти, вручную. Что вы хотите получить?

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

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

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

Хочу получить что то типа вот этого http://radiokot.ru/s...cu_fpga/avr/15/ .На Радиокоте немного не понятно. Хотел бы ещё немного информации.

Извините вот это http://radiokot.ru/start/mcu_fpga/avr/12/. С верху силка не та.

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

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

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

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

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

Вручную выделяешь в ОЗУ адрес буфера для динамической идникации, ее размер и конец буфера, чтобы можно было легко добавлять другие.

.equ MEM_BUFFER_START SRAM_START+1
.equ MEM_BUFFER_SIZE 8
.equ MEM_BUFFER_END MEM_BUFFER_START+MEM_BUFFER_SIZE

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

Сама индикация может быть, например, по таймеру (можно и поизврящаться, например, на прерывании по передачи UART): увеличивается счетчик, считывается область памяти по счетчику, сдвигается байт на контроле индикации (PORTD по схеме с раиокота).

.equ OUT_MASK 0b11110000
.equ OUT_START 0b00010000
.def temp=r16
.def outmask=r17
...
TIMER_INT:					    ;прерывание для динамической индикации
 ld temp,Y+					    ; Y поработает адресом
 out PORB,temp			    ;на PORTB вроде больше ничего не висит, не буду заботиться о сохранности
 in temp,PORTD			    ; а вот на PORTD может что-то и быть
 lsr outmask					   ;сдвигаем в сторону младшего бита
 andi temp,OUT_MASK
 or temp,outmask
 out PORTD,temp		    ;так что меняем только нужные биты
 cpi YL,low(MEM_BUFFER_END) ;считаем что старший байт не поменялся. Для простоты можно адресовать с 0x0100
   brlo TIMER_END
 ldi YL,low(MEM_BUFFER_START) ;если дошли до конца буфера - прыжок в начало
 ldi outmask,OUT_START
TIMER_END:
reti

Примерно так. Если надо могу прокомментировать.

Сохранение SREG не делал, для примера оно не нужно.

На радиокоте это сделано программно, то есть с огромными задержками. На прерывании, МИХО получше.

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

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

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

Спасибо но я по ошибке силку не ту дал.Вот она http://radiokot.ru/s...cu_fpga/avr/12/ .Динамическую индикацию я поже буду изучать.

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

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

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

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

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

А что не понятно? директива .db располагает в памяти программ (flash) один или несколько байтов, сколько указано. .dw соответственно располагает слова (2 байта). Адрес, куда будут записаны эти байты, можно указать директивой org, но чаще это не нужно, лучше записать сразу после кода. Для этого ставят туда метку. Ее значение и будет соответствовать адресу. Только надо учитывать, что адресация flash, в отличии от EEPROM и SRAM, по словам а не по байтам, для этого и ставят умножение на 2.

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

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

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

Немного по шарив по интернету понял как работает массив. И за основу для изучения взял программу с массивом с Радиокота.

Я ее взял и укоротил. Она работает но только не полностю, доходит до середины где в РОН записываеться 0xff и останавливаеться.

Пересмотрел программу несколько раз. Вроде бы не нашел ошибок. Может из за усталости не замечаю. Прошу посмотреть.

Гоняю с самого утра её. Ничего так и не тронулся с места.

Вот код:

.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:
cpi temp1,31
breq main
ldi ZH,High(Array*2) ;загрузка начального адреса массива
ldi ZL,Low(Array*2)
ldi Temp,0		 ;прибавление внутр. адреса
add ZL,Temp1
adc ZH,Temp
lpm				 ;загрузка из ПЗУ
mov pob,R0		 ;копирование в РОН
inc Temp1			 ;увеличение внутр. адреса
out PortB,pob	 ;вывод в порт
rcall wait
rjmp ReadArray
;------------------------------
main:
ldi temp1,0
ret		
;--------------------------------
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

Зарание спасибо.

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

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

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

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

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

RET выход из подпрограммы. Метку reset я копировал c предедущий прошивки где изучал прерывания.

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

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

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

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

Ниже на 1 строку от метки "ReadArray:"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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