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

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

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

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

Mikhail писал(а):Я использовал этот кусок кода для датчика. И при симуляции в протеусе выдает ошибку (мк давит землю а датчик держит высокий уровень. Или наоборот.), и считывает все единицы.

Ну в код сейчас вчитываться у меня нет настроения :)
Не очень понятно "мк давит землю а датчик держит высокий уровень. Или наоборот.".
Я Делал на 8-ой Меге и все тайминги отмерял в тактах (1 такт = 1 мкс при работе от встроенного генератора 1 МГц). А, скажем, в АВР Студии прогоняли? Считывание информации происходит именно в рекомендованные моменты времени?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Pooher
Мучитель микросхем
Сообщения: 491
Зарегистрирован: Вс янв 07, 2007 01:45:48
Откуда: Российская Федерация, будь она неладна...

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

Сообщение Pooher »

Да, код читать не охота. Для начала - проверьте тактовую, наличие и номинал PULLUP.
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Mikhail
Родился
Сообщения: 9
Зарегистрирован: Пт май 04, 2007 22:32:16
Откуда: Великий Новгород
Контактная информация:

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

Сообщение Mikhail »

Pooher писал(а):Да, код читать не охота. Для начала - проверьте тактовую, наличие и номинал PULLUP.

После прочтения этой статьи http://radiokot.ru/articles/13/ я проверил все. Запустил симуляцию и нашел ошибку. Пауза в 2мкс на самом деле длилась 4.
warrior2031
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Чт апр 22, 2010 13:06:03

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

Сообщение warrior2031 »

Можно ли в 8-битном контроллере оперировать 16-разрядными двоичными числами? Т.е. десятичными числами больше 255.

Поясню.

Есть некое десятичное число от 0 до 36000. Его я записываю в двух РОН. В одном мл. байт, в другом старший.
Дальше мне надо преобразовать его в двоично-десятичный код.

Для этого мне надо как-то вычесть из пятизначного десятичного числа сначала 10 000, потом 1 000, потом 100 и т.д. и считать сколько раз я вычту до получени отрицательного числа. Ну, это к примеру, можно, наверно, и по-другому как-то.

Могу ли я записать например в регистр X (состоящий из двух РОН) записать нужное мне для вычитаемое, в Y десятичное число и просто использовать команду вычитания из одного регистра другого?

Может имеет смысл использовать 16-битный контроллер? Насколько они дороже вообще?
I know what you're thinking. "Did he fire six shots or only five?"...
...you've got to ask yourself one question: "Do I feel lucky?" Well, do ya, punk?
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

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

Сообщение Meteor »

Можно делать сложение/вычитание 16-разрядных чисел.
Сложение уже знаете add, adc
Вычитание можно реализовать либо командой sbiw, тогда это регистровые пары от 24 и выше,
либо "спаркой"

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

subi ri, low(10000)
sbci rk, high(10000)

Т.е. вычитаем из младшего регистра значение младшего байта числа, а затем вычитаем с заемом из старшего регистра старшую часть числа (в данном примере это 10000).
МК большей разрядности стоит использовать лишь тогда, когда не хватает возможностей имеющихся.
А насколько я понял Вы еще стартуете, так что перестаньте бегать и освойте одну архитектуру. А когда станете разбираться досконально - тогда и решите вопрос перехода/освоения других типов МК
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

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

Сообщение GP1 »

warrior2031
на оф.сайте ATMELа есть такая фигня, AVR204, там как раз то что тебе нужно.
Чем дальше, тем больше становлюсь занудой...
Изображение
warrior2031
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Чт апр 22, 2010 13:06:03

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

Сообщение warrior2031 »

GP1 писал(а):warrior2031
на оф.сайте ATMELа есть такая фигня, AVR204, там как раз то что тебе нужно.


Большое спасибо за подсказку.

Тут Рассматривали эту же программу, но готовую в коде. Попробовал понять принцип - и разум мой зашел в тупик, к сожалению. Если есть такая возможность поясните.

.equ AtBCD0 =13 ;address of tBCD0
.equ AtBCD2 =15 ;address of tBCD1

.def tBCD0 =r13 ;BCD value digits 1 and 0
.def tBCD1 =r14 ;BCD value digits 3 and 2
.def tBCD2 =r15 ;BCD value digit 4
.def fbinL =r16 ;binary value Low byte
.def fbinH =r17 ;binary value High byte
.def cnt16a =r18 ;loop counter
.def tmp16a =r19 ;temporary value

;***** Code

bin2BCD16:
ldi cnt16a,16 ;Init loop counter
clr tBCD2 ;clear result (3 bytes)
clr tBCD1
clr tBCD0
clr ZH ;clear ZH (not needed for AT90Sxx0x)
bBCDx_1:lsl fbinL ;shift input value
rol fbinH ;through all bytes
rol tBCD0 ;
rol tBCD1
rol tBCD2
dec cnt16a ;decrement loop counter
brne bBCDx_2 ;if counter not zero
ret ; return


Ну, тут всё понятно.

bBCDx_2:ldi r30,AtBCD2+1 ;Z points to result MSB + 1 вот это что? Z указывает на результат наиболее значимого байта +1. Вижу что в ZL загрузили 16 зачем?
bBCDx_3:
ld tmp16a,-Z ;get (Z) with pre-decrement Вот это что? загружают в регистр значение из ячейки памяти с адресом 0F?
;----------
;For AT90Sxx0x, substitute the above line with:
;
; dec ZL
; ld tmp16a,Z
;
;----------
subi tmp16a,-$03 ;add 0x03
sbrc tmp16a,3 ;if bit 3 not clear
st Z,tmp16a ; store back
ld tmp16a,Z ;get (Z)
subi tmp16a,-$30 ;add 0x30
sbrc tmp16a,7 ;if bit 7 not clear
st Z,tmp16a ; store back
cpi ZL,AtBCD0 ;done all three?
brne bBCDx_3 ;loop again if not
rjmp bBCDx_1

И здесь что и зачем происходит тоже не понимаю
I know what you're thinking. "Did he fire six shots or only five?"...
...you've got to ask yourself one question: "Do I feel lucky?" Well, do ya, punk?
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

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

Сообщение GP1 »

:)))
Не ломай моск :shock:
Разбирался давненько, так что, что-почем сейчас и не вспомню.
Но если невтерпеж - загрузи в симулятор и погоняй, программа рабочая, я ее везде, где требуются BCD числа, леплю без переделок.

зы там должна быть одноименная pdf-ка с описанием алгоритмов.
Чем дальше, тем больше становлюсь занудой...
Изображение
warrior2031
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Чт апр 22, 2010 13:06:03

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

Сообщение warrior2031 »

GP1 писал(а)::)))
Не ломай моск :shock:
Разбирался давненько, так что, что-почем сейчас и не вспомню.
Но если невтерпеж - загрузи в симулятор и погоняй, программа рабочая, я ее везде, где требуются BCD числа, леплю без переделок.

зы там должна быть одноименная pdf-ка с описанием алгоритмов.


Да pdf смотрел. Что делают они пишут, но почему они делают именно это - не понятно.

Наверно, ты прав, загружу в AVR studio и буду гонять, думаю, так проще будет понять.
А пока в виде макроса её добавлю в код сразу, чтобы быстрее доделать полную программу.


Спасибо за помощь и внимание всем ответившим.
I know what you're thinking. "Did he fire six shots or only five?"...
...you've got to ask yourself one question: "Do I feel lucky?" Well, do ya, punk?
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

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

Сообщение GP1 »

зачем макрос :shock:
это же готовые п/п, просто добавь через #include после основного тела, лишнее сотрешь и все.
Чем дальше, тем больше становлюсь занудой...
Изображение
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

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

Сообщение Arlleex »

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

.include "tn2313def.inc"   ;

.def     Temp=R16
.def     Temp1=R17
.def     Temp2=R18
.def     Temp3=R19
.def     Temp4=R20

.cseg
.org 0
  ldi Temp,RamEnd       ;
          out SPL,Temp

ldi R16, 0b0000000
out DDRD, R16

test:
in R16, PIND ;
sbrs R16, 0
rjmp test

ldi temp, 0b11111111
out ddrb, temp

pool:
ldi R17, 0b00000001 ;
out portb, r17
inc temp
rcall delay
rjmp pool

;****************************************************
;????????

Delay:    out PortB,Temp

          ldi Temp1,0
          ldi Temp2,0
          ldi Temp3,2

Loop:     dec Temp1
          brne Loop

          dec Temp2
          brne Loop

          dec Temp3
          brne Loop
ret




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

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

Сообщение GP1 »

Чем компилиш?
АВР студия с полпинка откомпилировала :sleep:
Чем дальше, тем больше становлюсь занудой...
Изображение
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

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

Сообщение Arlleex »

Привет.
Что за студия?
У меня студию не компилит.
Вот что выдает в окне:
Изображение
*Предупреждение, картинка большого размера*
Не умеешь - не берись, но не взявшись не научишься...
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

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

Сообщение Meteor »

Жень, по моему вся беда твоя в том что у тебя на все прерывания один выход. Обрати внимание что код приведенный ранее не соответствует тому что видно на картине
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

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

Сообщение GP1 »

Stalker46 писал(а):Привет.
Что за студия?
У меня студию не компилит.
Вот что выдает в окне:

V4.18 b.684

по всей видимости у тебя сама студия колбасится, попробуй переустановить.
только дистрибутив бери с офиц. сайта.

ЗЫ: я так и не понял что ты хотел получить от этого кода :dont_know:
Чем дальше, тем больше становлюсь занудой...
Изображение
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

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

Сообщение Arlleex »

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

Meteor
Привет, стер лишнее, тоже самое.

нет, GP1, я устанавливал студию версии 4.16 ... , но с диска AVR ISP mk2, тот что в комплекте с программатором идет.
Или там что то не то с софтом?
Не умеешь - не берись, но не взявшись не научишься...
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

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

Сообщение GP1 »

у тебя проблема не с кодом, а с самой студией.
хотя код тоже работать, так как ты пишешь, не будет
:tea:
Чем дальше, тем больше становлюсь занудой...
Изображение
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

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

Сообщение Arlleex »

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

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

Сообщение GP1 »

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

pool: 
ldi R17, 0b00000001 ;
out portb, r17
inc temp
rcall delay
rjmp pool


и где здесь мигание :dont_know:
однажды попав в этот цикл, ты в нем и останешся навсегда :tea:
Чем дальше, тем больше становлюсь занудой...
Изображение
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

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

Сообщение Arlleex »

Дак мне это и надо:)
я как хочу.
Включили питание. Нажали на ресет.
Нажали кнопку- светодиоды мигают всегда, отображая дв. счетную последовательность...
Только вот в железе вывод, на который идет сигнал с кнопки, находится в 3 состоянии, и от наводки (трогание пальцем, отверткой), запускает мигание светодиодов... Что я не так сделал?
:)
Не умеешь - не берись, но не взявшись не научишься...
Ответить

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