Например TDA7294

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





Текущее время: Ср июл 23, 2025 05:35:19

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


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



Начать новую тему Ответить на тему  [ Сообщений: 7956 ]     ... , , , 261, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс окт 11, 2015 08:45:05 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Сб ноя 19, 2011 20:13:47
Сообщений: 151
Откуда: Тамбов
Рейтинг сообщения: 0
Здравия желаю, уважаемые.
Вот тут я нашел почти то, что хотел. Единственное - хотелось бы чтобы состояние порта возвращалось в исходное через 5 секунд после переключения из браузера.
Обратился к автору - он не ответил :(
Пробовал сам - не понимаю. Ассемблер мне не дается от слова совсем :(
Был бы очень признателен уважаемым котам, если бы смогли поправить проект. И ещё больше был бы признателен, если бы рассказали как :)


Вложения:
tinyhttp.zip [12.72 KiB]
Скачиваний: 119

_________________
Демократии нет и не будет!
Государство - это я!
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс окт 11, 2015 10:21:34 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 44
Зарегистрирован: Вс авг 30, 2015 03:52:59
Сообщений: 469
Рейтинг сообщения: 0
xorkrus писал(а):
Пробовал сам - не понимаю. Ассемблер мне не дается от слова совсем.
Так напишите на Си, кто заставляет ограничиваться асмом?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс окт 11, 2015 12:10:54 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Сб ноя 19, 2011 20:13:47
Сообщений: 151
Откуда: Тамбов
Рейтинг сообщения: 0
Pnjom-Penb писал(а):
Так напишите на Си, кто заставляет ограничиваться асмом?

Atmel. Места в тиньке2313 маловато.

_________________
Демократии нет и не будет!
Государство - это я!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс окт 11, 2015 14:16:51 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 44
Зарегистрирован: Вс авг 30, 2015 03:52:59
Сообщений: 469
Рейтинг сообщения: -2
Его в ней 2К, независимо от языка программирования.


Вернуться наверх
 
Выбираем индустриальные и медицинские источники питания MEAN WELL в открытом исполнении

Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс окт 11, 2015 14:54:42 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Сб ноя 19, 2011 20:13:47
Сообщений: 151
Откуда: Тамбов
Рейтинг сообщения: 0
Pnjom-Penb
Я вас понял. Сложно помочь - так и скажите. Если бы сумел уложиться в 2кб, то не обращался бы за помощью к таким проектам, а сделал бы все сам. Но увы не все являются супер программистами. Снимаю свой вопрос.

_________________
Демократии нет и не будет!
Государство - это я!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вс окт 11, 2015 20:28:53 
Мучитель микросхем

Карма: 3
Рейтинг сообщений: 44
Зарегистрирован: Вс авг 30, 2015 03:52:59
Сообщений: 469
Рейтинг сообщения: 0
xorkrus писал(а):
Сложно помочь - так и скажите.
Именно помочь я и пытаюсь, однако, Вы же ищете не помощи, а того, чтобы кто-то сделал все вместо вас. Этого мне делать некогда. Поместите свое предложение в раздел "Есть работа" - туда заглядывают как раз те, кто может потратить свое время на решение ваших задач вместо вас - и все разрешится к вашему удовольствию.


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт окт 29, 2015 09:46:38 
Вымогатель припоя

Карма: -8
Рейтинг сообщений: 49
Зарегистрирован: Вс дек 28, 2014 21:54:05
Сообщений: 615
Рейтинг сообщения: 0
Привет всем!. Столкнулся я с непонятной мне вещью. Может кто разъяснит?
Есть обработчик прерывания по переполнению Timer0. Назвал его "Taimer". Он для того, чтобы если за определённое время не придёт некое событие не ждать тупо, а прыгать на метку . А вопрос в том, что при выходе из обработчика по RETI всё нормально, а вот если не дождались события выкидываю из стека адрес возврата и выхожу по RJMP, на метку . Но стек почему-то переполняется, после каждого перехода на метку SPL уменьшается на 2 (выводил в УАРТ SPL). Пришлось добавить ещё 2 POP, тогда всё нормально работает. Получилось 4 POP. Почему так?
Да, камень AT2313, Avr Studio4
Код:
Taimer:
   in       r0,SREG
   inc      interrupt
   cpi      interrupt,80
   breq           rst2
   out            SREG,r0
   reti
rst2:
 clr            interrupt
   pop      temp
   pop      temp
   pop      temp
   pop      temp
   rjmp           taimer_overflow

_________________
Я всё-всё узнAю и стану профессором.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт окт 29, 2015 10:05:36 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 2153
Зарегистрирован: Сб май 05, 2012 20:19:55
Сообщений: 4950
Откуда: Минск
Рейтинг сообщения: 0
Ну прыгнул ты. А "out SREG,r0" кто будет делать?

_________________
Прибор, защищённый предохранителем, сгорает первым, защитив предохранитель. Закон Мерфи.


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

Карма: -8
Рейтинг сообщений: 49
Зарегистрирован: Вс дек 28, 2014 21:54:05
Сообщений: 615
Рейтинг сообщения: 0
Seriyvolk писал(а):
Ну прыгнул ты. А "out SREG,r0" кто будет делать?
Там, куда я прыгнул, SREG мне и нафиг не нужен, там почти начало прогрмаммы. Вопрос в стеке. SREG к стеку никакого отношения не имеет.

_________________
Я всё-всё узнAю и стану профессором.


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

Карма: 64
Рейтинг сообщений: 1013
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4332
Откуда: Ижевск
Рейтинг сообщения: 1
По мне, это плохая практика. Почему бы не так
Спойлер
Код:
   .INCLUDE "tn2313def.inc"

.def   interrupt=r18
.def   temp=r16
   .CSEG

   .ORG   $0000
   RJMP   START

   .ORG   $0006
Taimer:
   inc      interrupt
   cpi      interrupt,80
;   breq           rst2
   BRLO   PC+2
   SET      ; взвести флаг
   clr      interrupt
   reti
;rst2:
; clr            interrupt
 ;  pop      temp
  ; pop      temp
   ;pop      temp
;   pop      temp
;   rjmp      WAIT
;   rjmp           taimer_overflow


START:
   LDI   R22,LOW(RAMEND)
   OUT   SPL,R22

   LDI   R20,1<<TOIE0
   OUT   TIMSK,R20
   OUT   TIFR,R20

   LDI   R20,1<<SE
   OUT   MCUCR,R20

   LDI   R22,1
   OUT   TCCR0B,R22

   CLT
   SEI

WAIT:
   SLEEP
   BRTC   WAIT
taimer_overflow:
   NOP
   RJMP   START
.EXIT


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт окт 29, 2015 10:51:21 
Вымогатель припоя

Карма: -8
Рейтинг сообщений: 49
Зарегистрирован: Вс дек 28, 2014 21:54:05
Сообщений: 615
Рейтинг сообщения: 0
А, понял, там, где ждём события дополнительно проверяем Т и если он взведён то уже оттуда прыгаем на метку? Или опять я не приехал?. Только по адресу $0006 будет RJMP, т.к. планирую завести собаку и она покусается с обработчиком по переполнению.
И всё же, почему мне пришлось ставить 4 POP а не 2? Просто интересно.

_________________
Я всё-всё узнAю и стану профессором.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт окт 29, 2015 11:08:58 
Друг Кота

Карма: 64
Рейтинг сообщений: 1013
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4332
Откуда: Ижевск
Рейтинг сообщения: 1
dgrett писал(а):
И всё же, почему мне пришлось ставить 4 POP а не 2? Просто интересно.
Не всё так безоблачно. Студия считает, что при выходе на метку указатель стека изменяется.
Вложение:
RJMP_ISR.GIF


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Чт окт 29, 2015 11:25:41 
Вымогатель припоя

Карма: -8
Рейтинг сообщений: 49
Зарегистрирован: Вс дек 28, 2014 21:54:05
Сообщений: 615
Рейтинг сообщения: 0
akl писал(а):
Не всё так безоблачно. Студия считает, что при выходе на метку указатель стека изменяется.

Да я тоже симулял свой код и следил за стеком. Всё ОК и с 2 ПОП ( в interrupt ставил 1, чтоб не гонять одно и то же 80 раз). Так ведь в железяке тинька перезагружалась, я потому и стал копаться. А за науку спасибо.

_________________
Я всё-всё узнAю и стану профессором.


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

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


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

Зарегистрирован: Вс авг 23, 2015 16:12:23
Сообщений: 10
Рейтинг сообщения: 0
Доброго времени суток, уважаемые форумчане!
Прошу о помощи в таком вопросе - как настроить прерывания??? :shock:

Контроллер - мега 16а
схема - на макетке распаяны через сопротивление светодиоды на порт А, на выводы INT0, INT1, int2 и ресет - кнопки на землю тактовые

дополнительно - светодиод на одной из лап порта С, как индикатор включения - при инициализации вывожу тудой 1, и он горит, или если чего-то не так - переставляю эти строчки в другую часть кода и смотрю, дошел ли процесс до них

задача - продвинуть хелловорд так, чтобы по нажатию клавиши на INT0 значения на светодиодах порта А "замерзали", по нажатию INT1 - выводили значение счетчика нажатий (регистра 21), ну 3 кнопка на INT 2 вырубала камень до лучших времен.

ПРОБЛЕМА: не работают кнопки. Тоесть цикл А выполняется, светики мигают и больше ничего не происходит(((
ПОМОГИТЕ :cry:

(пишу в атмел студио 4 и программатор аврисп мк2 клон)

/код прилагаю/
//си не предлагать//

.include "D:\all\AVR-projects\m16adef.inc"
.cseg
.org 0
jmp RESET
.org INT0addr ; External Interrupt Request 0
;reti
rjmp ext_int0
.org INT1addr ; External Interrupt Request 1
;reti
rjmp ext_int1
.org OC2addr ; Timer/Counter2 Compare Match
reti
.org OVF2addr ; Timer/Counter2 Overflow
reti
.org ICP1addr ; Timer/Counter1 Capture Event
reti
.org OC1Aaddr ; Timer/Counter1 Compare Match A
reti
.org OC1Baddr ; Timer/Counter1 Compare Match B
reti
.org OVF1addr ; Timer/Counter1 Overflow
reti
.org OVF0addr ; Timer/Counter0 Overflow
reti
.org SPIaddr ; Serial Transfer Complete
reti
.org URXCaddr ; USART, Rx Complete
reti
.org UDREaddr ; USART Data Register Empty
reti
.org UTXCaddr ; USART, Tx Complete
reti
.org ADCCaddr ; ADC Conversion Complete
reti
.org ERDYaddr ; EEPROM Ready
reti
.org ACIaddr ; Analog Comparator
reti
.org TWIaddr ; 2-wire Serial Interface
reti
.org INT2addr ; External Interrupt Request 2
reti
rjmp ext_int2
.org OC0addr ; Timer/Counter0 Compare Match
reti
.org SPMRaddr
reti
RESET:
ldi r16, 0x04
out SPL,r16
ldi r16, 0x5f
out SPH,r16
ldi r16,0xff
out DDRC,r16
ldi r16,0x00
out DDRD,r16
ldi r16,0x00
out DDRB,r16
ldi r16,0xff
out PortD,r16
ldi r16,0xff
out DDRa,r16
in r16,MCUCR
sbr r16,(1<<ISC01)|(0<<ISC00)|(0<<ISC10)|(1<<ISC11)
out MCUCR,r16
in r16, gifr
sbr r16, (0<<INTF0)|(0<<INTF1)|(0<<INTF1)
out gifr, r16
ldi r16, 0x33
OUT GICR, r16
in r16,MCUCR
sbr r16,(1<<sm2)|(1<<sm1)|(1<<sm0)
out MCUCR,r16
ldi r16,0xff
out portc,r16
ldi r17, 0x02
ldi r18, 0xff
ldi r21, 0x00
sei

a:
inc r21
inc r18
out porta, r18
ldi r20, 0x00
ldi r21, 0x00
ldi r22, 0x0f
ba:
dec r20
brne ba
dec r21
brne ba
dec r22
brne ba
rjmp a

EXT_INT0:
r: jmp r
reti

EXT_INT1:
out portc, r21
ra: jmp ra
reti

EXT_INT2:
sleep
in r16,MCUCR
sbr r16,(0<<se)
out MCUCR,r16
reti


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

Зарегистрирован: Вс авг 23, 2015 16:12:23
Сообщений: 10
Рейтинг сообщения: 0
так, один вопрос я решил - первая кнопка на INT0 заработала
просто забыл включить ее

было:

ldi r16, 0x33
OUT GICR, r16

А надо:

"ldi r16, 0xe3
OUT GICR, r16"

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

и третья по прежнему не работает

Что не так???

И чем культурным можно заменить зацикливание:

EXT_INT0:
r: jmp r
reti

чтобы значение заморозилось тоже, но по нажатию этой или другой кнопки происходил возврат в основной цикл???


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

Карма: 64
Рейтинг сообщений: 1013
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4332
Откуда: Ижевск
Рейтинг сообщения: 0
1. Указатель стека установлен неправильно
Код:
RESET:
   LDI   R16,HIGH(RAMEND)
   LDI   R17,LOW(RAMEND)
   OUT   SPH,R16
   OUT   SPL,R17

;ldi r16, 0x04
;out SPL,r16
;ldi r16, 0x5f
;out SPH,r16

2.Чтобы был переход обслуживание INT2
Код:
.org INT2addr   ; External Interrupt Request 2
;;;;;;;;;;;;;;;;;;reti
rjmp ext_int2

3. Сброс флагов у AVR осуществляется записью 1
Код:
;   in r16, gifr
;   sbr r16, (0<<INTF0)|(0<<INTF1)|(0<<INTF1)
;out gifr, r16


   LDI   R22,(1<<INT2|1<<INT1|1<<INT0)
   OUT   GICR,R22
   OUT   GIFR,R22
;ldi r16, 0x33
;OUT   GICR, r16

4.Чтобы не было недоразумений при работе порта С, отключите JTAG
Код:
 LDI R16,1<<JTD
 OUT MCUCSR,R16

5. Добавил таймер Т1 на выдержку ~1 секунды для счетчика
Спойлер
Код:
.include "m16adef.inc"
.cseg
.org 0
jmp RESET
.org INT0addr ; External Interrupt Request 0
;reti
rjmp ext_int0
.org INT1addr ; External Interrupt Request 1
;reti
rjmp ext_int1
.org OC2addr ; Timer/Counter2 Compare Match
reti
.org OVF2addr ; Timer/Counter2 Overflow
reti
.org ICP1addr ; Timer/Counter1 Capture Event
reti
.org OC1Aaddr ; Timer/Counter1 Compare Match A
reti
.org OC1Baddr ; Timer/Counter1 Compare Match B
reti
.org OVF1addr ; Timer/Counter1 Overflow
   RJMP   OVER_T1
;reti
.org OVF0addr ; Timer/Counter0 Overflow
reti
.org SPIaddr ; Serial Transfer Complete
reti
.org URXCaddr ; USART, Rx Complete
reti
.org UDREaddr ; USART Data Register Empty
reti
.org UTXCaddr ; USART, Tx Complete
reti
.org ADCCaddr ; ADC Conversion Complete
reti
.org ERDYaddr ; EEPROM Ready
reti
.org ACIaddr ; Analog Comparator
reti
.org TWIaddr ; 2-wire Serial Interface
reti
.org INT2addr ; External Interrupt Request 2
;reti
rjmp ext_int2
.org OC0addr ; Timer/Counter0 Compare Match
reti
.org SPMRaddr
reti

OVER_T1:
   SBIW   XL,1
   BRNE   OVER_T1_OUT
   INC   R18   
   OUT   PORTA,R18
   LDI   XH,HIGH(1*Fo/65536)
   LDI   XL,LOW(1*Fo/65536)
OVER_T1_OUT:
   RETI
;*******************************
RESET:
   ldi r16, 0x04
   out SPH,r16
   ldi r16, 0x5f
   out SPL,r16

   LDI R16,1<<JTD
   OUT MCUCSR,R16   ; отключить JTAG

   SBI   ACSR,ACD   ; отключить аналоговый компаратор

   ldi r18, 0
   ldi r21, 0x00

ldi r16,0xff
out DDRC,r16
ldi r16,0x00
out DDRD,r16
ldi r16,0x00
out DDRB,r16
ldi r16,0xff
out PortD,r16
ldi r16,0xff
out DDRa,r16
   OUT   PORTA,R18
;in r16,MCUCR
   LDI r16,(1<<SE)|(1<<ISC01)|(0<<ISC00)|(0<<ISC10)|(1<<ISC11)
   out MCUCR,r16
;in r16, gifr
;sbr r16, (0<<INTF0)|(0<<INTF1)|(0<<INTF1)
;out gifr, r16
   LDI r16, 1<<INT2|1<<INT1|1<<INT0
   OUT GICR,r16
   OUT   GIFR,R16
;*******************************
.equ   Fo=1000000
   LDI   XH,BYTE4(1*Fo)
   LDI   XL,BYTE3(1*Fo)


   LDI   R16,1<<TOIE1
   OUT   TIMSK,R16
   OUT   TIFR,R16

   LDI   R16,1
   OUT   TCCR1B,R16
;*******************************
;in r16,MCUCR
;sbr r16,(1<<sm2)|(1<<sm1)|(1<<sm0)
;out MCUCR,r16
;ldi r16,0xff
;out portc,r16
;ldi r17, 0x02
;ldi r18, 0xff
;ldi r21, 0x00
   sei
WAIT:
   SLEEP
   NOP
   RJMP   WAIT
;a:
;inc r21
;inc r18
;out porta, r18
;ldi r20, 0x00
;ldi r21, 0x00
;ldi r22, 0x0f
;ba:
;dec r20
;brne ba
;dec r21
;brne ba
;dec r22
;brne ba
;rjmp a

EXT_INT0:
   LDI   R17,1
   IN   R16,TCCR1B
   EOR   R16,R17
   OUT   TCCR1B,R16   ; переключатель остановки/запуска таймера Т1

   LDI   XH,HIGH(1*Fo/65536)
   LDI   XL,LOW(1*Fo/65536)

;r: jmp r
   reti

EXT_INT1:
   INC   R21
   out portc, r21
   LDI   R16,1
   OUT   TCCR1B,R16
;ra: jmp ra
   reti

EXT_INT2:
;sleep
   LDI   R16,1<<SE
   OUT   MCUCR,R16   ; только низкий уровень на INT0,INT1
;   in r16,MCUCR
;   CBR r16,(0<<se)
;   out MCUCR,r16
   reti
.EXIT


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Вт ноя 03, 2015 18:34:46 
Родился

Зарегистрирован: Вс авг 23, 2015 16:12:23
Сообщений: 10
Рейтинг сообщения: 0
Спасибо за подсказки, я все учёл, но не все понял.
Я переписал этот код и теперь дела поправились, но не полностью - поэтому все по пунктам:
1.
А в чем разница - ведь значение адреса памяти статическое значение, и его надо просто вывести?
Я просто посмотрел адрес и так и написал, конечно, это не так культурно, но ведь программа вроде и так и так работает одинаково???
2.
блин, забыл)))
3.
ладно буду теперь внимательнее читать даташит...
4.
хорошо, получается сигналы на портах могут вызвать сбои в работе из-за доп. интерфейсов включенных? а если в будущем нужно будет сразу несколько функций на одно ноге использовать???

5.......
я так боялся таймера... и теперь он работает!!! :))
_____
а шо цэ такэ??
счетчик? а зачем он??
.equ   Fo=1000000
LDI XH,BYTE4(1*Fo)
LDI   XL,BYTE3(1*Fo
____________
LDI   XH,HIGH(1*Fo/65536)
LDI   XL,LOW(1*Fo/65536)

и я так и не понял как работает SLEEP

и кнопка на INT2 ничего не делает, а надо чтоб контроллер "впадал в спячку", и после нажатия чего-то другого опять оживал, и продолжал работать оттуда где закончил

на кнопках вполне ощутим дребезг, как его уничтожить? :?

и вот еще - а чего обработчик прерывания по переполнению таймера у вас находится перед инициализацией???

П.С. Походу что-то не так с выводом INT2, переписал код - та кнопка не работает в любых случаях


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

Карма: 64
Рейтинг сообщений: 1013
Зарегистрирован: Пт мар 07, 2008 06:54:43
Сообщений: 4332
Откуда: Ижевск
Рейтинг сообщения: 0
1. Указатель стека устанавливается в допустимой области RAM контроллера. Вы же установили SP=0x5F04 вместо SP=0x045F
5. Да, это грубый таймер 1 секунды привязанный к тактовой контроллера. Грубый, потому что не учитывает состояние TCNTx. Допустим, время дребезга контакта кнопок ~10мс. Заносим в OCR1B значение (TCNT1+10*Fo/1000) Включаем прерывание OC1B, чистим флаг OCF1B. Таймер отсчитывает заданное время, вызывается прерывание OC1B, в котором чистится флаг INTx. Примерно тоже самое делается при отпускании кнопки, которое так же может вызывать дребезг.
Работу команды SLEEP можно увидеть, подав питание на контроллер через миллиамперметр.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
СообщениеДобавлено: Ср ноя 18, 2015 14:28:55 
Идёт направо - песнь заводит, Налево - сказку говорит.
Аватар пользователя

Карма: 133
Рейтинг сообщений: 782
Зарегистрирован: Чт апр 21, 2011 17:55:50
Сообщений: 4995
Откуда: Иркутск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Вопрос.
Есть у меня датчик температуры DS18B20, он выдает температуру как есть и отрицательную температуру в дополнительном коде, т.е. в старшем бите байта появляется единица.
Итого у меня есть некая переменная temp1, в которую отправляется температура с датчика в вышеуказанном виде, т.е. старший бит - знак температуры, а остальные 7 бит - сама температура в прямом либо дополнительном коде (от знака зависит).

Есть у меня переменная другая - ZUUM, в ней содержится число для сравнения из диапазона +125 до -55.

А вот код, который не пашет, т.к. я делаю что-то не так.
Код:
   ;---------- Обработка выхода ----------
                  cp  ZUUM, temp1
                  brlt ENN
                      cbi KEYPORT,KEYPIN
                      rjmp EN
                  ENN: sbi KEYPORT,KEYPIN   
      ;----------   


Как правильно сделать сравнение переменных, чтобы при понижении температуры как в положительной так и в отрицательной срабатывала нагрузка?
У меня в положительной срабатывает, когда падает ниже, например 23 градусов. Но если будет установлен придел до -2, то фигню всякую гонит...

_________________
Станислав


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

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


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

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


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

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


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