Например TDA7294

Форум РадиоКот • Просмотр темы - Ассемблер (ASM) для AVR в вопросах и ответах
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пт дек 19, 2025 12:06:16

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 7956 ]     ... , , , 149, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт авг 14, 2012 11:56:43 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1066
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19986
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Челюскин писал(а):
что такое м.б.?

"может быть"
Челюскин писал(а):
а в даташите есть абсоютный адрес?

в даташите ВСЁ есть.

Ебааать...
Код:
.equ   kdel = 200 ;
...
      out      OCR1AH, high(kdel)   ; Записать ст. байт коэфф.деления
      out      OCR1AL, low(kdel)   ; Записать мл. байт коэфф.деления

Что это??? :facepalm:

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт авг 14, 2012 12:03:41 
Прорезались зубы

Зарегистрирован: Ср ноя 03, 2010 14:46:17
Сообщений: 209
Рейтинг сообщения: 0
Gudd-Head писал(а):
Код:
.equ   kdel = 200 ;
...
      out      OCR1AH, high(kdel)   ; Записать ст. байт коэфф.деления
      out      OCR1AL, low(kdel)   ; Записать мл. байт коэфф.деления

Что это??? :facepalm:


:oops: :oops: :oops: и.... как нужно?
(я пытался даже для самого себя их просто очистить "clr" вообще в исходной проге было косвенное чтение из таблицы типа:
Table: .dw 1000, 1100, 1200; ну и так далее с вычислением адреса......
э..э в них я так понял нельзя непосредственно писать значения?

_________________
Лень - двигатель прогресса!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт авг 14, 2012 12:04:56 
Друг Кота

Карма: 64
Рейтинг сообщений: 1020
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4369
Откуда: Ижевск
Рейтинг сообщения: 0
Нельзя в AVR командой OUT переслать константу. Ведь выше и ниже этих строк идет правильная установка
Код:
;##    генератор сигнала 20000кГц           ##

.equ   kdel = 200 ;
m3:      
      out      OCR1AH, high(kdel)   ; Записать ст. байт коэфф.деления ??????????????
      out      OCR1AL, low(kdel)   ; Записать мл. байт коэфф.деления ????????????

      ldi      temp, 0x40      ; Включить сигнал !!!!!!!!!!!!!!!!
      out      TCCR1A, temp;
      rjmp   main;


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт авг 14, 2012 12:09:00 
Прорезались зубы

Зарегистрирован: Ср ноя 03, 2010 14:46:17
Сообщений: 209
Рейтинг сообщения: 0
секунду, попробую....

_________________
Лень - двигатель прогресса!


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт авг 14, 2012 12:15:25 
Прорезались зубы

Зарегистрирован: Ср ноя 03, 2010 14:46:17
Сообщений: 209
Рейтинг сообщения: 0
Было: out OCR1AH, high(kdel) ; Записать ст. байт коэфф.деления
out OCR1AL, low(kdel) ; Записать мл. байт коэфф.деления
в итоге хрен а не компиляция!


Стало:
ldi temp, high(kdel);
out OCR1AH, temp ;
ldi temp, low(kdel)
out OCR1AL, temp ;

ldi temp, 0x40 ;
out TCCR1A, temp;
rjmp main;
Отсюда вывод - учить мне матчасть.!!!
Спаибо за помощь, господа. :beer: вроде понял в чем дело

_________________
Лень - двигатель прогресса!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт авг 14, 2012 12:20:37 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1066
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19986
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Если ещё не скачали, то обязательно скачайте себе книгу "Микроконтроллеры AVR семейства Tiny Mega фирмы Atmel" А.В.Евстифеев , там подробно описаны команды, в т.ч. ограничение их действия.

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт авг 14, 2012 12:23:53 
Прорезались зубы

Зарегистрирован: Ср ноя 03, 2010 14:46:17
Сообщений: 209
Рейтинг сообщения: 0
Gudd-Head, спасибо огромное за совет. Прямо сейчас и сделаю!

_________________
Лень - двигатель прогресса!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт авг 14, 2012 12:40:02 
Друг Кота

Карма: 28
Рейтинг сообщений: 568
Зарегистрирован: Чт май 05, 2011 21:26:34
Сообщений: 4550
Откуда: Украина, Славутич
Рейтинг сообщения: 0
Там не из любого регистра можно вывести в порт, надо использовать регистры с 16 по 31.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт авг 14, 2012 12:47:35 
Друг Кота

Карма: 64
Рейтинг сообщений: 1020
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4369
Откуда: Ижевск
Рейтинг сообщения: 0
Неправильно. Можно ввести и вывести в любой/из любого РОН. Источник
СпойлерИзображение
Вложение:
IN_OUT_AVR.GIF


Последний раз редактировалось akl Вт авг 14, 2012 13:31:30, всего редактировалось 2 раз(а).

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт авг 14, 2012 13:02:35 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1066
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19986
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
akl писал(а):
Неправильно. Можно ввести и вывести в любой/из любого РОН.

Видимо, имелась в виду связка ldi - out.

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт авг 14, 2012 22:29:37 
Держит паяльник хвостом
Аватар пользователя

Карма: 15
Рейтинг сообщений: 70
Зарегистрирован: Ср мар 28, 2012 21:45:24
Сообщений: 906
Откуда: ВО
Рейтинг сообщения: 0
Alexeyslav писал(а):
надо использовать регистры с 16 по 31.
Не важно.
Цитата:
имелась в виду связка ldi - out.
Но можно и без нее.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт авг 17, 2012 19:00:16 
Прорезались зубы

Зарегистрирован: Ср ноя 03, 2010 14:46:17
Сообщений: 209
Рейтинг сообщения: 0
Подскажите, пожалуйста как организовать такой обмен через USART (оба MK - tiny2313V).
1. ведущее ус-во посылает байт.
2. ждет ответа от ведомого, если он не приходит, то через (ну 1-2 сек) посылает опять..

Написал проги для ведомого и ведущего, вот никак не соображу как сделать эту задержку. Про прерывания по приёму и таймеру пока только мечтаю, уж извините. Можно ли тут организовать простую задержку путем декремента регистров? и еще - в даташите даны примеры для USART - прием байта и передача, они являются жестко связанными, или в них можно что-то изменить, ту же задержку добавить?

_________________
Лень - двигатель прогресса!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт авг 17, 2012 20:38:16 
Держит паяльник хвостом
Аватар пользователя

Карма: 15
Рейтинг сообщений: 70
Зарегистрирован: Ср мар 28, 2012 21:45:24
Сообщений: 906
Откуда: ВО
Рейтинг сообщения: 0
Цитата:
1. ведущее ус-во посылает байт.

Задержку - можете сделать и вычитанием
Для мастера.
Спойлер
Код:
.include "tn2313def.inc"
;*************************************************
;*          ;;/Начальные установки ;;*          *
;*************************************************
   rjmp RESET      ; Reset Handler
   /*
   rjmp INT0      ; External Interrupt0 Handler
   rjmp INT1      ; External Interrupt1 Handler
   rjmp TIM1_CAPT   ; Timer1 Capture Handler
   rjmp TIM1_COMPA ; Timer1 CompareA Handler
   rjmp TIM1_OVF   ; Timer1 Overflow Handler
   rjmp TIM0_OVF   ; Timer0 Overflow Handler
   */
.org URXCaddr
   rjmp USART0_RXC ; USART0 RX Complete Handler
/*
   rjmp USART0_DRE ; USART0,UDR Empty Handler
   rjmp USART0_TXC ; USART0 TX Complete Handler
   rjmp ANA_COMP   ; Analog Comparator Handler
   rjmp PCINT0      ; PCINT0 Handler
   rjmp TIMER1_COMPB   ; Timer1 Compare B Handler
   rjmp TIMER0_COMPA ; Timer0 Compare A Handler
   rjmp TIMER0_COMPB ; Timer0 Compare B Handler
   rjmp USI_START ; USI Start Handler
   rjmp USI_OVERFLOW ; USI Overflow Handler
.org ERDYaddr
   rjmp EEPROM_WR ; EEPROM Write
   rjmp WDT_OVERFLOW ; Watchdog Overflow Handler
   rjmp PCINT1 ; PCINT1 Handler
   rjmp PCINT2 ; PCINT2 Handler
   */
RESET:
      cli
      outi   ACSR,0x80
;**************************************************
;*         ;;/Initialization USART0;;*           *
;**************************************************
      ldi      temp,HIGH((SYSCLK/(16*USARTSPEED))-1)   ; для 9600 - - 0x47
      outr   UBRRH,temp
      ldi      temp,LOW((SYSCLK/(16*USARTSPEED))-1)
      outr   UBRRL,temp
      outi   UCSRB,1<<RXCIE|1<<RXEN|1<<TXEN
      outi   UCSRC,1<<UCSZ1|1<<UCSZ0
;+Установки USART - 9600 8-N-1
                ldi temp,байт
MAIN:
                out     UDR,temp
                rcall   ЗАДЕРЖКА
                rjmp  main
;************************************************
;*                ;;+USART;;*              *
;************************************************
USART0_RXC:
      in      SaveSreg,SREG
      in      temp,UDR
      sbr      Flags,1<<fl_RdyRX
      out      UDR,temp
      out      SREG,SaveSreg
      А вот куда уйти из прерывания Вы не написали


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт авг 17, 2012 21:28:56 
Прорезались зубы

Зарегистрирован: Ср ноя 03, 2010 14:46:17
Сообщений: 209
Рейтинг сообщения: 0
Спасибо, я, правда, прерывания не очень пока понимаю. Стало быть можно вклинить задержку в процедуру опроса флага и приема байта USART?

Priem:
sbis UCSRA, RXC;
rjmp Priem;
in temp, UDR;
ret;

все по даташиту... куда можно вставит задержку?

_________________
Лень - двигатель прогресса!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Пт авг 17, 2012 23:02:20 
Держит паяльник хвостом
Аватар пользователя

Карма: 15
Рейтинг сообщений: 70
Зарегистрирован: Ср мар 28, 2012 21:45:24
Сообщений: 906
Откуда: ВО
Рейтинг сообщения: 0
Челюскин писал(а):
2. ждет ответа от ведомого, если он не приходит, то через (ну 1-2 сек) посылает опять..

Код:
Priem:
sbis    UCSRA,  RXC;
rjmp  Priem;
in  temp,  UDR;
ret;

все по даташиту... куда можно вставит задержку?

Этот кусок кода Вам надо вставить в подпрограмму задержки. Почему. У Вас процессор выполняет одновремено две задачи. Ждёт ответ slave и считает секунды. В Вашем случае , без прерываний, нужно чтобы проверку на прием и проверку на истечение времени процессор обрабатывал вместе.

Ну типа так
Код:
ldi теmp, 0xff ;Величина задержки для примера , сами напишите сколько Вам надо  и сколько регистров потребуется для задержки 1 сек Лень - двигатель прогресса!
DELAY:
sbic    UCSRA,  RXC
rjmp  END
subi     temp,1   ;В отличие от dec команды sub и subi выставляют + ещё флаг С - привыкайте лучше к ним
brcc    DELAY
out     UDR,temp ;Согласно Вашему- то через (ну 1-2 сек) посылает опять..
rjmp   DELAY
END:   
To куда-то


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Сб авг 18, 2012 00:01:02 
Друг Кота

Карма: 28
Рейтинг сообщений: 568
Зарегистрирован: Чт май 05, 2011 21:26:34
Сообщений: 4550
Откуда: Украина, Славутич
Рейтинг сообщения: 0
Тут надо определится. Ведь подпрограмма у тебя одна, как при выходе из подпрограммы основная программа узнает что выход был по таймауту а не по считыванию данных? Надо заводить где-то признак или отводить под это целый регистр.

Ну а сама реализация... проще некуда - собственно прием данных осуществляется как? сначала проверяется приняты ли данные(один бит спецрегистра) если данные приняты - происходит считывание и выход, если нет - переход на проверку приняты ли данные. У тебя вместо этого перехода надо осуществить переход на подпрограмму формирования задержки скажем в 1мс и отсчет количества этих задержек - если этот алгоритм насчитал 2000 раз значит выставить признак таймаута и выйти с подпрограммы. Перед тем как зацикливаться конечно надо обнулить счетчик и сбросить признак таймаута.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Сб авг 18, 2012 11:40:39 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 889
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 6200
Откуда: Minsk
Рейтинг сообщения: 0
Челюскин писал(а):
Можно ли тут организовать простую задержку путем декремента регистров?


Можно, но не нужно. Тупо считать задержку вычитанием, при этом остальной процесс останавливается - это очень уж по школярски. Попробуй прерывания, это не так и сложно. Один раз сделаешь - пот`ом от них за уши не оттащишь :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Сб авг 18, 2012 12:24:56 
Вымогатель припоя
Аватар пользователя

Карма: 5
Рейтинг сообщений: 74
Зарегистрирован: Пн июн 18, 2012 12:01:04
Сообщений: 650
Откуда: Челябинская область, Копейск
Рейтинг сообщения: 0
На самом деле, прерывания это просто:

Вектор прерывания:

...
rjmp USART_Rx_Complete ; USART,RXC USART, прием завершен
...

Кусок кода в программе:

...
ori r16, (1<<RXCIE) ; включаем прерывания
out UCSRB,r16 ;
...

Обработчик прерывания:

USART_Rx_Complete:
in r18, UDR ; загружаем принятые данные из буфера
...
reti


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс авг 19, 2012 16:58:37 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 106
Зарегистрирован: Ср фев 22, 2012 01:25:21
Сообщений: 882
Рейтинг сообщения: 0
Сообразил тут декодер радиоканала на тиньке 13-й, в двух вариантах, на С и на асме, так вот мож кому интересно будет узнать, разница в весе кода - больше чем в 2 раза, на С - 870 байт, а на асме тоже самое - 420 байт.....
Помоему асма остается актуальной для таких мелкашек как tiny13

http://asis-kbr.ru/forum/viewtopic.php?f=9&t=122


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср авг 22, 2012 11:13:22 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 52
Зарегистрирован: Чт дек 31, 2009 19:27:45
Сообщений: 842
Откуда: Бровари, Україна
Рейтинг сообщения: 0
Я даже больше скажу -- если написать на асме программу размером байт десять, то С-шный вариант проиграет раз в пять-восемь, так как С (по крайней мере WinAVR) и всю таблицу прерываний заполняет переходом на ловушку необработанных прерываний, и прочие «общеподготовительные» вещи могут место занять. Т.е. у С-шной программы даже без желания автора обычно несколько другой функционал.

И на малых программах асм позволяет почти все переменные в регистрах разместить.

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

Никаких противоречий со сказанным ранее про асм и С :-)
Для tiny13, tiny26, tiny24 я и сам на асме пишу -- когда нужно вылизывать такты/потребление.
А когда не нужно — то лишь бы влезло.

Кстати, если оно на С под WinAVR или без особой привязке к компилятору, если можно — в личку оба проекта, я посмотрю, что можно сделать с С-шным вариантом.

Увидел всё по линку, гляну по свободе. На носу куча выходных :-)

_________________
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 7956 ]     ... , , , 149, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 29


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y