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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Проблемы с Mega8515, сбросы без причины
max_cnc
сообщение Aug 29 2009, 13:53
Сообщение #1





Группа: Участник
Сообщений: 11
Регистрация: 29-08-09
Пользователь №: 52 087



Добрый день всем.
Есть проблемы с ATMEGA8515. Если кто сталкивался с подобным - поделитесь опытом.
Проблема в следующем. При прогоне программы в симуляторе все прекрасно. Загружаю в контроллер и начинаю проверять. По началу все работает, но при некоторых условиях появляются сбои без видимой причины. Контроллер как бы сбрасывается, т.е. программа начинает выполнятся сначала, но после такого "сброса" ведет себя уже не адекватно. Такое впечатление, что нарушается стек, хотя в симуляторе этого не происходит.
С этой проблемой сталкиваюсь уже второй раз (программы разные!) именно на ATMEGA8515.
Заранее благодарен за любые советы.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Aug 29 2009, 13:56
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(max_cnc @ Aug 29 2009, 21:53) *
Добрый день всем.Есть проблемы с ATMEGA8515...
Снимите бит совместимости с AT90S8515 - "C8515"


--------------------
Go to the top of the page
 
+Quote Post
max_cnc
сообщение Aug 29 2009, 14:04
Сообщение #3





Группа: Участник
Сообщений: 11
Регистрация: 29-08-09
Пользователь №: 52 087



Кажется снимал, но проверю еще раз. Благодарю за совет.
Go to the top of the page
 
+Quote Post
Petka
сообщение Aug 29 2009, 14:15
Сообщение #4


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

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(max_cnc @ Aug 29 2009, 17:53) *
По началу все работает, но при некоторых условиях появляются сбои без видимой причины. Контроллер как бы сбрасывается, т.е. программа начинает выполнятся сначала, но после такого "сброса" ведет себя уже не адекватно.

Конденсаторы не забыли повесить на каждую пару Vcc-GND?
Go to the top of the page
 
+Quote Post
adc
сообщение Aug 29 2009, 18:10
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836



Цитата
Снимите бит совместимости с AT90S8515 - "C8515"

Цитата
Конденсаторы не забыли повесить на каждую пару Vcc-GND?
И тут появляются гуру телепаты :-)
Ув. автор темы, скорее всего у Вас процентов на 99,9 проблемы с кодом, а не с камнем. Но 0,1 процент оставлю на включенный аппаратно вачдок не сбрасываемый программно. Вам быстрее помогут, не гадая на кофейной гуще, если Вы предоставите на всеобщее обозрение свой код.
И что значит-"как бы сбрасывается"? Вы уверены что программа переходит на нулевой вектор?
Go to the top of the page
 
+Quote Post
max_cnc
сообщение Aug 31 2009, 13:21
Сообщение #6





Группа: Участник
Сообщений: 11
Регистрация: 29-08-09
Пользователь №: 52 087



Проблема однозначно с кодом, по тому как сбой при одной и той же внешней команде. Смущает то, что в симуляторе все нормально. Или симулятор AVR Studio и реальный камень не тождественны?
На счет перехода на нулевой вектор на 100% не уверен, но очень похоже, поскольку начальные значения, которые устанавливаю при старте устанавливаются и при сбое, дальше все как после включения питания но некоторые команды (устройства в целом а не контроллера) реботают уже не адекватно.
Повторюсь, что такое же явление наблюдал на другом устройстве с Mega8515, но там оно проявлялось в случайные моменты (или закономерность была не очевидна). Навеска емкостей по питанию и замена камней проблему не снимала, как не снимает и в этом случае (керамика 0,15 на каждом корпусе плюс электролиты 470мкф на каждой плате). Код в ближайшее время выложу, просто при моем любительском стиле написания боюсь, что вежливо пошлют, учитывая, что написано на ASM и почти без коментариев, да и перевалило уже за 3 кб.

Ув. prottoss. По поводу бита совместим с S8515. При прошивке оставлял этот бит с заводской установкой, т.е. 1(незапрограмирован), что по описанию соответствует режиму MEGA. К сожалению устройство сейчас на обкатке в другом городе, а на голом камне поэкспериментировать не смогу. Вопрос: в предложении "Снимите бит совместимости с AT90S8515 - "C8515"" Вы имели в виду сбросить его в ноль, т.е. перейти в режим совместимости с S8515, или "снять" в смысле выключить этот режим? С AT90S8515 не работал, но если не ошибаюсь, она не поддерживает команд умножения, которые у меня используются.

Коротко об устройстве. Простейшее устройство ЧПУ для фрезерного станка. Основнвя часть на одной Mega8515, контроллер привода (следящая часть) на трех Mega48 (по одному на каждую ось станка), которые с Mega8515 общаются через SPI (связь односторонняя). Кроме этого к Mega8515 подцеплено 32к внешнего СОЗУ и на этой же шине сидят контроллер клавиатуры/индикации на i8279 (К580ВГ79) и два регистра К580ИР82 для управления автоматикой станка.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Aug 31 2009, 14:09
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(max_cnc @ Aug 31 2009, 16:21) *
Или симулятор AVR Studio и реальный камень не тождественны?
В симуляторе хватает своих "тараканов", кроме того Studio не симулирует внешние цепи...
Цитата(max_cnc @ Aug 31 2009, 16:21) *
На счет перехода на нулевой вектор на 100% не уверен, но очень похоже, поскольку начальные значения, которые устанавливаю при старте устанавливаются и при сбое, дальше все как после включения питания но некоторые команды (устройства в целом а не контроллера) реботают уже не адекватно.
Возможно, что Вы разрешили (ошибочно, случайно) некое прерывание, а процедуры его обработки - нет (т.к. не предполагали, что это прерывание произайдёт). Некоторые трансляторы в случае непредвиденного прерывания "выводят" программу на адрес 0 (т.е. забивают "свободные" вектора прерывания кодом приводящим на команду jmp 0).
Go to the top of the page
 
+Quote Post
max_cnc
сообщение Aug 31 2009, 15:09
Сообщение #8





Группа: Участник
Сообщений: 11
Регистрация: 29-08-09
Пользователь №: 52 087



В таблице векторов все неиспользуемые прерывания закрыл командами RETI, но еще раз проверю, благодарю за напоминание.
К стати, вот еще один прикол, который удалось устранить методом тыка. В цикле интерполяции (вычисление очередных координат перемещения) для задания направления использовал три младших бита R25, соответственно для координат X, Y, Z. Зашиваю и проверяю. Y и Z все нормально, а X отрабатыват только в одну сторону. Бадался около недели. Перепроверил все подпрограммы и прерывания, использующие - никаких конфликтов. В конце концов переставил флаг направления для X с нулевого на третий бит того же R25, и О чудо! Все заработало. Понимаю, что чудес не бывает, но... Причем потом по старым копиям сравнивал, это не ошибка, в старой копии было именно SBRS R25,0. И опять таки, в симуляторе все работало четко.
Я не в коем случае не качу бочку на AVR, наоборот, из тех 8 бит МК о которых я имею представление - это лучшая на мой взгляд архитектура, но вот когда неделями паришся над подобными проблемами... Должно же быть им какое-то логическое объяснение? Кривизна рук и головы естественно не исключается :-).
Go to the top of the page
 
+Quote Post
prottoss
сообщение Aug 31 2009, 15:39
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(max_cnc @ Aug 31 2009, 21:21) *
По поводу бита совместим с S8515...
Я имел ввиду установить его в "1", т.е. запрограммировать для того, чтобы не было режима совместимости с 90S8515.

Цитата(max_cnc @ Aug 31 2009, 23:09) *
Должно же быть им какое-то логическое объяснение? Кривизна рук и головы естественно не исключается :-).
Дак Вы начните с малого. Разбейте программу на логические модули, сделайте работающий скелет и прочее, что делают программисты. Повесьте, наконец, на какой нибудь вывод светодиод и начните уже отлаживать программу пошагово. Еще лучше, конечно, выводить отладочную инфу через UART. Таким образом, на мой взгляд, за не большой период времени отлавливается большинство явных косяков - как раз Ваш случай.


--------------------
Go to the top of the page
 
+Quote Post
max_cnc
сообщение Aug 31 2009, 15:50
Сообщение #10





Группа: Участник
Сообщений: 11
Регистрация: 29-08-09
Пользователь №: 52 087



Тогда проблема не в фюзе 8515С. Благодарю за беспокойство.

В том то и дело, что по частям все работает, только я отлаживал не по модулям, а по подпрограммам, давая им необжодимые начальные установки и зашивая по отдельности. А вот при сборке в кучу начинаются приколы. И как их отлавливать?
USART дело конечно, но боюсь в данной проге ему места уже не хватит. Хотя попробую помучать.
Go to the top of the page
 
+Quote Post
niXto
сообщение Sep 1 2009, 10:40
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 24-06-09
Из: Беларусь
Пользователь №: 50 607



Цитата(max_cnc @ Aug 31 2009, 16:21) *
Коротко об устройстве. Простейшее устройство ЧПУ для фрезерного станка. Основнвя часть на одной Mega8515, контроллер привода (следящая часть) на трех Mega48 (по одному на каждую ось станка), которые с Mega8515 общаются через SPI (связь односторонняя). Кроме этого к Mega8515 подцеплено 32к внешнего СОЗУ и на этой же шине сидят контроллер клавиатуры/индикации на i8279 (К580ВГ79) и два регистра К580ИР82 для управления автоматикой станка.

Предчувствую ОЧЕНЬ большие проблемы с отладкой устройства в реальных условиях. АВР очень чувствительны к разнообразным электромагнитным помехам, коих в станке выше крыши. Помню отлаживал ДУ передатчика - так уже на 20 Вт (УКВ-ФМ) 8 и 88 меги начинали буквально балдеть... РЕСЕТ напрямую на плюс, неиспользуемые ноги как выход или как вход и снаружи на землю, электролиты и керамика по питанию, питание аналоговой части естественно подключено - ничего не помогало... Разве только не догадался экранировать
В общем проблема решилась с помощью ПИК - причем вообще без переделок - то есть маленькая платка с мегой заменилась платкой с ПИК и всё ОК
Go to the top of the page
 
+Quote Post
max_cnc
сообщение Sep 1 2009, 15:47
Сообщение #12





Группа: Участник
Сообщений: 11
Регистрация: 29-08-09
Пользователь №: 52 087



Проблема явно не в наводках, т.к. сбоит и на станке и на столе (станок в другом городе - при наладке кататься туда накладно, поэтому привды подач эмулирую так: микродвигатели + TDA2030 + датчики ВТМ-1, а автоматику - светодиодами).

Выкладываю код. Правда сам не представляю как в нем можно разобраться без подробного описания алгоритма и схемы. Для конкретизации, вот одно из подпзреваемых мест где проявляются сбои:
;==============ПОДПРОГРАММА КОНТРОЛЛЕРА ЭЛЕКТРОАВТОМАТИКИ====================
RUN_M: PUSH R16
PUSH R17

LDS R16,$80
CPI R16,2
BREQ END_RM1

LDS R16,$90
CPI R16,3
BRNE RM4
(1) LDS R17,$8C
SBRC R17,0
RJMP END_RM
SBRC R17,2
RJMP END_RM
SBRC R17,1
RJMP END_RM
LDI R17,0B10000000
STS $0FF8,R17
LDI R16,7
STS $A1,R16
RCALL DELAY
SBR R17,0B10000010
STS $0FF8,R17
STS $8C,R17

LDI R16,8
STS $A1,R16
RCALL DELAY
END_RM1: RJMP END_RM

RM4: CPI R16,4
BRNE RM5
LDS R17,$8C
SBRC R17,0
RJMP END_RM
SBRC R17,1
RJMP END_RM
SBRC R17,2
RJMP END_RM
LDI R17,0B10000000
STS $0FF8,R17
LDI R16,7
STS $A1,R16
RCALL DELAY
SBR R17,0B10000100
STS $0FF8,R17
STS $8C,R17

LDI R16,8
STS $A1,R16
RCALL DELAY
RJMP END_RM

RM5: CPI R16,5
BRNE END_RM

LDI R16,0B10000000
STS $0FF8,R16
LDI R16,8
STS $A1,R16
RCALL DELAY
LDI R16,0B10001000
STS $0FF8,R16
LDI R16,30
STS $A1,R16
RCALL DELAY
LDI R16,0B10000000
STS $0FF8,R16
STS $8C,R16

END_RM: POP R17
POP R16
RET

Так вот: ветки алгоритма, которые начинаются со строки (1) и с метки RM5:отрабатываются нормально, а ветка по метке RM4:, т.е. когда в $90 записано 4 - высывает сброс с дальнейшими глюками. $0FF8 - это внешний порт на К580ИР82 для связи с релейной частью станка.

Чего-то с первого раза не получилось. Вот код в CNC.txt.
Прикрепленные файлы
Прикрепленный файл  CNC.txt ( 69.1 килобайт ) Кол-во скачиваний: 78
 
Go to the top of the page
 
+Quote Post
prottoss
сообщение Sep 1 2009, 22:49
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(niXto @ Sep 1 2009, 18:40) *
Цитата(max_cnc)
Коротко об устройстве. Простейшее устройство ЧПУ для фрезерного станка. Основнвя часть на одной Mega8515, контроллер привода (следящая часть) на трех Mega48 (по одному на каждую ось станка), которые с Mega8515 общаются через SPI (связь односторонняя). Кроме этого к Mega8515 подцеплено 32к внешнего СОЗУ и на этой же шине сидят контроллер клавиатуры/индикации на i8279 (К580ВГ79) и два регистра К580ИР82 для управления автоматикой станка.
Случайно smile.gif увидел подробности разработки. Топик стартеру извинения за флуд, но прям детством своим повеяло, когда так и не исполнилась мечта о "РК-86" crying.gif Плюс развесистая схема на комплекте 8080, Плюс писание на Ассемблере... Хотя, ИМХО ВСЕ можно было запихать в один АРМ и писать на Си. Но это так к слову, еще раз извиняюсь.
По теме. Возможно, у Вас аппаратные проблемы, а не программные. Потому как, судя по коду вершина стека у Вас находится как раз во внешнем ОЗУ. А на шине данных сидит, кроме ОЗУ, еще несколько устройств. Можно схему в студию?

PS: Все пишу на Си, даже для контроллеров с 2К флэши.


--------------------
Go to the top of the page
 
+Quote Post
777777
сообщение Sep 2 2009, 04:10
Сообщение #14


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

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Цитата(max_cnc @ Sep 1 2009, 19:47) *
Выкладываю код.

Не сочти за шутку, но может попробовать переписать программу на Си?
Go to the top of the page
 
+Quote Post
=GM=
сообщение Sep 2 2009, 14:12
Сообщение #15


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(max_cnc @ Sep 1 2009, 14:47) *
...ветки алгоритма, которые начинаются со строки (1) и с метки RM5, отрабатываются нормально, а ветка по метке RM4, т.е. когда в $90 записано 4 - высывает сброс с дальнейшими глюками. $0FF8 - это внешний порт на К580ИР82 для связи с релейной частью станка

Посмотрел код по диагонали, много играетесь с сохранением в стеке, посмотрите, не налезает ли стек на какие-либо переменные в определённых режимах?

Ничего личного, как говорится, но стиль написания у вас конечно ещё тот. Я бы вам посоветовал поменять все адреса в программе на символьные переменные, сами же небось путаетесь где что находится. И, пожалуйста, замените это ужасные обозначения $90 на стандартные 0х90.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post

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

 


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


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