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

 
 
> вопрос по ADuC, help
Viktor_
сообщение Apr 17 2006, 03:52
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 73
Регистрация: 13-01-06
Из: Томск
Пользователь №: 13 123



Вопрос очень прост. Записываю программу, всё работает пока не нажму Reset, либо не отключу питание.
Почему не переходит на программу? В чём дело? после Reset, как я думаю контроллер переходит на 0000 адресс в котором должен хранится jmp на точьку входа. Но почему на работает то?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 14)
ipc
сообщение Apr 17 2006, 04:46
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 553
Регистрация: 30-03-05
Из: Санкт Петербург
Пользователь №: 3 793



Цитата(Viktor_ @ Apr 17 2006, 07:52) *
Вопрос очень прост. Записываю программу, всё работает пока не нажму Reset, либо не отключу питание.
Почему не переходит на программу? В чём дело? после Reset, как я думаю контроллер переходит на 0000 адресс в котором должен хранится jmp на точьку входа. Но почему на работает то?

В вопросе есть ответ скорее всего неправильно сделана таблица векторов.Лучше бы посмотреть на исходник или на мемори мап.
Go to the top of the page
 
+Quote Post
Viktor_
сообщение Apr 17 2006, 05:01
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 73
Регистрация: 13-01-06
Из: Томск
Пользователь №: 13 123



Как не работат переход на точку входа я могу понять, но почему? Некоторое время назад всё было ОК.
Go to the top of the page
 
+Quote Post
ipc
сообщение Apr 17 2006, 05:03
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 553
Регистрация: 30-03-05
Из: Санкт Петербург
Пользователь №: 3 793



Цитата(Viktor_ @ Apr 17 2006, 09:01) *
Как не работат переход на точку входа я могу понять, но почему? Некоторое время назад всё было ОК.

По разному бывает,например если злоупотреблять директивами типа ORG можно разбомбить все что угодно включаю точку входа.
Go to the top of the page
 
+Quote Post
KRS
сообщение Apr 17 2006, 08:33
Сообщение #5


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

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



А может у вас просто бутлоадер все время активируется?
Go to the top of the page
 
+Quote Post
volkanaft
сообщение Apr 17 2006, 13:35
Сообщение #6





Группа: Новичок
Сообщений: 10
Регистрация: 4-02-05
Пользователь №: 2 416



Если работаете в Keil-e, запустите симулятор и увидете куда программа выходит после Reset
1. если все правильно - смотрим что делается на EA & PSEN в момент окончания RESET
(а на EA и во время выполнения программы)
2. если в симуляторе выполняется неправильно - ...
Go to the top of the page
 
+Quote Post
Viktor_
сообщение Apr 18 2006, 01:05
Сообщение #7


Участник
*

Группа: Новичок
Сообщений: 73
Регистрация: 13-01-06
Из: Томск
Пользователь №: 13 123



Большое спасибо за советы. Я даже начал что-то понимать blink.gif
А ЕЩЁ ВОПРОС - ЧТО такое "БУТЛОАДЕР"?
Go to the top of the page
 
+Quote Post
*SERG
сообщение Apr 18 2006, 02:33
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 274
Регистрация: 10-08-05
Из: Екатеринбург
Пользователь №: 7 517



Посмотри осцилографом что творитьбся на ножке сброса, они критично относятся к форме импульса зброса, даже микрухи специальные для них выпускают.........., форму в даташите глянь
Go to the top of the page
 
+Quote Post
Viktor_
сообщение Apr 18 2006, 02:58
Сообщение #9


Участник
*

Группа: Новичок
Сообщений: 73
Регистрация: 13-01-06
Из: Томск
Пользователь №: 13 123



вообщем вроде понял в чём дело. Reset вроде ничё пашет. Проблемма с точкой входа. не могу понять как првильно использовать org.????
Go to the top of the page
 
+Quote Post
Viktor_
сообщение Apr 18 2006, 03:37
Сообщение #10


Участник
*

Группа: Новичок
Сообщений: 73
Регистрация: 13-01-06
Из: Томск
Пользователь №: 13 123



.ORG 0000h
lJMP MAIN ; jump to main program

.ORG 0100h
MAIN:

Работать должно????
Если нет то как нужно???
Go to the top of the page
 
+Quote Post
ipc
сообщение Apr 18 2006, 05:00
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 553
Регистрация: 30-03-05
Из: Санкт Петербург
Пользователь №: 3 793



Цитата(Viktor_ @ Apr 18 2006, 06:58) *
вообщем вроде понял в чём дело. Reset вроде ничё пашет. Проблемма с точкой входа. не могу понять как првильно использовать org.????

Нужно бы конечно про директивы почитать а то врятли что путное получится.Вот небольшой пример использования директив(надергал из одного своего проекта).

$INCLUDE (MOD52)
VERSION EQU 5700
;***************************************************************
;Описание сегментов программы
;***************************************************************
PROG SEGMENT CODE
CONST SEGMENT CODE
STACK SEGMENT IDATA
VAR SEGMENT DATA
;****************************************************************
;Область обьявлений и присваиваний
;*****************************************************************
HLD1 BIT P1.2
HLD2 BIT P1.3
system EQU R6
;******************************************************************
; Область изменяемых параметров
;******************************************************************
QUARZ EQU 16
IF VERSION=5600
ChanON EQU 21
TimeON EQU 900
ENDIF
IF VERSION=5700
ChanON EQU 28
TimeON EQU 001
ENDIF
PWR EQU 0dfh
FRQ EQU 0fah


;***************************************************************
;Область констант
;***************************************************************
RSEG CONST

Mas1Address: DB 01 ,03 ,04 ,05 ,10 ,12 ,12 ,13 ,13 ,14 ,12 ,14 ,14 ,15 ,15 ,16 ,16 ,17
Mas2Address: DB 01 ,03 ,04 ,05 ,11 ,14 ,15 ,14 ,15 ,15 ,13 ,16 ,17 ,16 ,17 ,18 ,19 ,18


;******************************************************************
;Область переменных
;******************************************************************
RSEG VAR
BitArray: DS 4
RollToggle: DS 1


;******************************************************************
;Область стека
;******************************************************************
RSEG STACK ;Сегмент стека
DS 20H ;
RSEG PROG
;******************************************************************
;Область векторов прерываний
;*******************************************************************
ORG 00h ;Вектор ресета
JMP START ;Переход на начало программы
ORG 01BH ;Вектор таймера
JMP T1_INTERRUPT ;Переход на обработчик переполнения таймера
;********************************************************************
;Главный цикл программы
;********************************************************************
START: MOV SP, #STACK-1 ;Определить стек
итд

Особое внимание рекомендую обратить на определение сегментов разных типов(RSEG) и присвоение стека.А также на возможность использования препроцессора IF EQU DS DB итд.В зависимости от компилятора директивы могут менятся но суть одна.
Go to the top of the page
 
+Quote Post
Viktor_
сообщение Apr 18 2006, 05:17
Сообщение #12


Участник
*

Группа: Новичок
Сообщений: 73
Регистрация: 13-01-06
Из: Томск
Пользователь №: 13 123



блиииин. Чёта сильно уж мутно.... sad.gif
Нее, я понимаю всё это, но неужели это нужно прописывать?
Go to the top of the page
 
+Quote Post
ipc
сообщение Apr 18 2006, 05:20
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 553
Регистрация: 30-03-05
Из: Санкт Петербург
Пользователь №: 3 793



Цитата(Viktor_ @ Apr 18 2006, 09:17) *
блиииин. Чёта сильно уж мутно.... sad.gif
Нее, я понимаю всё это, но неужели это нужно прописывать?

Да ничего немутно.Нужно же обьяснить компилятору и линкеру где размещать данные,код,константы и стек.Если не ты то кто же это сделает wink.gif
Go to the top of the page
 
+Quote Post
Viktor_
сообщение Apr 18 2006, 05:46
Сообщение #14


Участник
*

Группа: Новичок
Сообщений: 73
Регистрация: 13-01-06
Из: Томск
Пользователь №: 13 123



всё. Буду читать, читать, читать.
Go to the top of the page
 
+Quote Post
Stas
сообщение Apr 18 2006, 12:33
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 464
Регистрация: 1-10-04
Из: Челябинск
Пользователь №: 751



Судя по тому, что прога исполняется после загрузки, но после ресета не прет - ты не убираешь с PSEN нагрузочный резистор на землю. Во время ресета если на PSENe висит нагрузка то ADUC8xx после окончания ресета переходит в режим программирования (те запускается внутренний код для записи памяти программ содержимым, получаемым с последовательного порта - тн бутлоадер). Если ты после загрузки не убрал с PSENа, то кристалл после очередного ресета опять ждет программирования. Итог - убери нагрузку с PSEN, после ресета должен исполнятся код с адреса 0000h
Go to the top of the page
 
+Quote Post

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

 


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


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