Обсуждаем контроллеры компании Atmel.
Ответить

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

Вт мар 06, 2018 12:47:19

1. Сохранить при входе в прерывание SREG и R17..R19 (при необходимости)
2. Очистить запрос на прерывание PCIF в GIFR

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

Вт мар 06, 2018 13:10:45

1. Сохранить при входе в прерывание SREG и R17..R19 (при необходимости)
2. Очистить запрос на прерывание PCIF в GIFR

Нет, не помогает

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

Вт мар 06, 2018 13:18:14

2. Очистить запрос на прерывание PCIF в GIFR

Нет, не помогает

При выходе из прерывания

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

Вт мар 06, 2018 13:28:07

Ответили выше, удалил.
Последний раз редактировалось akl Вт мар 06, 2018 14:13:01, всего редактировалось 1 раз.

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

Вт мар 06, 2018 13:33:56

При выходе из прерывания


Спасибо, все работает.
Простите, вы не могли бы объяснить почему есть разница в каком месте обработчика происходит сброс флага?

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

Вт мар 06, 2018 15:57:10

При входе в прерывание флаг сбрасывается автоматически, но если прерывание длительное, возможно повторное взведение флага при наличии дребезга во время выполнение прерывания.

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

Вт мар 06, 2018 18:26:27

в комментарии перепутаны вход с выходом:
ldi temp, (1<<PB0)|(0<<PB3) ;PB0 - вход, PB3 - выход

int_isr: cli ;Запрет прерываний
когда МК находится в прерывании, ВСЕ прерывания и так уже запрещены. лишняя команда.

return: sei ;Разрешение прерываний
reti ;Выход
reti разрешает прерывания, дополнительно их разрешать не надо. опять лишняя команда.

не знаю, как ты считал задержку, но у меня там никак не получается 50 мс...

навскидку, не вижу причин, чтобы не работало.

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

Вт мар 06, 2018 21:26:44

в комментарии перепутаны вход с выходом:
ldi temp, (1<<PB0)|(0<<PB3) ;PB0 - вход, PB3 - выход

Да, действительно ошибся.

когда МК находится в прерывании, ВСЕ прерывания и так уже запрещены. лишняя команда.
reti разрешает прерывания, дополнительно их разрешать не надо. опять лишняя команда.

Я слышал о таком, но оставил на всякий случай. Вдруг, чего-то не так услышал.

не знаю, как ты считал задержку, но у меня там никак не получается 50 мс...

Считала программа, я сам весьма туманно представляю как такое рассчитывается. Но скажем, секундные задержки вполне адекватны.

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

Вт мар 06, 2018 21:37:29

какая программа считала задержку? и какую тактовую частоту ты задавал этой программе?

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

Вт мар 06, 2018 21:59:03

Частота 9 600 000, CKDIV8 выключен.
Программа вот эта
Вложения
avr_loop.PNG
(9.51 KiB) Скачиваний: 547

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

Ср мар 07, 2018 02:05:33

Ассемблер сам справляется с такими примитивами. :)
Спойлер
Код:
;----- Подпрограмма задержки -----
.equ   Fo=9600000
;<442 сек
DELAY_ms:
   LDI   R17,BYTE4(50*Fo/1000/6-1)
   LDI   R18,BYTE3(50*Fo/1000/6-1)
   LDI   R19,BYTE2(50*Fo/1000/6-1)
   LDI   R20,BYTE1(50*Fo/1000/6-1)
LOOP_ms:
   SUBI   R20,BYTE1(1)
   SBCI   R19,BYTE2(1)
   SBCI   R18,BYTE3(1)
   SBCI   R17,BYTE4(1)
   BRNE   LOOP_ms
   RET
;<1,7 сек
DELAY_us:
   LDI   R17,BYTE3(50*Fo/1000000/5-1)
   LDI   R18,BYTE2(50*Fo/1000000/5-1)
   LDI   R19,BYTE1(50*Fo/1000000/5-1)   ;50us
LOOP_us:
   SUBI   R19,BYTE1(1)
   SBCI   R18,BYTE2(1)
   SBCI   R17,BYTE3(1)
   BRNE   LOOP_us
   RET

;<6,8 мсек
DEL_us:
   LDI   R18,BYTE2(50*Fo/1000000/4-2)
   LDI   R19,BYTE1(50*Fo/1000000/4-2)   ;50us
LP:
   SUBI   R19,BYTE1(1)
   SBCI   R18,BYTE2(1)
   BRNE   LP
   RET

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

Ср мар 07, 2018 22:42:24

Это не ассемблер справляется, а препроцессор.

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

Чт мар 08, 2018 05:03:52

СпойлерИзображение

На картинке не вижу где avrasm32, будучи запущенный из командной строки, обращается к препроцессору.
Вложения
avrasm32.PNG
(22.71 KiB) Скачиваний: 410

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

Чт мар 08, 2018 09:01:14

А зачем ему обращаться к препроцессору? Он же в него встроен.

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

Вс мар 11, 2018 00:57:35

Вопрос, немножко не про контроллеры, но про ассемблер AVR.
Есть компилятор языка C, который доустанавливается к 4-й Студии, и вот в составе компилятора есть файл avr-as.exe. Я так понял это некий, не-атмеловский ассемблер AVR. Пытался его использовать - на любом, в т.ч нормальной файле сыпет ошибками, и компилять не хочет. Пытался искать про него - чего-то никакого руководства по нему нет. Может, кто знает, может есть такое?

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

Вс мар 11, 2018 11:40:03

https://www.google.ru/url?sa=t&rct=j&q= ... OB0uB7trFe подойдет?

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

Вс мар 11, 2018 17:10:33

Понял... это не ассемблер.
А похож был.

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

Вс мар 11, 2018 18:37:21

и вот в составе компилятора есть файл avr-as.exe. Может, кто знает, может есть такое?

Это AVR GAS ассемблер. Его синтаксис не совместим с ассемблером студии. Работает как бэкенд GCC компилятора.
можете попробовать закинуть в него такой исходник:
Код:
.equ DDRB,  0x17
.equ PB0,   0x00
.equ PORTB, 0x18
.org 0x00                   
        sbi     DDRB, PB0
        ldi     r25, 0x01
loop:
        in      r24, PORTB
        eor     r24, r25
        out     PORTB, r24
        ldi     r18, 0x3F
        ldi     r19, 0x0D
        ldi     r24, 0x03
delay:
        subi    r18, 0x01
        sbci    r19, 0x00
        sbci    r24, 0x00
        brne    delay
        rjmp    loop

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

Пт мар 16, 2018 15:09:47

Доброго времени суток всем форумчанам. Возникла идея устройства на тини 2313 для управления светодиодной матрицей 32х32. Всем она подошла, кроме обьема памяти. Решил вынести масивы данных для матрицы на внешний носитель. Шаря по просторам тырнета, нашол уйму статей по подключению сд карты к МК, но все примеры в статьях написаны на сях. :shock:

Из вышесказанного вытекает пара вопросов:

Мож у кого-то завялялся кусок кода по инициализации и работе с картой? (для наглядного примера)
И как записать данные на карту? (ведь по сути мне нужен массив чисел)

Что бы было меньше каментов типа МК не потянет, сразу скажу - есть проэкт подключения карты к тини (к сожалению тож на сях :( )

http://www.getchip.net/posts/087-attiny ... ng-device/

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

Пт мар 16, 2018 15:26:12

Jetetex писал(а):Возникла идея устройства на тини 2313 для управления светодиодной матрицей 32х32. Всем она подошла, кроме обьема памяти. Решил вынести масивы данных для матрицы на внешний носитель.
купите какую нибудь мегу и не ищите проблем, "головная боль" и потраченное время обойдутся дороже.
Ответить