непонятное зависание PIC16F84A
-
prizrack*
- Нашел транзистор. Понюхал.
- Сообщения: 162
- Зарегистрирован: Пт авг 21, 2015 12:01:25
- Откуда: г. Орел
непонятное зависание PIC16F84A
Добрый день прошу помочь разобраться с проблемой, может кто-нибудь сталкивался с подобным... Собрал намоточный станок, на двух шаговиках, рулит всем PIC16F84A все работает, но через некоторое время(всегда разное) тухнет индикация и периодически(зависимость тоже не выявил) виснет работа моторов на произвольное время, потом опять начинает работать(виснет всегда после срабатывания прерывания счетчика витков) Все "глюки" хаотичны могут проявиться за цикл намотки, а могут и нет( не могу понять из-за чего они возникают, сменил три микросхемы, и пробовал менять дисплеи не помогает(((
Описание:
контролер выдает сигналы на дисплей по трем пинам(4 восьмерки, китайская сборка 4-bit led didgital tube module) и на двигатели с драйверами(в другом станке они отлично работали)
на валу стоит прерыватель и через оптопару делает прерывание по ноге INT(RB0) в прерывании считаются витки и направление укладки провода.
параметры намотки вводятся через самодельную клавиатуру(порты опрашиваются без прерываний), WDT отключен, SLIP не использую.
ну в кратце вроде-бы все, при вводе параметров все работает отлично, глюки возникают только в процессе намотки.
P.S. код большой, если надо выложу, писал в MPLab на ассемблере, заливал через К-150.
Описание:
контролер выдает сигналы на дисплей по трем пинам(4 восьмерки, китайская сборка 4-bit led didgital tube module) и на двигатели с драйверами(в другом станке они отлично работали)
на валу стоит прерыватель и через оптопару делает прерывание по ноге INT(RB0) в прерывании считаются витки и направление укладки провода.
параметры намотки вводятся через самодельную клавиатуру(порты опрашиваются без прерываний), WDT отключен, SLIP не использую.
ну в кратце вроде-бы все, при вводе параметров все работает отлично, глюки возникают только в процессе намотки.
P.S. код большой, если надо выложу, писал в MPLab на ассемблере, заливал через К-150.
- Реклама
Re: непонятное зависание PIC16F84A
Для того чтобы вам помочь необходима: схема(хоть начерченная на клочке бумаги) и ваш ассемблерный код. Чем больше вы представите информации тем больше народу откликнется, здесь форум радиолюбителей а не экстрасенсов 
Re: непонятное зависание PIC16F84A
Пробую шаманить,перед уходом в прерывания,условия выполнены STATUS и W сохранили?
-
prizrack*
- Нашел транзистор. Понюхал.
- Сообщения: 162
- Зарегистрирован: Пт авг 21, 2015 12:01:25
- Откуда: г. Орел
Re: непонятное зависание PIC16F84A
W и STATUS перед использованием обнуляю, прикрепляю код, схема простая питание через LM7805 и кондер на 10мкф с общего импульсника на 24 вольта все порты на прямую,кварц на 4 мГц и кондеры к нему на 15пф,(была мысль, что частота на пределе, пробовал заливать на 20мГц микруху, не помогло(() на RA4 подтягивающий резистор на 100кОм к +5, на RB0 оптопара подтягивает минус при прерывании "луча" клавиатура к портам RB4-RB7 через диоды(формирую двоичный код, чтобы все кнопки влезли) к RB2 подтягивающий резистор 47кОм к +5 и выключатель на минус(выключатель паузы) RA0-RA2 на дисплей, RA3- шаг первого двигателя(к драйверу) RA4-шаг второго двигателя(к драйверу) RB3- направление вращения второго двигателя(к драйверу) и переключатель на минус с подтяжкой на +5 к драйверу (меняет вращение намотки) я ее даже не рисовал, печатку нарисовал и так собрал. RB1 планировалось на концевик нулевого положения или на натяжку проволки, но пока не задействован и не подключен.
P.S. код замороченый и коментов мало, если что-то непонятно, могу пояснить..
Вначале грешил на наводки, поменял блок питания на более мощный и заземлил весь станок и минус питания, не помогло(((
P.S.1 Насчет статуса и аккума это идея, если прерывание сработает где он использовался, тогда могут быть глюки... согласен, спасибо, об этом не подумал, исправлю.
P.S. код замороченый и коментов мало, если что-то непонятно, могу пояснить..
Вначале грешил на наводки, поменял блок питания на более мощный и заземлил весь станок и минус питания, не помогло(((
P.S.1 Насчет статуса и аккума это идея, если прерывание сработает где он использовался, тогда могут быть глюки... согласен, спасибо, об этом не подумал, исправлю.
- Вложения
-
- ind_new.asm
- последняя версия, до этого помоему старую скинул по ошибке...
- (24.07 КБ) 293 скачивания
-
- ind.asm
- код намоточного станка
- (23.49 КБ) 274 скачивания
- dr.doc
- Это не хвост, это антенна
- Сообщения: 1368
- Зарегистрирован: Вс мар 28, 2010 12:52:22
- Откуда: Беларусь
Re: непонятное зависание PIC16F84A
Сохраните аккумулятор и регистр Status:
org 0x004
movwf w_temp
swapf STATUS,W
banksel PORTA
movwf s_temp
int_out
swapf s_temp,W
movfw STATUS
movfw w_temp
retfie
org 0x004
movwf w_temp
swapf STATUS,W
banksel PORTA
movwf s_temp
int_out
swapf s_temp,W
movfw STATUS
movfw w_temp
retfie
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
- Реклама
-
prizrack*
- Нашел транзистор. Понюхал.
- Сообщения: 162
- Зарегистрирован: Пт авг 21, 2015 12:01:25
- Откуда: г. Орел
Re: непонятное зависание PIC16F84A
какие-то страшные команды, а так можно?
org 0x04
movwf w1
movf STATUS,0
movwf st
....
....
....
movf st,0
movwf STATUS
movf w1,0
RETFIE
завтра попробую залить.
org 0x04
movwf w1
movf STATUS,0
movwf st
....
....
....
movf st,0
movwf STATUS
movf w1,0
RETFIE
завтра попробую залить.
- dr.doc
- Это не хвост, это антенна
- Сообщения: 1368
- Зарегистрирован: Вс мар 28, 2010 12:52:22
- Откуда: Беларусь
Re: непонятное зависание PIC16F84A
Команда SWAP не изменяет флаги регистра STATUS. Плюс - данный код есть напутствие производителя из англоязычного datasheet...
Можно, но когда немного понимаешь английский проще "говорить"
move (переместить) W (w) в регистр F
или
move регистр F в аккумулятор W
Можно, но когда немного понимаешь английский проще "говорить"
move (переместить) W (w) в регистр F
или
move регистр F в аккумулятор W
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
-
prizrack*
- Нашел транзистор. Понюхал.
- Сообщения: 162
- Зарегистрирован: Пт авг 21, 2015 12:01:25
- Откуда: г. Орел
Re: непонятное зависание PIC16F84A
MOVWF, BCF, BSF тоже не меняют, а вот MOVF меняет при нулевом результате.... а SWAPF меняет местами биты, со SWAPF согласен, а что за команда banksel, чтото у меня нету ее описания((( ?
- dr.doc
- Это не хвост, это антенна
- Сообщения: 1368
- Зарегистрирован: Вс мар 28, 2010 12:52:22
- Откуда: Беларусь
Re: непонятное зависание PIC16F84A
Это макрос выбора нулевого банка. Он был мне нужен в данном прерывании. Просто "влез" при копировании. Просто выкиньте эту строчку из своего кода.
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
-
prizrack*
- Нашел транзистор. Понюхал.
- Сообщения: 162
- Зарегистрирован: Пт авг 21, 2015 12:01:25
- Откуда: г. Орел
Re: непонятное зависание PIC16F84A
ок, спасибо))
Добавлено after 10 minutes 56 seconds:
тогда по логике, у вас в коде есть небольшая неточность
org 0x004
movwf w_temp
swapf STATUS,W
banksel PORTA
movwf s_temp
int_out
swapf s_temp,W
movfw STATUS
movfw w_temp - после выполнения этой команды, при w_temp=0 изменится флаг Z в STATUS, тут помоему тоже через swapf надо
делать, как-то так:
org 0x04 ;обработка прерываний
bcf INTCON,7 ;запрет прерываний
movwf w1
swapf STATUS,0
movwf st
...
...
swapf st,0
movwf STATUS
swapf w1,1
swapf w1,0
retfie
или я ошибаюсь?
Добавлено after 10 minutes 56 seconds:
тогда по логике, у вас в коде есть небольшая неточность
org 0x004
movwf w_temp
swapf STATUS,W
banksel PORTA
movwf s_temp
int_out
swapf s_temp,W
movfw STATUS
movfw w_temp - после выполнения этой команды, при w_temp=0 изменится флаг Z в STATUS, тут помоему тоже через swapf надо
делать, как-то так:
org 0x04 ;обработка прерываний
bcf INTCON,7 ;запрет прерываний
movwf w1
swapf STATUS,0
movwf st
...
...
swapf st,0
movwf STATUS
swapf w1,1
swapf w1,0
retfie
или я ошибаюсь?
- dr.doc
- Это не хвост, это антенна
- Сообщения: 1368
- Зарегистрирован: Вс мар 28, 2010 12:52:22
- Откуда: Беларусь
Re: непонятное зависание PIC16F84A
Точно! Моя ошибка и недосмотр. Сейчас пересмотрел доку и увидел.
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
-
prizrack*
- Нашел транзистор. Понюхал.
- Сообщения: 162
- Зарегистрирован: Пт авг 21, 2015 12:01:25
- Откуда: г. Орел
Re: непонятное зависание PIC16F84A
Всем спасибо за поддержку.
- Zhuk72
- Сверлит текстолит когтями
- Сообщения: 1231
- Зарегистрирован: Ср янв 29, 2014 08:41:31
- Откуда: Баку
- Контактная информация:
Re: непонятное зависание PIC16F84A
При входе в прерывание не нужно его запрещать, это и так делается самим контроллером. И при выходе не нужно разрешать, т.к. именно это и делает команда retfie.
Сохранение статуса и аккумулятора расписано в ДШ на МК на странице 32.
Сохранение статуса и аккумулятора расписано в ДШ на МК на странице 32.
Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
-
prizrack*
- Нашел транзистор. Понюхал.
- Сообщения: 162
- Зарегистрирован: Пт авг 21, 2015 12:01:25
- Откуда: г. Орел
Re: непонятное зависание PIC16F84A
спасибо за совет, где-то я читал, что лучше сделать( У меня это только вторая программа для пика, поэтому не судите строго.. Залил, все отлично работает спасибо доктору и шаману))) Еще вопрос немного не в тему: какое значение будет у переменной x,
при х=0 и команде
decf x,1
и какое при х=255 и
incf x,1
и измениться ли при этом флаги в статусе?
нигде не могу найти полного описания при таких случаях((
при х=0 и команде
decf x,1
и какое при х=255 и
incf x,1
и измениться ли при этом флаги в статусе?
нигде не могу найти полного описания при таких случаях((
Re: непонятное зависание PIC16F84A
В описание команд есть колонка, в которой указано на какие флаги влияет та или иная команда. Конкретно эти две команды INCF и DECF, влияют только на флаг Z (флаг нулевого результат) регистра STATUS.
INCF X (255), то произойдет переполнения данного регистра и его содержимое станет равным нулю, что приведет к поднятию флага Z = 1, так как результат операции стал равным нулю.
DECF X (1), приведет к тому же самому, а именно флаг Z = 1, так как в результате уменьшения, значения регистра X стало равным нулю.
INCF X (255), то произойдет переполнения данного регистра и его содержимое станет равным нулю, что приведет к поднятию флага Z = 1, так как результат операции стал равным нулю.
DECF X (1), приведет к тому же самому, а именно флаг Z = 1, так как в результате уменьшения, значения регистра X стало равным нулю.
Последний раз редактировалось Core-X Сб ноя 12, 2016 13:07:29, всего редактировалось 1 раз.
Для связи email: risctronix собака gmail.com
-
prizrack*
- Нашел транзистор. Понюхал.
- Сообщения: 162
- Зарегистрирован: Пт авг 21, 2015 12:01:25
- Откуда: г. Орел
Re: непонятное зависание PIC16F84A
спасибо, непонятно только при decf x(0) х-будет равным 0 или изменится на 255 ?
Re: непонятное зависание PIC16F84A
Да, при DECF X (0) = результат операции будет равен 255
Для связи email: risctronix собака gmail.com
-
prizrack*
- Нашел транзистор. Понюхал.
- Сообщения: 162
- Зарегистрирован: Пт авг 21, 2015 12:01:25
- Откуда: г. Орел
Re: непонятное зависание PIC16F84A
вот теперь все понятно, большое спасибо.
- Zhuk72
- Сверлит текстолит когтями
- Сообщения: 1231
- Зарегистрирован: Ср янв 29, 2014 08:41:31
- Откуда: Баку
- Контактная информация:
Re: непонятное зависание PIC16F84A
Либо неправильно прочли, либо советчик был не из тех, кого стоит слушать.prizrack* писал(а):спасибо за совет, где-то я читал, что лучше сделать
Что касается вопросов про флаги, все это, как уже было сказано, имеется в документации на контроллер. Это и в таблице команд, и в подробном описании по каждой команде. Всегда лучше сперва читать официальную документацию, а потом уже слушать или не слушать чьи-то советы.
Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
- dr.doc
- Это не хвост, это антенна
- Сообщения: 1368
- Зарегистрирован: Вс мар 28, 2010 12:52:22
- Откуда: Беларусь
Re: непонятное зависание PIC16F84A
Правильно! Даже если не знаешь английского, лучше читать оригинал, пусть и с помощью переводчика. Я начинал учить PIC по "Карабельникову", перешел на "переведенные" datasheet... А в итоге очень понравилось читать оригиналы на Atmel, STM и тот же PIC.Всегда лучше сперва читать официальную документацию
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.


