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

Обсуждаем контроллеры компании Atmel.
Ответить
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

Kavka писал(а):К стати, уважаемый ARV вполне преуспел в освоении Eclipse.
тынц и тынц
У меня вообще иногда складывается ощущение, что ARV приплачивают за то, чтобы он целыми днями читал стандарты и осваивал что-то новое. :)))
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 444
Зарегистрирован: Вс ноя 28, 2010 15:18:52
Откуда: Минск

Сообщение ANALOG »

Если на асме и без пошаговой отладки - то Geany лучше всех! :)))
Реклама
Мудрый кот
Аватара пользователя
Сообщения: 1812
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение Kavka »

ИС-пытатель писал(а):У меня вообще иногда складывается ощущение, что ARV приплачивают за то, чтобы он целыми днями читал стандарты и осваивал что-то новое. :)))
Вовсе не обязательно. Просто иногда как забуришся в какие-нибудь дебри, почитаешь стандарты, "вкуришь" как следует, разберёшься. А потом можно и статью написать. По мотивам своих изысканий и разбирательств, так сказать. И чем человек опытнее тем больше у него изысканий о которых он может рассказать.
ИС-пытатель, ты, видать, ещё просто не дорос до такого состояния просветления :)) :)) :))
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

Kavka писал(а):ИС-пытатель, ты, видать, ещё просто не дорос до такого состояния просветления :)) :)) :))
Так скока мне лет, и скока ARV! )) У него фора пол моей жизни! ))
Реклама
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

ANALOG писал(а):Если на асме и без пошаговой отладки - то Geany лучше всех! :)))
почему именно он ? чем он так хорош ?
Tell Me The Truth
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 444
Зарегистрирован: Вс ноя 28, 2010 15:18:52
Откуда: Минск

Сообщение ANALOG »

FreshMan писал(а):почему именно он ? чем он так хорош ?
Ну по сравнению с большинством IDE преимущество в том, что не нужно создавать проекты/что-либо еще кроме исходника.
По сравнению с обычными текстовыми редакторами - в том, что можно так настроить, чтоб прошивка компилировалась/прошивалась в один клик мышки.
Не стану утверждать, что это самый лучший вариант (отсутствие отладки все-таки серьезный минус), возможно есть что-то и покруче, но меня вполне устраивает :)
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Эта среда рассчитана на однофайловые исходники? Если да, то это только для "поиграться".
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

Сообщение Мikа »

Добрый день, Коты. Не так давно я задавался вопросом, почему у меня не работают прерывания INT0 и INT1 на Atmega48. Погуглив нашёл вот такое рассуждение: http://www.cyberforum.ru/microcontrolle ... 98879.html

Проверил сам, результат получился следующий:

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

;Настройка прерывания INT1
		ldi Temp, 0b00001100 ; Прерывание по возрастающему фронту INT1
		STS EICRA, Temp
		ldi Temp, 0b00000010 ; Разрешение прерывания на INT1
		STS EIMSK, Temp 
;Этот вариант не работал. Это происходило из-за того, что при прерывании программа уходила не по тому адресу, то есть по той строке, где перечислены все прерывания:

.org 0
	rjmp reset
.org	INT0addr	; External Interrupt Request 0
	rjmp INT0_IRQ
.org	INT1addr	; External Interrupt Request 1
	rjmp INT1_IRQ
.org	PCI0addr	; Pin Change Interrupt Request 0
	rjmp PCI0_IRQ
.org	PCI1addr	; Pin Change Interrupt Request 0

; И т.д.

; Это я выяснил, когда все векторы прерывания отправил выполнять обработчик INT1.

;Но после того, как настройка прерывания приобретает следующий вид, всё начинает работать нормально:

ldi Temp, 0b00001100 ; Прерывание по возрастающему фронту INT1
		STS EICRA, Temp
		ldi Temp, 0b00000010 ; Разрешение прерывания на INT1
		out EIMSK, Temp 
;Просто загружаем значение Temp в EIMSK не через STS, а через out.
Вопрос решён, всё хорошо, но я хочу для себя понять, чем таким отличается STS от out? В справке по ассемблеру out - это загрузка в порт, STS - прямая запись. Я думал, что они отличаются "радиусом действия".
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Друг Кота
Аватара пользователя
Сообщения: 20117
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Надо лезть в m48def.inc смотреть какой там адрес присвоен регистру EIMSK.
Потому что для 8-й Меги у меня явно написано:

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

; NOTE:
; Definitions marked "MEMORY MAPPED"are extended I/O ports
; and cannot be used with IN/OUT instructions
Но у 8-ки все регистры достреливаются через IN/OUT. А вот как они объявлены у 128-й:
Спойлер

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

;*****************************************************************************
; I/O Register Definitions
;*****************************************************************************

;**** Memory Mapped I/O Register Definitions ($FF-$60) ****
.equ	UCSR1C	= $9D
.equ	UDR1	= $9C
.equ	UCSR1A	= $9B
.equ	UCSR1B	= $9A
.equ	UBRR1L	= $99
.equ	UBRR1H	= $98
.equ	UCSR0C	= $95
.equ	UBRR0H	= $90
.equ	TCCR3C	= $8C
.equ	TCCR3A	= $8B
.equ	TCCR3B	= $8A
.equ	TCNT3H	= $89
.equ	TCNT3L	= $88
.equ	OCR3AH	= $87
.equ	OCR3AL	= $86
.equ	OCR3BH	= $85
.equ	OCR3BL	= $84
.equ	OCR3CH	= $83
.equ	OCR3CL	= $82
.equ	ICR3H	= $81
.equ	ICR3L	= $80
.equ	ETIMSK	= $7D
.equ	ETIFR	= $7C
.equ	TCCR1C	= $7A
.equ	OCR1CH	= $79
.equ	OCR1CL	= $78
.equ	TWCR	= $74
.equ	TWDR	= $73
.equ	TWAR	= $72
.equ	TWSR	= $71
.equ	TWBR	= $70
.equ	OSCCAL	= $6F
.equ	XMCRA	= $6D
.equ	XMCRB	= $6C
.equ	EICRA	= $6A
.equ	SPMCSR	= $68
.equ	SPMCR	= $68		; old name for SPMCSR
.equ	PORTG	= $65
.equ	DDRG	= $64
.equ	PING	= $63
.equ	PORTF	= $62
.equ	DDRF	= $61

;**** I/O Register Definitions ($3F-$00) ****
.equ	SREG	= $3F
.equ	SPH		= $3E
.equ	SPL		= $3D
.equ	XDIV	= $3C
.equ	RAMPZ	= $3B
.equ	EICRB	= $3A
.equ	EIMSK	= $39
.equ	GIMSK	= $39		; old name for EIMSK
.equ	GICR	= $39		; old name for EIMSK
.equ	EIFR	= $38
.equ	GIFR	= $38		; old name for EIFR
.equ	TIMSK	= $37
.equ	TIFR	= $36
.equ	MCUCR	= $35
.equ	MCUCSR	= $34
.equ	TCCR0	= $33
.equ	TCNT0	= $32
.equ	OCR0	= $31
.equ	ASSR	= $30
.equ	TCCR1A	= $2F
.equ	TCCR1B	= $2E
.equ	TCNT1H	= $2D
.equ	TCNT1L	= $2C
.equ	OCR1AH	= $2B
.equ	OCR1AL	= $2A
.equ	OCR1BH	= $29
.equ	OCR1BL	= $28
.equ	ICR1H	= $27
.equ	ICR1L	= $26
.equ	TCCR2	= $25
.equ	TCNT2	= $24
.equ	OCR2	= $23
.equ	OCDR	= $22		; New
.equ	WDTCR	= $21
.equ	SFIOR	= $20		; New
.equ	EEARH	= $1F
.equ	EEARL	= $1E
.equ	EEDR	= $1D
.equ	EECR	= $1C
.equ	PORTA	= $1B
.equ	DDRA	= $1A
.equ	PINA	= $19
.equ	PORTB	= $18
.equ	DDRB	= $17
.equ	PINB	= $16
.equ	PORTC	= $15
.equ	DDRC	= $14		; New
.equ	PINC	= $13		; New
.equ	PORTD	= $12
.equ	DDRD	= $11
.equ	PIND	= $10
.equ	SPDR	= $0F
.equ	SPSR	= $0E
.equ	SPCR	= $0D
.equ	UDR0	= $0C
.equ	UCSR0A	= $0B
.equ	UCSR0B	= $0A
.equ	UBRR0L	= $09
.equ	ACSR	= $08
.equ	ADMUX	= $07
.equ	ADCSR	= $06
.equ	ADCH	= $05
.equ	ADCL	= $04
.equ	PORTE	= $03
.equ	DDRE	= $02
.equ	PINE	= $01
.equ	PINF	= $00
Вроде в железе они идут подряд, но в описаниях есть скачок $3F — $60.
Это связано с тем, что РВВ идут после РОН, и если абсолютный адрес у младшего РВВ по-настоящему $20 (для команды STS/LDS), то относительный (с которым работают команды IN/OUT) — $00.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 343
Зарегистрирован: Пн апр 01, 2013 15:13:40
Откуда: Москва

Сообщение Мikа »

Не могу сказать что понял всё (в силу своего не знания), но в целом понятно в чём дело, спасибо :)
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Друг Кота
Аватара пользователя
Сообщения: 20117
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

В двух словах: для разных команд должен быть разный адрес регистра.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Открыл глаза
Аватара пользователя
Сообщения: 64
Зарегистрирован: Ср июн 20, 2012 10:49:46
Откуда: Україна, Черкаська область

Сообщение КотЭ Мужчина »

Драсте радиохвостатые! У меня трабла - сварганил я самодельную плату, на фото (ну отладочной ее никак не назвеш, из-за ее аскетичности), прошиваю ATmega8A програматором USBASP 2.0 , дык все прошивки, написанные на Си, работают на ура, все мигает тыры-пыры, а когда асемблерные прошивки запихаю, то ничерта не работает. Прошивка осуществляется через ProgISP, там в Low-программировании вообще не распознается МК, а на High-программировании распознается и проги норм работают тока сишные. В чем проблема? Может дело в том, што у меня светодиод, што висит на SCK, без резистора прям на землю, и давит сигнал?
Изображение
Betelgeuse
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

светодиоды - да, нужно через резисторы подключать. А вот то, что прошивка не работает - так это не правильно написанная прошивка.
Друг Кота
Аватара пользователя
Сообщения: 4966
Зарегистрирован: Сб май 05, 2012 20:19:55
Откуда: Минск

Сообщение Seriyvolk »

КотЭ Мужчина писал(а): прошиваю ATmega8A програматором USBASP 2.0
Скачай себе eXtreme Burner AVR и не мучайся.
http://extreme-burner-avr.software.info ... d/?ca73472
Прибор, защищённый предохранителем, сгорает первым, защитив предохранитель. Закон Мерфи.
Открыл глаза
Аватара пользователя
Сообщения: 64
Зарегистрирован: Ср июн 20, 2012 10:49:46
Откуда: Україна, Черкаська область

Сообщение КотЭ Мужчина »

Асмовая прошивка правильно составлена, в Протеусе работает, работала и в МК, зашитая Програматором Громова +Uniprof. Но так как у меня китаянский USBASP, то с нима работает тока ProgISP. Пишу в AVR Studio 4, 5, Atmel Studio 6 - результат один и тот же. Сишные прошивки работают, а асмовые - нет.
Betelgeuse
Контактная информация:
Открыл глаза
Аватара пользователя
Сообщения: 64
Зарегистрирован: Ср июн 20, 2012 10:49:46
Откуда: Україна, Черкаська область

Сообщение КотЭ Мужчина »

Забыл еще сказать - асмовые прошивки, у которых нет задержек типо
Delay:
out PortC,r16;
ldi r17,0;
ldi r18, 1;
ldi r19,3;
Loop:;.... и тд и тп
Из задержками не хотят работать мигалки - первый светоидиот загорается и все, ступор.
Betelgeuse
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

мля, ну, как может программатор залить вам кривую прошивку? что вы тут сказки рассказываете? либо он вообще ее не зальет, либо зальет полностью. Есть вариант залить с ошибкой, если скорость очень большая, но для этого есть галочка "верификация" записи и кнопка "сравнить".
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

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

"загорелся и все..." а может, он вместо секунды горит 30 секунд, вы просто не дожидаетесь когда задержка отработает. Проверьте все что влияет на выполнение программы, каждый бит и каждую особенность.
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

А может наоборот, из-за маленькой задержки мигает с такой большой частотой, то Вам кажется, что он горит постоянно
Ответить

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