Ассемблер (ASM) для AVR в вопросах и ответах
- gauss
- Держит паяльник хвостом
- Сообщения: 920
- Зарегистрирован: Сб янв 16, 2010 15:34:57
- Откуда: Sevsk/Moscow
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Можно ли заданную в начале программы константу каким-либо образом
впоследствии изменить программно?
впоследствии изменить программно?
- Реклама
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Заданную как? Вы её в регистр положили, или в память? Тогда да. Если она просто в коде - то нет.
- gauss
- Держит паяльник хвостом
- Сообщения: 920
- Зарегистрирован: Сб янв 16, 2010 15:34:57
- Откуда: Sevsk/Moscow
Re: Ассемблер (ASM) для AVR в вопросах и ответах
К сожалению, просто в коде.
И вот ещё вопрос: когда мы загружаем данные в РОН из ОЗУ, остаются ли они в ОЗУ? или перемещаются и остаются только в РОН?
И вот ещё вопрос: когда мы загружаем данные в РОН из ОЗУ, остаются ли они в ОЗУ? или перемещаются и остаются только в РОН?
- avreal
- Опытный кот
- Сообщения: 842
- Зарегистрирован: Чт дек 31, 2009 19:27:45
- Откуда: Бровари, Україна
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Я не совсем понял задачу — это нужно или что-то другое.gauss писал(а):Вчера реализовал с помощью логических сдвигов - неудобно, но работает.
Код: Выделить всё
clr temp
sbic PINC,5
inc temp ; или ldi temp, 1, но тогда только в старшие регистрыКонечно остаётся. Даже команда move не двигает, а копирует.gauss писал(а):И вот ещё вопрос: когда мы загружаем данные в РОН из ОЗУ, остаются ли они в ОЗУ? или перемещаются и остаются только в РОН?
_____
Оставаться-то данные остаются, но частичка их души украдена, как при фотографировании человека
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
- gauss
- Держит паяльник хвостом
- Сообщения: 920
- Зарегистрирован: Сб янв 16, 2010 15:34:57
- Откуда: Sevsk/Moscow
Re: Ассемблер (ASM) для AVR в вопросах и ответах
avreal писал(а):Код: Выделить всё
clr temp
sbic PINC,5
inc temp ; или ldi temp, 1, но тогда только в старшие регистры
Поясните пожалуйста код, если нетрудно
- Реклама
Re: Ассемблер (ASM) для AVR в вопросах и ответах
И вот ещё вопрос: когда мы загружаем данные в РОН из ОЗУ, остаются ли они в ОЗУ? или перемещаются и остаются только в РОН?
Ну подумайте логически, что такое перемещение в цифровой технике? Своими словами? Например, это копирование данных откуда-то, и затем запись на прежнее место какого-то дефолтного значения. Точно так же, как нет понятия стереть данные. Их невозможно стереть. Их можно только записать. Отсюда следует, что понятия "переместить" тоже нет. Разумеется данные остаются.
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
xkp писал(а):xkp на 152 странице писал(а):следующим вопросом станет время, точнее, как можно точнее измерить ширину импульса. можно даже и не в секундах или миллисекундах, а в условных еденицах.
испытания сказали что программный подсчет не подходит, маленькая частота выборки. решено использовать аппаратный режим захвата на MEGA32, работающей на кварце 24 МГц.
но и тут заморочки. что то мне кажется что что-то тут не так... можно же как то проще замерить ширину импульса?
Пытался понять логику работы - не вкурил
пишите коменты, уважайте тех, у кого просите помощи
ковырять такую лапшу вряд ли кто будет ИМХО
- avreal
- Опытный кот
- Сообщения: 842
- Зарегистрирован: Чт дек 31, 2009 19:27:45
- Откуда: Бровари, Україна
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Очищаем регистр temp.gauss писал(а):Поясните пожалуйста код, если нетрудноavreal писал(а):Код: Выделить всё
clr temp
sbic PINC,5
inc temp ; или ldi temp, 1, но тогда только в старшие регистры
Если на входе PINC, 5 значение 0, то пропускаем (Skip Bit IO Cleared) следующую команду в temp остаётся 0.
Если на входе 1-ка, то следующая команда не пропускается, регистр инкрементируется и из 0 становится 1.
Ну или напрямую загрузить 1, но LDI работает не со всеми регистрами, а INC со всеми.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
- gauss
- Держит паяльник хвостом
- Сообщения: 920
- Зарегистрирован: Сб янв 16, 2010 15:34:57
- Откуда: Sevsk/Moscow
Re: Ассемблер (ASM) для AVR в вопросах и ответах
avreal, благодарю
И ещё вопрос. Когда мы в сегменте данных выделяем часть ячеек в ОЗУ под переменную,
то обязательно ли их инициализировать? Что хранится в этих ячейках по умолчанию? Ноль?
И ещё вопрос. Когда мы в сегменте данных выделяем часть ячеек в ОЗУ под переменную,
то обязательно ли их инициализировать? Что хранится в этих ячейках по умолчанию? Ноль?
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
gauss писал(а):Что хранится в этих ячейках по умолчанию?
произвольный мусор
- gauss
- Держит паяльник хвостом
- Сообщения: 920
- Зарегистрирован: Сб янв 16, 2010 15:34:57
- Откуда: Sevsk/Moscow
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Блин, что-то меня поперло... 
Как можно загрузить в РОН значение из таймера (скажем, из регистра TCNT1H?)
Пробовал in и mov - нифига!
Как можно загрузить в РОН значение из таймера (скажем, из регистра TCNT1H?)
Пробовал in и mov - нифига!
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Легко , если знать в какой области Sram он находится. Если не помогает in то может быть lds поможет.
И раз уж из счётчика 16 бит , то и последовательность надо учитывать.
А это чтоб не думать
И раз уж из счётчика 16 бит , то и последовательность надо учитывать.
А это чтоб не думать
Код: Выделить всё
.macro inr
.if ( @1 < 0x60 )
in @0,@1
.else
lds @0,@1
.endif
.endm
Последний раз редактировалось ILYAUL Ср окт 17, 2012 23:51:54, всего редактировалось 1 раз.
- gauss
- Держит паяльник хвостом
- Сообщения: 920
- Зарегистрирован: Сб янв 16, 2010 15:34:57
- Откуда: Sevsk/Moscow
Re: Ассемблер (ASM) для AVR в вопросах и ответах
lds - ведь загрузка из ОЗУ?
А в ОЗУ мы его не записываем...
Не помогает
А в ОЗУ мы его не записываем...
Не помогает
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Вы представляете , но в некоторых ьикроконтроллерах ATMEL много регистров расположены в области ОЗУ , хотя если быть до конца честным то и к регистрам РОН можно запросто обращаться через sts и lds и через ld и st так как все что в ATMEl есть , все находится в Sram , кроме Flash и Eeprom
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Не помогает
lds temp,TCNT1H
микруха какая?
- xkp
- Опытный кот
- Сообщения: 781
- Зарегистрирован: Ср ноя 18, 2009 12:50:31
- Откуда: ковров
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
xkp на 152 странице писал(а):следующим вопросом станет время, точнее, как можно точнее измерить ширину импульса. можно даже и не в секундах или миллисекундах, а в условных еденицах.
испытания сказали что программный подсчет не подходит, маленькая частота выборки. решено использовать аппаратный режим захвата на MEGA32, работающей на кварце 24 МГц.
но и тут заморочки. что то мне кажется что что-то тут не так... можно же как то проще замерить ширину импульса? добавил коментарии.
Спойлер
Код: Выделить всё
.INCLUDE "m32def.inc"
.def tmp =r16
.def tmp0 =r17
.CSEG
.ORG $2a
reset:
ldi tmp,low(ramend)
out spl,tmp
ldi tmp,high(ramend)
out sph,tmp
rcall cap_init ;инициализация прерываний
sei
main:
nop
rjmp main ;бесконечный цикл
cap_init: ;инициализация прерываний
ldi tmp,$41 ;ICES1=1 CS1=1
out tccr1b,tmp
ldi tmp,$20 ;TICIE=1
out timsk,tmp
ret
TIM1_CAPT: ;прерывания
in tmp,tccr1b ;берем для сравнения
sbrc tmp,ices1 ;смотрим бит ICES1
rjmp onn ;если 1 то на метку
; in r18,icr1l ;если 0 то запоминаем значения
; in r19,icr1h
in tmp,tccr1b ;берем для установки бита
ori tmp,(1<<ices1) ;устанавливаем бит ICES1
out tccr1b,tmp ;устанавливаем
rjmp out_tim ;на выход
onn:
clr tmp ;очищаем счетчик
out tcnt1l,tmp ;младший
out tcnt1h,tmp ;старший
in tmp,tccr1b ;очищаем бит ICES1
andi tmp,$ff-(1<<ices1)
out tccr1b,tmp
out_tim:
reti ;выход с прерываний
.CSEG
.ORG $0
jmp RESET ; Reset Handler
reti ;jmp EXT_INT0 ; IRQ0 Handler
nop
reti ;jmp EXT_INT1 ; IRQ1 Handler
nop
reti ;jmp EXT_INT2 ; IRQ2 Handler
nop
reti ;jmp TIM2_COMP ; Timer2 Compare Handler
nop
reti ;jmp TIM2_OVF ; Timer2 Overflow Handler
nop
rjmp TIM1_CAPT ; Timer1 Capture Handler
nop
reti ;jmp TIM1_COMPA ; Timer1 CompareA Handler
nop
reti ;jmp TIM1_COMPB ; Timer1 CompareB Handler
nop
reti ;jmp TIM1_OVF ; Timer1 Overflow Handler
nop
reti ;jmp TIM0_COMP ; Timer0 Compare Handler
nop
reti;rjmp TIM0_OVF ; Timer0 Overflow Handler
nop
reti ;jmp SPI_STC ; SPI Transfer Complete Handler
nop
reti ;jmp USART_RXC ; USART RX Complete Handler
nop
reti ;jmp USART_UDRE ; UDR Empty Handler
nop
reti ;jmp USART_TXC ; USART TX Complete Handler
nop
reti ;jmp ADC ; ADC Conversion Complete Handler
nop
reti ;jmp EE_RDY ; EEPROM Ready Handler
nop
reti ;jmp ANA_COMP ; Analog Comparator Handler
nop
reti ;jmp TWI ; Two-wire Serial Interface Handler
nop
reti ;jmp SPM_RDY ; Store Program Memory Ready Handler
nop
.exitR5VCH
Хотелки:
не/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
Хотелки:
Спойлер
Аналоговый осциллограф С1-112, С1-118, другиене/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
импульс какой полярности?
длительность?
период повторения?
ну или хотя бы диапазон значений
длительность?
период повторения?
ну или хотя бы диапазон значений
- xkp
- Опытный кот
- Сообщения: 781
- Зарегистрирован: Ср ноя 18, 2009 12:50:31
- Откуда: ковров
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
положительный. может быть и отрицательным. в схеме этот импульс идет с ОУ, сейчас он положительный. но в любой момент можно перевернуть.
R5VCH
Хотелки:
не/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
Хотелки:
Спойлер
Аналоговый осциллограф С1-112, С1-118, другиене/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
писать и проверять код некогда, опишу логику как я это вижу
1. предустанавливаем ICES в 1
2. в прерывании по ICP
= проверяем значение ICES
если 1
читаем в перем1 значение ICR
иначе
читаем в перем2 значение ICR
конец если
= меняем значение ICES на противоположенное
= перем2-перем1={значение длительности импульса} - но лучше организовать какой-нибудь флаг готовности данных
а всю обработку вести вне прерывания
желательно еще сделать N измерений и усреднить значение
зы обнулять счетчик таймера не надо!!!
1. предустанавливаем ICES в 1
2. в прерывании по ICP
= проверяем значение ICES
если 1
читаем в перем1 значение ICR
иначе
читаем в перем2 значение ICR
конец если
= меняем значение ICES на противоположенное
= перем2-перем1={значение длительности импульса} - но лучше организовать какой-нибудь флаг готовности данных
а всю обработку вести вне прерывания
желательно еще сделать N измерений и усреднить значение
зы обнулять счетчик таймера не надо!!!
Последний раз редактировалось GP1 Чт окт 18, 2012 09:15:53, всего редактировалось 1 раз.



