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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Проблемы с Mega8515, сбросы без причины
RA3WUM
сообщение Sep 2 2009, 18:41
Сообщение #16


Частый гость
**

Группа: Участник
Сообщений: 163
Регистрация: 22-02-07
Пользователь №: 25 578



Уважаемый автор топика.
Не сочтите за грубость, но разбираться в криво написанных исходниках на ассемблере -- дело неблагодарное. Ваша программа просто просится быть переписанной на Си.
Чтоб переменные были как надо описаны, да и просто чтобы правильно понимать как отдельные части исходного текста взаимодействуют друг с другом.
А ещё лучше взять какой-нибудь более современный кристалл и отладчик (тот же первый jtag на коленке сделать дело одного вечера).
И элементную базу вменяемую подобрать.
Тогда всё станет наглядно и ясно dry.gif
ЗЫ А кирпичи 580й серии шумят по питанию неслабо да и вообще не представляю сколько всё это инженерное чудо будет потреблять тока smile.gif


--------------------
Мужество есть лишь у тех, кто ощутил сердцем страх!
В. Кипелов, Беги за солнцем.
Go to the top of the page
 
+Quote Post
adc
сообщение Sep 2 2009, 19:10
Сообщение #17


Местный
***

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



Цитата(RA3WUM @ Sep 2 2009, 22:41) *
ЗЫ А кирпичи 580й серии шумят по питанию неслабо да и вообще не представляю сколько всё это инженерное чудо будет потреблять тока :)
Вот не понимаю людей... Почему сразу надо советовать взять другой камень, перенести прогу на си. Автор топика обратился с конкретной проблемой. Не плохо бы попробовать сначала найти решение вопроса, а потом уж советовать портировать проект. Завтра гляну подробнее. Может чего найдем. А на счет стиля программирования, согласен с выше озвученным, причесать не мешало бы.
Go to the top of the page
 
+Quote Post
max_cnc
сообщение Sep 4 2009, 14:06
Сообщение #18





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



Ну так я же предупреждал на счет кода laughing.gif Сознаюсь, стыдно, самоучка.
Благодарю всех за советы. Они все полезные но на стадии начала разработки.
А в моем случае изделие елиничное, полностью заточенное под конкретный станок и уже на него установленное. Дело за малым - убрать эти досадные глюки, а то пред клиентом как то неудобно, когда после реверса шпинделя он начинает сам собой включаться в неопределенный момент времени maniac.gif
На счет вершины стека, вроде бы я ее установил во внутреннем озу, а то как бы все это работало с вытащеным внешним озу. Во внешнем храню только программу ЧПУ.
По элементной базе полностью согласен, но К580ВГ79 - это каприз клиента. Отказался от человеческого ЖКИ, подавай мол только светодиодные, как на 16К20Т1 с НЦ-31, если кто знаком с таким ископаемым. К стати ВГ79 не такие уж и дрова, ей бы последовательный интерфейс и протокол поудобнее - цены бы небыло. И на счет питания: AVR и 580 на разных платах, заблокированы емкостями и запитаны отдельными линиями от БП. Кушает все это чудо около 600 ма, из которых больше половины на светодиоднуюиндикацию, и регистры прожорльвами оказались, ИР82 - аж по 65 ма на корпус.
По налезанию стека на переменные, тоже проверял, там запас приличный, разве что у меня какие-то подпрограммы входят в рекурсию. При трассировке я такого не выявил но в работе по нешним признакам иногда похоже что одна та же подпрограмма выполняется по несколько раз, в частности приведенная в предидущем моем сообщении, и предидущая ей подпрограмма переключения скоростей (к слову о коробке скоростей станка - это еще то чудо техники).
И по поводу перехода на ARM - это пока мечта будущего, но по поводу AVR зря Вы так. Аналогичные по уровню устройства Электроника НЦ-31, 2Р22 и 2С42 (в последнем возможности уже не детские) строились на базе Электроника 60, а там, если не ошибаюсь, что то в роде К1802 или К589. AVR даже при своих восьми разрядах но 16МГц и RISC ядре по производительней будет.
Go to the top of the page
 
+Quote Post
aesok
сообщение Sep 4 2009, 16:21
Сообщение #19


Знающий
****

Группа: Участник
Сообщений: 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
сообщение Sep 7 2009, 14:55
Сообщение #20





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



Точно, упустил. (Хочеш спрятать положи на видное место). Ведь десять раз на подобные вещи код прошерстил. Большое спасибо за подсказку. Z регистр запросто может такие фокусы вызывать, да и R0, R1 сохранять нужно. Как только доберусь до железа - напишу результат.
Go to the top of the page
 
+Quote Post

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

 


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


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