реклама на сайте
подробности

 
 
> ATtiny 2313A почему то сбрасывается иногда.
Banks
сообщение Apr 19 2014, 05:50
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 2-11-10
Пользователь №: 60 610



Здравствуйте. Такая проблема. Есть очень простая схема счетчика появления фазы в сети 220В. Схему прикрепил.
Прикрепленное изображение

На PA0 подается напряжение с 5-ти вольтового адаптера от мобилы(с помощью этого адаптера определяется появилась ли фаза). Питает микроконтроллер другой адаптер от мобилы, на этот адаптер постоянно напряжение подается 220В. PA1 - висит в воздухе. Выводы PB0-PB7 и PD0-PD6 зажигают светодиоды, отображают счетчик появления фазы в двоичном виде. Все бы хорошо, но почему-то иногда при очередном появлении фазы, счетчик например должен показать "5", а вместо этого микроконтроллер похоже сбрасывается, и счетчик показывает "1". Редко это случается, ловил такую ситуацию только вначале, где то после того как микроконтроллер проработал минуту, но возможно и потом сбрасывается, не знаю точно. Код для мк тоже приведу, я в этой области любитель, поэтому код возможно покажется уродским biggrin.gif
CODE
.device ATtiny2313A
.include "tn2313Adef.inc"
.def SlopReg=R16
.def mask=R17

;clock = 1 MHz
;=======================================================================
Start: rjmp Init;


Init:
ldi SlopReg,0b00000000;
out DDRA,SlopReg;

ldi SlopReg,0b11111111;
out DDRB,SlopReg

ldi SlopReg,0b01111111;
out DDRD,SlopReg;

ldi SlopReg,0b11111110;
out PortA,SlopReg ;

ldi SlopReg,0b00000000; Led0 - Led7
out PortB,SlopReg

ldi SlopReg,0b10000000; Led8 - Led14
out PortD,SlopReg ;

Begin: ldi mask,0b00000001; маска для работы
ldi Yh,0x00 ; счетчик
ldi Yl,0x00


; Ищем состояние 0
State0:
in SlopReg,PinA
and SlopReg,mask
brne State0

; Задержка
ldi Xh,0x7f
ldi Xl,0xff
Delay1: sbiw Xh:Xl,1
brne delay1

; Еще раз проверяем нолик ли, если нет то все сначало
State1: in SlopReg,PinA
and SlopReg,mask
brne State0


; Ищем состояние 1
State2: in SlopReg,PinA
and SlopReg,mask
breq State2

; Задержка
ldi Xh,0x7f
ldi Xl,0xff
Delay2: sbiw Xh:Xl,1
brne delay2

; Еще раз проверяем единичка ли, если нет то все сначало
State3: in SlopReg,PinA
and SlopReg,mask
breq State0


adiw Yh:Yl,1

;Вывод результата

out PortB,Yl

ldi SlopReg,0b10000000
or SlopReg,Yh
out PortD,SlopReg;out Led8 - Led14

rjmp State0

End:
;======================================================================

В чем может быть проблема?

Сообщение отредактировал IgorKossak - Apr 19 2014, 19:24
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
pavel-pervomaysk
сообщение Apr 22 2014, 17:41
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 253
Регистрация: 28-12-07
Из: Украина г. Первомайск
Пользователь №: 33 716



Для начала нужно инициализировать векторы прерываний.
Пример:

CODE

.nolist ;
.include "tn2313adef.inc" ;
.list ;
.device ATtiny2313A ;


.cseg
.org 0
rjmp RESET ; Reset Handler
INT0_: ; External Interrupt0 Handler
reti
INT1_: ; External Interrupt1 Handler
reti
TIM1_CAPT: ; Timer1 Capture Handler
reti
TIM1_COMPA: ; Timer1 CompareA Handler
reti
TIM1_OVF: ; Timer1 Overflow Handler
rjmp flashing ;
TIM0_OVF: ; Timer0 Overflow Handler
reti
USART0_RXC: ; USART0 RX Complete Handler
reti
USART0_DRE: ; USART0,UDR Empty Handler
reti
USART0_TXC: ; USART0 TX Complete Handler
reti
ANA_COMP: ; Analog Comparator Handler
reti
PCINT: ; Pin Change Interrupt
reti
TIMER1_COMPB: ; Timer1 Compare B Handler
reti
TIMER0_COMPA: ; Timer0 Compare A Handler
reti
TIMER0_COMPB: ; Timer0 Compare B Handler
reti
USI_START: ; Usi Start Handler
reti
USI_OVERFLOW: ; USI Overflow Handler
reti
EE_READY: ; EEPROM Ready Handler
reti
WDT_OVERFLOW: ; Watchdog Overflow Handler
reti

; здесь я описыаю проект, на будущее
info: ; 42 bytes
.db "27.01.2014pavel-pervomaysk"
.db "7.3728MHz "
.db "V 1.02" ; Версия прошивки



RESET: ; инициализация
; STACK INIT
ldi tmp,low(ramend) ;
out spl,tmp ;


; далее вся остальная инициализация.
; опрашивать фазу лучше по прерыванию
; INT0, и немного переписать программу, если надо, помогу.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 23 2014, 06:58
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Павлик @ Apr 22 2014, 20:41) *
Для начала нужно инициализировать векторы прерываний.
Зачем? Если прерывание не разрешено - его обработчик никогда не вызовется и он не нужен. Если вызывается прерывание, обработчик которого не написан - это ошибка в программе и она должна быть устранена.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Banks   ATtiny 2313A почему то сбрасывается иногда.   Apr 19 2014, 05:50
- - kovigor   Цитата(Banks @ Apr 19 2014, 08:50) Есть о...   Apr 19 2014, 13:04
|- - Banks   Цитата(kovigor @ Apr 19 2014, 17:04) 1. П...   Apr 19 2014, 18:13
|- - kovigor   Цитата(Banks @ Apr 19 2014, 21:13) 1.Каки...   Apr 20 2014, 14:59
|- - RabidRabbit   Цитата(Banks @ Apr 19 2014, 22:13) 5.Прин...   Apr 23 2014, 14:11
- - Banks   Просили выложить зарядные устройства: 1. Используе...   Apr 26 2014, 09:47
|- - muravei   Цитата(Banks @ Apr 26 2014, 13:47) 1. Исп...   Apr 26 2014, 11:52
|- - kovigor   Цитата(muravei @ Apr 26 2014, 14:52) Когд...   Apr 26 2014, 21:16
- - zombi   1. Попробуйте выход контролируемого БП подключить ...   Apr 26 2014, 23:02
- - MaxiMuz   Цитата(Banks @ Apr 19 2014, 08:50) Здравс...   Apr 28 2014, 10:15
|- - Banks   Цитата(MaxiMuz @ Apr 28 2014, 14:15) При ...   Apr 28 2014, 11:09
|- - MaxiMuz   Цитата(Banks @ Apr 28 2014, 14:09) Все та...   Apr 29 2014, 07:56
- - ILYAUL   Просто удалил всё лишнее CODE.device ATtiny2313A ...   Apr 29 2014, 11:06
|- - zombi   Цитата(ILYAUL @ Apr 29 2014, 14:06) Прост...   Apr 29 2014, 18:36
- - ILYAUL   По хорошему нужен , даже когда нет стэковых операц...   Apr 30 2014, 04:16


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 10:27
Рейтинг@Mail.ru


Страница сгенерированна за 0.01393 секунд с 7
ELECTRONIX ©2004-2016