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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> 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
kovigor
сообщение Apr 19 2014, 13:04
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Banks @ Apr 19 2014, 08:50) *
Есть очень простая схема счетчика появления фазы в сети 220В.
...
В чем может быть проблема?

1. Питающий схему зарядник и питаемый зарядник импульсный или трансформаторный ?
2. Если на заряднике написано, что он выдает 5В, то это совсем не обязательно так и есть. При малых нагрузках они обычно выдают гораздо больше. 7В - вполне реальная величина.
3. А когда нет фазы, МК от чего питается ? Или в таком случае он вообще не питается ?
4. Покажите часть схемы, подающую питание на второй зарядник.
5. Висящий в воздухе PA.1 настройте на вывод лог.0 ...
Go to the top of the page
 
+Quote Post
Banks
сообщение Apr 19 2014, 18:13
Сообщение #3


Участник
*

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



Цитата(kovigor @ Apr 19 2014, 17:04) *
1. Питающий схему зарядник и питаемый зарядник импульсный или трансформаторный ?
2. Если на заряднике написано, что он выдает 5В, то это совсем не обязательно так и есть. При малых нагрузках они обычно выдают гораздо больше. 7В - вполне реальная величина.
3. А когда нет фазы, МК от чего питается ? Или в таком случае он вообще не питается ?
4. Покажите часть схемы, подающую питание на второй зарядник.
5. Висящий в воздухе PA.1 настройте на вывод лог.0 ...

3.На мою схему идут выходы 2-х зарядных устройств, у одного зарядного устройства фаза никогда не пропадает, он является питанием для моей схемы. У другого фаза периодически пропадает, выход(+) его идет на PA0, минус на общий.
1.Какие адаптеры импульсные или трансформаторные не могу сказать, завтра сфоткаю, но они оригинальные зарядные устройства для мобил. 2.Напряжение на выходе обоих адаптеров смотрел, было 4.5в-5.5в.
4.Второй зарядник(выход которого идет на PA0) тупо включается в сетевой фильтр, фаза пропадает за счет выключения кнопки на сетевом фильтре.
5.Принципиально PA1 на вывод лог.0? он вобще в программе не используется...
Go to the top of the page
 
+Quote Post
kovigor
сообщение Apr 20 2014, 14:59
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Banks @ Apr 19 2014, 21:13) *
1.Какие адаптеры импульсные или трансформаторные не могу сказать, завтра сфоткаю, но они оригинальные зарядные устройства для мобил. 2.Напряжение на выходе обоих адаптеров смотрел, было 4.5в-5.5в.
4.Второй зарядник(выход которого идет на PA0) тупо включается в сетевой фильтр, фаза пропадает за счет выключения кнопки на сетевом фильтре.
5.Принципиально PA1 на вывод лог.0? он вобще в программе не используется...

1. Выясните, это очень важно. Важен именно тип зарядника, а не его происхождение. Еще очень советую задействовать имеющийся в вашем МК супервизор (BOD).
2. А с пульсациями как дела обстоят ?
5. Да, в программе настройте эту ножку на вывод лог. нуля. Кстати, при пропадании основного питания возможна запитка МК от второго зарядника через защитный диод линии PA.1. Вы в своей схеме это как-то учитываете ?
Go to the top of the page
 
+Quote Post
pavel-pervomaysk
сообщение Apr 22 2014, 17:41
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 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
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 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
RabidRabbit
сообщение Apr 23 2014, 14:11
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 397
Регистрация: 3-12-09
Из: Россия, Москва
Пользователь №: 54 040



Цитата(Banks @ Apr 19 2014, 22:13) *
5.Принципиально PA1 на вывод лог.0? он вобще в программе не используется...

Не используется - можно про неё забыть, если Вы не заботитесь о сверхнизком потреблении Вашего устройства. А если заботитесь - можно установить ногу на вход и включить внутренний подтягивающий резистор. Настраивать на выход я бы не стал - наличие активного уровня на неподключенной ноге лично мне не нравится.
Go to the top of the page
 
+Quote Post
Banks
сообщение Apr 26 2014, 09:47
Сообщение #8


Участник
*

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



Просили выложить зарядные устройства:
1. Используемое для питания:
Прикрепленное изображение


2. Используемое для определения фазы:
Прикрепленное изображение


3. Осциллограммы при появлении фазы
Прикрепленное изображение

Голубой график - это напряжение на ноге сброса. Красный - напряжение на ноге PA0. Все четко.
Один фиг сбрасывается контроллер. А не может быть что WDT сбрасывает? Что может сбросить контроллер вобще?
Go to the top of the page
 
+Quote Post
muravei
сообщение Apr 26 2014, 11:52
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Цитата(Banks @ Apr 26 2014, 13:47) *
1. Используемое для питания:

Когда все не понятно, лучше взять батарейки.
Go to the top of the page
 
+Quote Post
kovigor
сообщение Apr 26 2014, 21:16
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(muravei @ Apr 26 2014, 14:52) *
Когда все не понятно, лучше взять батарейки.

Подозреваю, что у человека там совсем не 5.1 и не 5.2В, а больше, особенно в моменты включения и выключения, а также при скачках нагрузки. Попадавшиеся мне китайские зарядники могли выдать гораздо больше, чем на них было написано. Посему присоединяюсь к совету - вместо каждого из зарядников по очереди (или одновременно) использовать обычные батарейки ...
Go to the top of the page
 
+Quote Post
zombi
сообщение Apr 26 2014, 23:02
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



1. Попробуйте выход контролируемого БП подключить к PA0 через оптрон и полностью развяжите земли.
2. Электролит по питанию мк добавьте.
Go to the top of the page
 
+Quote Post
MaxiMuz
сообщение Apr 28 2014, 10:15
Сообщение #12


Местный
***

Группа: Участник
Сообщений: 253
Регистрация: 15-04-10
Из: Волгоград
Пользователь №: 56 658



Цитата(Banks @ Apr 19 2014, 08:50) *
Здравствуйте. Такая проблема. Есть очень простая схема счетчика появления фазы в сети 220В. Схему прикрепил.

Прикрепленное изображение

На PA0 подается напряжение с 5-ти вольтового адаптера от мобилы(с помощью этого адаптера определяется появилась ли фаза). Питает микроконтроллер другой адаптер от мобилы, на этот адаптер постоянно напряжение подается 220В. PA1 - висит в воздухе. Выводы PB0-PB7 и PD0-PD6 зажигают светодиоды, отображают счетчик появления фазы в двоичном виде.
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:
;======================================================================

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

При беглом просмотре программки, сделал вывод что при каждом появлении 1 на PA0 у вас включается программный счетчик и считает пока эта 1 не пропадет. Соответственно единица пропала - сколько там насчитал счетчик неизвестно! Проверьте алгоритм , подтяните вывод резистором к нулю чтобы при отсутствии напряжения на нем гарантированно был "0" и к примеру кнопкой подавайте на него питание +5в. И смотрите что у вас получиться
Go to the top of the page
 
+Quote Post
Banks
сообщение Apr 28 2014, 11:09
Сообщение #13


Участник
*

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



Цитата(MaxiMuz @ Apr 28 2014, 14:15) *
При беглом просмотре программки, сделал вывод что при каждом появлении 1 на PA0 у вас включается программный счетчик и считает пока эта 1 не пропадет. Соответственно единица пропала - сколько там насчитал счетчик неизвестно! Проверьте алгоритм , подтяните вывод резистором к нулю чтобы при отсутствии напряжения на нем гарантированно был "0" и к примеру кнопкой подавайте на него питание +5в. И смотрите что у вас получиться

Все там нормально считается, посмотрите еще раз программу.


Буду заменять адаптеры чем-нибудь и смотреть что получится. Спасибо всем за ответы wink.gif
Go to the top of the page
 
+Quote Post
MaxiMuz
сообщение Apr 29 2014, 07:56
Сообщение #14


Местный
***

Группа: Участник
Сообщений: 253
Регистрация: 15-04-10
Из: Волгоград
Пользователь №: 56 658



Цитата(Banks @ Apr 28 2014, 14:09) *
Все там нормально считается, посмотрите еще раз программу.

Да действительно , программа тут не причем.
Еще порекомендую по питанию и по входу поставить кроме электролитов керамические кондеры 0,1-0,01мкФ
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Apr 29 2014, 11:06
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Просто удалил всё лишнее
CODE
.device ATtiny2313A
.include "tn2313Adef.inc"
.def SlopReg=R16

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


Init:
ldi SlopReg,0b00000000;
out DDRA,SlopReg;
out PortB,SlopReg; Led0 - Led7

ldi SlopReg,0b11111111;
out DDRB,SlopReg
out DDRD,SlopReg;

ldi SlopReg,0b11111110;
out PortA,SlopReg ;


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

; Ищем состояние 0
State0: sbic PINA,PA0
rjmp PC-1

; Задержка
rcall DELAY

; Еще раз проверяем нолик ли, если нет то все сначало
sbic PINA,PA0
rjmp State0


; Ищем состояние 1
sbis PINA,PA0
rjmp PC-1
; Задержка
rcall DELAY


; Еще раз проверяем единичка ли, если нет то все сначала
sbis PINA,PA0
rjmp State0


adiw Yh:Yl,1

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

out PortB,Yl

ldi SlopReg,0b10000000
or SlopReg,Yh
out PortD,SlopReg;out Led8 - Led14
rjmp State0
;******************************************************
DELAY:
ldi Xh,0x7f
ldi Xl,0xff
Delays: sbiw Xh:Xl,1
brne delays
ret
;*******************************************************
End:


Сообщение отредактировал ILYAUL - Apr 29 2014, 11:45
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 17:58
Рейтинг@Mail.ru


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