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

 
 
> Проблемы с 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
 
Start new topic
Ответов
max_cnc
сообщение Sep 1 2009, 15:47
Сообщение #2





Группа: Участник
Сообщений: 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
aesok
сообщение Sep 4 2009, 16:21
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Проверте вначале свой код на наличие детских ошибок. Например в обработчике прерывания должны сохраняться/восстанавливаться все используемые регистры:

Код
;==========ВНЕШНЕЕ ПРЕРЫВАНИЕ 1 - ЗАПРОС ОТ КЛАВИАТУРЫ=================================

EXT_INT1:    PUSH    R16
            IN        R16,$3F
            PUSH    R16
            PUSH    R26
            PUSH    R20
            PUSH    R19
.......
            POP        R19
            POP        R20
            POP        R26
            POP        R16
            OUT        $3F,R16
            POP        R16

            RETI


На первый взгляд все в порядке сколько регистров сохраняется столько и восстанавливается, в теле обработчика используются только эти регистры. Но в обработчике есть также вызовы функций, например:
Код
FIX_PAR:    RCALL    CHARG_PAR

;=======СБРОС================
KEYB20:        CPI        R16,$D3
            BRNE    KEYB21        
            RCALL    CLIR
            RCALL    TYPE

L1:            RJMP    L2


И что мы видем?

Код
CLIR:        PUSH    R20
            PUSH    R26
;-----------------
            LDS        R20,$98
            SBRS    R20,6
            RJMP    CL_L2

            CBR        R20,0B11000001
            STS        $98,R20    

            CLR        R20
            LDI        >>>>>R31,$01<<<<<<
            LDI        >>>>>R30,$09<<<<<<
C1_L01:        ST        Z+,R20;СБРОС KX, KY, KZ, MDX - MDZ
            CPI        R30,$1E
            BRLO    C1_L01

и
Код
CHARG_PAR:    PUSH    R17
                                    
            CLR        R17
            STS        $86,R17
            STS        $87,R17

            STS        $81,R19
            CBR        R19,$F0

            CPI        R19,3
            BRLO    CGP0
            CPI        R19,9
            BRSH    CGP0
            >>>LDI        R30,3<<<
            >>>MOV        R31,R19<<<
            SUBI    R31,3
            >>MUL        R31,R30<<<
            CLR        R31
            LDI        R30,$65
...



Портим регистры R0, R1, R30, R31? Нехорошо так поступать.

Анатолий.

Сообщение отредактировал aesok - Sep 4 2009, 16:28
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- max_cnc   Проблемы с Mega8515   Aug 29 2009, 13:53
- - prottoss   Цитата(max_cnc @ Aug 29 2009, 21:53) Добр...   Aug 29 2009, 13:56
- - max_cnc   Кажется снимал, но проверю еще раз. Благодарю за с...   Aug 29 2009, 14:04
- - Petka   Цитата(max_cnc @ Aug 29 2009, 17:53) По н...   Aug 29 2009, 14:15
- - adc   ЦитатаСнимите бит совместимости с AT90S8515 - ...   Aug 29 2009, 18:10
- - max_cnc   Проблема однозначно с кодом, по тому как сбой при ...   Aug 31 2009, 13:21
|- - Палыч   Цитата(max_cnc @ Aug 31 2009, 16:21) Или ...   Aug 31 2009, 14:09
|- - prottoss   Цитата(max_cnc @ Aug 31 2009, 21:21) По п...   Aug 31 2009, 15:39
|- - niXto   Цитата(max_cnc @ Aug 31 2009, 16:21) Коро...   Sep 1 2009, 10:40
|- - prottoss   Цитата(niXto @ Sep 1 2009, 18:40) Цитата(...   Sep 1 2009, 22:49
- - max_cnc   В таблице векторов все неиспользуемые прерывания з...   Aug 31 2009, 15:09
- - max_cnc   Тогда проблема не в фюзе 8515С. Благодарю за беспо...   Aug 31 2009, 15:50
|- - 777777   Цитата(max_cnc @ Sep 1 2009, 19:47) Выкла...   Sep 2 2009, 04:10
|- - =GM=   Цитата(max_cnc @ Sep 1 2009, 14:47) ...ве...   Sep 2 2009, 14:12
- - RA3WUM   Уважаемый автор топика. Не сочтите за грубость, н...   Sep 2 2009, 18:41
- - adc   Цитата(RA3WUM @ Sep 2 2009, 22:41) ЗЫ А к...   Sep 2 2009, 19:10
- - max_cnc   Ну так я же предупреждал на счет кода Сознаюсь, с...   Sep 4 2009, 14:06
- - max_cnc   Точно, упустил. (Хочеш спрятать положи на видное м...   Sep 7 2009, 14:55


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

 


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


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