Аватар для Niko Demin
3 / 3 / 0
Регистрация: 21.01.2015
Сообщений: 90

Не работает релейная схема на 2313

26.07.2016, 13:16. Показов 577. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Долго мучаюсь со схемой управления реле. Эта программа должна по очереди сначала включать одно реле, а потом другое и в обратном порядке при выключении. Есть 2 кнопки: нижняя просто переключает реле, а верхняя задаёт временной интервал в течении которого реле будут переключаться автоматически. При нажатии любой кнопки реле переключаются, а потом мк перестаёт работать. Реле без нагрузки.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
.dseg
.org 0x0060
time_per:   .byte 1
 
.cseg
.def temp=r16
.def count0=r17
.def count1=r18
.def flag=r19
 
.equ t_owf=9000
 
;flag register:
.equ h_b=0
.equ l_b=1
.equ led=2
.equ relay_sts=5    ;0 means off
.equ rec=6
.equ b_hg=7
;end flag register
 
.equ relay_h=7
.equ relay_l=6
 
.org 0x0000
rjmp Reset
reti    ;rjmp INT_0
reti    ;rjmp INT_1
reti    ;rjmp Timer1_capt1
rjmp Timer1_comp1
reti    ;rjmp Timer1_OVF1
rjmp Timer0_OVF0
reti    ;rjmp UART_RX
reti    ;rjmp UART_UDRE
reti    ;rjmp UART_TX
reti    ;rjmp ANA_COMP
 
Reset:  
    ldi temp,low(ramend)
    out spl,temp
    ldi temp,0xff
    out GIFR,temp ;сбросить флаги внешних прерываний
    out TIFR,temp ;сбросить флаги прерываний таймеров
 
    ldi temp,(1<<OCIE1A | 1<<TOIE0) ;разрешение прерывания Timer1 Compare, Tim0 Owf
    out TIMSK,temp                                           
    ldi temp,high(t_owf)
    out OCR1AH,temp 
    ldi temp,low(t_owf)
    out OCR1AL,temp
 
    ldi temp,(1<<relay_h | 1<<relay_l)
    out ddrb,temp
    ldi temp,(1<<led)
    out ddrd,temp
    ldi flag,(1<<b_hg | 1<<h_b | 1<<l_b)
    sei
 
g_cycle:
    sbrs flag, b_hg
    rjmp g_cycle
 
    in temp,pind
    eor temp, flag 
 
    sbrs temp,h_b   ;hight buttom
    rjmp low_b
    ldi temp,(1<<b_hg | 1<<h_b)
    eor flag, temp
    ldi count0,15
    ldi temp,0b00000011; запуск Timer0 входная частота 1:64
    out TCCR0B,temp
    sbrs flag,h_b   ; если нажатие - на выход
    rjmp g_cycle
 
    ldi temp,(1<<rec)
    eor flag,temp
    sbrs flag,rec
    rjmp end_rec
    clr count1
    out TCCR1B,count1
    out TCNT1H,count1
    out TCNT1L,count1
    ldi temp,0b00001100 ;включить Timer1 1/256
    out TCCR1B,temp
    ldi temp,(1<<led)
    out portd,temp
    rjmp g_cycle
 
end_rec:
    clr temp
    out TCCR1B,temp
    out TCNT1H,temp
    out TCNT1L,temp
    sts time_per,count1
    ldi temp,0b00001100 ;включить Timer1 1/256
    out TCCR1B,temp
    ldi temp,(0<<led)
    out portd,temp
    rcall relay_switch
    rjmp g_cycle
    
low_b:
    sbrs temp,l_b
    rjmp g_cycle
    ldi temp,(1<<b_hg | 1<<l_b)
    eor flag, temp
    ldi count0,15
    ldi temp,0b00000011; запуск Timer0 входная частота 1:256
    out TCCR0B,temp
 
    sbrs flag,l_b   ; если нажатие - на выход
    rjmp g_cycle
 
    clr temp        ;stop tim1
    out TCCR1B,temp
    out TCNT1H,temp
    out TCNT1L,temp
    clr count1
    ldi temp,(0<<led)
    out portd,temp  
    rcall relay_switch
    rjmp g_cycle 
 
;***************Interrupts************
 
Timer0_OVF0:
    push temp
    in temp,sreg
    push temp
 
    dec count0
    brne exit_t0
    ori flag,(1<<b_hg)
    clr temp
    out TCCR0,temp
 
exit_t0:    
    pop temp
    out sreg,temp
    pop temp     
    reti
 
Timer1_comp1:
    push temp
    in temp,sreg
    push temp
 
    sbrc flag,rec
    rjmp rec_e
    dec count1
    brne exit_t1
    lds count1,time_per
    rcall relay_switch
    rjmp exit_t1
 
rec_e:
    inc count1
exit_t1:
 
    pop temp
    out sreg,temp
    pop temp     
    reti
 
;***************Subroutines************
 
relay_switch:
    push temp
    in temp,sreg
    push temp
    push flag
 
    sbrc flag,relay_sts
    rjmp off_relay
 
    ldi temp,(1<<relay_h)
    out portb,temp
    andi flag,(0xff-(1<<b_hg))
    ldi count0,30
    ldi temp,0b00000011; запуск Timer0 входная частота 1:256
    out TCCR0B,temp
 
relay_1:
    sbrs flag,b_hg
    rjmp relay_1
 
    ldi temp, (1<<relay_h | 1<<relay_l)
    out portb,temp
 
    pop flag
    ori flag,(1<<relay_sts)
    pop temp
    out sreg,temp
    pop temp
    sei
    ret
 
off_relay:
 
    ldi temp,(1<<relay_h)
    out portb,temp
    andi flag,(0xff-(1<<b_hg))
    ldi count0,30
    ldi temp,0b00000011; запуск Timer0 входная частота 1:256
    out TCCR0B,temp
 
relay_2:
    sbrs flag,b_hg
    rjmp relay_2
 
    clr temp
    out portb,temp
 
    pop flag
    andi flag,(0xff-(1<<relay_sts))
    pop temp
    out sreg,temp
    pop temp
    ret
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.07.2016, 13:16
Ответы с готовыми решениями:

FT232RL+2313 - работает без питания?
Простите за очередной топик по теме :) Есть макетка на которой распаян разъем программирования, 7805 и шнурком подключена платка с...

Релейная защита и автоматика
Нужен специалист ! Оставляйте контактные данные

Построения гистерезиса (релейная функция)
Друзья, нужна функция для построения гистерезиса(релейная функция) в матлабе. Изображение прилагается.

3
 Аватар для Niko Demin
3 / 3 / 0
Регистрация: 21.01.2015
Сообщений: 90
26.07.2016, 13:19  [ТС]
Прилагаю схему девайса
0
 Аватар для Niko Demin
3 / 3 / 0
Регистрация: 21.01.2015
Сообщений: 90
27.07.2016, 01:03  [ТС]
Я разобрался. Надо было не сохранять регистр flag в стеке и ещё разрешить вложенные прерывания в обработчике tim1compare. Тема закрыта.
1
 Аватар для Voland_
1978 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
27.07.2016, 15:23
...второе реле подключено неправильно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.07.2016, 15:23
Помогаю со студенческими работами здесь

Комп -> схема работает, схема -> комп работает неправильно
Вопрос такой. Сделал USB-платку, эмулятор комп-порта, оно же CDC-устройство. Комп её правильно определяет, сам ставит дрова. Если с компа...

ATtiny 2313
Добрый день, возникли трудности с работой с МК. Это мой первый практический опыт в паянии и работе с МК. Есть схема ультразвукового...

Тормозная 2313
Разобрался! Это я, тупой идиот, тормозил всю дорогу! ))) Модераторы, удалите, пожалуйста топик!

Не просыпается 2313
добрый день. контроллер не встает со сна, из любого режима от внешнего прерывания и вообще никак. засыпает - смотрю по току. в симуляторе ...

Не запускается ATTiny 2313 V
Доброго времени суток! Очень нужен совет, помогите, пожалуйста, если несложно=) Написал простую программу: .ymstude...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
Чем асинхронная логика (схемотехника) лучше тактируемой, как я думаю, что помимо энергоэффективности - ещё и безопасность.
Hrethgir 14.05.2025
Помимо огромного плюса в энергоэффективности, асинхронная логика - тотальный контроль над каждым совершённым тактом, а значит - безусловная безопасность, где безконтрольно не совершится ни одного. . .
Многопоточные приложения на C++
bytestream 14.05.2025
C++ всегда был языком, тесно работающим с железом, и потому особеннно эффективным для многопоточного программирования. Стандарт C++11 произвёл революцию, добавив в язык нативную поддержку потоков,. . .
Stack, Queue и Hashtable в C#
UnmanagedCoder 14.05.2025
Каждый опытный разработчик наверняка сталкивался с ситуацией, когда невинный на первый взгляд List<T> превращался в узкое горлышко всего приложения. Причина проста: универсальность – это прекрасно,. . .
Как использовать OAuth2 со Spring Security в Java
Javaican 14.05.2025
Протокол OAuth2 часто путают с механизмами аутентификации, хотя по сути это протокол авторизации. Представьте, что вместо передачи ключей от всего дома вашему другу, который пришёл полить цветы, вы. . .
Анализ текста на Python с NLTK и Spacy
AI_Generated 14.05.2025
NLTK, старожил в мире обработки естественного языка на Python, содержит богатейшую коллекцию алгоритмов и готовых моделей. Эта библиотека отлично подходит для образовательных целей и. . .
Реализация DI в PHP
Jason-Webb 13.05.2025
Когда я начинал писать свой первый крупный PHP-проект, моя архитектура напоминала запутаный клубок спагетти. Классы создавали другие классы внутри себя, зависимости жостко прописывались в коде, а о. . .
Обработка изображений в реальном времени на C# с OpenCV
stackOverflow 13.05.2025
Объединение библиотеки компьютерного зрения OpenCV с современным языком программирования C# создаёт симбиоз, который открывает доступ к впечатляющему набору возможностей. Ключевое преимущество этого. . .
POCO, ACE, Loki и другие продвинутые C++ библиотеки
NullReferenced 13.05.2025
В C++ разработки существует такое обилие библиотек, что порой кажется, будто ты заблудился в дремучем лесу. И среди этого многообразия POCO (Portable Components) – как маяк для тех, кто ищет. . .
Паттерны проектирования GoF на C#
UnmanagedCoder 13.05.2025
Вы наверняка сталкивались с ситуациями, когда код разрастается до неприличных размеров, а его поддержка становится настоящим испытанием. Именно в такие моменты на помощь приходят паттерны Gang of. . .
Создаем CLI приложение на Python с Prompt Toolkit
py-thonny 13.05.2025
Современные командные интерфейсы давно перестали быть черно-белыми текстовыми программами, которые многие помнят по старым операционным системам. CLI сегодня – это мощные, интуитивные и даже. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru