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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

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

Сообщение Engineer_Keen »

Valek87 писал(а):Куда мне необходимо вставить эту программу, чтобы они (таймер и выше упомянутая) работали совместно?

Зависит от того, что нужно, чтобы программа делала. Можно хоть в конец флеша засунуть, чтобы она не выполнилась ни разу...

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

  breq  V4 ;breq - переход, если равно
  rjmp F4

а чего не заменить на brne F4 ?
Кстати, там используется R17, а уже занят...
Valek87
Встал на лапы
Сообщения: 136
Зарегистрирован: Пн июл 12, 2010 16:03:11

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

Сообщение Valek87 »

а чего не заменить на brne F4 ?

не. это требует программа.

Мне нужно, чтобы они работали параллельно. Мигал светодиод с опред.частотой (прог-ма ту, кот. мы обсуждали так долго) и эта подпрограммка.
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

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

Сообщение GP1 »

Valek87 писал(а):
Мне нужно, чтобы они работали параллельно. Мигал светодиод с опред.частотой (прог-ма ту, кот. мы обсуждали так долго) и эта подпрограммка.

для этого нужно чтобы процессор был 2х ядерным :)))
а вот выполнение основной программы с небольшими "перерывами" на прерывания (у тебя переключение светодиода) это сколько угодно
Чем дальше, тем больше становлюсь занудой...
Изображение
Valek87
Встал на лапы
Сообщения: 136
Зарегистрирован: Пн июл 12, 2010 16:03:11

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

Сообщение Valek87 »

GP1 писал(а):для этого нужно чтобы процессор был 2х ядерным :)))

это здесь причем?)))
GP1 писал(а):а вот выполнение основной программы с небольшими "перерывами" на прерывания (у тебя переключение светодиода) это сколько угодно

МОжно же программу изменить так, чтобы эти программы выполнялись одновременно?
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

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

Сообщение GP1 »

Valek87 писал(а):МОжно же программу изменить так, чтобы эти программы выполнялись одновременно?

вот тут ты просто не понимаешь физики работы мк.
основная программа у тебя пустой цикл

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

;****************************************************
; ОСНОВНОЙ ЦИКЛ
;****************************************************
Inf:

     rjmp Inf              ;бесконечный цикл

в котором у тебя пока ничего кроме зацикливания хода выполнения не происходит, и лишь периодически, раз в 5 мс, переключается состояние светодиода (в прерывании)
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

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

Сообщение GP1 »

Valek87 писал(а):
GP1 писал(а):для этого нужно чтобы процессор был 2х ядерным :)))

это здесь причем?)))

при том, чтобы выполнять параллельно 2е программы в системе должно быть 2 ядра, всего лишь.
Чем дальше, тем больше становлюсь занудой...
Изображение
Valek87
Встал на лапы
Сообщения: 136
Зарегистрирован: Пн июл 12, 2010 16:03:11

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

Сообщение Valek87 »

Т
GP1 писал(а):
Valek87 писал(а):МОжно же программу изменить так, чтобы эти программы выполнялись одновременно?

вот тут ты просто не понимаешь физики работы мк.
основная программа у тебя пустой цикл

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

;****************************************************
; ОСНОВНОЙ ЦИКЛ
;****************************************************
Inf:

     rjmp Inf              ;бесконечный цикл

в котором у тебя пока ничего кроме зацикливания хода выполнения не происходит, и лишь периодически, раз в 5 мс, переключается состояние светодиода (в прерывании)

Так куда мне прописать команду

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

rcall Choose_voltage  
, чтобы подключить эту подпрограму?
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

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

Сообщение Engineer_Keen »

Valek87 писал(а):
а чего не заменить на brne F4 ?

не. это требует программа.

В данном случае эффект будет один и тот-же, но код будет меньше и работать будет быстрее.

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

cpi r17, 0b00000000 ;сравниваем с 0
breq  V4 ;breq - переход, если равно на V4
rjmp F4 ;переход если не равно на F4
V4:  ;код если равно
F4:  ;код если не равно

=

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

cpi r17, 0b00000000 ;сравниваем с 0
brne  F4  ;переход если не равно на F4
V4:  ;код если равно
F4:  ;код если не равно
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

при том, чтобы выполнять параллельно 2е программы в системе должно быть 2 ядра, всего лишь.

И независимо от того, МК работает, или нормальный компьютер.

В данный момент времени может выполняться только один участок кода. Задача программиста - переключать эти участки в зависимости от логики программы, чтобы получить нужный результат.
Valek87
Встал на лапы
Сообщения: 136
Зарегистрирован: Пн июл 12, 2010 16:03:11

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

Сообщение Valek87 »

GP1 писал(а):ничего кроме зацикливания хода выполнения не происходит, и лишь периодически, раз в 5 мс, переключается состояние светодиода

А почему идет 5 мс, если настройки таймера выставлены на 1с?
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

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

Сообщение Engineer_Keen »

Valek87 писал(а):А почему идет 5 мс, если настройки таймера выставлены на 1с?

Это GP1 для наглядности сказал. При таких настройках, как я уже говорил, на скорости 8MHz получается 5 секунд (подпрограмма вызывается раз в 2.5с).
Аватара пользователя
IfoR
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Сб ноя 15, 2008 10:09:56
Откуда: г. Тула
Контактная информация:

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

Сообщение IfoR »

GP1 писал(а):
Valek87 писал(а):
GP1 писал(а):для этого нужно чтобы процессор был 2х ядерным :)))

это здесь причем?)))

при том, чтобы выполнять параллельно 2е программы в системе должно быть 2 ядра, всего лишь.


Ну так, используй псевдомногозадачность, Люк! :)))
Изображение
/dev/urandom - гигабайты информации.

OS: openSUSE 13.2 (x86_64)
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

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

Сообщение DX168B »

Valek87 писал(а):А ничего хорошего не получилось. (хотя компиляция прошла удачно) Мне кажется он до TIM1_COMPA вообще не доходит.(

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

; ***** INTERRUPT VECTORS ************************************************
.org  0x00 ;RESET
rjmp RESET
.org   INT0addr  ; External Interrupt Request 0
reti
.org   INT1addr    ; External Interrupt Request 1
reti
.org   INT2addr     ; External Interrupt Request 2
reti
.org   PCI0addr     ; Pin Change Interrupt Request 0
reti
.org   PCI1addr     ; Pin Change Interrupt Request 1
reti
.org   PCI2addr    ; Pin Change Interrupt Request 2
reti
.org   PCI3addr   ; Pin Change Interrupt Request 3
reti
.org   WDTaddr   ; Watchdog Time-out Interrupt
reti
.org   OC2Aaddr     ; Timer/Counter2 Compare Match A
reti
.org   OC2Baddr   ; Timer/Counter2 Compare Match B
reti
.org   OVF2addr      ; Timer/Counter2 Overflow
reti
.org   ICP1addr    ; Timer/Counter1 Capture Event
reti
.org   OC1Aaddr    ; Timer/Counter1 Compare Match A
rjmp TIM1_COMPA
.org   OC1Baddr     ; Timer/Counter1 Compare Match B
reti
.org   OVF1addr    ; Timer/Counter1 Overflow
reti
.org   OC0Aaddr  ; Timer/Counter0 Compare Match A
reti
.org   OC0Baddr     ; Timer/Counter0 Compare Match B
reti
.org   OVF0addr     ; Timer/Counter0 Overflow
reti
.org   SPIaddr   ; SPI Serial Transfer Complete
reti
.org   URXC0addr    ; USART0, Rx Complete
reti
.org   UDRE0addr     ; USART0 Data register Empty
reti
.org   UTXC0addr   ; USART0, Tx Complete
reti
.org   ACIaddr    ; Analog Comparator
reti
.org   ADCCaddr    ; ADC Conversion Complete
reti
.org   ERDYaddr     ; EEPROM Ready
reti
.org   TWIaddr     ; 2-wire Serial Interface
reti
.org   SPMRaddr   ; Store Program Memory Read
reti
.org   URXC1addr   ; USART1 RX complete
reti
.org   UDRE1addr   ; USART1 Data Register Empty
reti
.org   UTXC1addr   ; USART1 TX complete
reti


Ужасть :o :o
Уж так лучше:

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

.cseg
.org 0x0000
rjmp RESET
;----------
.org   OC1Aaddr    ; Timer/Counter1 Compare Match A
rjmp TIM1_COMPA
.org  OC1Baddr   ; Timer/Counter1 Compare Match B
rjmp TIM1_COMPB

;----------
.org INT_VECTORS_SIZE
;**************************
;*  SUB's                 *
;**************************
TIM1_COMPA:

reti
;----------
TIM1_COMPB:

reti
;**************************
;* MAIN POINT             *
;**************************
RESET:
ldi r16, Low(RAMend)
ldi r17, High(RAMend)
out SPL, r16
out SPH, r17
......

Лишнее меньше будет мельтешить перед глазами. :)
I am DX168B and this is my favourite forum on internet!
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

Это не лишнее. Это хороший тон в программировании. Если мешает - вынеси в отдельный файл.
Аватара пользователя
kotofeev
Нашел транзистор. Понюхал.
Сообщения: 167
Зарегистрирован: Ср янв 05, 2011 19:10:55

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

Сообщение kotofeev »

Посоветуйте пожалуйста хороший самоучитель по ассемблеру для AVR .
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Сообщение Gudd-Head »

kotofeev писал(а):самоучитель по ассемблеру

Это как? Описание команд есть у Евстифеева.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

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

Сообщение GP1 »

Абсолютно хорошего нет, везде свои косяки и залипоны, я бы рекомендовал начать с прочтения "Курса для начинающих" у DiHalt-а
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
kotofeev
Нашел транзистор. Понюхал.
Сообщения: 167
Зарегистрирован: Ср янв 05, 2011 19:10:55

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

Сообщение kotofeev »

А ссылку можно?
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Сообщение Gudd-Head »

kotofeev писал(а):А ссылку можно?

:) http://easyelectronics.ru/
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
kotofeev
Нашел транзистор. Понюхал.
Сообщения: 167
Зарегистрирован: Ср янв 05, 2011 19:10:55

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

Сообщение kotofeev »

Спасибо, буду изучать! :solder:
Ответить

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