Страница 39 из 400
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт апр 23, 2010 22:12:04
Gudd-Head
Mikhail писал(а):Я использовал этот кусок кода для датчика. И при симуляции в протеусе выдает ошибку (мк давит землю а датчик держит высокий уровень. Или наоборот.), и считывает все единицы.
Ну в код сейчас вчитываться у меня нет настроения
Не очень понятно "мк давит землю а датчик держит высокий уровень. Или наоборот.".
Я Делал на 8-ой Меге и все тайминги отмерял в тактах (1 такт = 1 мкс при работе от встроенного генератора 1 МГц). А, скажем, в АВР Студии прогоняли? Считывание информации происходит именно в рекомендованные моменты времени?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб апр 24, 2010 11:27:25
Pooher
Да, код читать не охота. Для начала - проверьте тактовую, наличие и номинал PULLUP.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Вс апр 25, 2010 15:00:30
Mikhail
Pooher писал(а):Да, код читать не охота. Для начала - проверьте тактовую, наличие и номинал PULLUP.
После прочтения этой статьи
http://radiokot.ru/articles/13/ я проверил все. Запустил симуляцию и нашел ошибку. Пауза в 2мкс на самом деле длилась 4.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт май 13, 2010 10:15:10
warrior2031
Можно ли в 8-битном контроллере оперировать 16-разрядными двоичными числами? Т.е. десятичными числами больше 255.
Поясню.
Есть некое десятичное число от 0 до 36000. Его я записываю в двух РОН. В одном мл. байт, в другом старший.
Дальше мне надо преобразовать его в двоично-десятичный код.
Для этого мне надо как-то вычесть из пятизначного десятичного числа сначала 10 000, потом 1 000, потом 100 и т.д. и считать сколько раз я вычту до получени отрицательного числа. Ну, это к примеру, можно, наверно, и по-другому как-то.
Могу ли я записать например в регистр X (состоящий из двух РОН) записать нужное мне для вычитаемое, в Y десятичное число и просто использовать команду вычитания из одного регистра другого?
Может имеет смысл использовать 16-битный контроллер? Насколько они дороже вообще?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт май 13, 2010 11:41:40
Meteor
Можно делать сложение/вычитание 16-разрядных чисел.
Сложение уже знаете add, adc
Вычитание можно реализовать либо командой sbiw, тогда это регистровые пары от 24 и выше,
либо "спаркой"
Т.е. вычитаем из младшего регистра значение младшего байта числа, а затем вычитаем с заемом из старшего регистра старшую часть числа (в данном примере это 10000).
МК большей разрядности стоит использовать лишь тогда, когда не хватает возможностей имеющихся.
А насколько я понял Вы еще стартуете, так что перестаньте бегать и освойте одну архитектуру. А когда станете разбираться досконально - тогда и решите вопрос перехода/освоения других типов МК
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт май 13, 2010 11:50:17
GP1
warrior2031
на оф.сайте ATMELа есть такая фигня, AVR204, там как раз то что тебе нужно.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт май 13, 2010 15:17:54
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
И здесь что и зачем происходит тоже не понимаю
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт май 13, 2010 15:27:24
GP1
Не ломай моск
Разбирался давненько, так что, что-почем сейчас и не вспомню.
Но если невтерпеж - загрузи в симулятор и погоняй, программа рабочая, я ее везде, где требуются BCD числа, леплю без переделок.
зы там должна быть одноименная pdf-ка с описанием алгоритмов.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт май 13, 2010 15:40:30
warrior2031
GP1 писал(а):
Не ломай моск
Разбирался давненько, так что, что-почем сейчас и не вспомню.
Но если невтерпеж - загрузи в симулятор и погоняй, программа рабочая, я ее везде, где требуются BCD числа, леплю без переделок.
зы там должна быть одноименная pdf-ка с описанием алгоритмов.
Да pdf смотрел. Что делают они пишут, но почему они делают именно это - не понятно.
Наверно, ты прав, загружу в AVR studio и буду гонять, думаю, так проще будет понять.
А пока в виде макроса её добавлю в код сразу, чтобы быстрее доделать полную программу.
Спасибо за помощь и внимание всем ответившим.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Чт май 13, 2010 15:46:01
GP1
зачем макрос
это же готовые п/п, просто добавь через #include после основного тела, лишнее сотрешь и все.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт май 21, 2010 17:57:10
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
почему то не компилится коддинг.
Компилятор вообще его не компилирует. Что делать?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт май 21, 2010 19:03:50
GP1
Чем компилиш?
АВР студия с полпинка откомпилировала

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт май 21, 2010 21:02:14
Arlleex
Привет.
Что за студия?
У меня студию не компилит.
Вот что выдает в окне:
*Предупреждение, картинка большого размера*
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт май 21, 2010 21:09:01
Meteor
Жень, по моему вся беда твоя в том что у тебя на все прерывания один выход. Обрати внимание что код приведенный ранее не соответствует тому что видно на картине
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт май 21, 2010 21:53:48
GP1
Stalker46 писал(а):Привет.
Что за студия?
У меня студию не компилит.
Вот что выдает в окне:
V4.18 b.684
по всей видимости у тебя сама студия колбасится, попробуй переустановить.
только дистрибутив бери с офиц. сайта.
ЗЫ: я так и не понял что ты хотел получить от этого кода

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт май 21, 2010 22:08:09
Arlleex
ммм, нажимаем на кнопку, загораются светодиоды...
Meteor
Привет, стер лишнее, тоже самое.
нет, GP1, я устанавливал студию версии 4.16 ... , но с диска AVR ISP mk2, тот что в комплекте с программатором идет.
Или там что то не то с софтом?
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт май 21, 2010 22:27:33
GP1
у тебя проблема не с кодом, а с самой студией.
хотя код тоже работать, так как ты пишешь, не будет

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Пт май 21, 2010 23:07:34
Arlleex
а почему?
ведь я проверяю значение регистра ПИН Д (он напрямую связан с внешним миром) а на ножке у меня подется 1, потом мы эту 1 заносим в РОН, проверяем условие, и переходим в случае ее истинности на мигание светодиодами...
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб май 22, 2010 11:57:35
GP1
Код: Выделить всё
pool:
ldi R17, 0b00000001 ;
out portb, r17
inc temp
rcall delay
rjmp pool
и где здесь мигание
однажды попав в этот цикл, ты в нем и останешся навсегда

Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб май 22, 2010 13:02:42
Arlleex
Дак мне это и надо:)
я как хочу.
Включили питание. Нажали на ресет.
Нажали кнопку- светодиоды мигают всегда, отображая дв. счетную последовательность...
Только вот в железе вывод, на который идет сигнал с кнопки, находится в 3 состоянии, и от наводки (трогание пальцем, отверткой), запускает мигание светодиодов... Что я не так сделал?
